September 2026 · AI / SDD / Retro Gaming

A ZX Spectrum Emulator Journey — From Vibe Coding to SDD

I was starting my journey of becoming a Software Builder. The emulator however, was never built. I ran out of tokens, and left it unfinished, it still required a lot of guidance, the agent was not powerful enough.

The "Software Builder" Concept

Although I can’t trace back the very first article where I encountered "Software Builder" as a concept, in my mind it was the O’Reilly article The End of Programming as We Know It. Although it doesn’t explicitly mention the term, it introduced me to it conceptually. Soon after reading it, I changed my CV to describe myslef as a "Software Builder" instead of "Backend Java Developer" as it did until then.

Around the same time, I watched a video of Satya Nadella from Microsoft's 50 year anniversary, where he instructed Copilot to create an emulator of Altair. It took him a single prompt to have it built. He modestly says at the end "You really know you are on to something, you know, intelligence has been commoditized, when CEOs can start vibe coding."

Vibe Coding Altair & Spectrum

Well, if a CEO can vibe code Altair I thought, maybe I can vibe code a ZX Spectrum emulator, I childhood toy I dreamed about, but couldn’t afford. I gave it a try with Copilot in VS Code, and it really got me excited, it was doing so many things on its own. I was starting my journey of becoming a Software Builder. The emulator however, was never built. I ran out of tokens, and left it unfinished, it still required a lot of guidance, the agent was not powerful enough. I don’t think that the model Nadella had access to in the demo, was the same available to me via Copilot. I abandoned my pet project.

Specification-Driven Development & Conductor

About a year later, I watched a presentation by Aron Gupta at JFocus where I was first introduced to the concept of specification driven development. It looked far more powerful than the vibe coding approach, no drifting, the focus shifts from guiding the agent, to writing specifications to eliminate the drift. I wanted to give it a try. I came across a few tools that I could use to try the SDD, one of which was the Conductor plugin for the Gemini CLI. What better way to try it, than to retry my abandoned project from scratch. It was much better, it came to the point where the initial screen could be displayed, but after that, Gemini started to run in circles. A little bit disappointed, I abandoned the project again.

Antigravity CLI & Gemini Flash 3.8

Then Gemini Flash 3.8 got out. In usage with Specify, it appeared much more capable than the available models from a few months ago. Why not test it with the project that failed twice before? This time, it took 2 prompts, with not fully a SDD approach, but still a bit structured with the use of /plan skill of Antigravity CLI, and there was a fully functional ZX Spectrum emulator written in Java with JavaFX frontend, in 48K and 128K versions. It took maybe 10 more prompts to add a keyboard, a joystick and to polish it, but having built a functional emulator with just 2 prompts meant that the model was so much more powerful than the ones available before. It still needs more testing, and probably some tweaking, but it works.

What’s Next

What’s next? Hooking it up to a NN, and letting it learn how to play games on ZX Spectrum. Why? Because only a little bit of a decade ago it was the cutting edge, and research papers were written when a NN could learn to play games. And because one can! After all, if a fruit fly can learn to play Doom, why not? Coming soon to a GitHub repository near you.