Spivee's Wins

This is a list of all of the pieces of code I can remember making that I am even slightly proud of, so that it counts for something, even if I don't get to work on most of them anymore. I can't be bothered linking all of the GitHub pages just yet.

I basically never use tutorials for the specifics of the algorithms or designs that I use – I tend to use tutorials to learn how to use languages and technologies, learn how those things work at a broad conceptual level, and then figure out the actual algorithms and architecture myself.

One significant example of me working out an algorithm for myself came up when I started writing my own parsers in C, where I knew of Reverse Polish Notation, and stack machines, and with those concepts alone I tried to write an expression parser that would turn expressions into a sequence of assembly-like operations, and inadvertently invented something similar to the Shunting Yard Algorithm.

A more extreme example of inventing my own algorithms was when I was making my sample implementations for arctan and arcsin, it just came from my own geometric/complex number concepts, and Norman Wildberger's rational trigonometry, and an understanding of normal bisection algorithms. After these I also realised the same technique could be used to implement binary logarithms, after doing the trig functions, but before discovering that that is already a known algorithm, the binary logarithm algorithm.

I have also made a number of technologies while experimenting with what to put in my most recent Settlement/Civil/economic simulation game attempt, some of which stayed in the game until the end:

The iteration before this, written in C, had a vulkan graphics pipeline that draws little circles and has them craft stuff, using data driven entities and crafting recipes specified in a plain text file. It also rendered freetype text using Vulkan copy image commands, to draw a text box where the mouse was – this was when I realised that I should just do software rendering for these 2D games.