The creation of a project often involved some amount of learning. Sometimes the learning alone was the justification for the project: why engineer a new programming language when a million others exist? If you had a vision for the language, and that vision was concrete and innovative enough, then sure, have a go, but if you didn’t, the undertaking was still fine as a kind of personal exercise.

With the advent of vibe-coding, the justification for a project now relies on vision alone. There aren’t a lot of programmers who can say they’ve learned something from watching AI develop a language runtime. I know this very well because I work on Lus (a language runtime based on Lua), and I stand today not knowing that much more about interpreters. Therefore, when you build something new with LLMs instead of using something that already exists, it’s only truly justifiable if you have direction and a concrete vision of the end result, or at least some goals beyond just “recreate what exists, but I had you do it”.

I’m pointing this out because I’m seeing many Internet people getting AI to develop highly ambitious programs like operating system kernels, and I wonder about the intent. Are you developing this because you disagree with the core principles of the Linux kernel? Do you have a bone to pick with the licensing often attached to open-source kernels? Usually the answer is no; they want to bring about something novel. What is the novelty, then? Is it a new kind of paradigm going beyond the traditional monolithic kernel? Using a less convenient language as an exercise of will? Again, the answer is commonly no: it’s yet another Unix-like, but “I had it made”. I discovered pretty quickly that their justification is having something ambitious that simply has their signature on it.

Without further intent, direction, or creativity, I realize that these are only vanity projects. There isn’t much more to it. It’s to gain the bragging rights of “I had it done” or, sometimes less honestly, “I made it”. It’s a simulation of productivity, and a very good one since there are material outputs. But of course there are outliers and edge cases: programmers building projects as experiments (e.g., “Can LLMs build a kernel?”) or to watch increasingly useful LLMs bring things to fruition, and of course those who use LLMs properly, who have vision or direction and want to bring about useful programs.