Bad Vibes Coding

Taking a short break from being spitting mad about AI, to just being sad about how it never needed to be like this


My take on generative AI has pretty rapidly gone from a tentative, “it sucks and I hate it, but after the bubble pops, there might be a few very specific use cases for it, like with programming,” to a vehemently zero-tolerance stance. It’s all garbage, burn it down.

It’s just so bad, in so many different ways, on so many different levels. Trying to ignore or excuse any one of the points against it will still leave you with dozens more.

Have you managed to convince yourself (somehow) that the environmental concerns of the ridiculous over-proliferation of data centers are overblown or inaccurate? You’re still left having to explain why these data centers need to exist at all.

Have you convinced yourself that the decades-long festival of plagiarism and copyright infringement is regrettable, but there’s nothing we can do about it now? Well, as bad a take as that is, it’s still not as if it’s all over and done with. The models are still controlled by and profiting some of the worst people in the world.

Have you decided that “ethically-trained” models that only run locally are the answer? We already had those, and they didn’t make much of a big impression on anyone, because they’re simply not useful. Janelle Shane ran a whole blog about them for several years, pointing out how comically inept they are. Does anyone honestly believe that we’d have a few very rich and morally bankrupt people destroying the global economy if they’d already found a genuinely efficient and ethical way to simulate intelligent agents?

“Honestly believe” is key there, since I’ve seen so many people trying to defend this garbage with claims that are outright counter-factual. Are they being disingenuous? Or do they actually not understand? It’s often difficult to tell.

All I know for certain is that people are still out there insisting that it’s “democratizing.” That it’s a tool that allows people to do things they weren’t capable of before. That there are all of these creative minds with ideas that they’ve never been able to execute, because they don’t know how to program, or because they’re not accomplished artists.

Which is such wrong-headed bullshit, that I can only conclude they’re either literally incapable of introspection or reasoning, or they’re so deliberately lying that they’re due to be struck by lightning from on high at any moment. To forego the absurd amount of resources that people have built up over the past couple of decades, and shared openly with the public, and instead sing the praises of systems owned and controlled by OpenAI, Anthropic, and Google? And to call that democratizing?

For me, it came to a head over the past couple of weeks, when I finally started to become aware of how much it had infiltrated the community of developers for the Playdate.

I should make clear that I’m only giving my own opinions here, and I’m not claiming to speak for anybody else. I’m not claiming to be any kind of thought leader in the community, either. But I do have very strong opinions about the Playdate, the philosophy behind it, and why it’s so valuable. And the thought of using any kind of generative AI with it offends me to my core.

You want to talk about “democratizing?” Pulp is democratizing. Offering incentives for using the device in education is democratizing. Providing all kinds of development tools and documentation, and making every device a development kit, is democratizing. Including a payment and distribution platform called Catalog, while simultaneously encouraging devs to use other platforms like itch.io: that’s democratizing.

So it has been a stone drag to see some people trying to justify/defend their use of AI for developing Playdate games by spouting things along the lines of “in the real world, you’ve got to think about the cost of development, and using AI to make that process quicker and more efficient will help you stay competitive.” And I can’t put it any more simply than this: bullshit.

To elaborate on that: if you’re trying to give aspiring game developers real, practical advice on how to make a viable business from selling their games, you need to take a step back and advise them don’t make games for the Playdate.

Not because I don’t like the Playdate. Just the opposite. I love it. I want to see it keep growing as a platform. I want it to attract more people who have creative ideas but have never before been able to realize them. I want it to be a platform where people can keep making games without bankrupting themselves, and use the money they make from one game to fund the next. I’m not at all saying that I want it to remain a niche, hobbyist platform only for the weirdest of die-hards.

But I want it to grow for the right reasons. I don’t want it to turn into the iOS App Store or Steam. We’ve already seen, over and over again, how platforms get ruined when people come in focused on development time, quick turnaround, and marketability instead of just making good stuff. The platform fills up with quick, uninspired slop. There’s a race to the bottom. And small teams or solo devs with talent get squeezed out by companies who churn out derivative match-3 games and free-to-play junk. Ending up with players asking why they should pay even the ludicrous amount of $5 for a game, when they can get any of these others for 99 cents, or even free?

I have no doubt that some people — assuming they’re even reading this — would dismiss all of that as an overblown, unrealistic, overreaction. What’s the big deal? There’s a difference between using AI as a tool and making slop. An AI-generated thumbnail isn’t going to bring down a whole platform. Using Claude to make unit tests or generate boilerplate code is nothing but a time-saver. Be realistic!

And that’s the problem; I am being realistic. We’ve all seen this stuff happen. It doesn’t happen all at once. It happens as a result of chipping away at our integrity bit by bit. We’ve already got people so far removed from reality that they make absurd claims that sound as if they hadn’t considered them at all.

“Everybody’s already using it.” “Nobody likes it, but it’s here, so we might as well learn to adapt.” This garbage has been around for what, three years? And we’re supposed to think that it’s inevitable and essential? What do you think people did before this garbage got pushed everywhere? Why do you think these companies are so desperate to put it in places that it doesn’t belong? If it were actually useful, it would’ve made the case for itself.

“It’s just like code complete.” “People already copy and paste code from stackoverflow, you know.” So why not use code complete? Why not use stackoverflow? Why choose the least efficient system and least reliable computing systems ever devised to reproduce tools we’ve already got?

“It just does the tedious parts for me.” “Everything is verified from unit tests.” “It handles all the stub functions and boilerplate code.” Every single time I’ve ever tried to automate a tedious process, it’s resulted in my realizing that it would’ve been far more efficient for me to do it by hand. If you’ve got a ton of stub functions, boilerplate code, or glue code, then I invite you to consider how “copy” and “paste” don’t require billionaire-owned data centers to be built in underprivileged communities without their consent. And if you’re using a proven unreliable system to generate the code that is intended to prove the reliability of your code, then you frankly deserve it to blow up in your face.

You know what’s actually here to stay? grep. Nobody likes it, but we all just have to live with it.

I’ve seen proponents of AI insist that it’s a time-saving tool and it’d be foolish not to use it. As if all of us who are against it are stuck in the past, banging rocks together. It’s just foolish, since I remember what it was like when I was starting to learn to program. Wanting to go from BASIC to learning something like C or even Pascal was impossible — not because I didn’t have the time or the inclination, but simply because I couldn’t afford a compiler. Wanting to make digital art was not daunting but actually impossible, because I couldn’t afford a copy of Deluxe Paint. I didn’t have access to any tools like this until I started working for studios and publishers, who owned (and still own) everything I created for them.

Now, people have more free, open, access to more resources than we ever have before, actual tools, and they’re choosing instead to be reliant on companies like Google, OpenAI, or Anthropic again.

It’s especially a drag to see it evangelized by people who consider themselves “seasoned” software engineers, because it so obviously goes against the most basic principles of software engineering. A system that isn’t 100% reliable is 0% reliable. You should always be searching for the most efficient way to solve a problem, and an LLM running in a cloud is the least efficient way to solve the problem. And one of the most cardinal rules: the less code, the better. If you either can’t or don’t want to do something, having an over-engineered system generate more code for you, to solve a known problem, is just stupid. That’s exactly why we have software libraries.

And when I see people insisting that stuff like Claude Code is “enabling” because they don’t know how to program, that’s just the bleakest shit. There have been countless times where I’ve looked at a code sample without knowing how it worked, and had to modify it to be able to do exactly what I wanted. And the process of modifying it is the process that made me figure out how it worked.

It’s just plain depressing to see people who value the end result over the process of creating that result. The process is what’s valuable, in every possible sense.

I saw some Brainiac insist that there’s no value in making something as simple as a ball bouncing on a screen, so what’s the harm in having Claude or something generate that code? And that’s the most wrongheaded thing, which gets it completely backwards.

When I write something that I have a dozen times before, and it works the first time, that’s the purest dopamine hit I get as a programmer. It’s all of the rewards of having something working, without the struggle. And it’s mine. It takes me back, Ratatouille-style, to when I was sitting in front of a Commodore 64 hooked up to an old TV set, typing in programs from a BASIC tutorial, learning how it all works. Being able to do it without thinking much about it means that I’ve learned it, that it’s a part of me, and there’s been a point to all of the repetition. It’s not going to impress anyone else, but it’s one of the few areas where I don’t feel the need to impress anyone else. I just get the simple and pure satisfaction of knowing I know how to do this. And someday, maybe, I’ll be able to do the same with the dot product without having to refer back to an interactive tutorial.

There’s no value in trying to be open-minded or reasonable about something that’s been proven harmful, multiple times, in multiple different ways. We’ve seen that basic fact play out, over and over again, in politics. Ask me sometime how I felt about having to be tactful, respectful, and objective whenever I encountered someone online saying, “It’s nothing personal, I just simply believe that gay people shouldn’t be allowed to marry.” Some things simply aren’t a difference of opinion, and treating something harmful as such does nothing but help normalize it.

But it’s exhausting to be angry all the time. Today I’m just sad, seeing people so eager to throw away their principles for the sake of saving a little time and effort. (Or more accurately, believing that they’re saving themselves some time and effort). I’m just reminded yet again that it never needed to be like this. We don’t need it. It doesn’t enable a single damn thing that wasn’t already possible. We can still choose to just… not.

Leave a Reply

Your email address will not be published. Required fields are marked *