Work
The places I've worked and things I've learned along the way. What I build for fun lives over in projects.
Experience
-
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