Archives
All the articles I've archived.
-
Running the Analysis Service: Modal apps and background jobs
A CPU orchestration service, five Modal GPU apps, and the job and batch recovery paths that connect analysis to the catalog.
-
Infinite Worship: endless playback after the analysis API disappeared
Rebuilding the Infinite Jukebox for worship music after the original analysis API disappeared
-
Detector 2.0.0: finding lyrics files to review first
Updated:Ranking suspect timed lyrics, with three recorded examples and limits on what they establish.
-
What building HandsOff taught me about steering coding agents
I built a macOS input locker so I can watch my coding agent work with kids in the house. Three bugs only showed up on the machine, and they changed how I steer agents.
-
Ten build phases: what Stream of Worship taught me
Updated:What I would keep, what I would simplify, and which results still need listening tests.
-
Going native: an Android client over the same APIs
Updated:Native video playback, cookie sessions, and downloads managed by Android.
-
Offline worship playback: downloading the player as well as the video
Updated:Caching rendered artifacts, serving byte ranges, and starting a downloaded set without a network.
-
The web app: preparing a set on a phone
Updated:Separating editing from rendering, polling for completion, and delivering video to a TV.
-
The songset constructor: searching within a worship arc
Updated:A fixed phase template, deterministic checks, and a historical example of ranked songsets.
-
The transition engine: comparing the exit and entry
Updated:Boundary features, harmonic recommendations, and what the renderer actually applies.
-
Synced lyrics: generation and alignment
Updated:Matching official lyrics to a recording, recovering repeated endings, and aligning lines to the vocals.
-
Analyzing songs: tempo, key, sections, and meaning
Updated:Measuring recordings, identifying useful sections, and adding text embeddings and Theme/Posture tags for songset planning.
-
Building the catalog: song IDs that survive another scrape
Updated:Scraping the song table, separating songs from recordings, and fixing the first ID migration.
-
Why seamless worship transitions are hard
Updated:What I need to know about two recordings before joining them into a worship set.
-
Stream of Worship, a series
Updated:Introducing a series on building Stream of Worship, a system for seamless Chinese worship music transitions
-
HandsOff - Protection from little fingers and paws
A macOS utility to lock keyboard and mouse while leaving the screen viewable
-
Google Ads Asset-based Ad Extensions
Quick look at adoption
-
Visualize NYC 311 Call Stats via Zola
Play with chart.xkcd and vega-lite
-
What contributing to QSV taught me
Learning Rust with my first real project
-
Table Demo NYC 311 Calls
Table showing NYC 311 calls