
Tech: My Summer Car Project
Every summer needs a good project. You know the type. Something to tinker with in the garage, a cold drink by your side. For some, it’s fixing a bike1. For others, it’s finally getting the garden into shape. My “summer car2” has not been one with four wheels and an engine but one made of code.
This summers idea was to create a configurable character builder for D20-based roleplaying games, covering everything from classic “Old School” games to our own publications, such as L&L 3. The idea was to create a flexible tool that could handle the nuances of different systems—a sort of character builder builder.
The plan was ambitious, modern, and maybe a little romantic: I was going to “vibe code” it.
The intent was to give the “Agent” the project specs, feed it the rulebooks, and let it run free. Just vibe it out from end to end. And at first, it was exhilarating! For simple cases, vibe coding is incredibly powerful. You can spin up commercial sites and straightforward apps with astonishing speed. As expected, the initial results were almost too good to be true, and the car was starting to take shape on the assembly line.
However, the project’s complexity increased, and I ran headfirst into the limits of the vibe4.
Even with the best requirements, human language is wonderfully, frustratingly malleable. When you’re building a “character builder,” which is a tool to build characters, and you ask an AI to make that builder… well, you might end up with some hilarious loops. The AI, with its single-minded focus and a very limited scratchpad, began to get tangled in the language. To give an example: there was a point when the agent was trying to create a “character builder builder builder -component,” It was a comical but insightful failure5.
This got me thinking: what is the sweet spot for vibe coding? These automated systems are best suited for tasks that are limited and well-defined. “Take these podcast episodes and create a program to upload them to Spotify.” “Refactor this functionality from the client side to SSR, isolate any generic parts to a well-documented REST API.” They excel at the work you’d like to outsource regardless—the tasks that don’t require a deep, creative mind but rather the scaled application of a given set of instructions6.
Asking an AI to “design a data model for handling the character creation steps of a set of example games,” however, is a different beast entirely. For a complex system, that kind of architectural work requires foresight and a level of abstract thinking that, at present, seems out of reach for a machine. It leads to 10,000 variations of a program, none of which might genuinely work. Proper design, I’ve been reminded, often occurs with a pen and paper, through experimentation, and with a human mind deeply immersed in the problem. 7
So, I’m still working on my summer car. The project isn’t over. But I’m no longer just vibe-coding it.
Now, I’m building the car mostly by hand but with a lot of help from the AI. I’m “changing its tires by vibe code” and “oiling its engine by vibe code.” The core construction, the design, the complex engineering—that’s all me. The AI is still just an assistant, not the master architect. And honestly, this way feels much nicer. Especially as this is my summer car project.
Footnotes
-
About those bikes I need to fix. Will do A.S.A.P. Pinky swear. ↩
-
Earlier, I compared LLMs to forestry machines, so going with cars here does not seem that far-fetched. And this is a summer post, anyway. ↩
-
Although my contributions to the Finnish adaptation of D20, based on the open-source OGL and CC materials, are small, I still consider it our game. ↩
-
Interestingly, there is still much room for improvement in the “agentic” coding space. Even before I reached the threshold of complexity, I noticed curious and nuanced differences between the more performant models. F.ex. Claude 4 is the only model that understands modern Svelte, while the Gemini 2.5’s ability to comprehend complex topics, such as browser behavior or project structure, surpasses all other models by a significant margin. ↩
-
There’s another lesson here for anyone wanting to build tools for a space like Tabletop Role Playing Games: the current tooling lets you vibe code almost 100% tools targeting a single, straightforward system like D&D 2024 or ALIEN The Roleplaying Game. The caveat being that any time a new edition is released, you need to start from scratch. ↩
-
Mari Luukkainen has been live-documenting their super-cool journey of vibe-coding whole SaaS-type applications on LinkedIn. You should definitely follow the updates to learn how far the paradigm carries. My guess is it’s to the “early” or “grow” -phase of a service. https://www.linkedin.com/posts/mariluukkainen_bear-with-me-through-this-vibe-coding-flood-activity-7347683282991337472-iz25?utm_source=share&utm_medium=member_desktop&rcm=ACoAAAA6E2YB8AKt4_EnToDDi6yAMfhkLF5N9wk’ ↩
-
There is a more serious post topic here – it seems that people with a good enough background in Computing, Data, and Design theories should not be afraid of losing their jobs. Quite the contrary. Theory of Computation, Data Structures, and Design Thinking might be more valuable in the future than we have assumed. ↩