I build tools for hard problems. Right now that's medical imaging—volumetric rendering, PET-CT fusion, real-time streaming. I care about developer experience and making complex systems feel simple.
Web-based MIDI chord controller for jazz performance. Play complex voicings with a two-handed keyboard interface and real-time MIDI output.
Browser multitimbral sampler. Drag one-shot samples into a local bank, assign them to voices, and play them from a MIDI keyboard with stacked, pluck, and randomizer modes.
Browser tool for building drum and sample kits, then exporting them to hardware and DAW formats — Akai MPC, Dirtywave M8, Roland SP-404 MK2, and Ableton.
Desktop app wrapping a PyTorch ML model for audio source separation. Built the Electron UI, FastAPI backend, and model inference pipeline from scratch.
Interactive map for cataloging squid sightings. Browse locations, add new sightings with photos, and share links to specific squids.
Unified dashboard for ski resort weather and lift status. Covers Japan, Colorado, Northeast, and Pacific Northwest with interactive maps.
Real-time multiplayer climbing card game. Mobile-first with bot players, smooth animations, and instant matchmaking.
Real-time multiplayer space combat game with client-side prediction, WebSocket sync, and gamepad support. PWA-ready.
Live streaming radio with real-time chat, queue system, and listener counts. Tune in and hang out.
Chrome extension that adds a cute wandering cat to any webpage. Watch it explore, nap, and keep you company while you browse.
Primary engineer behind an in-house, browser-based diagnostic image viewer and sole code owner of its imaging subsystem — the layer that turns raw DICOM into pixels on screen. Led the frontend migration from a licensed third-party renderer to an in-house VTK.js viewport, then built its core reading tools: window/level, measurements and ROI annotations, MPR, linked scroll, and localizers. Architected multi-object composite stacks and a prior-matching engine enabling fused PET/CT display, drove a multi-year DICOM conformance campaign on the windowing/VOI LUT pixel pipeline, and own viewer memory and performance — from a 50 GB LRU pixel cache to a ~53% cut in prior-loading main-thread busy time.
No tracks yet
/music
No photos yet
/photos