~/blog $ git show 2026-08-15
Le puse una terminal a mi blog. La migración no era el punto.
· 6 min de lectura · Victor Benavides
--meta--craftBaja hasta el final de esta página. ¿Ves el $_ al lado del link de RSS? Tócalo.
(Si estás en una computadora y tu teclado tiene una tecla de acento grave a la que realmente puedas llegar, eso también sirve. En un teclado en inglés está encima de Tab; en el tuyo puede estar en otro lado por completo — una lección a la que voy a volver.)
Está ahí desde el jueves. Nadie la anunció, y aun así algunos la encontraron, que era justamente la idea.
Siete días
Hace una semana este blog era una pestaña en un website builder que evitaba abrir. Lo mudé en una tarde — ya escribí sobre eso. Lo que no esperaba fue lo que pasó después, y resulta que esa es la parte que vale la pena escribir.
Desde la mudanza, a este sitio le creció:
- un espejo completo en español — cada post, ambos idiomas, un solo switcher
- auto-publicación: mergear un pull request despliega el sitio y publica en LinkedIn, con copy escrito para LinkedIn y no un título volcado en una cajita
- social cards generadas para cada post, con el look del sitio, en ambos idiomas
- tags y posts relacionados, para que el archivo se comporte como un archivo
- un retrato renderizado de dos formas, una de ellas hecha de caracteres de texto
- y una terminal funcional
Nada de eso estaba en un roadmap. Cada una fue una idea de una noche, y todas eran rotundamente imposibles donde este blog vivía antes. Ese es el argumento completo de este post: la migración nunca fue el logro. La migración fue lo que hizo posibles los siguientes siete días.
Qué hace la terminal
Es un prompt de verdad. No un dibujo de un prompt — acepta comandos y los responde.
help lista lo que sabe. ls blog muestra los posts como archivos. cat about.md imprime la versión corta de mí. git log imprime el archivo real, del más nuevo al más viejo, con hashes que parecen commits y que genero desde los slugs porque me hizo feliz. tags lista sobre qué escribe el blog; tag incidents muestra qué hay archivado ahí. lang en cambia el sitio completo a inglés.
cat victor.jpg imprime mi cara. En caracteres. Se ve mejor de lo que merece.
Y está sudo, que recomiendo enfáticamente no escribir. No porque pase algo malo — sino porque parece que pasa.
Por qué una terminal, y no algo más bonito
La jugada obvia para un blog de dev en 2026 es una ilustración generada por IA, con buen gusto, arriba de cada post. Degradados suaves, una red abstracta de nodos brillantes, sugiriendo vagamente "microservicios". Cada feed está lleno de eso, y no cargan absolutamente ninguna información.
Yo quería lo contrario: algo que no significa nada para la mayoría de los visitantes y bastante para unos pocos.
Si alguna vez escribiste ls en una caja de texto que obviamente no era una shell, por si acaso — esto es para ti. Si leíste "no escribas sudo" como una instrucción y no como una advertencia, definitivamente para ti. La terminal es un pequeño apretón de manos con la gente que comparte ese cariño específico y algo ridículo por este oficio, el que hace que alguien pruebe git log en un sitio web personal a las once de la noche.
Hay una frase de un viejo comercial de Apple sobre "los pegs redondos en los huecos cuadrados." Esa es la audiencia. No un segmento de mercado — un temperamento.
La ingeniería honesta
Son unas trescientas líneas de código del lado del cliente y cero backend, porque no hay backend. Este sitio son archivos estáticos en un CDN. Que es justamente lo que hace que el chiste de sudo funcione: dice que el sitio no puede hacerte nada, y resulta ser literalmente cierto. Ni siquiera puede ponerte una cookie — la analítica es sin cookies precisamente para que eso siga siendo verdad.
Las partes poco glamorosas, ya que son las que nadie escribe: la animación de tipeo en la home respeta prefers-reduced-motion y simplemente no corre si le pediste a tu sistema menos movimiento. El HTML renderizado en el servidor contiene el texto completo, así que los buscadores y quien no tenga JavaScript reciben todo — la animación es un re-tipeo encima, no la fuente de verdad. Los lectores de pantalla reciben el nombre terminado, nunca las pulsaciones.
Nada de eso se ve. Todo eso es la diferencia entre un juguete y algo que puedes publicar.
Los recibos, incluidos los malos
Una semana construyendo rápido produjo una semana de errores, y dejarlos fuera convertiría esto en un folleto.
El pipeline publicó dos veces. Mi auto-share a LinkedIn duplicó un post, y borré uno a mano. La causa fue mía: mover archivos hizo que cada post existente pareciera nuevo para la lógica de detección. El arreglo fueron dos guardas independientes, verificadas repitiendo el rango exacto de commits que lo rompió.
Un check de seguridad casi rompe justo lo que protegía. Agregué una validación de build que exige que cada post tenga su social card. Esa validación habría hecho fallar la publicación automática del martes — en silencio, a las 8:47 de la mañana, sin nadie mirando — porque el post era anterior a la regla. La detecté dos días antes, de casualidad, respondiendo una pregunta que no tenía nada que ver.
Este blog sirvió "página no encontrada" con HTTP 200 durante cuatro días. Cada URL inexistente devolvía un código de éxito, en un sitio cuyo post del martes trata literalmente sobre un sistema reportando éxito mientras no hace nada. Lo arreglé la misma semana que publiqué esa pieza, lo cual es poético o vergonzoso, y decidí que es ambas.
Y el build estaba perfectamente feliz con HTML inválido. Cuando agregué los tags, anidé tags clickeables dentro de la tarjeta clickeable que los contenía — un link dentro de un link. Todos los checks pasaron. El navegador fue lo único que se quejó.
Y asumí que el teclado de todos se ve como el mío. El primer borrador de este post abría diciéndote que presionaras la tecla de acento grave, "la que está encima de Tab". Eso es cierto en mi teclado. Es falso en la mayoría de los teclados en español, y no significa nada en un celular — que, según mi propia analítica, es donde la mayoría de ustedes está leyendo esto. Me enteré porque alguien intentó seguir la instrucción y no pudo. Un atajo de teclado no es una funcionalidad si tu lector no lo puede escribir.
Cinco errores en siete días. Todos encontrados mirando — o porque alguien me lo dijo — y no confiando en un check verde.
Lo que realmente compró
Aquí está lo que subestimé cuando mudé: ser dueño del stack no solo quitó fricción, cambió el tamaño de las ideas que se sienten dignas de tener.
En un website builder, "¿y si el blog tuviera una terminal?" no es una idea. Es una fantasía que descartas en la misma respiración, porque no hay dónde ponerla. En algo que posees, es una noche. La distancia entre sería gracioso si y está en vivo se redujo a unas cuatro horas, y eso cambia lo que te permites pensar.
Ese es el crecimiento. No la mudanza — la mudanza fue una sola tarde con mucha verificación. El crecimiento es una semana después, cuando eso que posees se convirtió en un lugar donde ideas pequeñas y raras sí pueden aterrizar.
Así que: toca el $_ al final de la página. Escribe help. Ignora mi consejo sobre sudo.
Y si el chiste te hace sentido — eres uno de los pegs redondos. Bienvenido. ✨