High school student · Sim racer

Eon

I race in sims and I want to know exactly why I'm slow. So I build telemetry tools with coding agents, and ship them with tests, CI and Windows releases.

Two open-source projects, one idea: pull live data out of the game, save every lap, put your phone next to the wheel as a second screen, then compare laps corner by corner until the problem is obvious.

km/hΔ s T1T2T3T4T5T6T7 brakes 40 m early −9 km/h mid-corner +1.10 s
reference lap this lap, and its running time loss Sketch of what the lap comparison shows, not a real session.

How it works

Laps are aligned by track distance, not time, so two laps line up corner for corner. Corners are found automatically from dips in the speed trace. Everything runs on your own PC; the phone just opens a page on the local network.

Projects

Lap

v0.1.1 · ACC · Le Mans Ultimate

Telemetry for serious sims. It reads Assetto Corsa Competizione and Le Mans Ultimate straight from shared memory, records every lap, and turns two laps into five synced charts plus a corner-by-corner table.

Lap comparison
Delta, speed, throttle/brake, gear and steering, zoomable. Entry, apex and exit speed and braking point for every corner, plus a theoretical best lap.
Live phone dash
Big live delta, gear, speed and predicted lap time. Reconnects on its own if Wi-Fi drops.
Setup library
Reads ACC and LMU setup folders read-only. Converts ACC's raw JSON into the values the game shows and diffs two setups.
Share a lap
Export any lap as a small file, send it to a friend, and they overlay it against their own. MoTeC exports import too.

Status: ACC and LMU adapters done, waiting on more real-game validation. Assetto Corsa and iRacing are next.

  • Python
  • ctypes
  • FastAPI
  • SQLite
  • uPlot
  • GitHub Actions
github.com/…/Lap ↗

Forza

FM7 · FM 2023 · FH4 / FH5 / FH6

Practice and tuning assistant for Forza Motorsport and Forza Horizon. It listens to the game's Data Out UDP stream, and goes further than lap comparison: it tells you what is wrong with the car.

Tuning diagnosis
Understeer, oversteer, bottoming out, uneven tyre temps, wheelspin on exit, brake lockup. Each finding shows the data it is based on.
Corner analysis
Overlays two laps by distance, splits the lap into corners, and says where you lost time and whether it was braking, apex or exit.
Car page
Measured power curve, ratio per gear, best shift points, and a prediction of what a final-drive change will do.
Phone dash + QR
Tyre temps, suspension travel, slip, G-ball and live delta. A QR page tells you what to type into the game's settings.

Data you can trust: packet layouts are cross-checked against Forza's official Data Out docs, with byte-level tests that don't reuse the decoder's own field table. 291 tests pass.

  • Python
  • UDP
  • NumPy
  • FastAPI
  • SQLite
github.com/…/Forza ↗

Building with Codex

I write down what "done" means, let the agent build, then read the diff and make it prove each fix with a test. Both tools can record raw game data and replay it, so the whole loop runs without launching a game: change, replay, check, commit.

The part I didn't expect: after merge, Codex's automated review kept finding real bugs. Every fix in Lap v0.1.1 came from it, each with a regression test. A few of them:

That's the habit I'd like to help other students pick up: not "it wrote some code," but "it shipped, it's tested, and someone else can run it."

Now

Contact