Michael Chen

Projects & Fun

Outside work, I build apps for friends, contribute to open-source projects and work on my audiobook setup.

Kestrel, PHiLIP and my mlx-audio fix are in ML & Research.

fig. 0 · Recent sample of up to 100 public GitHub events. Times are UTC. A dated cached sample appears if GitHub is unavailable. Cached sample from August 14, 2026 · 100 events · 2026-08-12 03:00 to 2026-08-14 23:00 UTC

View public activity on GitHub

View hourly activity
Hours with events in this sample. Unlisted hours contain no sampled events.
Hour (UTC)EventsMost frequent repository
2026-08-12 03:0019cs170-eight-puzzle-search
2026-08-12 05:005mchen04.github.io
2026-08-13 17:005hark-audiobook
2026-08-13 19:005hark-audiobook
2026-08-13 20:0015hark-audiobook
2026-08-13 23:005hark-audiobook
2026-08-14 15:007pancake
2026-08-14 16:003pancake
2026-08-14 17:0010pancake
2026-08-14 18:005pancake
2026-08-14 19:0010pancake
2026-08-14 22:005pancake
2026-08-14 23:006pancake

My audiobook setup

I built Epub Listener, Hark and Kestrel to turn books into audio and listen on my device.

  • Epub Listener

    Python CLI. EPUB in, chaptered MP3 out, via Edge-TTS, local Kokoro, Kestrel on Apple Silicon with a separate engine install, compatible Hugging Face text-to-speech pipeline models, or a local command that writes audio. Resume checks chapter text and narration settings before reusing audio. Embeds a timestamped read-along transcript. A historical Kokoro/Edge-TTS check reports median word-onset error below 30ms on isolated calibration words. Other backends can provide estimated sentence cues.
  • Kestrel

    My speech-generation engine. Its speed measurements, quality limits and independent audit are on the Kestrel project page.
  • Hark (sign-in)

    Installable audiobook PWA. Import a chaptered MP3, or narrate a PDF, EPUB, DOCX, text, Markdown or HTML file on-device with Kestrel through WebGPU or WASM. Audio, source files, covers and transcripts stay on-device. Metadata and progress sync between devices. Read-along highlights sentences and marks words when the transcript includes word cues. Saved playback and read-along work offline after the app shell is cached. Narration downloads about 41MB of weights and a 24MB runtime, then can work offline while those assets remain cached. Keep Hark open until narration finishes.

More about my audiobook setup

Personal tools

Tools I use and experiment with.

  • tcd

    zsh and tmux helper that launches, finds, and reattaches long-running AI CLI sessions by partial name. tcd zer gets me back into the session for that repository without needing its full generated name.

    Phone reconnects preserve running sessions. Saved layouts need manual restore after a reboot; running processes must restart. I use it from my phone on the train, where matching a partial name is useful.

  • cs

    Rust CLI for macOS that swaps Claude Code accounts by replacing the Keychain entry in place, plus a per-profile usage dashboard.

    Account switching takes under a second, compared with the built-in logout and login flow. Each account keeps its own settings, and one master profile's skills, commands and agents are shared across them.

  • ESPN lineup bot

    Chrome extension plus a Node server that wakes five minutes before the first game each day and sets my fantasy basketball lineup off live injury reports. It uses the injury wire because projections can lag injury news by hours.

  • House by 30

    Offline-capable budgeting PWA that turns annual income, estimated taxes, payroll benefits, and planned expenses into a monthly budget.

    I built it for a friend and also use it myself. It requires sign-in.

  • Creator Harness

    A local content studio with writing review, media generation, restart recovery, and human approval steps.

Contributions

I contribute to projects built by my friends. My mlx-audio fix is in ML & Research.

  • Valence

    I contribute patches to Jeremy's sports stream aggregator.

  • Pancake

    I contribute to Jeremy's dynasty fantasy basketball app.

  • Ding

    I contribute to Jeremy's collaborative poker-ranking game.