I’ve been using GitHub CoPilot for a while now, assisting me with this Hugo blog (written in GoLang, which I’m unfamiliar with). Additionally, I experimented with GenAI tools such as ChatGPT, Claude, and Mistral to generate small JavaScript games that can be downloaded and executed in a browser.
In early February 2025, I stumbled upon a tweet from Andrej Karpathy (via via because I am no longer on there), a founding team member at OpenAI and now at eurekalabs.ai, who coined the term “vibe coding” to describe a new way of programming that leverages the power of AI and machine learning.
To quote Andrej’s original tweet in full:
There’s a new kind of coding I call “vibe coding”, where you fully give in to the vibes, embrace exponentials, and forget that the code even exists. It’s possible because the LLMs (e.g. Cursor Composer w Sonnet) are getting too good. Also I just talk to Composer with SuperWhisper so I barely even touch the keyboard. I ask for the dumbest things like “decrease the padding on the sidebar by half” because I’m too lazy to find it. I “Accept All” always, I don’t read the diffs anymore. When I get error messages I just copy paste them in with no comment, usually that fixes it. The code grows beyond my usual comprehension, I’d have to really read through it for a while. Sometimes the LLMs can’t fix a bug so I just work around it or ask for random changes until it goes away. It’s not too bad for throwaway weekend projects, but still quite amusing. I’m building a project or webapp, but it’s not really coding - I just see stuff, say stuff, run stuff, and copy paste stuff, and it mostly works. – Andrej Karpathy
Andrej’s tweet resonated with me because it encapsulated a shift in the way we approach coding. It’s not just about writing lines of code anymore; it’s about understanding the problem you’re trying to solve and using AI to help you get there.
Vibe Coding: A New Way to Think About Programming
Vibe Coding is a new approach to programming that emphasizes creativity, intuition, and collaboration over traditional coding practices. It’s about harnessing the power of AI and machine learning to create software, build applications, without the need for extensive, or even any, programming knowledge.
Vibe Coding is not just about writing code with the assistance of AI; it’s about understanding the problem you’re trying to solve, the big picture, and using the right tools to get there. It’s about finding the right balance between creativity and technical skills, and leveraging the power of AI to enhance your coding experience.
Not all AI-assisted coding is “vibe coding”. My use of GitHub CoPilot is more about getting suggestions for code snippets and completing functions, rather than embracing the “vibe” of the project. It’s a tool that helps me write code faster, but it doesn’t change the way I think about coding.
Vibe Coding sounds much like just a buzzword; but it’s a mindset shift. With the right tools, anyone can become a coder, regardless of their technical background. In his NYT article, Kevin Roose observed that while this method enables non-programmers to develop functional software, the results are often limited and prone to errors. Roose suggested that vibe coding is better suited for hobby projects rather than essential tasks. But that might not be true for much longer.
“I made several small-scale applications… personalized AI-generated tools designed to address specific individual needs.” – Kevin Roose
In his Hard Fork podcast, they invited listeners to submit their own vibe coding projects, and they received a wide range of submissions, from simple web apps to more complex applications, by people with zero coding experience, making “apps for one”.
HardFork excerpt:
It’s easy to see how vibe coding could be seen as something negative, a way to bypass the hard work of learning to code. But I think it’s more about democratizing coding and making it accessible to everyone. It’s about empowering people to create and innovate without being held back by technical barriers. But I do have thoughts and feelings around security, accessibility, usability, and the ethics of AI.
Vibe Coding tools
AI Agentic coding applications like Cursor, Lovable, and Replit are changing the game. They allow you to interact with AI in a more natural way, using natural language to describe what you want to achieve. This is where the “vibe” comes in. You can ask the AI to do things like “create a new component” or “add a feature” without having to worry about the underlying code. The AI takes care of the technical details (like the tech stack used), allowing you to focus on the big picture. Once done, you publish, and the app is live.
I’ve just started using Replit, and I have to say, it’s a game-changer. It’s not just an IDE; it’s a whole ecosystem that makes coding feel more like a creative process than a technical one. I followed along with a Deeplearning.ai Replit vibe coding tutorial, and used the learnings there to create my own little projects. The tutorial gives you a good overview of how to use Replit Agent and Assistant, and Replit’s features. It’s a great starting point for anyone looking to get into vibe coding.
The first workable MVP was ready in 45 minutes. I considered it finished after “vibing” for 4 hours, and I could have spent more time on it, but I wanted to move on to the next project.
My first project was a WCAG compliance web app: https://wcag.halans.dev
It’s a simple web app that checks the accessibility of your website based on WCAG success factors, and provides suggestions for improvement. This is a 4-hour result. It’s not perfect, but I think it looks awesome and works really nicely. I did spend a lot of time on making it keyboard accessible (which it wasn’t before), and I think it’s a good example of how vibe coding can be used to create functional software without the need for extensive coding knowledge (React and TypeScript). Again, I don’t know much about WCAG, I only asked it about WCAG in generic terms, and it generated the code and any text displayed for me.
My second project was a HTTP Headers checker: https://headers.halans.dev It’s a simple web app that checks the HTTP headers of a given URL and provides suggestions for improvement. This is also about a 4-hour result. I started from a new prompt (instead of “remixing” the first one). Same tech stack, but I couldn’t get it to look as nice as the WCAG app. Here I just told it to cover most of the HTTP headers, and it generated the code and any text displayed for me. It automatically linked to MDN, which I thought was a nice touch. I told it if there were Cloudlflare headers present, document those. It also uses its own API like https://headers.halans.dev/api/self-check to do a self-check, which is quite nice. I did waste a lot of time (and some money) on trying Replit to simply add one header, Server-Timing (which it checks for and was missing from it). It added a whole server performance tracking module, which was quite cool, but not what I wanted. It was then also overwriting the Server-Timing header on the results of other sites, which was a bit annoying. I had to ask it to remove the server performance tracking module, and then it removed the Server-Timing header itself again.
Agent thought process
Adding a checkpoint $$
Generating a README.md file
Quite some time passes by as the Agent is generating the code, or reviewing the code. “My Agent’s thinking” is the new XKCD’s “My code’s compiling”.
A third project was a web sustainability analyzer: https://greenweb.halans.dev This is about less than 2 hours. A different tech stack using Python and Streamlit. Not a huge fan of how this turned out. I pointed it to The Green Web Foundation, EcoGrader, and Cloud Carbon Footprint. I had to ask it to add additional Green Hosting providers. I ran the same request through Lovable: https://eco-web-compass.lovable.app Lovable did create a React/Typescript app, but it was a bit more basic, but better looking than the Replit one. In fact it was merely a demo app (with random values) that would require further implementation of an API for it to work, which is disappointing. Lovable itself also seems simpler to use, but less powerful than Replit.
Again, at no point did I update any code manually, or update any text displayed. I just asked it to do things, and it did them.
I also had Replit Agent create an iOS app in Swift, but it needs to run in XCode. I haven’t had time trying that out yet.
And I started a fifth project, a quiz app, but I’m pretty much stuck on that one (and I am about to hit my credit limit of the subscription).
Pricing
All this is quite addictive. Once you start vibing, you want to keep going. But it’s not free. Replit has a free tier, but it’s limited in terms of features and usage. The paid plans start at $25/month for Replit Core, which gives you $25 credit. In itself reasonable, but every Agent checkpoint costs $0.25. You can also use the Replit Assistant, which is more in line with a GitHub CoPilot way of working. Each Assistant run costs $0.05. The idea being, you use Agent to generate the app, and then use Assistant to help you tweak things. But I didn’t like the Assistant as much. It broke things more than it helped. I think the pricing is a bit steep, especially for hobby projects. I nearly ran out of credits on my first few projects.
You can use my Replit referral link, which gives me $10 in credits (not sure you get anything): https://replit.com/refer/halans
Hype
Vibe coding is pretty much in a hype cycle now. It’s being touted as the future of programming, and while it’s still in its infancy, it’s clear that it has the potential to change the way we think about coding. I can certainly see the potential, as it is currently the worst it will ever be. I already hit roadblocks where the app would not function properly and we were just going around in circles, at which point it does become a waiste of time, and money. Start as small as possible, and then extend the app from there. Else the Agent becomes overwhelmed and you end up with a mess and need to start over.
I created an accessability checker, but the app itself was not accessible. I had to ask it to make it keyboard accessible and add ARIA attributes, and it did. I haven’t created anything with user accounts yet, but I can imagine it generating the basics but then forgo any of the security aspects.
Just like Midjourney and ChatGPT, they impressed me from the start, but they are now so much better than they were a year ago. But they are also a bit ‘meh’ now. Images still look artificial in a way that is hard to describe. Generated text reads/sounds clinical. I think the same will happen with vibe coding. It will become a standard part of the coding process, but it will be ‘meh’, generating fragile cookie cutter apps.