Os cuento un secreto: me gusta el fútbol. Y como yo hay millones de personas en este mundo, existimos y no queremos seguir viviendo en la marginación social. Para más señas, soy un seguidor del Atlético de Madrid, y profeta de Fernando Torres. Ya. Lo sé.
Mi otro secreto: soy un programador —de pacotilla— en proceso de desintoxicación. Quiero dejarlo, pero no sé cómo.
¿Cuál es el problema? No tengo tiempo ni dinero ni ganas de ver todos los partidos del Atleti. Soy lo que muchos conocen como un aficionado pasivo. No voy por el estadio hace años, y si el equipo pierde me recompongo rápido. Muchas veces incluso se me olvida que hay partido. Así que una tarde de verano decidí desempolvar mi servidor virtual y lanzar un par de crons que me dijeran cuándo iba a haber un partido, el resultado, etc. Una idea que llevaba hace tiempo queriendo hacer. Una cosa llevó a la otra, y cuando me quise dar cuenta vi que era posible no sólo enviarme saber cuándo se marcaba un gol, también podía estar atento a ligas enteras, e incluso con un poco de habilidades ninja, recibir un vídeo con la repetición del gol.
La adrenalina del programador se apoderó, y dos semanas después ya había refactorizado el código un par de veces. Pensé que valdría con enviarme un DM por Twitter con los goles, así que creé @goals_ninja, pero pronto se me ocurrió algo que siempre había querido probar: un bot en Telegram. Leyendo la documentación rápidamente ves que es un proceso sencillo: registras el bot, estableces un webhook donde recibir los datos, los procesas y creas unas rutinas que los procesen y respondan.
Ahora el bot era capaz de cantar los goles y enviarte los vídeos que encontrase por foros y Twitter de casi cualquier equipo en la faz de la Tierra, y seguir múltiples ligas y campeonatos. Tras comprobar durante unos días que todo funcionaba bien, pedí ayuda en Twitter:
1. Te gusta el fútbol
2. Usas Telegram
3. Quieres probar una cosa guapa, mail a alex@barredo.es o dm— 🌎🚀✨ (@alexvega) September 23, 2016
Pasé la dirección a unos 10-12 contactos y les pedí a todos que me dieran sus sugerencias y comentarios. Unas buenas impresiones, y algún feedback muy acertado me animaron a seguir pero había algo raro. Varios días después, la simple base de datos que creé, empezó a llenarse de identificadores anónimos distintos. ¿Qué podía ser? A la mañana siguiente, ya en la oficina, empecé a atar cabos: “oye el bot este de fútbol que has hecho que me ha pasado Javier, está muy bien”. Acabáramos. La gente estaba compartiendo el bot, reenviando sus alertas y vídeos con sus contactos en Telegram. El bot gustaba y la gente quería compartirlo. Los días pasaron y empecé a ver cómo el bot se iba añadiendo a un grupo tras otro —tienen un identificador anónimo distinto al de los usuarios—, cómo las suscripciones crecían.
No le di más importancia y de vez en cuando mantenía un ojo sobre los procesos. Las ligas española e inglesa habían comenzado, y las suscripciones a los equipos grandes empezaban a apilarse. Yo seguía centrado en cumplir con la petición número uno de mis amigos: poner el bot en Facebook Messenger, algo que puedo decir ha costado mucho más de lo que pensaba. El proceso es bastante más complicado y requiere múltiples pasos burocráticos iniciales, tiempos de espera, aprobaciones, etc. La documentación es más extensa pero el servicio es mucho más complejo e interactivo.
Varios días después recibí una alerta de mi proveedor de alojamiento, Linode, que había notado un pico de procesador en mi limitado servidor virtual. Un rápido vistazo a la base de datos confirmó mis sospechas, varias docenas de usuarios nuevos —y más— cada día estaban añadiendo el bot a sus contactos, y durante los días con muchos partidos como un sábado, tardaba mucho en encontrar los vídeos. El bot —mi bot—, que había sido pensado para enviarme goles del Atleti, estaba enviando una moderadamente elevada cantidad de mensajes a tantos usuarios, que cuando el Real Madrid o el Barcelona —los dos equipos con más suscripciones— marcaban o encajaban un gol, los sistemas se volvían locos para dar a basto.
Tras perder más horas pude optimizar bastante el código, aumentar el servidor a un servicio más potente —y caro—, junto con una tercera refactorización que simplificó mucho la estructura interna pude aliviar los problemas. Ahora el bot no se despeina en enviar cientos de Tweets, miles de mensajes y vídeos de goles de Telegram y de Messenger cada día.
Yo, que sólo quería saber si Torres marcaba un gol, me he quedado pagando dinero todos los meses y teniendo que perder el tiempo arreglando bugs y añadiendo funciones en mis ratos libres. ¿Hay algo más bonito para un programador?