I didn’t write most of this site’s code.

Not in the traditional sense. There was no blank-file-staring, no Stack Overflow rabbit holes, no “why isn’t this flexbox working” at 2 AM. I described what I wanted, argued with an AI when it misunderstood, and shipped the result.

This is Vibe Coding. And this site is a product of it.

The setup

I started with a prompt: “Build me a personal site that doesn’t look like a SaaS landing page.” I wanted something experimental, raw, opinionated. Something that feels like it was built by a developer who uses their own tools — not a designer trying to impress Dribbble.

Astro came up immediately. Static, fast, content-driven. No runtime API calls, no CMS lock-in. I liked the idea of everything collapsing into a single JSON file at build time. So I said yes, and we went.

The first version was ugly in a promising way. JetBrains Mono everywhere, light grey-green background, border colors at 12% opacity. It looked like a developer’s notebook. I kept it.

What Vibe Coding actually feels like

It’s not magic. It’s not “I don’t need to know how to code anymore.”

It’s more like pair programming with a partner who types at 500 WPM but occasionally hallucinates APIs and never asks “are you sure?” unless you explicitly tell it to stop. You still need taste. You still need to know when something is wrong. You still need to say “no, that animation is tacky” or “this spacing feels off.”

The real skill shift is from syntax recall to intent clarity. Instead of remembering how to write a CSS grid, you describe the layout you want and critique what comes back. The bottleneck moves from “how do I code this?” to “what do I actually want?”

The messy parts

Not everything vibes.

I spent twenty minutes arguing about why a view transition animation should flip like a page turn instead of sliding. The AI kept generating smooth, generic transitions — the kind you’d see on every other portfolio. I had to explicitly say: “Make it feel like paper. Like you’re turning a physical page.” That specificity is the work.

Then there was the JSON pipeline. I wanted all content — blogs, projects, social scraps — to flow through one file. The AI built the pipeline in three messages. Then I spent an hour refining the schema because I realized I’d structured it for the AI’s convenience, not mine.

Vibe Coding gives you velocity. It doesn’t give you foresight.

Why this matters

Some people will look at this site and say “oh, an AI built it.” They’re missing the point.

AI didn’t choose the grey-green palette. AI didn’t decide to embed tweets in a left rail on desktop. AI didn’t insist on JetBrains Mono because “sans-serif is too comfortable.” Those were human decisions — mine — articulated through conversation rather than keystrokes.

The code is just the artifact. The taste is still the bottleneck.

And honestly? Shipping this felt different from every other side project I’ve built. Not because I wrote less code, but because I spent more time thinking and less time typing. The loop was: imagine → describe → evaluate → iterate. Not: imagine → Google → type → debug → type → debug → give up.

That’s the vibe.