Hao Yan
Currently
Founding Engineer @
TraceRoot.AI (
YC S25) — building infrastructure that lets AI agents debug and fix themselvesSep 2026 – NowSan Francisco, CA
prev. Software Engineer Intern
May – Aug 2026
Co-Founder @
ML³ Labs — when late means wrongNov 2025 – Now
Embedded Systems & Controls Software Lead @
McMaster Exoskeleton — 500 Hz IMU acquisition and a distributed CAN network for a powered exoskeletonSep 2026 – NowHamilton, ON
prev. Embedded Systems Software Engineer
Oct 2025 – Sep 2026
AI/ML @
McMaster EcoCAR — model-based controls, diagnostics and perception for an autonomous EVNov 2025 – Now
Software Engineering @
McMaster University2025 – 2029
Previously
Autonomous & Mechanical Engineer @
VEX Robotics Team 3388N — 6th of 200 teams at Canada's largest VEX tournament; built the full autonomous nav stack in C/C++2022 – 2025Calgary, AB
Robotics Coach @
Western MechatronicsDiploma Programme @
International Baccalaureate2022 – 2025
Projects
- LumenPreview · Drew on
A preview of Lumen's Drew on line, still being built. For one reply, Claude Code had 41 items in its context, 22,310 tokens in all, drawn as a map of tiles as wide as their tokens: its instructions on how to work, its tools, CLAUDE.md, your 4 earlier messages and this one, and its own work, the files it read, the commands it ran and its replies. You asked: why does the retry test time out? backoff should be in seconds. It opened src/retry.ts and ran pnpm test, then replied: As you said, backoff should be in seconds. backoff() returns milliseconds, so each retry waits 1000× too long. Under the reply, Lumen shows what it drew on: Opened retry.ts, Ran pnpm test, Quotes your message. It drew on 3 items and didn't draw on the other 38, which the map hatches.
Agents answer from context you never get to see. Lumen shows it, reply by reply: the files, commands and messages each answer drew on, and what got cut when the context ran out. So when an agent goes wrong, you can see why. It works with local models, your own API keys, Claude Code and Codex.
GitHub: dark-sorceror/Lumen - GoosetrieverGitHub: dark-sorceror/Goosetriever
- NeurineseGitHub: dark-sorceror/Neurinese
On the shelf
Operating Systems: Three Easy Pieces
TCP/IP Illustrated, Vol. 1
Designing Data-Intensive Applications
A Tour of C++
“How you do anything is how you do everything.”