He pensado en este blog durante dos años.

Decir “querer” no es del todo exacto, es más bien una obsesión. En los primeros tiempos, cuando aún no sabía programar front‑end ni back‑end y tampoco código embebido, surgió esa necesidad. Estaba jugando con electrónica y, por casualidad, descubrí el video de B‑Station y el sitio web de @ushio; me pareció muy divertido y quise probarlo también. Después pasé medio año aprendiendo desde cero C y un poco de JS/CSS, y usando Hexet creé un blog estático que desplegué en GitHub Pages, lo que puede considerarse mi pequeño espacio propio.

Hexo: Un framework de blog rápido, sencillo y potente. , hexo.io, opens in new tab
Esta es una captura de pantalla de la página principal del proyecto Hexo, un sitio con tema oscuro y un logotipo hexagonal “H” y una barra de navegación superior con Docs, API, News, Plugins, Themes y About. El encabezado principal dice “A fast, simple & powerful blog framework” sobre un comando de instalación estilo terminal, `npm install hexo-cli -g`, acompañado de insignias que muestran 41 k estrellas en GitHub, 5 k forks, 212 k descargas al mes y el recuento de seguidores de @hexojs en X. Debajo aparece una línea de tiempo de versiones que enumera 8.1.0 (2025-10-26), 8.0.0 (2025-09-16), 7.3.0 (2024-07-02) y 7.2.0 (2024-04-17), y la página comienza a pasar a una sección de características que destaca “Blazing Fast” y “Markdown Support”. La imagen es evidencia de la cadencia de lanzamientos actual de Hexo y de las métricas de adopción de la comunidad tal como se muestran en su sitio oficial.
Hexo: un framework de blogs rápido, sencillo y potente. , hexo.io, opens in new tab
Esta es una captura de pantalla de la página principal del proyecto Hexo, un sitio con tema oscuro y un logotipo hexagonal “H” y una barra de navegación superior con Docs, API, News, Plugins, Themes y About. El encabezado principal dice “A fast, simple & powerful blog framework” sobre un comando de instalación estilo terminal, `npm install hexo-cli -g`, acompañado de insignias que muestran 41 k estrellas en GitHub, 5 k forks, 212 k descargas al mes y el recuento de seguidores de @hexojs en X. Debajo aparece una línea de tiempo de versiones que enumera 8.1.0 (2025-10-26), 8.0.0 (2025-09-16), 7.3.0 (2024-07-02) y 7.2.0 (2024-04-17), y la página comienza a pasar a una sección de características que destaca “Blazing Fast” y “Markdown Support”. La imagen es evidencia de la cadencia de lanzamientos actual de Hexo y de las métricas de adopción de la comunidad tal como se muestran en su sitio oficial.

再后来,看到了 @Innei 的小站,设计很精致、功能也很全,当时的我看了一眼我就想要,甚至还赞助支持了,虽然后面没用上但是这钱也花的不怨 因为我摸到了 React 源码,就和我最初看到 C 一样,不过就是代码嘛,有什么大不了的,总有一天我要自己写一个。

ushio , sakura-ushio.icu, opens in new tab
Una captura de pantalla de la página principal de un blog personal muestra una barra lateral con un avatar estilo anime, el nombre «小汐», un enlace «主页», y la navegación «所有文章/友链/关于我» junto con íconos de GitHub y otras redes sociales, situada al lado de un feed de publicaciones destacadas. La publicación superior, fechada el 29‑01‑2023 y etiquetada «置顶» (destacada), lleva el título «PD-METER-R4» con la nota «正在开发,相较于R3优化布局,更换主控,增加少量新功能» (en desarrollo, diseño optimizado respecto a R3, controlador principal reemplazado, se añaden unas pocas funciones nuevas), ilustrada con dos fotos de una PCB verde etiquetada «USBC‑R4 SAKURA» que muestra su lado de componentes y su reverso desnudo sobre un fondo de tela. Debajo, comienza una segunda publicación titulada «WORX‑BAT‑Charger», fechada el 14‑02‑2023, que queda cortada en la parte inferior del marco. La imagen sirve como evidencia de un proyecto de hardware en curso que documenta revisiones iterativas de un dispositivo de medición USB‑C PD (entrega de energía).

Después, descubrí el pequeño sitio de @Innei; su diseño es muy refinado y sus funciones están muy completas. En el momento lo miré y me lo quise al instante, incluso lo patrociné. Aunque luego no lo utilicé, no me arrepiento del dinero gastado porque pude acceder al código fuente de React, lo que me recordó a la primera vez que vi C: al fin y al cabo es solo código, nada de gran cosa. Estoy seguro de que algún día escribiré el mío propio.

Bosque tranquilo

Eso fue en el año 2024, luego 24, 25, 26 años hasta ahora

Desde entonces no puede detenerse.

Fuera de control

Al principio solo quería añadir un interruptor claro/oscuro al tema Hexo Nlvi de @colmugx. Pegué un JavaScript al estilo Dark Reader, quedó feo y no me satisfizo. Después aprendí CSS @media, pasé a un cambio SPA con JS, probé la clase .dark de TailwindCSS, luego el SSR con next‑theme y, al final, armé manualmente un script inline de Cookie + Head Sync para eliminar el parpadeo FOUC. Terminé probando entre cuatro y cinco soluciones.

🎨 Un tema sencillo para Hexo. , github.com, opens in new tab
Esta es una maqueta de captura de pantalla que promociona un tema de blog, mostrando el logotipo de marca denominativa “Nlvi” con un subrayado coral a la izquierda, acompañado de dos vistas preliminares de ventanas de navegador superpuestas de un sitio creado con el generador estático Hexo. Ambos paneles de vista previa muestran la misma publicación de demostración con fecha 27‑12‑2013, titulada “Elements”, con texto de marcador de posición Lorem Ipsum y una gama completa de ejemplos tipográficos: encabezados del 1 al 6 en tamaños descendentes, una sección de párrafo con enlaces estilizados, texto en negrita y cursiva, subrayados y una cita en bloque, seguidos de una tabla de tres columnas con “Table Header 1/2/3” y filas “Division”. La barra de navegación superior muestra “ARTICLE, ARCHIVES, TAGS, ABOUT” junto a un icono de búsqueda, indicando que se trata de una página de guía de estilo o demostración de tema destinada a mostrar cómo se renderizan los elementos HTML dentro del tema Hexo.

Pero eso es solo la punta del iceberg. Tras descubrir React, pasé de la era de piedra de Hexo y Vanilla JS a Next.js 13 Page Router, luego me volqué a Vue, estudié el enrutamiento SPA, comprendí el fallback de index.html y creé innumerables proyectos nuevos. Compré un servidor, jugué con Docker, Nginx, NAS; al considerar feo a 1Panel, escribí a mano el panel Canopy, investigué arreglos de almacenamiento NAS y escribí RFS. Al manejar SSL, el entorno local hacía que acme.sh fuera tan frustrante que terminé escribiendo un proxy inverso en Rust: Vane & Lazyacme. Lo que empezó como un proyecto de ocho‑cientos líneas escrito en tres horas una noche se transformó, tras el impulso de un amigo, en cuatro meses de trabajo, empaquetando HTTP/3, Zero‑Copy, el modelo Layer y el motor Flow. Más adelante está también Seam, un framework full‑stack que es otro verdadero quebradero de cabeza; lo dejaré para otra ocasión.

Sobreingeniería

Entonces llegó la era de la IA, y la ansiedad se duplicó.

Lo más irónico es que estas cosas debían hacerse después de crear un blog, registrándolas mientras se trabajaba en ellas. Pero el blog fue abandonado una y otra vez, las ideas se fueron acumulando y no había ningún lugar donde anotarlas. Por un lado mi interior me reprocha; prometí terminar Vane, pero no pude, tuve que detenerme. Por otro lado siento una creciente impotencia a medida que me alejo cada vez más. Siempre recuerdo lo que quiero hacer, pero simplemente no lo consigo. Si lo pienso bien, hace mucho que no me siento a escribir nada. Al mirar atrás, todo apunta a lo mismo: el sobre‑ingeniería.

En ese momento, en realidad no sentía que me estuviera desviando. ¿Vane? De todos modos, el blog tendrá que desplegarse más adelante, así que necesitaré un proxy inverso. ¿Seam? Dado que tarde o temprano tendré que escribir una aplicación full‑stack, mejor montar primero el framework que imagino. Cada paso tiene una razón, cada paso es « útil en el futuro ». Pero el problema es que « en el futuro » nunca llega, porque nunca he empezado…

Fallo

Hacer un blog en realidad no requiere un proxy inverso ni un framework propio. Sin embargo, en aquel momento los consideraba como condiciones previas, como una excusa siempre bloqueante pero razonable, aunque nunca lo fueron. La única condición previa real es una sola: sentarte y escribir el primer artículo.

En realidad, el blog no está sin tocar; al contrario, lo he hecho tres veces.

Vercel , vercel.com, opens in new tab
Esta es una captura de pantalla de la página principal de Next.js, con tema oscuro, un logo triangular y una barra de navegación superior que muestra Showcase, Docs, Blog, Templates, Enterprise, una barra de búsqueda y los botones Deploy y Learn. La sección principal muestra el texto "The React Framework for the Web", seguido de un subtítulo que explica que Next.js es usado por algunas de las mayores compañías del mundo para crear aplicaciones web de alta calidad con componentes React. Debajo hay dos botones, "Get Started" y "Learn Next.js", y una línea de comandos estilo terminal que dice "npx create-next-app@latest", evidenciando el papel del sitio como la página oficial de marketing e incorporación del framework.

La primera vez fue cuando todavía estaba el Next.js 13 Page Router. En ese momento apenas entendía qué era una SPA, y los conceptos SSR, SSG, ISR no los tenía claros en absoluto, pero como los demás decían que el SSR era bueno, yo también quise usarlo. A medida que escribía, descubrí que realmente no comprendía qué problemas resolvían esas arquitecturas y no podía seguir. Después cambié a una SPA pura con Vue 2. ¿Por qué Vue? La verdad es que me gustó el nombre, parecía nuevo, así que lo probé. No duró mucho. La tercera vez volví a React, empezando con JSX simple, aprendí TypeScript, dominé TSX, entendí la diferencia entre CJS y ESM, me enamoré de la programación reactiva y comencé a usar Lucide, Framer Motion, Radix UI, bibliotecas de las que ahora no puedo prescindir; esta vez finalmente tenía algo con forma. Pero aun así fracasé, porque en esencia solo estaba imitando: tomaba lo que otros usaban, parecía estar bien, pero en realidad no entendía por qué se hacía de esa manera. Además, con las alucinaciones de la IA, se podía montar un MVP, pero al escalar todo era una mina de problemas.

Remix , remix.run, opens in new tab
Una captura de pantalla del sitio web del framework Remix, con el logotipo de Remix en la esquina superior izquierda y una barra de navegación que enlaza a Blog, Jam, Store y V2 Docs en la esquina superior derecha. El titular centrado dice «Remix 3 está en desarrollo activo», con el subtítulo «Un nuevo framework full stack construido sobre Web APIs», y debajo aparece una ilustración de un objeto con forma de coche cubierto por una sábana negra, con el logotipo de la flecha de Remix y una banda diagonal a rayas de colores del arcoíris asomándose donde la tela cubre el capó. La imagen del coche bajo una cubierta evoca el lanzamiento o avance de un producto, señalando que Remix 3 es una próxima versión que aún está en construcción.

Más tarde también aprendí React (Remix) Router Loader, Next.js 15 App Router y RSC, pero en ese momento mi vida diaria ya estaba muy ocupada, apenas tenía tiempo para programar y ni siquiera tuve la oportunidad de fallar por cuarta vez. Ahora que lo recuerdo, mi sitio pasó de Next.js 13 a Next.js 15; acababa de terminar la migración y, antes de lanzarlo, salió Next.js 16 beta‑1.

Dejar ir

Decir "想开了" en realidad no es preciso; es que estoy cansado/a.

Una captura de pantalla de una terminal o ventana de aplicación que muestra una tabla de datos de tema oscuro con un título que incluye una ruta truncada que termina en "roject", enumerando el uso diario de modelos en filas fechadas del 2026-03-03 al 2026-03-13, con columnas para los modelos utilizados (combinaciones de haiku-4-5, opus-4-6 y sonnet-4-6), varias columnas numéricas de uso que alcanzan miles de millones, y una columna final de costo en dólares que varía aproximadamente entre $97.92 y $1,765.56 por día. El mayor costo y recuento de tokens aparecen el 2026-03-09 (más de 3.27 mil millones en la columna más grande, $1,765.56), mientras que el 2026-03-12 muestra una caída brusca a $97.92, lo que sugiere un día parcial o anómalo. Esto parece ser evidencia del uso de la API de IA y el seguimiento de facturación, probablemente de un panel de monitoreo de costos para un proyecto de software.

El ritmo de la era de la IA es demasiado rápido. Los modelos se iteran uno tras otro, nuevas tecnologías aparecen una tras otra, y cada vez estoy más ansioso, como si detenerme significara ser superado. En mi momento más loco escribí 16 pequeños fragmentos de código en un día; los tokens podían quemar 1,9 k USD en un día (aproximadamente en febrero), y estaba al borde del colapso. Pero lo que hizo que todo se detuviera no fue alguna revelación, simplemente el cansancio puro. En un ritmo cada vez más acelerado, la última paja cayó y, al contrario, me sentí aliviado, me abrí, abandoné la lucha; de esa forma, está bastante bien.

He empezado a soltar. He dejado atrás las cosas a las que antes me aferraba, he aprendido a detenerme a tiempo, y lo de mañana lo dejo para mañana. ¿Vane no está terminado? Lo dejo por ahora. ¿Seam todavía está lejos? Lo haré después. ¿El blog no es perfecto? Primero lo pongo en línea. Empieza a hacer Vibe Coding por completo; si no hay problema no lo toques, si lo hay, lo abordarás después.

Curiosamente, la calidad no empeoró después de soltar el control. Supongo que se debe a que esos días de programación « 古法 » no fueron en vano; ya en la era de GPT‑2 comencé a usar IA, pero entonces todavía escribía cada línea de código con dedicación y comprendía cada concepto. Esa experiencia me dio una base, y más que llamarlo Vibe Coding después, debería llamarse Context Coding; la capacidad de juicio necesaria sigue ahí, y dejar ir no provocó errores básicos ni accidentes.

Todas las luchas anteriores me dieron el capital para poder soltar ahora.

Origen

La solución final es en realidad muy sencilla: All in Cloudflare. Almacenamiento de objetos R2, base de datos D1 Edge, KV para caché, Worker ejecuta SSR, todo es serverless, no hay servidores.

Cloudflare Worker , workers.cloudflare.com, opens in new tab
Esta es una captura de pantalla de la sección principal de un sitio web de marketing, mostrada sobre un fondo de degradado naranja cálido con una sutil textura de puntos. Una barra de navegación se extiende en la parte superior con enlaces a Productos, Soluciones, Recursos y Precios, además de los botones Iniciar sesión y Empezar a crear a la derecha. El titular dice: “Todo lo que aprendimos al impulsar el 20 % de Internet, ahora por defecto para ti”, seguido de un subtítulo que identifica la compañía como Cloudflare y la describe como una “Nube de IA con cómputo, inferencia de IA y almacenamiento” que permite a los usuarios “desplegar aplicaciones en lugar de gestionar infraestructura”, con un segundo botón de llamado a la acción “Empezar a crear” centrado debajo.

¿Esta respuesta es sarcástica? Muy sarcástica. Porque antes de llegar a este punto “simple”, di una vuelta completa dando rodeos. En su momento planeé montar todo por mi cuenta, por lo que tuve que administrar el servidor, trastear con Docker y gestionar los contenedores, así que escribí Canopy como panel de gestión, Lazycert para los certificados, Vane como proxy inverso y Twig para los puntos de monitoreo de recursos. Un montón de proyectos, solo para atender a un servidor de chatarra.

El almacenamiento es igual. Como me parece caro el almacenamiento de objetos, quise usar los discos duros de mi propio servidor, así que escribí RFS, un VFS para la deduplicación atómica y la fusión de archivos únicos, incluso reviviendo el concepto de registro de los años 80‑90, y finalmente lo monté a través de FUSE. ¿El resultado? Pasé más tiempo construyendo una rueda que no era muy buena, el servidor estuvo inactivo durante un año, y fue un negocio completamente perdedor.

Vercel , vercel.com, opens in new tab
Una captura de pantalla de la página de marketing de Vercel sobre un fondo negro, con una barra de navegación superior que muestra Productos, Recursos, Soluciones, Empresa y Precios, además de los botones Preguntar a IA, Iniciar sesión y Registrarse junto al logo triangular de Vercel. Debajo, un encabezado grande dice "Construye y despliega en la Nube AI", seguido del subtítulo "Vercel ofrece las herramientas de desarrollo y la infraestructura en la nube para crear, escalar y asegurar una web más rápida y personalizada", y dos botones etiquetados "Comenzar a desplegar" y "Solicitar una demo". La mitad inferior está dominada por un prisma triangular facetado y brillante, renderizado en estilo malla de alambre, que irradia luz azul, verde, naranja y roja sobre un fondo de cuadrícula, evidentemente una reinterpretación 3D estilizada del logo de Vercel utilizada como arte principal.

Al final, después de dar muchas vueltas, termino volviendo al serverless. El concepto de Vercel es bueno, pero no me gusta Next.js; además, Vercel tiene demasiada “magia” y el diseño del middleware que se compila por adelantado para ejecutarse en el Edge termina fragmentado, incluso provocando varios CVE. Sería mejor que todo estuviera en el origen. Por otro lado, Cloudflare Workers es excelente, alcanzando otro extremo: compilar productos de menos de 10 MB a WASM permite ejecutar lógica de negocio real en el Edge, que es justo lo que quiero. Aparte del gasto, no tiene verdaderos defectos, aunque técnicamente no es un defecto, ya que el tiempo ahorrado equivale a dinero.

Menos es más

He escuchado esta frase innumerables veces, pero me tomó dos años comprender verdaderamente su significado.

La esencia de volver a la ingeniería es: “Make it function, make it correct, then make it exceptional.” Finalmente encontré el camino correcto y lo hice functional. ¿Mi blog es sencillo? Sí, sencillo. ¿Incompleto? Sí, incompleto. Pero sigue siendo mejor que nada. Si ni siquiera tienes una versión en línea y sigues trabajando en algo que es “quizá necesario”, persiguiendo una perfección invisible, acabarás sin nada que mostrar. No es una concesión, es una elección de ingeniería. En fin, lo he aceptado. Así que lo he aceptado. Ya no me aferro a un detalle y, en cambio, salí. Mi galería del móvil lleva mucho tiempo sin fotos al aire libre, así que tomé rápidamente una foto del borde de la carretera—hace mucho que no salgo.

Es una fotografía tomada al aire libre, vista desde arriba de un seto bajo y denso de arbustos de hojas pequeñas plantados a lo largo de una calle o acera, con un bordillo de granito que corre diagonalmente desde la esquina inferior izquierda hacia la esquina superior derecha y una carretera pavimentada visible en la esquina inferior izquierda. El seto muestra nuevo crecimiento de color verde claro sobre ramas leñosas más oscuras, con la base de un tronco de árbol visible cerca del borde superior y una franja de suelo cubierto con mantillo o desnudo de color marrón más allá de los arbustos. La luz solar directa y brillante proyecta sombras definidas sobre las hojas y el bordillo, lo que sugiere que la foto fue tomada alrededor del mediodía.

Al mirar atrás los desvíos que tomé antes, ¿lo lamento? No, no lo lamento. Algunas cosas, si no las intentas tú mismo, quizás nunca las entenderás. Más aún, en la era de la IA, intentar seguir el camino antiguo que yo recorría ya no es prácticamente posible; demasiados flujos de trabajo ya se han transformado. Además, este proyecto es Taki, 100 % codificación con IA, pero eso no significa que no pueda mantenerse a largo plazo, ni que carezca de un toque humano. En realidad, si hay IA o no no es importante; además, lo que me gusta no es tanto escribir código en sí, sino crear algo…