$ git log --all
- 5 min de lectura
Cinco sitios en tres días
Cinco sitios pequeños en internet en tres días, y después uno de ellos ganó una base de datos y heredó todos los problemas sobre los que escribo. El trabajo de hobby no es rápido porque el código sea más simple.
- 3 min de lectura
No existe el estado de borrador
Un almacén de secretos que sincroniza en segundo plano convierte escribir un valor en desplegarlo, con un reloj que no controlas. Tu cambio no está vivo cuando lo revisas, y el que no querías activar se activa solo.
- 5 min de lectura
Un valor por defecto es una decisión que dejaste de tomar
El evento de un local no aparecía en el sitio público. Parecía facturación, y la facturación estaba bien. La causa era un booleano puesto un mes antes, por una razón que ya había caducado.
- 3 min de lectura
El primer usuario siempre paga
Un sistema que se usa dos veces por semana está frío las dos veces. Estar caliente es una propiedad del tráfico y no del código, y los caminos que menos usas son los que más necesitas que funcionen.
- 5 min de lectura
Tu presupuesto de reintentos dura más que la paciencia de tus usuarios
Un panel interno fallaba de forma intermitente. Cinco causas plausibles medidas y descartadas, una trampa de medición creada por mí mismo, y una base de datos ociosa 180 horas de 182.
- 3 min de lectura
¿Quién vigila al chequeo externo?
Un lector preguntó cómo se mantienen confiables los chequeos externos con el tiempo. La respuesta honesta es: en parte. Lo que existe, una corrección al post anterior, y la brecha que encontró la pregunta.
- 5 min de lectura
El arreglo tumbó producción por tres días
En agosto escribí sobre un webhook que dejaba arrancar servicios rotos, y lo arreglé. La semana pasada ese arreglo se negó a admitir su propio reemplazo. No hay una configuración correcta, solo una elección de falla y una cuenta que viene con ella.
- 3 min de lectura
Tu alerta se cerró sola
Siete alertas se dispararon cuando producción dejó de funcionar. Dos horas y cuarenta y cinco minutos después, el monitoreo anunció que la telemetría estaba restaurada. Nada estaba restaurado.
- 5 min de lectura
Salí a producción dos días antes y me salté el plan de pruebas
Una semana después de publicar un post sobre disciplina de releases, la corrección honesta: el release anterior salió antes de tiempo, sin el recorrido humano. Y los seis defectos de mi propio runbook que solo ejecutarlo pudo encontrar.
- 3 min de lectura
Integrar no es desplegar
Integrado, desplegado y verificado son tres estados distintos, y una sola palabra los esconde a los tres. Las dos brechas entre ellos, con un caso real de este mismo blog.
- 5 min de lectura
Todos los lunes despliego para nadie
Un tren de releases semanal, un congelamiento, un sábado de pruebas y una lista de treinta y cinco casillas — para una plataforma que todavía no tiene clientes pagando en producción. Por qué la ceremonia llegó antes que el riesgo.
- 3 min de lectura
Encuentra el camino que tiene una persona esperando
Todo sistema tiene un camino donde hay un ser humano parado ahí, esperando. Encuéntralo y saca de él todo lo opcional — una nota corta sobre por qué las puertas siguieron funcionando mientras nadie podía iniciar sesión.
- 6 min de lectura
Tus pruebas corren en un mundo que no existe
Nueve días operando el control de acceso de un evento real produjeron cero builds fallidos y cinco sorpresas. Ninguna era un bug: eran categorías enteras de falla que una suite no puede ver por construcción.
- 7 min de lectura
Lo que hace falta para operar la puerta de un evento real
Feria Arequipa le confió a mi plataforma el control de acceso: gente real, puertas reales, sin segundas oportunidades. Los números, el viernes en que se rompió durante el evento, y las otras tres cosas que salieron mal.
- 6 min de lectura
Nada estaba roto. Costaba $900 al mes.
Ninguna alerta se disparó, ningún dashboard se puso rojo, ningún usuario se quejó. La infraestructura estaba sana, ociosa y era cara — y lo único que terminó avisándome fue una factura.
- 6 min de lectura
La IA no lo publicó. Tú sí.
Aprobé features escritas por IA que cruzaron en silencio mis propios límites de arquitectura, y pasé dos días deshaciéndolo. El agente no se equivocó — la regla que rompió nunca había salido de mi cabeza.
- 6 min de lectura
Le puse una terminal a mi blog. La migración no era el punto.
Hace siete días este blog era una pestaña de un website builder que evitaba abrir. Desde entonces le creció una terminal, un segundo idioma y un pipeline de publicación. La mudanza fue una tarde; lo que vino después es el argumento real.
- 6 min de lectura
Los roles no son permisos: por qué esconder una página no es un guard
El item del menú desapareció, así que la funcionalidad estaba segura. Después alguien escribió la URL. Lo que la autorización multi-tenant me enseñó sobre lo que un usuario ve, lo que es, y lo que realmente puede hacer.
- 5 min de lectura
49 microservicios, una falla invisible: cuando “Running” no significa que funciona
El side project sobre-ingenieriado ahora es una plataforma de 49 servicios corriendo eventos en vivo. Un incidente de viernes por la noche donde todo estaba en verde y nada funcionaba — y la lección de una línea que dejó.
- 5 min de lectura
Reconstruí este blog en una tarde con un par de IA. Esto es lo que no pudo hacer.
Diez meses de silencio, una tarde de trabajo: cómo este blog dejó Squarespace por un stack propio — y un balance honesto de lo que hizo la IA versus lo que todavía me necesitó a mí.
- 5 min de lectura
Overengineering: ¿visión de futuro, ego, o solo una forma de aprender?
Construí 25 microservicios a sabiendas para un prototipo que pudo ser un monolito. Por qué lo volvería a hacer — y cuándo tú no deberías.
- 4 min de lectura
gRPC vs REST: debugging, observabilidad y la realidad de la adopción
REST se siente como casa porque lo puedes debuggear con una pestaña del navegador. gRPC es mejor en el papel — ¿entonces por qué adoptarlo sigue doliendo?
- 5 min de lectura
La relación amor-odio con las entrevistas de código: por qué la velocidad le está ganando a la calidad
Árboles binarios, colas de mensajes imaginarias y cero autocompletado: lo que miden las entrevistas de código versus lo que de verdad es el trabajo.
- 3 min de lectura
Velocidad vs. código limpio: lecciones de C# y JavaScript/TypeScript
¿Lo entregas hoy o lo haces mantenible para mañana? Cómo el lenguaje en el que trabajas te empuja en silencio hacia un lado del trade-off.