All posts by dsmatilla

Reinventando cuelgame.net

Hace ya unos cuantos meses que llevo sopesando la posibilidad de pegarle una vuelta de tuerca al concepto de cuelgame.net. El aumento de alternativas al p2p mucho más sencillas (netflix, spotify, steam, etc..) y la retirada continua por parte de Google de enlaces a la web ha ido haciendo disminuir el tráfico de forma lenta pero notable.

Llegados a este punto, y teniendo en cuenta que la web jamás me ha proporcionado ningún tipo de beneficio económico, sólo me quedaban dos opciones : dejarla morir poco a poco, o intentar darle un cambio radical para intentar rehacer la interesante comunidad que se ha ido formando a lo largo de estos seis años, aún manteniendo la política de no publicidad en la web.

Actualización del código

Lo más prioritario era actualizar la web a la última versión del código. Gracias a menéame, que ha continuado manteniendo libre su código, he programado una migración del sistema antiguo al nuevo. Todo parece funcionar de forma correcta, aunque supongo que habrá que corregir algún detalle a medida que la vayamos usando. Si veis algo que no funcione correctamente, o para cualquier sugerencia/duda que tengáis, podéis contactar usando el nótame de la web.

Ampliación de temática de la web

Uno de los cambios más importantes de cuelgame.net es la adición de nuevas categorías de envíos. Los enlaces p2p seguirán estando muy presentes en la web, siendo uno de los subs principales, pero estarán acompañados de enlaces a noticias, humor y demás subs que se les ocurran a los usuarios. Dado que el código permite personalizar los subs “visibles”, cualquier usuario que quiera seguir viendo cuelgame.net como hasta ahora, solamente los links p2p, podrá hacerlo de forma sencilla desde su perfil.

Bonus track

Y por último, un experimento que me ronda la cabeza desde hace un montón de tiempo. ¿Con qué podríamos premiar al usuario que aporta contenido de calidad a la web? ¿Quizás con una criptomoneda, ahora que están tan de moda?

En un principio sopesé la idea de regalar alguna altcoin existente de poco valor (p.e. reddcoin o dogecoin) haciendo una pequeña inversión inicial, pero estaba claro que sería mucho más gratificante tener una moneda propia, aunque su valor fuese cero, pero que nos permitiría realizar transacciones entre usuarios. Después de analizar las opciones, decidí usar litecoin como base (un fork de bitcoin con buen recorrido) para nuestra nueva moneda. De esta manera surgió una nueva shitcoin, el CuelgaCoin (sí, seguro que había nombres mejores).

Cada usuario tendrá la opción, entrando en su perfil, de generar una cartera remota para poder empezar a ahorrar Cuelgacoins. Una vez generada la cartera, se le realizará una transferencia automática de una determinada cantidad de monedas (actualmente 10 CLG por portada, sujeto a cambios a medida que veamos cómo evoluciona). Estas recompensas se aplicarán, como no podía ser de otra forma, de manera retroactiva a todos los envíos realizados en estos pasados 6 años, tan pronto como sus dueños generen su cartera en remoto, como forma de premiar su fidelidad y sus aportaciones a la comunidad.

Las carteras remotas que generen los usuarios serán visibles en su perfil, permitiendo de esta forma que los usuarios realicen transacciones entre ellos, opción que también estará disponible para los usuarios con cartera. De esta forma, podremos implementar más adelante una opción de “tips” o propinas, o incluso un tablón de recompensas.

Además de la gestión desde la web, es posible tener el cliente en local. Lamentablemente no me ha dado tiempo a preparar los binarios así que os tocará esperar o compilar

La cadena de bloques de cuelgacoin es muy joven, como podéis ver en la imagen, sólo tiene 9369 bloques encontrados, gracias a las personas que he podido reclutar para empezar a minar los bloques iniciales. Si os interesa minar unos cuantos bloques, podéis usar vuestro programa de minería preferido (cgminer, cpuminer, bfgminer, etc…) usando el algoritmo scrypt contra este pool stratum+tcp://pool.cuelgame.net:3333 , usando como nombre de usuario la cartera donde queréis recibir las monedas, y cualquier contraseña.

Siguientes pasos

A partir de aquí, y al margen de corregir poco a poco los flecos que me haya podido dejar en la migración del sistema antiguo, sólo nos queda esperar para ver cómo evoluciona la web.

He tratado de condensar toda la información en un post, aunque seguro que me dejo muchos detalles en el tintero. Para cualquier duda, por favor, ponedme una nota e intentaré atenderla lo antes posible.

¡Muchas gracias!

El sistema RAPEX y EuroAlerta.com

¿Qué es RAPEX?

RAPEX es un sistema de alerta que permite un rápido intercambio de información entre 31 países europeos y la Comisión Europea sobre productos no alimentarios peligrosos que representan un riesgo para la salud y la seguridad de los consumidores.

La Comisión europea publica un resumen semanal de las alertas comunicadas por las autoridades nacionales, que incluyen información sobre los productos peligrosos detectados, los riesgos identificados y las medidas adoptadas en el país notificante con el fin de prevenir o restringir su comercialización o utilización.

Las medidas pueden ser ordenadas por las autoridades nacionales (“medidas obligatorias”) o tomadas directamente por los operadores económicos (“medidas voluntarias”). Cada alerta también incluye información sobre otros países en los que se ha encontrado el mismo producto y se han tomado otras medidas.

Las notificaciones originales (en inglés) se pueden consultar a través del siguiente enlace : https://ec.europa.eu/consumers/consumers_safety/safety_products/rapex/alerts/?event=main.listNotifications

¿Cuál es la idea?

Hace tiempo que tengo en mente la posibilidad de traducir y organizar toda la información que ofrece este sistema de alerta rápida de la comisión europea. Mi primer acercamiento a este sistema fue en el año 2010, y por aquel entonces la información era lo suficientemente caótica para que el proyecto supusiese un reto demasiado grande para el tiempo que podría haberle dedicado. Hace unos días descubrí que ya habían hecho el trabajo de organizar la información, pero seguía estando disponible en inglés únicamente. ¿Por qué no traducirla usando la API de Google Translate?

Uno de los primeros escollos a salvar es el precio. Google cobra $20 por millón de caracteres traducidos, pero ofrece $300 de bienvenida a Google Cloud. Otro, la inserción de una cantidad de posts considerable en un wordpress de forma automatizada, que puede dar más quebraderos de cabeza de lo pensado, pero que superé ampliamente cuando hice JUST TIT

No ha sido un trabajo demasiado complicado, aunque sí con un poquito de inversión (al final fueron algo más de 20 millones de caracteres, algo más de $400). Aún quedan algunos flecos, como elegir un diseño adecuado y darle un poco más de visibilidad al buscador, pero el resultado ya es usable.

¿Dónde se puede consultar EuroAlerta.com?

En la propia web de EuroAlerta, principalmente para hacer búsquedas por marca, modelo, código de barras, etc..

Facebook : https://www.facebook.com/EuroAlerta-166672027234354/

Twitter : https://twitter.com/euroalerta

Si el tiempo lo permite, tengo en mente un bot de telegram que admita búsquedas (usando la API REST del propio wordpress) y un canal para las nuevas alertas.

 

Cómo no vender en internet

Una de las consultas más recurrentes que recibo es del estilo de “tengo una tienda de zapatos y quiero vender por internet, ¿qué hago?”. La opción fácil sería venderles dominio, hosting, instalación de ecommerce a elegir y mantenimiento, luego dejarles a su suerte en medio del crudo mundo de la venta online, y que se den cuenta al cabo de unos meses de que, sencillamente, no venden un carajo. La opción difícil, la que suelo usar, es quitarles la idea de la cabeza. No gano dinero a su costa, y aunque algunos acaben cayendo en la tentación de gastarse el dinero en otro lado, yo me ahorro un montón de problemas.

Voy a intentar resumir en varios puntos los motivos por los cuales crear una tienda 2.0 en base a una tienda 1.0 suele dar resultados desastrosos.

 

Clientes (target)

 

Existen diferencias muy marcadas entre el comercio tradicional y la venta online. La gente siempre intenta ver la una como evolución de la otra, pero no lo es. El comercio 1.0 no ha evolucionado a comercio 2.0, sino que es el cliente el que ha evolucionado. Una persona que entra a un comercio tradicional tiene (generalizando) una vaga idea de lo que necesita, y busca ser asesorado en su compra. Un cliente 2.0 sabe exactamente (vuelvo a generalizar) la marca, modelo, color, talla y demás detalles del producto que está buscando. No vas a convertir a tus clientes 1.0 en clientes 2.0, y si lo haces, los vas a perder para siempre, porque no van a comprar en tu tienda.

 

Precio

 

Ante los tenderos escépticos, una táctica que suelo usar es preguntarles “¿a qué precio lo compras tú?”, para acto seguido buscarlo en google y encontrarlo más barato que su PVD. Es decir, si tú mandases a tu distribuidor a paseo y lo comprases por internet, ganarías más dinero, o podrías ofrecer mejor precio a tus clientes manteniendo tu margen comercial. Algún osado me ha llegado a decir “pues lo vendo más barato por internet que en la tienda”. Bien, es una opción, vamos a ver cuanto tardas en quedarte sin clientes cuando se den cuenta de que están haciendo el idiota.

El PVP que vemos actualmente en las tiendas 1.0 es producto de una cadena de distribución en la cual cada uno de los eslabones aplica su margen. Internet tiende a eliminar estos eslabones, sencillamente porque dejan de tener sentido. Si el fabricante puede vender online, o directamente a tiendas, ¿para qué necesita una cadena de distribución que infle sus precios? Esto ha causado, y está causando, más de un dolor de cabeza en empresas grandes, con cadenas de distribución arraigadas pero cuyas ventas caen en picado. “¿Bajamos precios y traicionamos a nuestros distribuidores o nos hundimos todos juntos?”

 

Inversión

 

Pagas varios cientos de euros al mes de alquiler de local, otro tanto de suministros, cuotas de autónomos, etc… Entiendo que quieras gastarte lo menos posible en tu tienda 2.0, pero si te ofrecen una tienda online por un pago único de unos pocos cientos, acabarás antes tirándolos a la basura. Si quieres vender online, vas a necesitar una inversión similar a la que tienes en tu tienda 1.0. Tienes que captar nuevos clientes (por lo que ya hemos visto antes), y ese es un proceso caro (generalmente) y que requiere bastante paciencia. Si no vas a poder dedicarle a tu tienda 2.0 unas 4-6 horas diarias (o pagar a alguien que lo haga) es mejor que no lo intentes.

 

Conclusión

 

Bien, estás dispuesto a hacer una inversión interesante en una tienda 2.0, has conseguido un artículo atractivo a un precio estupendo, hablando directamente con el fabricante, o con un distribuidor cercano a él, y tienes paciencia y el tiempo necesario para empezar una campaña de captación de clientes 2.0. Perfecto, ya podemos hablar de cómo SÍ vender online. Este es el punto en el que un informático puede ayudarte. Si cumples todas estas condiciones, es posible que puedas vender incluso publicando tus artículos en Facebook. Si quieres, además, dar una imagen profesional a tus clientes, pon una tienda online, acepta pagos por tarjeta/paypal, ofrece varias formas de envío, devoluciones y garantías.

Y sobre todo, habla con un informático honesto y de confianza. Piensa que vas a tener que darle toda la información relativa a tu negocio.

Es posible que tú no sepas cómo montar todo esto, pero te aseguro que él sí que sabrá contactar con tu distribuidor y pisarte el negocio explotándolo él mismo.

Cómo indexar todo el porno de internet.

(Link https://just-tit.com)

Hace tiempo que me surgió la idea. Estaba jugando con los bots para telegram, creando varios buscadores inline, cuando me asaltó la duda de si sería posible hacer una búsqueda sobre las principales páginas web de vídeos porno que existen actualmente. Investigando un poco encontré que existía una API para este fin.

Pornhub API

 

Las primeras versiones no funcionaban mal, la API parecía funcionar bien, y además ofrecen programa de afiliados, con lo cual podría generar ingresos por enviar tráfico a estas webs. Demasiado fácil. Estaba claro que tenía que fallar por algún sitio, y lo hizo. La API está limitada a unas pocas peticiones por minuto, con lo cual no podría tener un bot que aceptase peticiones de los usuarios sin quedarse tirado a cada poco. ¿Cuál es la solución a esto? Hold my beer, ya lo indexo yo.

Hold my beer

 

Una de las cosas que tenía claras desde el principio es que este proyecto debía de montarse sobre AWS. Esto me permitiría hacer algo a pequeña escala, sin gastarme demasiado dinero, pero con posibilidades de crecer en caso de que el proyecto empezase a generar visitas. También tenía claro que debía centrarme en la optimización de los servicios, dado el volumen de datos que me iba a tocar procesar.

Decidí usar wordpress como base, por similitud de estructura con los datos que recibía de la red de pornhub (título, contenido, categorias y tags), aún a sabiendas de que un wordpress con varios millones de posts iba a hacer aguas por algún lado. De esta forma, podría centrarme en la importación de los datos y ya me encargaría de tapar las fugas una vez realizado el proceso.

El proceso de importación resultó sencillo de programar, pero ligeramente complicado de optimizar para conseguir que finalizase dentro de un margen de tiempo razonable. Por una parte, tuve que desestimar la opción de usar el importador de posts de wordpress, debido a su lentitud (estamos hablando de casi 60 millones de lineas en la tabla de categorias/tags), programar por separado el generador de slugs (uno de los códigos de wordpress que mas me ha dolido ver), y aprovisionar un número correcto de IOPS en AWS (con cuidado de no gastar una fortuna).

En un primer intento, añadí la descarga de thumbnails de los vídeos al proceso, pero después de hacer un cálculo aproximado y saber que ocuparían unos 50Tb (unos $1200/mes para alojarlos en un S3 bucket), llegué a la conclusión de que el hotlinking sería mucho más sano para mi bolsillo.

Llegados a este punto, tenemos ante nosotros una instalación base de wordpress con 9 millones y pico de posts, organizados por tags y categorías, con sus url’s bonitas, y que simplemente no funciona. Un vistazo al log de slow queries de mysql me sacó de dudas, y empezó otra de las batallas que me ofreció este proyecto. En resumen : añadido de varios índices a las tablas de wordpress y retirada de elementos tales como el paginador o el link al siguiente/anterior post por por fecha, que generaban consultas de varios minutos sobre la bd.

Mysql Slow Queries

 

Una vez terminada la optimización de wordpress para que no haya consultas “lentas”, llegaba la hora de enfrentarse al núcleo del problema, y lo que podría llegar a ser el punto fuerte del proyecto : las búsquedas. Estaba claro que no podrían hacerse contra la base de datos, así que habría que recurrir a un servidor de búsqueda. Sopesé Solr, Sphinx y ElasticSearch, decantándome por este último debido a estar implementado en AWS. El proceso para sincronizar toda esa cantidad de datos supuso algo similar al proceso de importación (aprovisionando IOPS necesarios sin arruinarme), y una vez finalizada, ya podía hacer que wordpress tirase búsquedas y navegación por tags y categorías contra el servidor ElasticSearch.

Infraestructura AWS

 

Ya sólo faltaba un template bonito y responsive (30€ del ala) y un nombre de dominio resultón (otros 10€).

Just-tit.com

 

Y el bot de telegram, por supuesto, consulta ahora a la API REST de mi propio wordpress, que no está limitada, y tiene a su alcance toda esta cantidad inimaginable de porno.

https://telegram.me/pornagentbot

Telegram @pornagentbot

 

Cómo activar 4G/LTE en Samsung Galaxy Note 3

Al fin he recibido el cambio de SIM por parte de Pepephone que permite acceder a la red 4G, pero me he encontrado con un problema inesperado, ya que mi Note 3 no se conectaba a esta red en puntos donde sí que debería hacerlo.

Por algún extraño motivo, esta funcionalidad viene desactivada. Basta comprobar el contenido del fichero /data/property/persist.radio.lteon para encontrarse con un “false” con muy mala leche.

Activar Note 3 4G Activar Note 3 4G

Sólo con poner a “true” el valor de este fichero, y reiniciar el móvil, ya nos permitirá seleccionar la opción LTE/WCDMA/GSM dentro de los ajustes de redes móviles. La única pega es que la modificación de este fichero requiere tener rooteado el terminal.

Correos y los envíos contra reembolso

Al fin ha llegado la confirmación por parte de Correos de que lo expuesto en la entrada anterior es correcto (https://dsmatilla.com/error-en-los-envios-contra-reembolso-por-parte-de-correos.html)

Resolución correos contra reembolso

Resolución correos contra reembolso

También tengo constancia de que el error ya ha sido solventado y su funcionamiento vuelve a ser el correcto, exceptuando el pequeño detalle de cobrar el giro de vuelta por adelantado y no devolverlo en caso de que no se realice la entrega.

Sería todo un detalle por parte de Correos que hiciese un esfuerzo en devolver todo lo que han cobrado de más durante este tiempo. Y lo del agradecimiento a los que hemos dedicado tiempo y esfuerzo en encontrar este bug en el sistema (incluido uno de sus empleados) creo que lo doy por perdido.

Error en los envíos contra reembolso por parte de Correos

Desde el primer día del año nos encontramos con un cambio bastante significativo en la forma de cobro, por parte de Correos, de los envíos contra reembolso. El cambio, aparte de la subida anual de rigor, consiste en cobrar por adelantado el giro de vuelta del dinero, que antes se descontaba del importe total a percibir.

De esta forma, un envío contra reembolso de 100€, cuyo coste en ventanilla podía ser alrededor de 10€, ahora pasaría a costar 3€ más (~13€), pero recibiremos los 100€ íntegros, cuando antes recibíamos 97€. Es decir, el coste es el mismo, pero adelantamos los 3€ del giro (y no vamos a entrar en el pequeño detalle de lo que pasaría si el envío no es recogido por su destinatario). Podríamos suponer que el motivo de este cambio es evitar la gran cantidad de malentendidos y reclamaciones que hay, por parte de los clientes, al encontrarse con estos inesperados 3€ de menos al recibir el dinero.

Hasta aquí la teoría. He esperado a recibir el primer giro de un pedido contra reembolso para confirmar que esto es correcto y que el importe recibido es exactamente el mismo que especifico en el contrato del envío. Y me he llevado una buena sorpresa, ahí va.

correos

Como puede verse, el importe cobrado al cliente es de 87,06€, y es exactamente eso lo que esperaba recibir, habida cuenta de que he pagado 12,92€ por el envío, en lugar de los ~10€ que habría pagado antes. Y el importe recibido es de 80,80€, es decir, 6,26€ menos.

¿Dónde está el error? Pues esos 6,26€ corresponden (casualmente) a 5,25€ de tarifa del contrareembolso (de 80,80€) + 1,01€ de derechos. O lo que es lo mismo, el software de Correos nos está cobrando de nuevo el envío contra reembolso.

correos2

Esto ya ha sido notificado a quien corresponde (gracias a uno de los pocos empleados de Correos que conozco que es capaz de implicarse en estas cosas), así que espero que lo corrijan en breve. Y ya sabéis, si habéis enviado algo contra reembolso durante 2015, o conocéis a alguien que lo haya hecho, avisadle de que puede reclamar el dinero que le han cobrado de más en su oficina postal, en caso de no haber recibido el importe íntegro.

Recuperación de ficheros borrados en la memoria interna del móvil

Una MicroSD en mal estado me ha liado una buena. En un alarde de valentía usé la opción de “mover” todas las fotos que estaban en la memoria interna hacia la tarjeta de memoria, con un resultado desastroso: no sólo no se grabaron en la tarjeta sino que se borraron de la memoria.

El móvil es un Note 3 y estoy usando Linux Mint. Necesitaremos root en el teléfono y busybox instalado. En el ordenador nos basta con adb, netcat y photorec, ya que la solución pasa por intentar sacar un volcado de la memoria interna hacia el ordenador.

Conectamos el móvil por USB al ordenador, con la opción de “depuración USB activada”, y realizamos los siguientes pasos en un terminal :

$ adb forward tcp:5555 tcp:5555
$ adb shell
$ su (tendremos que aceptar la petición de superusuario en el móvil)
$ /system/bin/busybox nc -l -p 5555 -e /system/bin/busybox dd if=/dev/block/platform/msm_sdcc.1/by-name/userdata (el dispositivo varía de un móvil a otro)

Dejamos este terminal a la espera, y en otro hacemos lo siguiente :

$ adb forward tcp:5555 tcp:5555
$  nc 127.0.0.1 5555 | pv -i 0.5 > memory_dump.raw

Esperamos varias horas (dependiendo del tamaño de la memoria) a que se genere el fichero con el volcado en nuestro disco duro, sobre el cual ya podremos ejecutar photorec y ver si hemos tenido suerte.

$ photorec memory_dump.raw

En mi caso parece que ha habido suerte. He estado a punto de perder varios cientos de fotos muy importantes

recovery

Herramienta web para capturar tweets

Cansado de ver fakes de supuestos tweets de famosos metiendo la pata, se me ocurrió la posibilidad de hacer una herramienta web que me permitiese hacer una captura de un determinado tweet, y de paso aprovecharlo para capturar algunos susceptibles de ser borrados. He estado probando CutyCapt, más concretamente con la opción que permite usarlo sin servidor X, con buenos resultados después de recortar un poco las imágenes.

 

tweet

Una vez hecho esto, la idea era facilitar el proceso de copiar y pegar una url de twitter en la web para realizar la captura, así que quizás una extensión para Chrome, que añada la opción de “enviar a” en el menú contextual, pudiera ser una buena idea (link en la imagen).

certwitfy

 

Por otra parte, también parecía una buena idea tener acceso rápido desde el móvil, así que preparé una app para Android. Es un simple WebView que va a la web, pero además añade la opción de “enviar a” si pulsamos sobre compartir en un tweet (link en la imagen).

androidappAún le queda desarrollo, pero ya empieza a ser usable, así que es buen momento para abrirla : http://certwitfy.com