This is cool, I got Codex to vibe code a Forth compiler for the NES and it worked fine, but I have to say that it is decidedly not fun.
Instead of figuring out how to solve every bug and becoming intimately familiar with with the code, I just delegate all the work to virtual interns and I sit and wait.
I decided to write my own Forth compiler without AI assistance as a result. Side projects should be fun and for learning.
Not judging people who use these tools, I use them too, but i just have been using them less for anything I am doing for fun.
There is fun in what you use something for and doing the something.
I think there is a big divide between people who just love making different tools from scratch by hand and the rest who love being able to instantly whip up a new tool in minutes AND THEN use it to create something fun.
I literally would never ever in my existence be interested in making a compiler if I had nothing to use it for. If I ever wanted to make a cool program which uses that compiler then whether the compiler came into being thanks to a wizard, my enjoyment wouldn't change a single bit.
In typical tombert fashion, when making an NES game I ended up getting much more obsessed with the tooling around the project than the core project, so when I got it to generate a Forth compiler, I fell down a rabbit hole of learning how compilers work and then feeling cheated out of the actual work.
That said, I'm not a complete luddite here; I wanted a proper comment system on my blog recently, and I don't care enough about web stuff to actually build it myself. I could have used an off the shelf thing but those usually come with a bunch of bullshit involving accounts and the like, so instead I got Codex to build one for me and deploy it and it works fine.
I know what will blow your socks off: package managers. They are kind of like magical wizards that can make fully operational software appear on your machine. Want a scheme compiler? Just `nix-shell -p racket`. Want common lisp? `nix-shell -p sbcl`. It works like a charm every time.
Sure but I can now create a subset of those packages which fit 100% my use case.
Also I don't know what you're arguing for, I was just saying that spending most of the time making tools without doing anything with them is not the only way for a developer to feel satisfied.
I am just pointing out that `program that can make other well specified and understood programs appear on my machine` is not exactly novel. In fact, not only has the entire open source ecosystem been relying on such programs, but they in fact _inspired_ the various app-stores in the 2000s (package management was one of the killer features of linux for a long time).
Yet, people keep holding this up as a particularly novel aspect of LLMs, and it makes them sound like they have never seen or used a package manager, or a container, or a VM. For some bizarre reason, in spite of being augmented with a machine that knows everything about marketing, sales, rhetoric, logic, philosophy, etc, programmers are consistently failing to market their new favorite tool. This is embarrassing, and it does not inspire confidence in that class of people that control so much of the economy[0].
What they _should_ be excited about is: I/you/we can now use this "zooming"[1] package manager to make software appear on my machine (or inside my program), and I can now fearlessly[2] fork these "packages", without incurring as much technical debt, and without having to convince the maintainer to upstream my changes.
This is of course, for now, a bit of an exaggeration. But it is certainly true that the "software supply chain", is the _opposite_ of elegant (for example, making a webapp is needlessly difficult for a beginner), and LLMs can help you navigate and understand different parts of that supply chain more quickly.
[0]: Why is most LLM marketing based on fear and shame and exaggeration? You would think that we would use these pocket-geniuses to actually do _ethical_ marketing, because the cost of that should be going down as a result.
[1]: It works at all scales of abstraction.
[2]: You can even violate licenses and patents without any fear now. The _real_ killer feature of LLMs (not for me, but for the industry at large), is that they let the tech-oligarchy capture a larger share of the economic surplus, without breaking the law[3]. In fact, this is how the software industry has always operated. Remember, software's job is to eat the world (to paraphrase Andreesen). But even more so, this is how unregulated _markets_ have always operated! Everyone needs to always defend and grow the share of surplus that they control, in order to survive. This means that the "meta" of the unregulated-market-game is to make yourself into as much of a bottleneck as humanly possible. In graph-theory, this corresponds to maximizing your _betweenness centrality_. In economics and law, they call a 100% betweenness centrality, a monopoly. In fact, one SV oligarch (Thiel), has said: "the goal is monopoly"!
[3]: As usual, the wealthiest will be impossible to sue for infringement, whereas now, the entire open source ecosystem is tainted, unless you are using software that has not been updated since 2023. In some sense, patent trolling is back, it just has extra steps now. I will let you (plural) infer the implications of this.
I agree there’s a big divide. I think I’m also team “let people do things they enjoy.”
I like using computers to solve problems. I’m more interested in the problem being solved than the journey most of the time, though I’ve also been on some lovely journeys. Sometimes that means I write a tool all by myself. Sometimes it means I download an existing open source tool. And sometimes it means I delegate the creation to an AI model.
We need a new pair of words to distinguish these two mindsets. Digging deep, finding abstractions, solutions that would say more with less .. is one kind of fun. Other people want to see the magic happen by doing few keystrokes it seems, they call it fun, i call it death.
It's been a few months since gemini 3 and opus 4.5 were released and I still regularly have feelings of dread in me because I'm deprived of something (which I assume is the thrill and pride of being able to explore solution spaces in non stupid ways to find plausible answers on my own)
Maybe it's the usual webdev corp job that is too focused on mainstream code and where AI is used to sell more, not find new ideas that could be exciting..
I mean I guess it really depends on what you're interested in.
There are plenty of projects I have wanted to do that I don't because the "activation energy" is too high, and if I can get a machine to basically get past the boring crap then I can focus on the parts of the project that I think are fun.
I think the difference is in why you want a forth compiler on the nes. Is it because you want to dig in and learn how a compiler on the nes would work? Or do you want a compiler so you can use it for something else you’re interested in doing? If your goal is the first one, then vibe coding is not going to be a good fit.
In my case it’s because forth is one of the only high-level languages that has a chance of running at a playable speed on the NES, and I just like the language in general.
If you look at old school development manuals for stuff like the C64 your options, to get decent performance for something you are writing it seems like the options were “forth” or “assembly”, and I find forth easier to reason about.
To answer the true essence of your question though, I wanted a forth compiler as a means to making an NES game, but after I got Codex to generate the compiler I kind of realize that what I actually wanted was the entire experience of making an NES game, including building the compiler.
I was actually aware of that; the problem with BASIC, at least with my research with homebrew C64 is that BASIC is ridiculously slow. It’s fine as a basic command line but for games I would likely not get anywhere near the performance I need.
What I am working on is stretching the NES pretty hard. Honestly I probably should do it in assembly but I like the idea of using a high level language to do it.
Instead of figuring out how to solve every bug and becoming intimately familiar with with the code, I just delegate all the work to virtual interns and I sit and wait.
I decided to write my own Forth compiler without AI assistance as a result. Side projects should be fun and for learning.
Not judging people who use these tools, I use them too, but i just have been using them less for anything I am doing for fun.