2025-11-28

Getting into Action Thanks to AI Vibe Coding

The story of how I built this website without writing code, using AI Vibe Coding through Cursor. Reflection on how AI helped me overcome the blank page problem and build something real.

By ~7 min read ai-assisted-development, cursor, vibe-coding, web-development

I'd been wanting to create my personal website for months, if I said years I wouldn't be lying. I had a clear idea, but every time I opened the editor, I faced the same barrier: the blank page. It's not that I don't know how to program, with thirty years of experience, but starting from scratch requires energy that was scarce for personal projects.

Everything changed when I started using Cursor. Instead of writing all the code, I wrote the main parts and it completed the rest. That shift in mindset was enough to break the barrier. This isn't a tutorial about "vibe coding" (there are already many of those), it's what I learned building the site you're reading.

1. The Blank Page Problem

When starting a project from scratch, you have to make hundreds of decisions: What framework? What structure? What tools? Each decision seems important and can be "wrong." It's easy to get paralyzed, because we know what it means to want to change that decision later.

I'd been through this before. A previous site with Jekyll worked, but maintaining it was a burden. This time I wanted something simple, but "simple" is also a decision. Analysis paralysis is real, and after months of doing nothing, I realized I needed a push to start, and that push turned out to be Cursor.

2. AI Vibe Coding: Conversing Instead of Writing

Over time, Cursor changed my approach. Instead of "how do I write this?", I thought "how do I describe what I want?". I started by describing: "A static site, simple, with self-hosted Tailwind, dark mode based on system preferences."

Cursor generated code. I reviewed it, adjusted it, and kept describing. Each iteration brought me closer, and each one required decisions about what to ask for. I wasn't passive, I was directing the generation.

This process forced me to be clearer. When writing code, you can be vague. With AI, you have to be specific. And that improved the result: I ended up with a more coherent and thoughtful design than the one I had in my head.

3. Not Writing the Code Yourself

There's a misconception: if I don't write code myself, it will be bad. My experience was different. Cursor's code wasn't perfect, but it was more consistent than what I would have written manually. When I asked for something specific, it applied consistent patterns.

The trick is in how you ask. "Make me a button" gives you a generic button. "Make me a button that follows the design system, with primary colors, hover states, and accessible" gives you something much better. But you have to know what to ask for, and that requires professional judgment.

The AI generated things I didn't need: analytics scripts, irrelevant meta tags. I had to review and ask it to remove them. That review process is crucial. It's like code review, but of generated code, and it needs the same judgment.

4. Using AI for Deployment Too

Setting up deployment isn't something I do every day, sometimes months go by without doing it. I wanted Nginx with Docker and Kamal, but I didn't have as much experience with Nginx as with Kamal, which normally means hours of reading documentation before writing a single line.

With Cursor, I described what I wanted: "Dockerfile with Nginx for static files, Kamal configuration, the site is already pre-generated." It generated everything and it worked on the first try. Then I refined details: environment variables, domain, security headers.

The AI also explained what each part did, which let me learn while building. The deployment wasn't perfect, I had to adjust things, but the starting point was way better than starting from scratch.

5. What Worked and What Didn't

What worked well: fast and effective initial structure, consistent styles applied automatically, deployment configuration that worked on the first try, fast iteration and changes in seconds.

What was harder: AI can't make architectural decisions. You have to know what you want beforehand, or you'll end up with a cheap copy of what's most popular on the internet. Sometimes it took several iterations to get exactly where I wanted. It didn't always remember previous decisions. And debugging was harder because I hadn't written the code myself.

Using AI doesn't eliminate the need for professional judgment, it moves where you apply it: while describing what you want, and while reviewing what came back.

6. What I Take From It

There's an idea that AI will replace developers. My experience points the other way: when you ask AI for something, you have to be specific and know what you want, and that's all judgment.

This very post was written with AI assistance. Not by AI, with assistance. I had the ideas and experience, AI helped me structure them and find the words. That's the useful part for me: I can keep the site updated without it being a huge burden.

I'm still figuring out where the limit is. The site works and I got it done, which after months of not starting is the whole point. Whether the same approach holds for something bigger than a static site, I don't know yet.