2 de septiembre de 2026
una montaña de píxeles
Dibujando Lovundfjellet como pixel art para la cabecera, y la lucha por conseguir bien la forma y el favicon.
2 de septiembre de 2026
Dibujando Lovundfjellet como pixel art para la cabecera, y la lucha por conseguir bien la forma y el favicon.
1 de septiembre de 2026
El diseño antiguo del blog era demasiado genérico, así que empecé de cero con verde y un aire a Lovund.
3 de julio de 2026
Qué se rompió en realidad durante el primer recorrido completo del blog terminado, el misterio del 413 en los comentarios que nunca se resolvió del todo, y qué me enseñó de verdad construir todo esto.
1 de julio de 2026
Qué es en realidad un proxy inverso, por qué cada servicio se sienta detrás de una única instancia de Caddy, el TLS automático que aún no he probado de verdad, y conseguir que los healthchecks signifiquen algo.
29 de junio de 2026
Qué es en realidad MinIO y el almacenamiento compatible con S3, cómo el blog comprueba los tipos de archivo antes de guardarlos, y el bug del límite de tamaño que tardó mucho más de lo debido en encontrarse.
26 de junio de 2026
Escribir posts en un editor markdown de panel dividido con vista previa en vivo, moderar comentarios, y por qué el servidor comprueba los permisos aunque la interfaz ya haya escondido el botón.
25 de junio de 2026
Renderizado del lado del servidor, form actions en vez de llamadas fetch desde el cliente, el proxy que mantiene el access token completamente fuera del navegador, y renderizado de markdown saneado.
23 de junio de 2026
Cómo el servicio de blog modela los posts, slugs, borradores y publicación programada, un árbol de comentarios anidado, likes y reportes, todo encima de migraciones de Postgres.
22 de junio de 2026
Cómo funcionan las cuentas, el hashing de contraseñas, los tokens y cookies, la rotación de refresh, y el rate limiting por debajo de la página de login de este blog.
21 de junio de 2026
La historia honesta, un poco sobrecomplicada, de por qué construí y autoalojé este blog yo mismo en vez de usar una plataforma ya hecha.