A collection of native macOS utilities, screensavers, and somewhat faithful recreations of classic arcade games. Built with care, designed to be simple.
See all our apps, utilities, games & screensavers.
I built a small dashboard to keep an eye on this website, and one morning it told me one of my own posts had a dead link — to Shadertoy, in the very post where I’d gushed about Shadertoy. Except the link works perfectly. Shadertoy just won’t talk to robots, and my robot took it personally. Here’s the small, careful feature I built so a tool can tell the difference between ‘broken’ and ‘I’ve checked, and it’s fine.’
I’ve spent thirty years building a music library — pub bands, street buskers, support-act CDs that never reached a single streaming service, an almost-complete collection of a band who deleted themselves from history. All of it recorded at wildly different volumes, all of it a chore to actually listen to, because one hand was forever on the dial. So I built a small app that learns how loud each track really is and quietly evens them out — no audio driver, nothing to install. This is also the project the dancer was hiding in.
A little app I’ve been building sprouted a music visualiser, and I decided it needed a dancer in the spotlight. So I drew one — head, arms, a swirling skirt — and she looked wrong in a way I couldn’t explain. Here’s how a black blob, a smoke machine, and a hard lesson about the human form taught me to make something feel alive by refusing to say what it is.
I filled my next game's rooms with bunks, lockers, oil drums and dead terminals to make the place feel lived-in. It looked wonderful. There was just one problem: you could walk straight through all of it. Here's how I made the set-dressing solid — without costing a single frame.
My next game builds its levels fresh every time you play — rooms, corridors, locked doors, hidden keys. Which raises a terrifying question: what if it builds one you physically can't finish? Here's how I stopped blindly trusting the generator and started proving it wrong.
Everything here is free and open source. If you find any of it useful, a small donation goes a long way.
Support My Work