Senior full-stack developer · Linux

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

Professional web experience since 2018, from database to frontend. I daily-drive NixOS, write Rust and TypeScript, and ship most of what I build in the open — a Wayland compositor, bots on Cloudflare Workers, and a pastebin on R2. The paid Stream control plane is the exception.

Work with me

Custom work, or the kit to build it yourself.

Services

Websites and Telegram bots.

Scoped per project and quoted by email; you work directly with the developer doing the work.

See services
2018professional experience since
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 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)
Viewport desktop shell showing its keyboard controls (on codebam.ca)

2026 · ★ 3

Viewport (on codebam.ca)

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

Podman Quadlets

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

NixOS Flakes

What a flake actually is: inputs, outputs, and a NixOS configuration with every dependency pinned.