Hello, I’m a builder.

I make small, focused apps for the Mac and the tools around them. Here’s what I’m working on.

Developer toolIn active development

Witan

A local daemon and desktop app that reviews my pull requests with a council of AI agents, and argues with its own findings before posting any of them.

  • Six specialist reviewers, led by a chair agent
  • A skeptic tries to refute every finding before it's posted
  • Learns each repo's standards and keeps them in editable markdown
Read the case study
Desktop appDaily driver

Canopy

A small desktop app that finds every git worktree on your machine, shows which ones are safe to delete, and cleans them up.

  • Each project drawn as a tree of its worktrees
  • Knows when a squash-merged branch is safe to delete
  • 4.4 MB app that shells out to your own git
Read the case study
macOS appIn active development

Tessera

A native macOS BitTorrent client where every transfer is drawn as a mosaic of its own pieces, lighting up as they're verified.

  • BitTorrent engine written from scratch in Swift
  • DHT, PEX, magnets, and v2 / hybrid torrents
  • ~92k lines of Swift, ~1,800 tests
Read the case study
macOS appDaily driver

Volta

A menu bar app that watches every battery around your Mac: deep detail for the Mac itself, plus AirPods, Magic accessories, iPhone and Watch.

  • Reads the battery controller straight from IOKit
  • Per-bud and case levels for AirPods
  • All history stored locally, nothing leaves the Mac
Read the case study
macOS appDaily driver

Headroom

A tiny macOS notch app that shows how much of your Claude, Codex and OpenCode quota is left, and when each window resets.

  • Lives in the MacBook notch, invisible until hovered
  • Pace ticks show whether you're ahead of your quota
  • Reuses existing CLI sign-ins and never stores tokens
Read the case study

5 apps · 3 in daily use · 2 in active development

The Witan portal's overview in Witan Night: the council in session reviewing one pull request, 30-day totals, a reviews-per-day chart and where the findings went

Witan

In active development

A local daemon and desktop app that reviews my pull requests with a council of AI agents, and argues with its own findings before posting any of them.

TypeScript / Claude Agent SDK / Codex SDK / SQLite / Electron
Canopy in Tokyo Night: three projects drawn as trees, with each linked worktree branching off the main checkout and coloured by status

Canopy

Daily driver

A small desktop app that finds every git worktree on your machine, shows which ones are safe to delete, and cleans them up.

Tauri 2 / Rust / Svelte 5 / TypeScript
Tessera's library window: eight transfers drawn as dot mosaics, with a details card for a seeding Arch Linux ISO

Tessera

In active development

A native macOS BitTorrent client where every transfer is drawn as a mosaic of its own pieces, lighting up as they're verified.

Swift 6 / SwiftUI / AppKit / Network.framework
Volta's overview: an 80% charge held on a 96 W adapter, live power flow, health 99%, 182 cycles and 30.7 °C

Volta

Daily driver

A menu bar app that watches every battery around your Mac: deep detail for the Mac itself, plus AirPods, Magic accessories, iPhone and Watch.

Swift / SwiftUI / IOKit / CoreBluetooth
Headroom expanded from the notch: Claude, Codex and OpenCode quota bars with pace ticks, reset countdowns and banked-reset tickets

Headroom

Daily driver

A tiny macOS notch app that shows how much of your Claude, Codex and OpenCode quota is left, and when each window resets.

Swift 6 / SwiftUI / AppKit

Latest writing

All articles →

Tech journey

All milestones →

Side-project log

All updates →

About

I enjoy turning a vague idea into a small, useful piece of software. This is where I write about the things I build, the decisions behind them, and the questions I’m still working through.

Right now, I’m building desktop apps that feel simple: clear interfaces, dependable behavior, and data that stays in your hands. Tessera is a BitTorrent client that draws every download as a mosaic, Volta watches every battery around my Mac, Headroom tucks my AI usage quotas into the notch, Canopy tidies up the git worktrees my coding agents leave behind, and Witan reviews the pull requests they open.

My tech journey is an ongoing notebook, from the first attempt to the lesson that finally clicks. The side-project logs cover another part of the process: choosing a small problem, finishing a version, and figuring out what is worth doing next.

You can browse the work, read the blog, or take a look at the CV. The apps are real; the essays are still sample content, ready to be replaced with the real thing.