“Vibe coding” this blog

About two years ago, curious about the buzz around generative AI for coding, I asked Claude to fix bugs and optimize the theme I use on the Manual.

It spent a good while poking around the theme files. The changes it announced made sense. And how much had been slipping through the cracks! I was living in the future. Super excited, I fired up the modified theme and… the update triggered a fatal error and took the site down. I reverted every change and went on with my life.

Unfortunately, I didn’t keep that AI-modified copy, or the pull request in the theme’s repository. You’ll have to take my word for it.

Cut to 2026.

Curious again, this time because of reports that around the turn of 2025 into 2026 Claude “got really good,” I asked it to find bugs and pending fixes in the theme — the same one as two years ago, just with the various manual updates made by flesh-and-blood humans, almost all of them me.

Claude, with the Opus 5.5 “brain,” came back with another enormous list of suggestions — some of which left me a bit embarrassed, the “how did I let this slip?” kind. I answered: “Okay, implement it.” I bumped the theme version to 5.0, because I follow Pride Versioning, and pushed it to production. This time the site didn’t go down — which was already a huge step forward. More than that, the updated theme worked really well. A few errors in the browser console vanished and the server’s resource usage dropped. (Sure, the site wasn’t using anything to begin with, but… you know.) Everything was lovely. I was impressed.

***

Could I have kept going without these fixes and improvements? Sure. After all, the Manual went almost 13 years with code handwritten by a non-programmer. Is it better with the theme fixed? Yes, obviously. Is it worth using AI for this? I don’t know, but I lean toward “yes.”

There’s no shortage of arguments against generative AI, many of them (all of them?) already raised on this very blog. And, on the flip side, I’ve also left clues here about my ~softening toward this technology in light of the evidence, in pieces like “In this article, I speak highly of AI” (March 2026), “I don’t care whether you use ChatGPT to write” (April 2025) and one about “vibe coding” (March 2025).

Still, I think the occasion calls for revisiting some of generative AI’s controversial aspects.

Let’s talk about intellectual property. At a fundamental level, I’m against the logic of copyright — the very same rights AI companies run roughshod over without a second thought. That doesn’t mean I’m on the side of Anthropic, OpenAI, Google and company. That’s a false choice, in the [pt_BR] words of Leonardo Foletto. For him, “copyright has stopped being the main enemy and, for that very reason, has also stopped being the solution.”

A little earlier, Foletto argues that:

What needs to be curbed is not access to knowledge, but extraction without reciprocity, appropriation that gives nothing back to the ecosystem that makes it possible. These are distinct things, and conflating them is falling into a trap. The issue is not merely technical (how to stop scraping); it is also political and economic: how to ensure that the production of the commons remains possible, sustainable and plural.

Another aspect of this debate is the human touch in writing code. Is it an art? Or, as WordPress still proclaims in its website footer, “Code is Poetry”?

If so, it’s a lost art. Open your phone, boot up your laptop. From websites to apps, all the way to the operating system itself, it’s hard to find a website or piece of software that isn’t junk, even before “vibe coding.” Slow, bloated, unstable. Maybe we’d get better results by letting AI do the programming, after all.

My job here isn’t to write the site’s code. It never was. I’ve always leaned on other people’s code, benefiting from the wonders of free software. The little that falls to me (designing the layout) is less a mechanical activity (programming) and more a series of decisions (how should the blog look and work?). Code is the road to making those decisions; not infrequently, it was an insurmountable roadblock to deciding anything at all.

This contemporary Claude frees me from the code bottleneck. And it doesn’t replace a professional programmer — one I never hired and couldn’t have, given the project’s paltry revenue. Once this initial phase is over, I hope it frees me from my little obsessions with the blog’s layout and opens up some headspace to write or, I don’t know, do anything other than stare at a screen.

Another example. The native comments section of WordPress/ClassicPress has never been a priority for its maintainers. It exists, it works, but it’s been the same for over a decade. Over the years, every now and then I’d sweep the plugin directory looking for new options to enrich this space that’s so dear (in the pt_BR edition). I never came out of that search with anything usable that met my standards.

Last weekend I “vibe coded” the Upvote Comments plugin, built specifically for ClassicPress and exactly the way I wanted it: with “upvotes” and dynamic sort orders. I exchanged only a few words with Claude. I asked for the plugin in detail, then for a few tweaks to the presentation and to compatibility with the caching system. And… that’s it. It worked. Really well, in fact. It’s efficient, optimized, tailor-made, yet possible to share with anyone else who wants these same features on their blogs. How can you not like that?

***

These brief recent (and successful!) adventures haven’t turned me into an enthusiast of the technology. Not yet, maybe? Reflecting on it, I think I’m in a phase of “cautious excitement.”

It really is exciting to be able to implement things I always wanted but that laziness and/or ignorance kept me from doing. Or that were too trivial to spend my time on. For example, fixing up the headers of the topic pages, like the one for cool links. I doubt many people besides me visit those pages, but they exist — and now they look more presentable. Another: standardizing the various buttons and form elements scattered around the site.

Get what I mean?

The elephant in the room, or the one indefensible harm of using generative AI, is the environmental impact. It doesn’t leave my head, which leads me to more measured use. (Refactoring the Manual’s theme is the biggest project I’ve ever undertaken with an AI.)

Unlike other digital technologies, generative artificial intelligence doesn’t get cheaper (financially or environmentally) as more people start using it. It’s the opposite: a growing user base, heavier workloads and the improvement of large language models (LLMs) only increase the consumption of natural resources and the pollution.

This atypical characteristic ends in gigantic data centers, huge water consumption, higher electricity bills, regressive lobbying backed by the vague promise that better days are coming, which I have a hard time believing. I mean, we may well have better days ahead, but — with luck — it won’t be because of AI, but in spite of it. The people at the helm of this “revolution” are clinically insane or cruel. Maybe both.

***

After the theme tweaks, out of curiosity I used up another bottle of water and asked Claude, in the same project, to imagine a “modern” layout. Here’s the prompt:

Without straying too far from the current visual identity, suggest changes and improvements to make the theme/blog easier to understand and more pleasant for human readers. List the suggestions with screenshots.

Here’s the result (heads-up: heavy image).

The AI hotshots of Silicon Valley keep saying that in this new era, “taste” is the only thing that matters. So I was happy with what Claude produced: something bland, generic, soulless; something in bad taste.

So far, “AI with taste” is a contradiction in terms. Which explains the technology’s success in programming, the part almost nobody sees in a piece of software or a website.

***

I’m aware the subject is controversial and stirs passionate reactions. This account is an exercise in the transparency I’m known for in running the Manual, and an invitation to reflect on the generative AI dilemma with a level head. Let’s all take a deep breath, at the same time, before writing a comment. Yeah, this post has comments open! I’m curious about the reactions to my confession.

Leave a Reply

Please read the rules before commenting.

Markdown does *not* work. Allowed HTML tags: <b> <strong> <i> <em> <a> <ul> <ol> <li> <code> <cite> <blockquote>