Projects

Things I build

Side work, built out of curiosity or because something annoyed me enough to fix. Open source where it makes sense.

FiestaBoard

Open-source software for Vestaboard and split-flap displays

A self-hosted platform that drives split-flap displays from whatever data you care about: weather, transit, stocks, sports, surf. A plugin system handles the sources, and it ships as both a Docker image and a flashable Raspberry Pi image, so getting a board running takes minutes instead of an evening.

64 plugins, cloned more than 7.2k times in the last two weeks

PythonTypeScriptDockerMaintainer

ffx-lsfg-fast-loads

Frame generation for Final Fantasy X, without the ten-second battle loads

Frame generation got FFX HD Remaster to 120 FPS on Linux, but every battle then took about eleven seconds to load. The cause was pacing: each real frame is held for several refreshes, capping the game at 30 real frames per second, and FFX loads a fixed amount of data per rendered frame. A small service tails the file loader's log, recognises the reads that mark a battle transition, and turns frame generation off for just the second the load takes.

Battle loads: about 11s down to about 1s, still at 120 FPS while playing

PythonLinuxsystemdSteam Deck

This site

A scroll-driven oak that rewinds to the acorn it grew from

The oak filling the screen is a frame sequence drawn to a canvas, with scroll position picking the frame, so scrolling down rewinds it back to a seed in the grass. Frames rather than video, because scrubbing a video depends on HTTP range requests that not every host serves. The 15 art styles were generated with Google Gemini and one is picked at random per visit, so the site rarely looks the same twice.

First paint: 3.3 MB down to 85 KB, by loading only the frame on screen

AstroCanvasGoogle GeminiOpen source