Between the big projects there was always a drawer full of small ones — nifty tools written as examples for my open source project, and mini-games written for a very specific kind of fun: not playing the game, but writing a player that never loses.
Small tools, sharp edges
The tools page reads like a workshop bench: an ASIO Metronome whose click is synthesized in realtime from a tiny formula, sine and noise generators for ASIO soundcards, a third-octave analyser, and two tools I remain fond of: the VST-Plug-In Screenshot Tool, a command-line utility that renders a PNG of any plugin’s GUI (point it at a directory, and it captures them all), and VST Plug-In Preset Match, which tunes one plugin’s parameters until it matches a reference — parameter estimation dressed up as a utility.
The perfect player
I have been fascinated by computer games since childhood — but as a programmer, the real game was always: can I write a player that beats every human? Minesweeper was a long-time favorite; I did about five implementations hunting for the perfect player (most were lost to a hard-disk crash, which still hurts). The surviving version was written in roughly an hour, as a joke about “sweeps”. BubbleSmile, a clone of a game from my old Samsung phone, looked like you could play it forever with enough focus — and indeed the perfect player proved my assumption right: you can make the game twice as hard before even the perfect player runs out of moves after a handful of turns.
Writing a perfect player turns out to be the best way to truly understand a game’s rules — and a surprisingly good way to practice algorithm design when nobody is watching.