Hobby-coding in the time of Vibe-code. (Notes towards an essay, early draft)
This past weekend, I made my first video game.
I know of people who believe this is... a waste of time, maybe? What took me the weekend and a pair of late nights is likely easily achieved by typing a lengthy prompt into an LLM that’s ingested enough of github to spit out an equivalent game. Indeed, let’s assume they can get their crudely brute-forced together artificial intelligence to spit out an exactly equivalent game.
What is the difference between making this thing myself, from my first variable statement to final method call, and vibe-coding it, if the result is the same?
If I want something to exist, does it matter how it comes to exist? Surely the only thing that matters is the idea I was trying to express, and whether it was forged with sweat or born in slop, the outcome is the same?
This is a point of view that, I think, appeals to computer scientists in particular due to a concept that, in fact, underlies neural network based artificial intelligence.
The algorithmic concept of the ‘Black Box’.
When reducing a mathematical function, a computer program, or any part of an algorithm to its bare essence, the most common approach is to fixate on the input given to the algorithm – the data fed into it – and the output – the data it produces as a result.
The ‘black box’ is an algorithm where the only things we are aware of are the input and the output, with no idea of what the ‘black box’ contains, or does, to respond to the provided input with the resultant output.
Neural networks, the mathematical kind, are most commonly built around a very simple equation built around something called a ‘perceptron’ – a fancy algorithm to take in an input, and respond with an output. It can be written in about a page of code, if you know what you’re doing. You ‘train’ it by repeatedly asking it to map a set of input numbers to a set of output numbers.
A neural network is, usually, a lot of copies of these perceptrons organized in a variety of interesting ways, so they can take in complex inputs and give out complex outputs.
If that sounds like a black box... that’s because neural networks are a brute force way to automatically solve black box algorithms. (They’re almost never fully accurate – but they can get pretty close.)
LLMs are built by taking the entire internet, using them as both the input and the desired output, and attempting to simulate ‘intelligence’ like a black box algorithm.
This is a really stupid thing to do for a variety of reasons – the most important one being that if you ask a neural network to calculate 2 times 4, it might give you 8. Might. You use probability theory to describe how frequently the neural network will give you the right answers. You can never be sure it will always give you the right answer, because the neural net isn’t doing math.
What it’s doing is much closer to translating ‘2 times 4’ to ‘8’, as if ‘2 times 4’ is a word in one language, and ‘8’ is how you say it in another.
From a computer science perspective, this is fine. Because ‘2 times 4’ is equivalent to 8, so any algorithm that answers ‘8’ to ‘2 times 4’ is equivalent to any other.
You can multiply 2 times 4 by bit shifting. (0100 is ‘4’ in binary, if you move all numerals left one space – 1000 – you get ‘8’ in binary. This is pretty much the fastest kind of multiplication a computer can do.) You can multiply it by adding 4 to 4 twice. You can print a book with every number multiplied by every other number, and look up the answer.
The black box view says the input is 2 times 4, the output is 8. That’s all we care about.
Computer code is complicated. Very complicated. Being able to conceptualize a large piece of software as ‘input: my bank statements / output: my tax returns’ saves our poor fleshy minds from contemplating the massive number of computational operations necessary to perform this task.
So computer scientists learn to fixate on whether a given input is responded to by the correct output.
I wrote a little design document for my game, I made it, and the output was my game.
Let’s assume generative AI is so good that I could have put the same document into it, and gotten out exactly the same game.
Did I waste my time? Wouldn’t I have ‘made a game’ with the AI, too?
Here’s the thing about that.
My game, and the AI game, can be exactly alike.
But one of them is an expression of my creativity, my skill, and my desires... and the other isn’t.
When you compute 2 times 4, and get 8... Most people would say it doesn’t matter whether this was looked up in a book, or bit-shifted, or done by sequential addition. The result is the same.
But one of those computations is following a chain of logic and reasoning, moving through steps of understanding towards an outcome, and another is flipping to page six and finding the entry for 2 times 4.
One gives us ‘8’, the symbolic simplification of a much more complex process, and one gives us ‘8’, a piece of dead information.
I don’t know that everyone can see the difference, here. This is a philosophical point, I think – probably there’s a beautiful explanation of this point in some philosopher’s book from the 1800s.
Let me give you a non-mathematical example.
If you receive a letter from someone who you love, and it contains the phrase ‘I love you very much’...
Does it matter if those words were produced by the person who you think wrote them, or by a large language model? Does it matter if they were copied out of a book? Does it matter if someone else forged the letter? Does it matter if they were written with the motivation of showing kindness to you, or with the motivation of lying to you and leading you on? Does it matter if the phrase ‘I love you very much’ appears in that letter because a cat ran across the keyboard, or smeared the ink, in precisely the way necessary for those words to appear?
Do those words, identical in every instance, mean the same thing when produced by wildly different processes?
I think there’s a fundamental cognitive bias going on here, similar to the concept that the algorithm within the black box doesn’t matter so long as the outputs are identical.
That concept tells us that the input, and the output, are exactly the same thing, because ‘2 times 4’ is always supposed to be ‘8’, and it doesn’t matter how you get there. So if the idea in your head is ‘2 times 4’, any ‘8’ is a perfect manifestation of that idea.
So if two artists have an idea, and one uses an AI to create an artwork, and the other uses their skill, and they come out with pretty similar results... they both manifested their idea, right?
If the idea in your head is ‘I love this person’, any response that person gives you that reads ‘I love you very much’ means the same thing, right? Even if they stopped talking to you last year, and set up an AI to feed your letters into chatGPT and send back responses?
This past weekend, I made my first game using Godot and assets provided by very nice game jam runners.
If you made your first game this past weekend, using AI...
Do you really think you made it, because the idea you had is now ‘real’?
Because, in the best possible case... I think you threw your idea away, had someone (something) else make their version of your idea, and the resultant creation is in every meaningful way theirs and not yours.
You put in ‘2 times 4’, and got back ‘8’. You have no idea that ‘2 times 5’ could ever be 10, and every time you put numbers into this thing, you make sure that you never have a reason to learn that anything else is possible.
You only care that you got ‘8’ back.
How can the manifestations of your ideas mean anything, if way that manifestation comes into existence is something you have no control, understanding, or influence on? It’s as if you experienced the most powerful inspiration of your life, walked outside, and fortuitously picked up the precise result of that inspiration off the ground, as if it were litter.
(And this assumes that ideas and inspiration are intrinsically valuable which is a whole other discussion to have...)
In some ways, I envy people who can be satisfied with such fortuitous litter surrounding them...
... but I don’t think they see the numbers dancing behind their eyes when they multiply two by four, either. I think it’s all dead in there, for them.
Thankfully, I don’t think they’ll ever know.