Every Computer Program Is Once A Beautiful Story As Clear As Day
Friday • December 22nd 2023 • 11:38:36 pm
Anybody can understand a program, if they care, and sit down and listen to the original programmer.
Eventually the original programmer will begin forgetting, some less important parts of the tale.
But notes, diagrams, and source code will remind them, everything in great detail.
It is not necessary for a programmer to get to this point, in order o finish the application they are working on.
This will make the application a bit heavier, less conceptual or logical and more “here is how you do it”.
This is OK, good applications are not that big, they expose plugin or library architecture and let programmers integrate.
But, some of us, find a computer program that demands, a higher understanding.
One tiny example is WikiWiki, it is a master piece, of open file, make it a web page, edit file, and save as new version.
With a magnificent flair, of this incredibly revolutionary statement, for when a file does not exist:
“This article is a stub, why don’t you create it?”, or “This file does not exist yet, click edit.”
On a smaller scale, collaborative file editing has such a master piece too, use the filename for a folder, and inside the folder…
Make the filename a version number, followed by a huge random number, and ordinary do not allow saving an older version.
If the latest version is five, and someone tries to save four, show an error, and make them look at version five.
Now, here is the crazy part, make that happen on a 1,000 computers, some of which won’t go online for years – and no data will be lost.
At all, we are using long random filenames in that directory, so they will always be unique, no data loss.
But, there will be edit conflicts, multiple files, with the same version number, and here, they can be either ignored, or an editor can review and merge them.
You simply take something useful out of an ancient version, 4, put it in the latest version, 8,000 and mark that particular version 4 as deleted.
Now all the participating commuters, will not only be notified that version 8,001 exists.
But that an ancient version 4, got marked as deleted.
When one of those disconnected computers goes online, another version 4 will eventually spread among all the copies of the data.
And another editor may make a merge, or just find the information outdated, and mark it as deleted.
To get to this understanding, and this level of mostly consistent story telling, programmers just use their heads, and scribble all over random scraps of paper.
Some elect to create Reference Implementations, you go as far as you can, but don’t feel pressured to finish.
You are digging a tunnel into the complexity, and crystalline like structure of the program.
The final reference implementation, will melt away all the confusion and reveal the clear as day diagrams.
Then the program can switch hands, it may get confusing, it may pick up bugs…
And buggy debuggers that get paid by the hour and call it a scene, but that is a good thing, a program should just continue on.
When I was starting out, I’ve heard some neat stories, one of them is obviously made up, but I still like it.
It was this super hard game, the ONLY GAME IN THE WORLD, that was never successfully beat by the very programmer that made it – wow.
Then there was a true mythical story, of this lone coder, who created this amazing 3D game, all by him self.
Lyke, he just went home, and freaking coded the whole incredible thing, all by his lonesome.
The graphics were so amazing, that while I thought Wolfenstein3D was good stuff, it was way too primitive for my sophisticated tastes.
The game was named Another Word, programmed by Eric Chahi, over a period of two years.
Like Prince of Persia he used Rotoscoping, tracing motion from a video, it looks 3D, but it is just X and Y without the Z.
The world of tracing pixels has not come to a close, fusing real world motion with fantasy is still a beautiful challenge.
And 3D graphics, no matter how realistic, will never be as beautiful as charming pixelart.
Finally, for many, being able to tell a story of their application architecture…
Even if just to their debugging rubber duck, is kind of the point, it means excellence, and knowing the art.
Even if it it just your rubber, duck that will remember you…
It will only remember you, because of your finest work.