Act I — The Diamond Factory. My first real engineering job was inside a semiconductor plant in Chengdu, where artificial diamonds grow atom by atom inside MPCVD reactors. I wrote the C++/Qt software that watched them grow — real-time sensor streams of gas, heat, pressure, and microwave power — then built Random Forest models to predict whether a growth run would succeed before it finished. That's where I learned my favorite lesson: the best ML starts with deeply understanding the physical world it models.
Act II — The Language Turn. LLMs changed what "understanding" means. I built an Agentic RAG clinical assistant for postural assessment — 7 knowledge bases, domain routing, and a Critic agent that catches its own hallucinations and autonomously re-retrieves. My proudest bug fix: a cross-lingual embedding mismatch that had retrieval recall stuck at 0.00. One cached query-transformation layer later: 0.67, no index rebuild needed.
Act III — The Speed Chapter. Because old habits die hard, I went back to C++17 and built a low-latency order book & matching engine from scratch — price-time priority, O(1) cancels, object pools, cache-friendly everything. 300k messages/sec, p99 latency cut in half, zero memory leaks (Valgrind made me prove it).
ML & LLM PyTorch · scikit-learn · RAG · Agentic pipelines · LLM-as-judge · evaluation frameworks
Systems & C++ Modern C++17 · multithreading · lock-aware design · Qt/QML · epoll · gdb/Valgrind
MLOps & Infra Docker · FastAPI · AWS (EC2/S3/CloudWatch) · CI/CD · GitHub Actions · Redis · SQL
| Project | What it does | The number I'm proud of |
|---|---|---|
| 🩺 AI Postural Assessment Assistant | Agentic RAG over clinical literature with self-refining Critic loop | Retrieval recall 0.00 → 0.67; LLM judge calls 30+ → ≤5 per query |
| ⚡ Order Book & Matching Engine | C++17 limit order book with deterministic multithreaded replay | 300k msg/sec, p99 latency −50% |
| 💎 MPCVD Process Prediction | ML on time-series sensor data to predict diamond-growth outcomes | Replaced manual trial-and-error with feature-importance-driven tuning |
Measure before you believe. Every system I build ships with its own evaluation framework — recall@k, groundedness, p99 latency, or hallucination rate. If I can't measure it, I don't trust it yet.
From sensors to semantics. I've modeled the world at every level of abstraction: voltage curves → tabular features → embeddings → agent reasoning. The fun is in the translation layers.
Warm software, cold metrics. I care about software that helps people — a physiotherapy assistant that refuses to hallucinate, equipment software an engineer can trust at 3 a.m. The rigor is for the warmth.
When I'm not staring at loss curves or flame graphs, I'm probably exploring Toronto's coffee scene, reading about market microstructure, or wondering why my best debugging ideas arrive in the shower.
Currently: open to ML Engineering / Quant Dev / C++ roles in Canada 🇨🇦 — let's talk!
"The best ML starts with understanding the world it models."

