Experience
-
Staff Software Engineer
Toronto · 2024 - Present
I lead the typing group on the Ruby Developer Experience (DX) team, responsible for building tooling that empowers developers to build faster and catch bugs before they hit production. Our work focuses around Sorbet, a static type system for Ruby developed at Stripe. Notable work:
- Championed the ongoing effort to incorporate Prism (Ruby’s new standard parser) to speed up Sorbet, which also makes it easier to adopt new Ruby syntax as Ruby evolves.
- I was a core contributor to integrating RBS (Ruby’s new standard syntax for types) into Sorbet. I will be presenting this work at RubyKaigi 2025 in Japan, the world’s largest Ruby conference.
- As a maintainer of Tapioca (Shopify’s open-source Ruby type-generation tool), I facilitated community contributions, helping many individuals open their first-ever open-source pull requests.
Senior Software Engineer
Toronto · 2022 - 2024
- Developed a server-driven UI framework for the Shop app that allowed our Ruby on Rails backend to dynamically update the content on our React Native iOS and Android apps.
- Built feature flag, experiment, and GraphQL infrastructure that made our server APIs more flexible to future changes, while preserving backward compatibility with existing app versions.
- Empowered the merchandising and marketing teams to publish seasonal content, such as for Black Friday/Cyber Monday, Boxing Day, holidays, etc.
Software Engineer
Toronto · 2019 - 2022
- I was a core contributor to the Shop app during its transition from Arrive (the package tracker) to Shop, the all-in-one shopping app. I was central to building the backend systems for the shopping features we take for granted, like product pages, collections, carts, in-app checkout, etc.
- Developed a system to automatically review submissions the Shopify App Store, enforcing policies to protect merchants and customers from malicious apps.
-
Software Development Engineer
Vancouver · 2018 - 2019
- Maintained and optimized the execution engine at the heart of Amazon’s fulfillment pipeline, fulfilling over a billion shipments annually.
- Architected and implemented a petabyte-scale Elasticsearch cluster to index our service logs, empowering my team to easily resolve customer issues.
- Migrating the system off OracleDB and onto DynamoDB and Amazon RDS (PostgreSQL), for better global-scale availability and reliability.
Software Development Engineer Intern
Seattle · 2017
- Implemented an algorithm that suggests more optimal quantities for restock orders to merchants, by integrating aggregate buyer behavioural signals.
- As the sole owner, I implemented and tested this solution over the course of my three month internship with a great deal of autonomy.
- My project resulted in lower operational overhead for Amazon merchants, lower prices, and increased customer satisfaction by mitigating out-of-stock scenarios.
-
Technical Developer
Toronto · 2016 - 2017
- Collaborated in a team of four on the core business application for software project management, employee time tracking, and automated invoicing.
- Quickly became an effective member of the team, despite having no prior exposure to the technologies used, such as C#, ASP.NET, TeamCity, and Git.
- Led the modernization of the development process by migrating from SVN to Git Flow, streamlining continuous integration, and improving automated testing.
-
Software Developer
Toronto · 2015
- Our team focused on development of a patient management system responsible for handling hundreds of thousands of patients annually.
- Gained my first exposure to enterprise technology, such as IBM WebSphere Portal, Java EE, Java Portlets, Oracle SQL, SVN, Maven, and others.
- Completed development of a JavaScript subsystem that logs lifetime bone radiation exposure of patients in order to manage radiotherapy side effects.
Education
-
Honours BSc in Computer Science, with distinction
Toronto · 2013 - 2017
- Minor in Mathematics
Open-Source Contributions
-
The primary interpreter for the Ruby programming language, written in C
2024 - Present
- Optimized one of the core methods, to reduce memory allocations and improve performance.
- Fixed a bug in the integration of Prism, the new standard parser. This was crucial to ship in time for Prism to become the new default parser in Ruby 3.4.
- Improved the “getting started” documentation, to make it easier for new developers to start contributing on the Ruby interpreter.
-
A fast type-checker for Ruby written in C++
2023 - Present
- Sorbet has its own bespoke Ruby parser, which is non-standard and difficult to maintain. I’m working on a large-scale project to replace it with Prism, Ruby’s new standard parser.
- Contributed many bug fixes and type annotations.
-
A first-party package of sequence and collection algorithms
2023 - Present
- Contributed new
grouped(by:)
andkeyed(by:)
APIs to Swift Algorithms for grouping collection elements by a key. - Contributed new
ends(with:)
API for checking if a collection ends with a particular suffix.
- Contributed new
Volunteering
-
First Robotics Team #854
My high school’s team competing in the FIRST robotics competition
2013 - 2015
- Educated high school students in the mechanics, electronics, and programming skills required for building sophisticated teleoperated and autonomous robots.
- Our team’s achievements were acknowledged by our local representative in Parliament as a success story for the government’s investment in public STEM education.