Vibe Coding
What Is Vibe Coding?
Vibe coding is an AI-powered programming method introduced by Andrej Karpathy in 2024/2025. With vibe coding, you describe what you want in natural language prompts and usually large language models (LLMs) generate most, often all, the working code for you. If you have the time, check out the Art of Vibe Coding adapted by Rick Rubin to learn more of the way of vibe coding.
One big advantage with this new method is accessibility since people with no coding experience can build projects while experienced developers can quickly prototype new ideas before fully committing to them. This is especially helpful for startups. The drawback is that developers will most likely not fully understand how the generated code works. For small side projects, this is fine, but for production-level software it can lead to long-term issues and technical debt.
There are plenty of tools out there that make vibe coding smoother. Cursor IDE, Claude Code CLI, GitHub Copilot, Loveable, Replit, v0, and others let you work with AI directly in your environment or provide dedicated interfaces for vibe coding. Personally, I mostly stuck with Cursor IDE and Claude Code CLI for these projects.
Here’s the thing though. These tools and models cost money. With traditional coding, you’re mostly paying with your time. With vibe coding, you’re paying with your wallet. And if you don’t know what you’re doing, you’re paying with both your wallet and your time. Each of the projects on this page costs around $10 to $20 to build. That adds up if you’re experimenting a lot. I do think as these models improve and become more efficient, the cost will come down eventually. For now, it’s something worth considering when deciding if vibe coding makes sense for your project.
Curious about what’s possible, I tried out vibe coding myself and made this page to explore the principle itself through actual projects. I’m not just building products, I’m testing and demonstrating what vibe coding is really capable of. This is just for fun, but it offers a glimpse of how coding might look like in the future as these models continue to improve.
Infinite Monkey Theorem
Ever heard of the Infinite Monkey Theorem? It’s a philosophical thought experiment that says if you give infinite monkeys infinite typewriters and infinite time, eventually one of them will produce the complete works of Shakespeare just by randomly banging on the keys.
Sounds ridiculous, right? But here’s the wild part. Vibe coding is kind of like that, except instead of monkeys we have AI models, instead of typewriters we have coding languages, and instead of Shakespeare we’re getting working software.
Think about it. Large language models are trained on billions of lines of code, patterns, and examples. When you give an LLM a prompt, it’s not actually “thinking” through your problem step-by-step like a human developer would. Instead, it’s predicting the next most likely token based on patterns it learned during training. It’s essentially making educated guesses by generating code based on what statistically seems right.
And somehow, more often than not, it works. The model outputs code that actually compiles, runs, and solves your problem. Not through understanding, but through probabilistic pattern matching at an absolutely massive scale. It’s like the universe’s most sophisticated random text generator found the “right” answer. But here, the difference is speed. Those monkeys would need literal infinity. Your AI? Gets there in seconds or minutes.
So in a way, when you use vibe coding, you’re harnessing millions of lines of code patterns, distilled into a model, to generate solutions. It’s not conscious problem-solving, it’s statistical magic. And that’s precisely why it’s so powerful and, admittedly, why understanding what the code actually does still matters.
The Question Matters More Than The Answer
Here’s something important that often gets overlooked. Vibe coding is not about getting any answer, it’s about asking the right question. Think of the Deep Thought Supercomputer from The Hitchhiker’s Guide to the Galaxy. It spent millions of years computing the answer to the ultimate question of life, the universe, and everything, only to give you the number 42. The answer was technically correct, but useless because the real problem was figuring out what question to ask in the first place.
Vibe coding works the same way. Your prompts are everything, but so is context management. A vague prompt will give you vague code, and if you don’t provide the right files, documentation, or examples as context, the model won’t understand what you actually need. If you’re someone who understands coding, architecture, and systems design, you can craft detailed prompts and curate the right context to guide the LLM toward excellent solutions. But if you don’t know what to ask for or what context to provide, neither will the AI.
This is actually why vibe coding is so powerful for experienced developers. We know what good code looks like, we understand the pitfalls, and we can write prompts that steer the model away from them. For beginners with no technical background, this becomes a real limitation. You might get working code, but without understanding what went wrong or what to ask for next, you’re stuck.
When Vibe Coding Isn’t Enough
The latest AI models are impressive, but they’re not a silver bullet. Vibe coding can work in production, but only if you’re serious about it. You need robust unit tests. You need clear sources of truth for what your system should do. You need to catch when things break or drift. And you need the hacker’s mindset. Think outside the box and try to break your vibe coded project in unexpected ways. What edge cases haven’t you considered? What security vulnerabilities could someone exploit? This is what separates code that merely works from code that’s actually robust.
Here’s the thing though. The AI does not own you. You own the AI. Don’t just accept what it generates. Review it. Test it. Break it. And honestly, for certain parts of your codebase, you’ll need to go back to old-school coding. Lock in, think deeply, write it yourself. Vibe coding speeds things up, but it’s not a replacement for real programming when it matters.
There’s another thing I’ve learned. Sometimes you just need to end a session with the AI and start a new one. As your conversation history gets larger and larger, the model’s performance degrades. It makes more mistakes, generates less coherent code, and starts hallucinating more frequently. If you don’t catch this and stop, these errors compound on each other, making things progressively worse. It’s like trying to read a document that’s been photocopied over and over again. Starting fresh keeps things clean and sharp.
Vibe Coded Projects
Below are two projects, stairs (repo) and transcendental (repo), I built using the methodology of vibe coding. Mostly generated from prompts, with manual work limited to providing context, debugging, and deploying to GitHub Pages. They’re fun static site experiments that showcase what’s possible when you combine creative ideas with code through vibe coding. Both are hosted on GitHub.