Title Run
A fighter-builder roguelike with a deterministic seeded simulation and a replay system, so any run can be reproduced exactly.
Four stops. Each one is a problem that looked simple and was not.
GitHub Identity org, Summer 2026
Interned on the Enterprise Primitives team, working on the systems that sync and deprovision enterprise identity.
Enterprise Teams was capped at 5,000 members. Raising it to 15,000 meant a single team could span up to 15 million effective user-organization relationships, and an earlier scale test had to be killswitched before it completed.
Two proposed optimizations would have moved all 3.5M reads onto replicas and off the primary.
I opened both, then closed both myself after correctness analysis showed each would silently corrupt data under replication lag.
Gave up the performance win to avoid a failure mode that would not have raised an error. Shipped instrumentation to measure the real failure rate instead of guessing.
The sync fix removes a silent data-loss path blocking the member-limit increase. The telemetry work produced a remediation decision for every primary-touching action on the path.
Ruby, Go, TypeScript, MySQL, Kafka, Datadog
Private employer work. No public repository.
Personal project
A leakage-safe pre-fight ML pipeline whose output feeds a betting decision layer, so calibration matters more than accuracy.
Most public fight-prediction models leak. They train on statistics generated during the fight they are predicting, which makes the reported accuracy meaningless.
Accuracy alone is the wrong metric when the output is used to size a bet.
Evaluated on log loss and Brier score alongside accuracy, then converted calibrated probabilities and American odds into expected value and quarter-Kelly stakes.
A better-calibrated model can score lower on raw accuracy. That is the correct trade when a miscalibrated probability produces the wrong stake size.
Roughly 62% accuracy on a held-out chronological test set, with no leakage path and calibration measured explicitly.
Python, scikit-learn, pandas
Live: not deployed · Source
Personal project
Ten algorithm visualizations driven by one shared engine, with an AI explainer that knows which step you are looking at.
Algorithm visualizers are usually ten hand-built animations that share nothing, so every new topic costs as much as the first.
Claiming an operation is O(1) is easy. Demonstrating it is not.
Instrumented a from-scratch linked list to count pointer writes per operation, then asserted equal cost at size 8 and size 800. Pinned all 16 frames of a Dijkstra trace as a golden regression.
More test infrastructure than a visualizer strictly needs, in exchange for complexity claims that are verified rather than asserted.
Ten topics ship on one engine. The explainer returns a typed error rather than a fabricated answer when it cannot answer.
TypeScript, Next.js, Vitest, Playwright
Personal project
Upload one golf swing, get the two or three flaws that matter, each explained by geometry rather than a model's opinion.
Pose estimation gives you landmarks in pixel space. Camera distance, zoom, and phone orientation all change those numbers without anything about the swing changing.
Measuring hip movement directly would flag any swing filmed with a moving camera.
Measured hip displacement relative to the ankles, so a camera pan moves both and cancels out.
A more complex rule in exchange for not firing on footage where nothing is wrong.
A stateless service that discards each video after analysis and fails with explicit contracts rather than hanging.
Python, FastAPI, MediaPipe, TypeScript, Next.js
A fighter-builder roguelike with a deterministic seeded simulation and a replay system, so any run can be reproduced exactly.