this blog was not vibe coded.

this blog was not vibe coded.

I was told that creating a modern blog would be easy. A simple, minimalist, technical space to share ideas. I was sold a vision of elegant tools and seamless workflows.

That was a fucking lie.

My journey to create this very blog was a descent into a special kind of hell reserved for developers. It started with a "Jony Ive" approach: a stack so complex it involved Node.js, React, shadcn, a taxonomy system, a headless Ghost CMS, and a free-tier Oracle server that behaved like a possessed Speak & Spell. It was a nightmare of configuration.

I retreated. "Simpler," I told myself. Just Node.js, React, and Tailwind. I started vibe coding, letting the project flow. The CMS worked locally, a perfect little jewel on my machine. But the moment I tried to push it to the world, the Vercel deployment logs screamed back at me with errors as cryptic as they were infuriating.

Every attempt felt like running in circles. I wasn't learning, I was just accumulating frustration. The goal wasn't to become a full-time sysadmin for my own blog; the goal was to write.
A tangled network of colorful server wires representing complexity.

It was at the point of total burnout that the revelation struck. The problem wasn't my ability. The problem was the premise. The entire "modern" stack was the hurdle. All the frameworks, build tools, and abstractions were layers of complexity I never needed.

So, I burned it all down.

I went back to first principles. A simple index.html file. A post.html file. A direct line to my Ghost API using a basic fetch call. No build step. No framework.

The result is what you're reading now. A website that is brutally simple, impossibly fast, and completely under my control. It is composed of two text files that do exactly what I tell them to do. Nothing more.

The lesson was painful, but clear: simplicity isn't the default. It's an achievement. It's something you have to fight for by ruthlessly cutting away the things you don't need. It turns out, I didn't need much at all.

Close-up of clean, green code on a dark computer screen, representing the final simple solution.