¿Cuál fue tu primera came?

Para escribir esta entrada he invertido 1h 52m.

👴 Recuerdo un tiempo antes de las Redes Sociales en el que la red era mucho más social y era habitual tener respuestas cuando preguntabas. Rememorando aquel entonces os lanzo esta pregunta que yo mismo voy a responder: ¿Cuál fue tu primera came?

En aquellos tiempos, cuando los foros php reinaban en el vasto imperio de Internet y este blog se llamaba «0,» (cerocoma.blogspot.com), era habitual tener respuestas de vosotras, personitas, ya fueran en comentarios, como en una entrada en otro blog que te hacía pingback o directamente con algo tan obsoleto como mandar un correo electrónico. Ahora lo llamaríamos red social federada y lo venderíamos como el futuro, pero lo de colaborar cada una desde su casa es más viejo que la orilla de la mar.

Eran tiempos bonitos, en los que hacerse viral era conseguir portada en barrapunto o meneame (u otros más de nicho como debug_mode=on), o si lo petabas mucho en slashdot. Yo tuve mi minuto de gloria cuando instalé Compiz (una innovación de los laboratorios de Suse que permitía prenderle fuego al escritorio o hacerle girar) en el Ubuntu de aquella época. Si buceas en el archivo del blog encontrarás algunos posts al respecto, pero no mucho más, siempre he andado de fracaso en fracaso (:

Eran tiempos de frikis donde a los fascistas se los trolleaba en el IRC y desde luego no se les consentía que tuvieran el control de absolutamente nada comunitario. El Javi de aquel entonces habría creído imposible la deriva autoritaria actual en la que estamos…

Pero recapitulemos que nos perdemos en memorias que no volverán: ¿Qué es una came? ¿Cuál fue tu primera, Javi?

Una came es una CAgada MEmorable. Una de esas que te hacen ponerte colorado cuando las recuerdas y no se la cuentas a nadie aunque hayan pasado más de (1, 2, 3… ¡wow!) unos cuantos años. Pues yo voy a hacerlo. Aireemos nuestras vergüenzas. ¡Os voy a contar mi primera came!

Corrían los dosmiles, hacia la mitad más o menos. Tendría que echar cuentas para concretar, pero es innecesario porque el NDA seguro que ya está caducado.

Yo tenía mi primer trabajo. Antes había sido becario, pero en aquel entonces ser becario no se consideraba un trabajo ni aunque te pagasen buenas perras. En mis primeros meses me dieron una tarea:

Hacer un proceso de recordatorio que enviase emails transaccionales a todos los investigadores que tuvieran facturas pendientes de revisar.

Esos eran todos los requisitos, tan escuetos como la documentación del producto, pero no había queja. Easy peasy lemon squeezy.

Eché un vistazo en nuestra base de datos de desarrollo a la tabla de las facturas y había un campo «revisada» con valores «S» y «N». En aquel modelado de base de datos era habitual que los programadores antiguos usasen campos string para booleanos, por lo que no me llamó la atención.

Maqueté la plantilla del correo e hice un proceso que recuperaba todas las facturas que no («N») habían sido revisadas con los correos de los responsables, rellenaba la plantilla y mandaba los correos.

Se lo enseñé al senior que me tutorizaba vigilaba en aquel entonces y me dijo «¿Funciona? Pues a producción». Probablemente hoy esté vibe-codeando por algún lado, ¡un abrazo si me lees! :_)

Un par de semanas después se desató el caos y llegó el drama. ¿Qué has hecho? ¡La que has liado! Sin saber cómo ni porqué me empezó a llover mierda y broncas de todo el mundo.

Homer Simpson avisando del fin del mundo

Al parecer, el campo «revisada» en la base de datos del cliente además de los valores «S» y «N», también guardaba valores «P». ¡El campo no era booleano! La «S» quería decir que la factura se había revisado y la «P» era que estaba pendiente de revisarse. ¿Y la «N»? ¡La «N» era que no tenía que revisarse! ¡Obvio! «¿Cómo has sido tan zopenco para no darte cuenta de algo tan evidente?»

Cómo dicen los guiris «long story short», nadie por encima del último mono (yo) asumió su parte y me tocó mandarle un correo de disculpas a todo el personal responsable del cliente al que le había mandado correos diciendo que tenían pendiente de revisar unas facturas que realmente no tenían que revisar y aprendí que no debía fiarme del trabajo previo de nadie, ni del mío mismo, porque hay muchos motivos por los que podría haberse hecho una marranada que no esté documentada en ninguna parte.

Y nada, esa fue mi cagada memorable, ponemos fin al modo abuelo cebolleta.

Esta es mi pequeña piedrita para recuperar las cosas buenas del viejo internet. También he añadido en el sidebar (o en el menú en pantallas estrechas) una lista de blogs de gente (BOFHer) con la que interacciono habitualmente, por si queréis seguir leyendo cosas frikis de informáticos.

Esa fue mi came, pero ¿cuál fue la tuya?

De Datetime de .Net a Date de Android

Al ver esta semana el post de @Chalalo en geeks sobre cómo acceder desde Android a servicios SOAP (*.asmx) de .Net, me he acordado que tenía pendiente escribir una pequeña nota sobre algo que me dio un pequeño dolor de cabeza en su momento: cómo deserializar las fechas que nos devuelve un servicio .Net y convertirlas en un objeto Date en Android.

Seguir leyendo en GPMESS.

3 tips para trabajar con tablas del storage de Azure

Trabajar con tablas del storage de Azure es muy sencillo, siempre que tengas claro qué es lo que quieres priorizar (lectura, escritura, …) y que entiendas que sólo podrás filtrar de verdad por las propiedades clave (PartitionKey y RowKey). Sin embargo hay tres detalles que te pueden ayudar a trabajar con las tablas de una manera más sencilla, y a no romperte la cabeza intentando descubrir por qué se produce tal excepción.

Seguir leyendo en GPMESS.

Analytics para Android (III): las fuentes de tráfico

Vamos a ir acabando esta serie de Analytics para Android con algo muy simple pero muy útil. Además, es algo que también han cambiado en esta última semana, por lo que tiene su poquitín de intríngulis: son las fuentes de tráfico. ¿Cómo llega un usuario a la store para descargarse nuestra aplicación? ¿Cuántos de los que llegan a ver la app en la store se la acaban instalando?

Seguir leyendo en GPMESS.

Analytics para Android II: Personalización

Siguiendo con el post de la semana pasada, en el que hablamos de la sesión y de cómo mantenerla, hoy vamos a ver cómo podemos personalizar un poco la recolección de datos para poder valorar y medir cosas específicas que necesitemos saber, y que no están dentro de las dimensiones y métricas predefinidas de Analytics para Android.

Seguir leyendo en GPMESS.

Analytics para Android I: La sesión

Una de las cosas más importantes que tiene que hacer toda app es medir. Medir qué hacen los usuarios, medir cómo reacciona la aplicación y tener registros de todos los errores y problemas para poder resolverlos. Para todo esto, una de las herramientas más sencillas que se tiene es Analytics, la misma herramienta que ya se usaba para la web, con las pequeñas adaptaciones que tiene su librería Analytics para Android.

Seguir leyendo en GPMESS.

Como optimizar el uso de roles en Azure

He pensado que era un buen momento para hablar sobre cómo optimizar el uso que hacemos de nuestros roles en Azure, de tal modo que exprimamos al máximo cada máquina. Esto es siempre bueno tenerlo en mente, pero ahora que Microsoft nos ha cambiado a los suscriptores de MSDN y a los que disfrutamos de Bizspark la forma en que se limitan los beneficios de Azure que tenemos disponibles, puede ser un gran momento para revisarlo.

Seguir leyendo en GPMESS.