Tools for language processing, music generation, and search infrastructure.
Japanese tokenizer for the browser. 230 KiB gzipped, zero dictionary files.
A design I’d had in mind for years, finally built with AI pinning it down through massive test suites. MeCab was no oracle—it had its own bugs. Language is endlessly hard.
Dependency-free audio engine for C++, Python, Node.js, and the browser. From librosa-compatible analysis to mastering, mixing, instruments, and a realtime headless-DAW runtime — one C++17 stack.
Started out wanting librosa to run in the browser. Kept going because no OSS did Ozone-style mastering — then mixing, editing, built-in instruments, a whole headless DAW runtime, all in the same stack under the same license.
In-memory full-text search engine with MySQL/MariaDB binlog replication. Millisecond-scale queries on million-row datasets.
Full-text search broke on a 100M-pageview/month project. Built this, shipped it to production. Problem solved.
Pop music MIDI generator grounded in music theory. 9 tracks, seed-based, deterministic.
Built for my day job—briefing composers on song ideas. Watching music emerge from C++ was a strange and fascinating feeling.
Bach instrumental works generator. Fugues, chorales, cello suites, the Chaconne.
Thought counterpoint was just logic. I was wrong. Every generated piece reminds me how great Bach was. Music is endlessly hard.
OpenID Connect Provider library for Go. Framework-agnostic http.Handler, FAPI 2.0 Baseline / Message Signing, BYO storage.
Years of building OIDC providers at the day job left me wishing a library shaped like this existed. So I built one.
Headless, Excel-compatible calculation engine. One C++17 core across WebAssembly, Python, and native CLI — 522 functions, oracle-pinned to Excel 365.
Wanted to read and write Excel through an MCP server, but no good tool existed. So I built the engine first.
Shared calendar app for running one calendar across families, teams, or agencies. TimeTree-style simplicity with a Google Calendar–style permission model. Go REST API + React SPA.
Ran talent-agency schedules on TimeTree — the de facto standard in Japan’s indie-idol scene — but kept hitting its limits and wanted to hold the data myself. So I built my own.
Clone detection for Rust, C and C++. Reads sources directly — no build, no compilation database, no network — and names every finding by content, so a copy you already ruled on stays ruled on.
Shaving bytes off Suzume’s WASM build meant running clone detectors that wanted a JVM and a stack of dependencies behind them. I wanted a single binary I could drop into CI, so I wrote one.
MySQL/MariaDB binlog CDC engine with C ABI. Real-time row-level change events for Node.js and Python.
Built to kill the MySQL-to-Redis sync batches. No native dependencies — just npm install and go.
Avatar runtime for an AI VTuber. A browser-rendered character driven over a local HTTP API, one turn of dialogue at a time — no model provider, no API key, no prompt state.
Wanted to build the runtime an AI VTuber stands on. A slide talk at a tech meetup is the excuse.
In-memory vector recommendation engine. Aiming for real-time personalization speed.
Wanted to build a real-time recommendation engine like the ones behind modern feeds. Went in-memory to handle the transaction volume.
Japanese vertical text layout engine. Line breaking, kinsoku shori, hanging punctuation, ruby, pagination — zero DOM dependencies.
Was planning a novel publishing platform. Realized the viewer’s line breaking had to be solved first. Built this as the foundation.
Pure-TypeScript music theory engine. Roman-numeral analysis, chord and key detection, reharmonization, SATB voicing, and seeded part generation from raw note events.
Wanted a browser DAW with music theory built in. That needed a theory layer first, so I wrote one.
Combinatorial test generation engine. Pairwise / t-wise coverage in browsers, Node.js, Python, and native C++.
Wanted pairwise coverage computation entirely in the browser. Built it in C++/WASM — though in hindsight, TypeScript alone might have been enough.
Perl HTML::Template syntax with a TypeScript API. Existing .tmpl files render unchanged, and each template can generate the TypeScript interface for its own data.
Built it to migrate a Perl app off HTML::Template, then ported the app to Go and no longer needed it. The syntax still holds up today, so I published it anyway.
Zero-dependency, batteries-included CLI framework for Node.js / TypeScript. Interactive shell, tab completion, colors, tables, prompts — all built in.
Loved Vorpal for wrapping complex REST API servers into interactive CLIs, but it went unmaintained. Built my own so I could keep shipping.
CoreDNS plugin for REST API-driven DNS failover. No etcd, no Consul — just HTTP and A records.
Needed a failover switch for Valkey Sentinel at the IDC. Nothing fit, so I wrote a CoreDNS plugin.
True visual programming for JavaScript. Transform your code into executable ASCII art.
My favorite Perl module, reimagined for the modern Node.js era.
Comprehensive music analysis. Tempo, key, chords, structure, timbre — all from audio.
Needed to put music into words when commissioning tracks at work. Python because librosa was the only option back then.
Side projects shipped as web apps. Not open source — just playable.
Stage formation design tool for idol and dance groups. 3D visualization, beat-synced animation, and auto-placement solver.
Built on the hypothesis that visualizing parts of choreographers' tacit knowledge and processes could streamline commercial production and help performers learn more efficiently.
Formations and audio stay in the browser. Nothing is uploaded.
// why it existsFork LifeNo EncoreStructured Intimacy

A full digital audio workstation that runs entirely in the browser. Multi-track sequencing, piano roll, engraved score view, mixer, automation and a mastering chain — built on the libsonare WebAssembly engine.
Integration-testing libsonare end to end needed a full host application — and I'd been wanting to build a complete DAW that runs entirely in the browser anyway. I also wanted to reproduce the combined piano-roll-and-score view from Voyetra's MIDI Orchestrator. So I built one.
Audio, projects and SoundFonts never leave the browser's storage.
// why it existsStill WAV
