Software engineer.
Music obsessive.

I build mobile apps, strange little tools for the internet, and fun projects. When I'm not doing that I'm chasing live music. The record on the rightbelow is pulling a random cut from my Apple Music library right now.

Spinning vinyl record. Click for a random song.
● Now spinning

Things I've built.

Side A: the singles. Side B: the deep cuts.

Universe-3D Live

A search engine for 5.6M+ 3D models, with curated collections and print-on-demand.

SvelteKit · Tailwind · Supabase

Archive Master Live

Paste an Archive.org show and it converts FLAC to ALAC right in your browser, tags the metadata, and streams out a zipped album. No server, no uploads (source). Grew out of a self-hosted version.

React · ffmpeg.wasm · Cloudflare Pages

Multi.Chatengineer.ai Live

Chat with several LLMs at once, keep the best answer, carry on the conversation (source).

TypeScript · Vue · Cloudflare

Dark Starry Sky Live

Every circulating Grateful Dead "Dark Star" (209 nights, 1968 to 1994) run through a music model and rendered as a voxel-fog sky you stand inside. Altitude is time, the stars are playable nights, and whichever one you pick drives the weather (source). Its underwater sibling, Snell's Theme, does the same for every Phish "Theme From the Bottom" (source).

three.js · MERT · Python · Cloudflare Pages

Towereye macOS

Point a webcam at your dice tower. It reads each physical roll and posts it to Roll20, with an OBS overlay so your Discord camera shows the tray and the result. Real dice, online table (source).

Python · OpenCV · Electron · Chrome extension

Side B: Firehose Orchestra, the live Bluesky firehose as music: plucks for posts, hi-hats for likes, a drone that follows the slow trends, no backend (source); Pinball, the machine in the corner of the shop: a record-groove playfield, track modes, an Encore multiball, and hand-rolled physics with no engine underneath; Betanalysis, a stable of sports-betting models racing each other with real odds on a Raspberry Pi; My Awesome Menu Bar, a macOS ticker that rotates my teams' scores and odds next to the clock; Slackchat, a private Slack + Discord bot wired into OpenAI, Anthropic, Stability, and Gemini for text and images; and Sudoku Solver, a Flutter backtracking solver you can play in the browser (source).

Also in the crate: Great 78 Shuffle, Live Shuffle's little sibling for the Internet Archive's digitized 78rpm records; and Bobtalk, a text prediction model trained on 60+ years of Bob Dylan's stage banter.

Hidden track: an app that screams when you open it. That's it. That's the app.

I also write about music.

Essays and recommendations at listentothismusic.com