Someone on Hacker News said my gone-viral C64 transformer project was OBVIOUSLY vibecoded because I have "an art and design background, which doesn't seem to match the deep knowledge of Transformers or assembly required."
Ironically they also complained in an earlier comment that they expected "demo-scene hand-crafted 6502 assembly". We'll get to that.
First things first: Thank you! Finally an artist.
I'm a demoscener, specifically from Farbrausch. We became famous for our 64k demos and .kkrieger, a game in 96k. And while these demos contain serious engineering work by some of the best developers alive many people misunderstand how, in our case, these ingredients turn into cake. Our success is based on the tools that streamlined the content production so everything falls perfectly in place under the constraints we chose (64k executable). That process is based on an idea by fiver2, one of our designers (ponder that). The aforementioned coders wrote these tools, we designers used them and the demos magically fell out at the end of this long long chain... not by hand assembling this (Actually kb would rightfully object here as this is exactly what he did, but this would weaken my argument, so assume I never said that ;) ). The tool is the work, and it has been for the better part of thirty years.
Soul Player C64 is a Python pipeline that generates a transformer for a C64. The asm is emitted. The D64 is emitted. The README is emitted. The pipeline refuses to ship anything unless four implementations agree bit-identically. Ninety tests... Do I have to spell it out? Nobody bolts a four-way harness onto a vibecoded project.
Claude absolutely wrote code on this! And most of the code Claude wrote got deleted when the shadow caught a mismatch. Every line lives or dies by the harness.
I am not afraid to say that I don't know 6510 assembly well enough to write a program like this manually! I could have spent a year learning it, hand-tuned the opcode dispatch like the commenter would have preferred. And I see value in that, I do. In another life I would have loved every minute of that journey, I'm sure. But I would have shipped around the time nobody cared... So instead I worked at the level I operate best at: architecture. In this case: dealing with a platform that has no multiply, no divide, only add and shift, lookup tables all the way down, past the turtles down to the D64. It's a challenge, and my way to approach this came at a price: ninety tests, painfully put into position, one by one. Four bit-identical implementations: float reference, integer reference, memory-faithful shadow, emitted asm. A verification harness absurdly bigger than the program it verifies. Because I couldn't trust myself OR Claude with this. So I had to prove correctness.
So I did all of this to produce laughable ~6KB code and 25kb weights on a floppy disk.
Which sounds insane at first, but it falls into proportion once you realize that the development of the original .werkkzeug took Chaos, fiver2, kb, doj, yoda and ryg ~5 months to build. All of that to generate fr-08: .the .product, the award winning 64k intro we became known for. Same joke, really. The demoscene has been making this trade for decades: we spend unreasonable effort on toolchains so the output can fit somewhere unreasonably beautiful.
And: I don't know how to write good code! But I have been the fixer in my professional career for many years now, and I know what bad code looks like... and how to get rid of it.. the harness, remember? I could never write optimized routines on the Commodore from memory like my fellow C=64 demosceners, I lack their experience and most of their specific knowledge. But what I can do is building a machine that rejects everything that isn't aligned with my goals, and deliver whatever survives.
And I don't mean "agents", no. my harness isn't LLM-based. The method is older than AI. And it's been the same trick since forever... Before AI, with AI, and will be long after the AI hype bubble has burst: Build a generator. Verify it. Ship what it produces: something beautiful.. Contrary to popular belief AI doesn't make this possible OR easier.. the method itself does! AI just makes it faster - well, sometimes.
cheers!
gizmo