Senior full-stack developer · Linux

I build software that lives close to the metal and ships to the edge.

12 years of web applications, from database to frontend. I daily-drive NixOS, write Rust and TypeScript, and build everything in the open — a Wayland compositor, bots on Cloudflare Workers, and a pastebin on R2.

12+years building software
25technical posts
300+GitHub stars
Rust+ TypeScript, Nix

Where I've worked

Newest first — the résumé has the detail.

Full résumé
  1. 2021 – Present

    Independent DeveloperOpen Source

    Built and run Codebam Stream, a paid live-streaming control plane on Cloudflare; wrote the Telegram bot framework with 214 forks and 120 npm releases.

  2. Apr. 2021 – Oct. 2021

    Frontend Web DeveloperAssetDash

    Rebuilt the company site on Next.js, TypeScript and React with a Firebase backend; bounce rate down 15%, user engagement up 20%.

  3. Oct. 2019

    Assistant Automation CoordinatorElections Canada

    Kept polling-station computer systems online through the 2019 federal election alongside a team of 10+.

  4. Sept. 2019 – Apr. 2020

    Development InternAVROD

    Built a web store with Django and MySQL as a course placement at the company.

  5. May 2018 – Apr. 2020

    IT Student AdvisorTrent University IT

    Diagnosed and repaired student and faculty machines at the library front desk across Windows and macOS.

Selected work

Open-source projects and shipped services.

All repositories (opens in a new tab)
Codebam Stream control room with one program feed and five relay destinations

2026

Codebam Stream

Browser-first multistreaming in early access: OBS pushes one signal in over WHIP, your own watch page is the program output, and the same signal leaves again as RTMPS to YouTube, Twitch, X, Kick and Telegram. Cloudflare Workers, Durable Objects, D1 and LiveKit underneath, prepaid hours on top.

TypeScriptdurable-objectslivekitrtmps

Viewport desktop shell showing its keyboard controls

2026 · ★ 3

Viewport

A Wayland compositor in Rust on Smithay whose entire shell — wallpaper, dock, window frames and titlebars — is a web page, composited zero-copy alongside native clients. Five interchangeable engine backends render that same page: WPE, WebKitGTK, Chromium, CEF and Servo.

Rustwaylandsmithaywpe-webkit

Latest writing

Notes from whatever I am taking apart.

All 25 posts

USB Cable Testing on Linux

usbmon turns Wireshark into a cable tester, and finds retransmissions on cables that supposedly work.

Podman Quadlets

Quadlets describe a container as a systemd unit, so systemd owns the lifecycle instead of Podman.

Email bot

Cloudflare email routing plus Workers AI: an inbox that answers its own mail.