Projects

Things I’ve built

Mostly experiments where code meets sound, plus a platformer in the works and one for the morning cup.

  1. No. 01Bong QuestA keyboard-only 2D platformer about a guy who collects bongs, each of which grants a new power: double jump, dash, wall jump, and glide. Nine levels so far, playable in the browser; the art is still placeholder rectangles.TypeScript · Phaser · ViteIn progress
  2. No. 02Coffee CalculatorBrew ratios, pour schedules, and a timer for pour-over, French press, AeroPress, espresso, moka pot, and cold brew. Change the coffee, the water, or the number of cups and the rest follow. Saved recipes stay in your browser.Next.js · TypeScript2026
  3. No. 03Dance JudgeHow cool (or not cool) would you look dancing to a given song? Pick a track and the judge listens to its 30-second preview, finds the beat and the key, and delivers a verdict. It started in 2017 as the Spotify Dance Judge; when Spotify shut off the data it relied on, it learned to listen for itself.TypeScript · Web Audio · DSP2026
  4. No. 04Qt-LooperA six-track MIDI looper. Record a phrase on any General MIDI instrument or a vintage drum machine and it becomes the loop; play five more over it, then save it as a MIDI file. It started as my 2016 final project for CS 312: Audio Programming at Carleton, in C++ and Qt.TypeScript · Web Audio · Web MIDI2026
  5. No. 05Set BuilderHand it a crate and it finds a running order that mixes: neighboring keys on the Camelot wheel, tempos close enough to beatmatch, and an energy arc that builds or peaks and lands. Search for tracks and it listens for their key and tempo the way the Dance Judge does, or import a Rekordbox playlist and send the sorted set back as an M3U8.TypeScript · Web Audio · DSP2026