the slopware cometh

What is Vibe Coding?

“Vibe Coding” is a very, very recent term that was coined by Andrej Karpathy, co-founder of OpenAI. He defines it as:

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.

which means that you tell an LLM roughly what to write, and the LLM then takes the prompt and barfs out a load of code which you just then paste together and – et voila! – you now have some working software that you can sell on to eager customers, and you didn’t even need to sit down and learn, say, Python, Rust or C#!

You just told the LLM what you needed, and it gave it to you. Software is now easy to write and all those lazy, overpaid software engineers had better learn to be plumbers or something, because now everyone can code!

Or at least, that’s what social media says. But then, social media gave us phenomena like Hawk Tuah girl and the current President of the United States, so perhaps maybe we’d better reserve judgement.

The Rise of Vibe Coded Games

Games that have been “vibe coded” are the current trend, and this, fly.pieter.com:

is allegedly one of the biggest hits of the vibe coding wave, earning a reported $70k a month because of all the adverts that are on just about every asset. You log in, select a free plane (or pay $29.99 for a better one!) and then take off, flying around a world of polygons and low frame rates.

I then went off to look for more “vibe coded” games, and there were lots and lots of similar-looking games, featuring basic, development-asset quality vehicles shooting around the place or flying. Some vibe coded games were more impressive, because the person who made it spent some time playing around with Stable Diffusion and managed to get a nice model, but… it kinda left me cold. And I began to think a bit harder about what this all means.

But Now Anyone Can Code… Right?

There’s been an idea that LLMs are going to make software developers irrelevant, but then many thought the arrival of high-level languages would make software developers extinct, and also the arrival of low-code interfaces during the 2010s. As we see now, these changed software development, but a lot of developers learned to roll with the punches and carry on working.

What I will say is that LLMs are indeed useful for some aspects of coding in my personal projects – Microsoft Copilot or Grok can easily crack out a load of tests that make sense, and sometimes when I’ve got a huge class the suggestions that they give me for splitting it up aren’t bad.

I have to watch out when asking an LLM about an API – hallucinations and non-existent libraries still abound, but while I’ve been building stuff at home it’s proven pretty solid, and “mostly right” is usually cleared up by me going and, say checking the docs if I’m not 100% sure. It is quicker than scrolling Stack Overflow looking for a particular answer, for sure.

And what I will say about these “vibe coded” games is that you can get a lot going, at least on the surface, by using Claude and Cursor but then a “but” comes in. A rather big one.

MVP? What MVP?

Playing a game called Zullo Fly…

Again with the blocks…

It became immediately obvious the limitations of the “vibe coding” approach. The game’s FPS chugged as more and more enemy planes popped up and I shot them down without those enemies being cleared, and eventually the game crashed and I closed the browser tab having had enough of the “action” on offer.

Were this an MVP for something, I’d be fairly impressed. Most games usually have debug assets for a lot of their development life with only detailed assets being swapped in towards the end, and a lot of optimization and bugfixing goes on to ensure a polished experience. As an actual released game… I’m not so impressed. Which leads to…

Asset Flips and Slopware

Back in the 2010s, when Unreal and Unity arrived on the scene, game marketplaces such as Steam became flooded with what were called “asset flips”. The engine marketplaces for Unreal and Unity contained “game kits” which provided you with debug assets that would look nice while you were working on your full game, but…

A lot of people just went and got the basics of collision and motion right, slapped in a load of zombies and soldiers, built their game and then stuck it up on Steam for $20, and people soon tired of these, mainly due to the fact that they were poorly coded by developers who clearly didn’t have the skill, or couldn’t be bothered to improve. The asset flip game became a meme, much mocked on Youtube videos, and soon it went out of fashion. I see this with LLM slopware.

While good for perhaps a proof of concept, this part of Karpathy said resonates with me:

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.

A lot of people will well… just do this. They will get an LLM to spit out a load of code they don’t really understand, paste it together, run it and think “that’s good!” and then deploy expecting easy money to roll in. And for some it will, but for others it won’t.

The striking thing about the X feeds of many of the vibe coders is that in response to people reporting bugs, there’s a lot of “thanks, I’ll ask the LLM how to fix that”, which confirms my suspicions that you probably shouldn’t put in any credit card information into these things.

The “developer” in many cases is not knowledgeable themselves, but has placed complete faith in Claude or whatever other LLM they’re using, and while simple bugs might be fixable, a lot of the underlying issues will not be because the developer does not understand what they’ve actually got there.

The Slop-pocalypse

So are we going to see software engineering washed away by a mountain of non-coding coders? Are software engineers going to have to learn to become plumbers?

Well, no. Most of the “vibe coded” games were not really that competent software, and if they were a hobby project, fine but as a commercial product? Well… no.

I might try and see what I can whip up with Grok’s Deep Thinking Mode and get running in threejs and see if it saves me time, but I’m imagining that there’s going to be quite a few security breaches in slopware games, and people will soon tire of the simplistic gameplay.

I imagine we will see slopware apps being put out by larger companies as well, and this is probably going to lead to lawsuits where the software did something entirely unexpected, and when the customers of said software go back, the answer from the provider will be a shrug, answered back with a lawsuit that will prove quite costly.

Software developed by LLMs without any understanding of what the software actually does will eventually cost the people proffering said products a lot of money, at which point the gold rush will die down.

So… knowing to code is still useful?

Well… yes. While LLMs are good at boilerplate generation, boilerplate rarely makes for a good quality app. Actually knowing what’s going on, and why your software is acting the way it is will always win out, and saying “Can you fix this error for me?” repeatedly at an LLM will in all likelihood lead to some even more bizarre behavior somewhere else as the code is rewritten and changed in ways that make sense only to the LLM’s internal reasoning, which is famously opaque.

LLMs are another tool in the arsenal of software engineering, and if embraced can be very useful in automating parts of coding that really do not appeal (for example, writing unit tests), but as a replacement wholesale for a skilled software engineer?

I just don’t get those vibes.

Leave a comment