Back home

Work

I build web platforms on Cloudflare, Android software down to the camera layer, and local tools that keep your data on your own machine.

Things I built

  1. aviation.foundation

    A maintained public registry of aviation funding, not for profit.

    • Cloudflare Workers
    • D1
    • R2

    Scholarships and grants across eight career tracks, gathered in one place and kept current rather than published once and abandoned. Over $3M tracked.

    Serverless mail that never holds a message, and airman identity verified cryptographically instead of by trust.

  2. For non-profits

    Websites and staff tools for the organisations that run on volunteers.

    • Next.js
    • Payload CMS
    • Cloudflare

    A bilingual website and staff office for a Toronto monastery, and the audit and migration plan for a second temple’s WordPress site.

  3. Paperweight

    Small Android tools, made to feel like objects.

    • Kotlin
    • Jetpack Compose
    • Android

    A compass, a clock, mail, a wallet, an authenticator. Each is one flat colour over a quiet panel, and every control presses the same way.

  4. dawd

    Custom guitar rig.

    • macOS
    • Core Audio
    • terminal client

    The audio engine runs in the background with no interface at all. A separate terminal program connects to it to change patches, levels and routing.

    Splitting them means the thing making sound never waits on the thing drawing pixels. Quit the control surface mid-song and the rig keeps playing.

  5. Upmark

    This was supposed to keep me consistent.

    • Flutter
    • Android beta

    Most training apps make you plan. Upmark works out what you lift next from what you lifted last, so the screen between sets has one number on it.

    Mobile app, progression engine, and a web side that stays out of the way.

  6. CamHook

    Replaces what the camera sees, underneath apps that never asked.

    • Android 16
    • C++
    • camera HAL

    Android hands an app its camera frames through a layer almost nobody touches. CamHook sits in that layer and swaps the frames out, both the live preview and the photo that gets saved, before the app above ever sees them.

    The app is unmodified and unaware. No hooks in the app process, no patched APK, no accessibility trick.

  7. Chronicle

    Rebuilds my day from countless signals.

    • Self-hosted
    • private

    Location history, phone events and computer activity go in; a readable account of an ordinary day comes out.

    It runs on my own hardware and talks to nothing. That constraint is the point of it.

  8. Timeline Extractor

    Years of location history recovered from an undocumented database.

    • Python
    • protobuf

    Google Maps keeps timeline data on the device in a format with no documentation and no export. I read the protobuf structure back out of the bytes and built a local tool that turns it into something openable.

    Everything happens on your machine. Nothing is uploaded to check it.

  9. ragtag

    Local retrieval over your own exports, books and transcripts.

    • Go
    • Python
    • five platform binaries

    Point it at message archives, notebooks or a pile of PDFs and ask in plain language. Hybrid retrieval runs locally, so the corpus never leaves the machine it lives on.

    It ships as a single binary for five platforms, because the people who need this most should not have to install a toolchain first.

Tools

Web
  • SvelteKit
  • Next.js
  • Payload CMS
  • Cloudflare Workers
  • D1
  • R2
Mobile
  • Kotlin
  • Jetpack Compose
  • Flutter
Systems
  • C++
  • Android camera HAL
  • Core Audio
Data
  • Python
  • Go
  • protobuf