← Back to Chronicle

I Vibe-Coded This Entire Website. Here's What Actually Happened.

2026-03-01·5 min read·by Drew

The Setup

Two days after Block laid off 4,000 people, I decided to launch The Last Programmers. I had a domain, a vision, and a weekend.

The irony wasn't lost on me: I'd use the very tools that are replacing us to build a site about being replaced. So I went full vibe-coding. Described what I wanted, let AI build it, iterated through conversation.

Here's the honest account of how that went.

What "Vibe Coding" Actually Looks Like

Let me kill a myth first: vibe coding isn't "say something vague and get a perfect app." Not even close.

What it actually looks like is an intense conversation where your twenty years of experience matters more, not less. I wasn't saying "make me a website." I was saying things like:

"I need a Next.js 15 App Router project with next-intl for bilingual routing, zh and en locales, Tailwind v4 with a dark theme, MDX for blog content with gray-matter for frontmatter parsing."

That sentence contains about ten years of accumulated knowledge about build tools, frameworks, routing patterns, and content architectures. Without that context, I'd be flailing.

The AI built the scaffolding. But I directed every decision — the architecture, the component structure, the data model, the routing strategy. I was the architect. The AI was a very fast builder who needed clear blueprints.

What Went Surprisingly Well

Speed. The core site structure — bilingual routing, layout components, homepage sections, about page, blog system — came together in hours, not days. Things that would have taken me a weekend of careful coding happened in a single sitting.

The boring parts disappeared. Setting up i18n configuration, writing boilerplate API routes, creating type definitions — all the stuff that's necessary but not intellectually engaging. AI handled it cleanly. I didn't miss any of it.

Iteration speed. "Move this section above that one. Change the gradient. Add a terminal-style animation." Each change was seconds to minutes, not an hour of careful CSS tweaking. I could try ideas fast enough to actually explore the design space.

What Went Wrong

Chinese translations. The AI's Chinese was technically correct but sounded like a translation, not native writing. Stiff, formal, the kind of Chinese that makes native speakers cringe. I had to flag it and push for a complete rewrite — and even then, I needed to check every line.

If your audience includes non-English speakers, don't trust AI translations blindly. The gap between "grammatically correct" and "sounds like a real person" is still significant.

Accumulated assumptions. After a few hours of building, the AI had made dozens of small decisions I hadn't explicitly approved. A directory structure choice here, a naming convention there. Individually fine. But together, they sometimes created patterns I wouldn't have chosen.

I had to periodically stop building and audit what had been created. "Wait, why is this called 'blog' when we decided on 'chronicle'?" Rename propagation across fifteen files. Not fun.

The debugging gap. When something broke, the AI could usually fix it. But sometimes the fix introduced a new issue, and the fix for that introduced another. Without my own understanding of what was happening, these chains could have gone on forever.

The times I had to step in and actually read the code, understand the bug at a fundamental level, and direct the fix myself — those were the moments where twenty years of debugging experience earned their keep.

The Feeling

Here's what nobody talks about in the vibe-coding discourse: how it feels.

It feels like conducting an orchestra. You're not playing every instrument, but you need to understand every instrument to know if something sounds wrong. The music moves faster than you could play alone. But if you lose track of what the violins are doing, the whole piece falls apart.

It also feels, honestly, a little unsettling. I spent twenty years learning to play the instruments. The muscle memory, the satisfaction of a clean implementation, the craftsman's pride in well-structured code. Vibe coding is effective, but it changes what "building" means. You're directing more and crafting less.

I don't know if that's a loss or an evolution. Probably both.

The Numbers

For those who want specifics:

  • Total build time: About 6 hours
  • Estimated manual build time: 40-60 hours for equivalent functionality
  • Languages/frameworks involved: TypeScript, Next.js 15, Tailwind v4, MDX, next-intl
  • Lines of code I typed by hand: Maybe 5%. Mostly corrections and refinements
  • Lines of code I understood and approved: 100%. Non-negotiable

That last point matters. I didn't ship anything I didn't understand. The AI wrote it, but I reviewed every component, every route, every configuration. The day I start shipping code I don't understand is the day I stop being a programmer and start being a liability.

What I Learned

Building this site taught me something I wasn't expecting: vibe coding doesn't make programming experience less valuable. It makes it more valuable per unit of time.

My twenty years of context let me direct AI in ways that a less experienced developer couldn't. I knew what to ask for, what to watch out for, what patterns would cause problems later. The AI amplified that knowledge instead of replacing it.

But — and this is the uncomfortable part — it also means the barrier to building is lower. Someone with two years of experience and good AI tools can now build things that used to require ten years of experience. Not everything. Not the hardest stuff. But a lot of the middle.

That's the real shift. Not that programming knowledge is worthless. But that it's no longer the bottleneck it used to be.

The Source

This site is the evidence. You're reading it right now. Built in a weekend by a single programmer who typed maybe 5% of the code.

Make of that what you will.

Drew

Drew

Chronicler · 20-Year Programmer