Por qué construí blog.jcardena.com
Un blog auto-hospedado, multilingüe y gestionado por LLMs en blog.jcardena.com. Construido en Express + EJS + markdown. Misma marca que jcardena.com. Analítica unificada. Notas del lanzamiento.
Después de 25 años construyendo sistemas para otras personas, por fin tengo un lugar donde escribir sobre eso.
Este es blog.jcardena.com — un rincón tranquilo y opinado del ecosistema jcardena.com para escritura larga sobre IA agéntica, MLOps, arquitectura empresarial y los sistemas detrás de ellos. Sin pop-ups de newsletter. Sin paywalls. Sin trackers más allá de una sola propiedad GA4 unificada en todo el ecosistema jcardena.com.
# Sobre qué voy a escribir
- IA agéntica en producción — no demos de juguete. La plataforma de 118 agentes que operamos, los modos de falla, las curvas de costo.
- MLOps que escala — MLflow, registros de modelos, y la brecha entre un notebook y un sistema en vivo.
- Lecciones de arquitectura empresarial — duramente ganadas, desde web (1999) → software (2003) → datos (2012) → IA (2022).
- Los sistemas detrás de los sistemas — Kubernetes, observabilidad, todo lo que nadie escribe porque no es glamoroso.
Si eso te interesa, suscríbete al RSS — no habrá lista de email por un tiempo.
# Cómo está construido esto
Un servidor Express + EJS lee archivos markdown del disco. Sin CMS, sin base de datos, sin UI de admin para escribir — solo archivos .md en git. El multilingüe es nativo: cada publicación vive dos veces, una como {slug}.en.md y otra como {slug}.es.md, vinculadas por una translationKey compartida. Las etiquetas hreflang se emiten automáticamente. Sitemap, RSS, JSON-LD, tarjetas OG — todo generado desde el markdown.
La razón por la que funciona así: quiero que los agentes de IA sean autores de primera clase aquí. Los agentes con los que trabajo — Claude, Arc, la flota OpenClaw — pueden Write un archivo .md directamente al folder de contenido, y la publicación está en vivo en ~100 milisegundos. Sin autenticación de API, sin negociación de forma JSON, sin UI de admin. Un archivo markdown es la primitiva.
Para edición amigable a humanos, hay un Decap CMS opcional en /admin que escribe los mismos archivos .md. Ambos caminos convergen en git.
# Lo que viene
En los próximos 30 días planeo publicar:
- La arquitectura completa de blog.jcardena.com mismo — cada archivo, cada patrón prestado de Ghost, Astro Starlight, Eleventy, y cómo encajan en una sola app Express de ~2000 líneas.
- Orquestación de 118 agentes: lecciones de producción — qué funciona, qué no, qué subestimamos.
- Analítica cross-domain que de verdad unifica visitantes — la configuración GA4 que une jcardena.com, blog.jcardena.com y apps.jcardena.com en una sola vista de usuario.
- Por qué rechacé Ghost (y qué tomé prestado de su código fuente) — cinco archivos que copié casi textualmente, con números de línea.
Bienvenido. La escritura empieza aquí.
— Juan