One of the problems with this in software is that the concepts can be straightforward, but when you try to translate it into code, the complexity explodes.<p>Case in point: compilers. This is a very well represented topic, both in print and online. But almost inevitably, what you do find in this space are “toy” compilers.<p>Pascal, for example, is a pretty simple language. By design, and by the nature of how Wirth does things. But slogging through even a full boat Pascal compiler is a slog for anyone. And none of the ones I know of offer much, if any, optimization. In fact most have pretty lousy error recovery as well.<p>I honestly don’t recall the state of, or how the original Oberon compiler was presented in the original Project Oberon book. And that’s about as close, I think, as you’ll get to a walk through and discussion of a “production” compiler.<p>Which is what would frustrate this kind of effort in software. Software is hard. The concepts can be straightforward but getting them implemented and a boatload of detail rears it’s ugly head, because while programming and programmers are all about abstractions, computers are all about details.<p>And those details bloat up the code something awful, to the point it’s hard to see the forest for the trees sometimes. How many times have we seen a snippet of code qualified with “but this isn’t production code, so don’t use this”, and, of naturally, half the plant cuts and pastes it into their next live release.<p>Mind there is an excellent example of this in action with Lion’s commentary on Unix v6. Someone sitting over your shoulder as you walk through the code. But v6 is stone knives simple, can you imagine a walk through a modern walk through a modern, production kernel with a qualified docent.<p>There are other examples, Implementation of 4.3 BSD for example, but even it, considering it’s size, is higher level. It’s not the source code.<p>I have a little program I wrote in Java. It’s a GUI wrapper for a 1000 line fractal generator. It wraps the options and the resulting image. But MY code on top of that is 4000 lines. For a GUI! By God, it must be doing SOMETHING! It was certainly more than I anticipated when I started. “How hard can thus be”.<p>I thought there might be value throwing up a YouTube going through it all, to show what happened and why, warts and bad decisions and all.<p>Not because it’s anything special, but it is “done”. It is “only” 4000 lines, so in actuality, rather short. And it’s not a contrived example. It was written to do something, and deal with all the imperfections in me, in the toolkit, and in the “real world” that it operates in.<p>Plus, as I was writing it, writing this “simple” thing, I was always saying “it’s almost done except for...”. So, perhaps there’s value in a commentary about how that manifest in this little thing.