Multi-point articulation inference models for robot RL, under Dr. Siqi Zhou.
Full stack software, computer vision, & robotics
// IDENT
Computing + ML (Applied Math) @UWaterloo, '30. Right now at the SFU Intelligent Robotics Lab, on multi-point articulation inference for robot RL. Vancouver, then Waterloo.
// THIS WEBSITE
Based off the paper Stable fluids, Jos Stam 1999. Drag the background. Type solid on and it becomes a solid the flow has to go around.
- a gust across the tank
- a second body — drag it into the wake
- things that live in the slow water behind it
- the rest
Waterloo / Vancouver · site source ↗
// WORK
Built digital-twin / backend tools and platform for autonomous vending machines, plus the adapter for mapping simulated operations onto live machine APIs. Built things accounting for stuff like network partitions, to prevent a double dispense. 1,000+ replayable runs against 20+ injected API, hardware and operator failure modes, and offline-safe state for the Raspberry Pi deployments.
Built software for automating data entry, including a finetuned signature detection algo: OpenCV contour heuristics + a CPU-tuned YOLOv8 with a hard-negative mining loop, to tell a real signature from a handwritten note on the same form. 82% → 94% in four training runs. Took ~4 hrs/day of manual entry off the floor and caught 600 historical errors on the way through.
Quote-drafting tool for a plastics supplier — FastAPI, pandas, SQLite, ReportLab — generating customer-ready PDFs off their existing Excel pricing sheets.
// BUILT
ASCII fluid sim (this website) based on Jos Stam’s 1999 stable-fluids method: Gauss-Seidel pressure solve, semi-Lagrangian advection, vorticity confinement to put back the curls diffusion eats. Obstacles, like this panel, are real Neumann boundaries. Semi-Lagrangian scheme took framerate up ~200% over my first naive pass.
Landmark feedback for drawings as well as photographs. Does a bit better than neural detectors for rotated heads, pencil sketches, uses CPD registration and solvePnP geometry. On a 50-case benchmark: 98.9% / 100% precision-recall, against GPT-5.5's 63.5% / 70.5%.
A Roomba that follows you around and sounds an alarm when it sees a phone. On-device YOLOv8 for frame-rate phone/face tracking, one cloud Rekognition call to work out who it's looking at. The controller is a finite state machine doing proportional visual servoing off the bounding box.
Built with friends at CMU Nexhacks over a weekend (Honorable mention out of ~500 submissions)
// STACK
- daily
- Python · C/C++ · TypeScript / JS · SQL
- also
- C# · Java
- ml + cv
- PyTorch · TensorFlow · OpenCV · MediaPipe · YOLO · scikit-learn
- services
- FastAPI · Node · Next.js / React · PostgreSQL
- infra
- Docker · AWS (S3 / Lambda / SQS) · Linux
- elsewhere
- ROS2 · Unity · pandas
// NON-WORK
Rock climbing is pretty cool, i also like cooking and want to get better at baking. i've also been trying to read more. hiking is pretty fun too - in vancouver i did grouse mountain and cypress a few times, want to try to hike more in the future (not a lot of mountains in waterloo)