Things I've
built.

A selection of technical projects: coursework, personal curiosity, and things that started as a question I couldn't leave alone.

Upstream contributions.

Merged work in machine learning systems, database internals, and developer tooling. Mostly performance and correctness on Apple silicon and in distributed runtimes.

3 open pull requests in flight across Core ML Tools, DuckDB, and llama.cpp.

Projects.

Systems and emulation

A logic schematic with live wire values, above a clock that keeps real time next to one that drifts
Swift macOS Digital Logic Simulation
logisim-evolved

logisim-evolution rebuilt as a native Mac app in Swift. The clock keeps real time (3.6 µs drift, not 80 ms), checked byte for byte against 4.1.0 across 1,757 tests.

Columns: MIPS Assembly Game
MIPS Assembly Systems Game Dev
Columns: MIPS Assembly Game

Built a fully playable version of Columns entirely in MIPS assembly. Implemented match detection, combo-based scoring, cascading gravity mechanics, real-time MIDI music, ghost piece preview, and difficulty scaling.

CHIP-8 emulator running the IBM logo ROM
Emulation Systems JavaScript
CHIP-8 Emulator

A full CHIP-8 VM in the browser, all 35 opcodes, 4KB memory, a live register/stack debugger, and playable ROMs like PONG.

Parallel Monte Carlo Simulation Engine
Systems Parallel Computing Monte Carlo
Parallel Monte Carlo Simulation Engine

Multi-process Monte Carlo engine in C: up to 16 workers, Unix pipe IPC, π estimation and bootstrap-based statistical inference.

CRDT collaborative drawing canvas
Distributed Systems CRDT Real-Time
CRDT Canvas

Server-free collaborative drawing: a grow-only CRDT with Lamport clocks and tombstone undo that converges across tabs with zero coordination.

macOS and tooling

Safari MCP browser-automation server
MCP Swift Browser Automation macOS
Safari MCP

A native MCP server that lets AI agents drive Safari on macOS: navigate, click, type, run JS, screenshot, and capture console/network. Zero runtime deps.

macMCP gating which Mac apps an AI agent can see and drive
MCP Swift Accessibility macOS
macMCP

Safari MCP's sister for native apps: lets AI agents screenshot, read and drive any macOS app, gated per app so nothing is visible until you grant it. Zero deps.

The MacBook notch expanded into a media and file control panel
Swift SwiftUI AppKit macOS
NotchApp

Turns the MacBook notch into a live control surface: activities, clipboard history, a file shelf, media controls, and conversion. SwiftUI and AppKit, no third-party deps.

A PDF and a video being converted into chunked Markdown blocks
Python Markdown Document Pipeline RAG
mdfied

Turns PDFs and videos into clean, chunked Markdown that preserves headings and section boundaries, so each chunk still means something on its own.

Browser and client-side

Grid of 32 browser experiments
WebGL GPU Web Audio Simulation
Browser Experiments

32 dependency-free browser demos, GPU fluid sims, ray tracers, physics, audio synths, emulators, all built from scratch and live on Cloudflare Pages.

mergepdf.ca Logo
JavaScript WebAssembly PDF Privacy Client-Side
mergepdf.ca: Private PDF Toolkit

Browser-based PDF suite with 12+ tools (merge, split, annotate, lock/unlock, compress, watermark, etc.). Zero server, all processing stays local.

fileconvert.ca logo
JavaScript WebAssembly Client-Side Privacy
fileconvert.ca: Private File Converter

Browser-based converter for images, video, audio, and documents, plus compress, background removal, and metadata tools. Zero upload, all processing stays local.

Wordle solved board spelling ERWIN
JavaScript HTML CSS Game API
Wordle Clone

A faithful recreation of the popular word puzzle, guess the hidden 5-letter word in six tries, with instant feedback and a clean, responsive interface.

Catan Online multiplayer board
JavaScript Real-Time Multiplayer Game
Catan Online

Real-time multiplayer Settlers of Catan: room codes, a procedural hex board, trading, dev cards, and victory-point tracking synced live across players.

Data and analysis

Olympic Rivalry: USA vs China
Data Visualization D3.js Storytelling
Olympic Rivalry: USA vs China

Interactive D3.js platform exploring 120+ years of Olympic competition: medal towers, venue maps, sport-specific metaphors, and narrative-driven design.

Crude Realities: Global Oil Markets
Quant Analysis D3.js Time Series
Crude Realities: Global Oil Markets

25 years of crude oil data: benchmark spreads, retail price pass-through, and 30+ annotated geopolitical events across WTI, Brent, WCS, Urals, and OPEC.

Sports Betting Platform & Odds Engine
Quant Modeling Systems SQL
Sports Betting Platform & Odds Engine

Relational betting platform with live data ingestion, probabilistic odds modelling, and a house-edge adjustment engine drawing from market making concepts.

Network Analysis of Artist Influence
Network Analysis Python Graph Theory
Network Analysis of Artist Influence

Weighted collaboration graph from Spotify data: centrality metrics show eigenvector centrality beats raw collaboration count as an influence signal.

Every great developer you know got there by solving problems
they were unqualified to solve until they actually did it.
Patrick McKenzie