F2F #56: Trapped by vibe coding

I am excited to try vibe coding but I feel it's closer to a videogame than to doing real world.

F2F #56: Trapped by vibe coding
Photo by Pascal van de Vendel / Unsplash

I have spent the last few days trying the new drug, vibe coding. You might've noticed that I didn't send last week's issue, so here's my take on vibe coding.

For the uninitiated:

Vibe coding is a recent software development technique where developers use natural language prompts to guide AI tools—usually large language models (LLMs)—in generating code, often without reviewing or modifying the actual code produced by the AI.

Trying to eat my own dog food, I spent a couple of evenings last week looking for a tool to help me manage a big family event. I only found one, but it was fairly inflexible, so I thought: how hard could it be to code it?

The TL;DR of all of this is that you find an AI-based tool you can chat to, and prompt your ideas so it can help you create, evolve and refine an app. Too soon, you will run out of credits and you will start spending Real Money. Thus, you're forced to decide: do I want to keep paying and prompting or do I want to trust in my coding skills, paying with my time instead?

Well, first learning: the time to code an app is going to be always higher than the time to vibe code it if you know your way around code. If you don't, vibe coding is always going to be more expensive on all fronts.

Why? Let's dissect it.

The project setup: After trying a few tools, I decided to go for Lovable. Time (and money) spent using these tools can amount to something significant if you don't commit early to one of them and stick to it no matter what.

I know that all of these apps have got limited free usage, so I decided to ask ChatGPT to give me an extremely detailed prompt for Lovable, so it could get it right on the first try. I estimate that this saved me about 10 iterations. The prompt was 3 pages long in pretty good detail, so I think I knocked it out of the park on this one.

After creating the first codebase, you have to publish it somewhere. Up until recently, this wasn't solved. With Lovable, now you've got the option to create a backend of sorts with Lovable Cloud, which solves backend, hosting and databases. I'm not sure what other options offer in this regard, but I don't think people know that they'll have to drop this somewhere to deploy it (AWS, Azure, etc.), which is no small task.

Meme image: Boromir meme of one does not simply walk into Mordor

Because it's my first attempt at vibe coding, I didn't want to iterate too much on Lovable. Therefore, as soon as I had a first version - not before I was asked to pay for extra credits because my freebies were over - I decided it to move the project to Cursor.

For that, I had to connect Lovable to Github (easy) and set up my account with my public key to ship stuff. I recently changed laptops, so I hadn't set mine up. While it's nothing extraordinary, someone non-technical might struggle to create the key pairs and editing config files through the terminal.

Once I had all of this, I downloaded the code locally and fired up Cursor to continue developing on my own with the Cursor AI chat.

Money: So far, we've spent money on Lovable (20 USD) and also on Cursor, because it also has a few free requests. After that, their 20 USD plan will keep you going. Maybe you are also paying for ChatGPT, which will come in handy later, so add this one, too.

While that doesn't look expensive (and it isn't), it creates a few problems.

First off, you subscribe to something you might forget to turn off later. Earlier last year, I signed up to Cursor, used it for a month, and then continued paying it for six, until I realised that I had bought a subscription, not a pack of credits for the month. So, beware the subscription creep.

Second, all of these apps give you a barely usable amount of free credits to get you somewhere interesting enough for you to want to keep paying them. Sunken cost fallacy: I've come this far, now I want to keep going. However, I felt that after a few iterations on Lovable, I wasn't in full control, so I had to change apps.

Third, and this is the most philosophical. AI apps are being subsidised like Cloud in its heyday. That means that we're not seeing the full cost of using them. Most AI companies are paying for a big part of the real cost using their VC money. When that will run out, they will be forced to increase prices or shut down their business.

In short: AI is getting cheaper and cheaper until it gets very expensive. You won't notice it overnight because it'll be like the frog that gets boiled to death.

Time: This is the one that pains me the most. While I don't mind spending a few bucks here and there, and time doing tech stuff, I don't like wasting my time.

I feel like most of my chat interactions with Lovable (more) and Cursor (less) have wasted my time.

For instance, when I first created the app, Lovable came up with a palette of colours that was OK to get this started, but far from the looks I wanted to give it. Therefore, in Cursor, I decided to tell it that we needed to change the colour palette to one I designed using ChatGPT.

To my surprise, everything went well, but it added a colour selector on the main navigation bar:

Well, that included a lot of unneeded code to the codebase, and another iteration to remove it. Not only it added something that's completely not standard, but I'm not sure it removed all the rubbish it created (components, css rules, html code, text, etc.) in the first place, and I don't like living with this feeling.

Maybe I should instruct my Cursor instance to ask me questions about every change I request, so I can define it further, before it sets out to create code, but that might be more expensive for them, so maybe that's why they discourage it - or, at least, don't enable it as an opt-out setting.

The last mile: I am far from done with my app, but I know that the last details will be very painful. Why?

Well, for starters, I haven't done an app on my own in AGES. I don't know what's expected nowadays. I will have to shake off a lot of rust.

Also, even though some of these apps offer agentic services for stuff like QA, CI/CD, buying domains, setting up email services and whatnot, the cost of launching something is always a big unknown. Unless you want to be sketchy. I don't.

For instance, in Spain (and most likely Europe in general), you can't collect private data (a contact form, a newsletter, user signups, etc.) without certifying you're a business. In Spain in particular, you have to submit all your registries of stored data/database models to the Agencia Española de Protección de Datos. Before that, you have to create a business, which requires a notary and 3000 euros of deposit, and a few days and more expenses.

All in all, my first views on vibe coding are that is mostly a good practice for fun, for hackathons or not-for-profit side-projects. Vibe coding is the new no-code. It'll get stale soon and businesses will relegate it to something residual because it entails more downside than upside. To me, it feels more like playing Football Manager and feeling you want to become a football manager, for real, but you're very, VERY, far from it. The theory is there, but the real world will hit you like a tonne of bricks.

But sure, there will always be one Pieter Levels or two that confirm that they're the exception to the rule. It's up to you to decide whether you want to fall prey to survivorship bias or not.