Work
The places I've worked and things I've learned along the way. What I build for fun lives over in projects.
Experience
-
2022 - 2026 · Remote
Kraken
Four years building the plumbing that moves events across Kraken’s backend. I helped build the company’s event platform: the async, service-to-service backbone that teams across the company rely on to produce, consume, and evolve their streams of data.
One service I owned end to end handled reliable, exactly-once event delivery for critical workflows, at high throughput and low latency. I also cared a lot about being able to see the system: I built end-to-end tracing and the tooling engineers use to understand what’s happening across our services, and eventually taught AI coding agents to follow along and investigate that flow of events too.
Beyond async infrastructure, I built services behind some of our consumer products, shaped the APIs behind core user flows, and gave talks on building event-driven systems.
rustkafkadistributed systemsffi -
2019 - 2021 · Toronto, Ontario
Scribd
My first full-time role out of school, working on internal tooling, the unglamorous, high-leverage stuff. I built the cloud dev environments that took “setting up Scribd” from hours of head-scratching down to a single CLI command and a few minutes: hot reloading straight to a cloud environment, with a shareable URL so coworkers could jump in and collaborate. Scribd is where I learned that developer experience is a product, and your coworkers are the pickiest users you’ll ever have.
Before that, I interned there, where I led a large data migration of over 70 million rows with no downtime, clearing the way for a better document-annotation experience, and tuned the performance and bottlenecks of the Ruby on Rails monolith and its Sidekiq task queues.
developer experiencekubernetesrails -
2019 · Toronto, Ontario
NVIDIA
A co-op term in NVIDIA’s PerfLab, building automation for GPU performance testing: Python on Linux, Perl on Windows, and a steady supply of video game benchmarks I was definitely not allowed to just sit and play.
pythonperformance -
2018 · Los Angeles, California
Riot Games
The next summer I was back with Esports, this time at Riot’s main campus in Los Angeles. I pitched the team on using Go for a new service that runs alongside the League of Legends game servers, pulling events straight from the game into the live-stats pipeline, so fans can follow stats and in-game moments in real time during broadcasts watched by millions of concurrent viewers worldwide. Beyond live stats, I helped ship a new lolesports.com viewing experience, my first real dive into a larger React frontend, working full-stack across it.
goreactesports -
2018 · Waterloo, Ontario
Waterloo HCI Lab
Between internships I spent a term as an undergraduate research assistant in Waterloo’s Human-Computer Interaction Lab, working alongside a professor and a PhD candidate on gesture typing, the swipe-style keyboards you use on your phone. I implemented a recognizer for it in Swift and built the macOS and iOS apps we used to run experiment trials and collect data. It was a small taste of proper research: careful, methodical, and a good reminder that humans are the hardest part of any interface.
swifthciresearch -
2017 · St. Louis, Missouri
Riot Games
My first summer at Riot, on a small Esports team in St. Louis building the tooling and services behind League of Legends esports: tracking players, teams, stats, and the rest. My main project was really a product one. I put on my product manager hat, dug into how different regions actually used the esports admin panel to schedule and plan events, mapped out the friction points, and rebuilt the scheduling interface around them, making it much easier to set up live matches for future events.
That summer I also got to take part in CodeDay 2017, mentoring a group of students at Riot’s St. Louis office as they designed, built, and presented video games over a 24-hour hackathon, something I was grateful to be part of.
reactesports -
2014 - 2017 · Remote
Mineplex
What started as teaching myself Java to build minigames for live Twitch events in a small Minecraft community grew into a real passion for building servers and games that scale to thousands of players.
I joined Mineplex as a developer while still studying and ended up leading the small, distributed engineering team as we built games for millions of players around the world to enjoy. At our peak we ran hundreds of servers across North America and Europe with over 30,000 players online at once, and I helped build and grow the community along the way.
A lot of my friendships today still trace back to those Minecraft servers, and I’m forever grateful for the deep knowledge and experience I gained from building (and at times breaking) a real-time distributed system at that scale.
javagames
Education
University of Waterloo
Bachelor of Computer Science · 2015 - 2020
Toolbox
- Languages
- RustGoTypeScriptJavaPythonSQLRuby
- Technologies
- KafkaEvent-Driven ArchitectureRocksDBgRPCAWSKubernetesTerraformRailsReactDockerRedisElasticsearch
- AI Tooling
- Claude CodeCodexAI-assisted development & review