B.Eng. Software Engineering
Software engineering degree, with internships in between. Along the way: an OpenGL game, a peer-to-peer video streaming capstone, a React Native campus map and a C++ board-game engine.
- Java
- C++
- Python
- OpenGL
- Web
Software engineer at Microsoft. Graduate student at SFU, researching visual SLAM.
This page is a map of how I got here, reconstructed live in your browser. Scroll to move the camera.
Fitting 3D Gaussians to one photoReconstructed from one photoiter 0 / 30,000 · PSNR – dB · 0 Gaussians
Start tracking01 Calibration
Before a SLAM system trusts anything it sees, it calibrates the camera. These are my intrinsics.
Most of my career has been on the layer other engineers build on: web services and APIs at Intact and Morgan Stanley, then AWS CloudFormation, the service teams use to define their infrastructure as code. Since February 2025 I've been at Microsoft.
Alongside work I'm a graduate student at Simon Fraser University, graduating in fall 2026. My research is in visual SLAM and 3D Gaussian splatting: getting a single moving camera to work out where it is and what the world around it looks like. I'm especially interested in what happens when conditions turn bad, which is why this page has weather controls.
I studied software engineering at Concordia University in Montreal and later completed Stanford's Machine Learning Specialization. I'm also a large-language-model enthusiast.
%YAML:1.0
origin: London, Ontario
trained: B.Eng. Software Engineering, Concordia
studying: Graduate student, SFU (fall 2025 – fall 2026)
current: Microsoft, since Feb 2025
previous: AWS CloudFormation · Morgan Stanley · Intact
research: visual SLAM · 3D Gaussian splatting
# rms reprojection error: 0.21 px02 Trajectory
Each keyframe is somewhere I stayed long enough to build something. As you scroll, the camera drives the loop, inserts keyframes and triangulates what it sees.
Green edges link keyframes that share a skill, the way a SLAM system links frames that observe the same landmarks. Hover a skill to light up its edges.
Software engineering degree, with internships in between. Along the way: an OpenGL game, a peer-to-peer video streaming capstone, a React Native campus map and a C++ board-game engine.
Built the web app the QA team used to manage its inventory.
Designed and built RESTful web services in Spring and Quarkus.
Built a Spring microservice that monitors Kafka messages, plus Python tooling on top of MongoDB and AWS S3.
Developed APIs and worked with cross-functional teams to build solutions for financial clients.
Worked on AWS CloudFormation, improving the service and the experience of the customers who define their infrastructure as code with it.
Research in visual SLAM and 3D Gaussian splatting.
03 Landmarks
Every map needs landmarks. These are projects from my own repositories, each reconstructed as a small sculpture inside the loop, next to the keyframe it belongs to.
04 Publications
A map is only useful once someone else can build on it. These come out of my graduate research at SFU.
Turns existing SLAM datasets into adverse ones (fog, rain, camera and video-transport faults) at severities in real-world units, and searches for the severity at which each SLAM system fails.
Benchmarks SLAM the way it actually runs on edge hardware: capped compute and memory, competing workloads and camera frame drops, across nine classical, learning-based and Gaussian-splatting systems.
Estimates a graph's power-law exponent under edge differential privacy by privatizing only the sufficient statistics, in both centralized and local models.
05 Loop closure
Every trajectory drifts until it recognises somewhere it has been before. This one ends where it started, so this is the place to say hello.
Map saved: 0 keyframes, 0 points.
Built with Next.js and three.js: Gaussian splats, point clouds and a pose graph, all rendered in your browser. Plain-text CV · Source (github.com)