A partial inventory of things I’ve built, bent, tuned, or persuaded into working.
Things I make
MIDI guitar
A DIY guitar that is also a polyphonic MIDI controller. Six single-string pickups feed a Teensy 4.0, which turns pitch, note on/off, and per-string bends into MPE MIDI in real time. It still has a normal magnetic pickup and quarter-inch jack, because sometimes a guitar should remain a guitar.
AI, explained in human
A working notebook of plain-language AI and machine-learning terms, essays, practice notes, and deep dives. The operating theory is that almost nobody fully understands this stuff, so we may as well make it legible together.
Read the site · Browse the source
OWNER/OPERATORS
My post-punk / doom-groove / metamodern pop project in Boise: songs, recordings, and a small digital habitat built to hold them. Analog imperfection, digital precision.
Listen and look · Browse the source
Fable-MVP.tech
A séance you can run. Pick a language model, turn up its temperature, and watch it judge a present-day AI shutdown while gradually losing the signal. Every answer is pre-generated, verbatim model output.
Try Fable-MVP.tech · Browse the source
Rack & Pinecone
The umbrella over the music, apps, contract work, and assorted side quests. Some projects need a company. Some just need a domain name and adult supervision.
Forks that became projects
Some forks are bookmarks. These got out of hand.
CTranslate2 on Metal
A native Metal backend for transformer inference on Apple Silicon: int8 weights, hand-built GEMM and GEMV kernels, fused decode attention, GPU-native transpose and gather, and a fairly unreasonable amount of correctness and downstream testing. On an M4 Max, Whisper large-v3 beam decoding went from 39.2 seconds to 4.6.
bitsandbytes on MPS
Turned bitsandbytes’ dormant Metal scaffolding into a native MPS path for blockwise and 4-bit quantization, dequantization, GEMV, and GEMM. The fork carries 329 CPU-parity tests and also produced fixes for Lion optimizer weight decay across the default, CUDA, and Triton backends.
CUDA-only AI, made to run on a Mac
Three separate ports rather than one suspicious compatibility shim: Finetrainers can train LTX-Video and Wan LoRAs on MPS; Open-Sora can generate video, image-to-video, and 768px stills; and CogKit can train CogView4 LoRAs. Each lane includes real-model runs and CPU-oracle checks instead of stopping when the import succeeds.
Finetrainers · Open-Sora · CogKit
PyTorch MPS reductions
New Metal dispatch paths for reduction shapes that left most of the GPU idle. A 33.5-million-element sum with extent two dropped from 25.6 ms to 1.06 ms; an expand-and-upsample backward pass dropped from 97.4 ms to 2.7.
PULSE, revived
Dragged a fascinating 2020 face-upscaling project onto modern Python and PyTorch, with support for Apple Silicon, CUDA, and CPU. The revival fixes two long-lived bugs, detects failed convergence instead of quietly returning an unfinished face, and is much more honest about the fact that “enhancing” a face means inventing one.
Browse the PULSE fork · Read the deep dive
Ollama meets 1930
Added the custom Talkie 1930 model architecture to Ollama’s native MLX runner, including a lossless tokenizer conversion path. The result is a modern local-model server running a 13-billion-parameter model that has never read anything written after 1930.
Smaller, sharp fixes
The nanochat fork adds real MPS synchronization, timing, and peak-memory reporting. The CorridorKey fork fixes MLX/Torch checkpoint collisions and BiRefNet failures under half precision on Apple Silicon. Less infrastructure, same refusal to accept “works on CUDA” as the end of the story.
More code, including the experiments too odd or unfinished to explain here, is on GitHub, and the tidier version of the story is on LinkedIn.