How the splits were captured and used
As a volunteer for the Team USA Cycling track sprint program at VELO Sports Center in Carson, brought in through a friend, Jerry Shi worked on the squad's timing data: splits from practice sessions and efforts. Coaches used the dashboards for two decisions: which riders to pick for upcoming sprint competitions, and how to adjust training.
This site recreates that work so it can be shown publicly. The original data belongs to the program and is not here. Every rider, time, power reading and meal total on this site is invented; the venue facts are public.
Capturing a split at 70 km/h
- Lines. A white line crosses the track in the middle of each straight and the middle of each turn, so every 250 m lap splits into four 62.5 m quarters.
- One camera. A camera on a pan head in the middle of the infield turns to follow the lead wheel, so one camera sees all four lines.
- Frames, not stopwatches. A crossing is the first frame where the front wheel is past the line. A split is the frame count between two lines divided by the frame rate. At 240 fps that is 4.2 ms, or about 8 cm at sprint speed.
- Tagged by computer vision. Activity this fast is hard to time by hand, and scrubbing video after practice is slow. Tagging the crossings automatically turned each effort into splits within seconds.
- Straight to the infield TV. Riders rest in the middle of the infield. The splits went to a TV there, so riders saw them right after the effort instead of after practice.
- Kept as data. Every tag (rider, line, frame) was stored, which is what the session and selection boards are built from. The Splits page shows that record, frame numbers included.
The 3D walkthrough on the Splits page was modelled in Blender from a photo of the VELO infield (250 m, 7 m wide, 45° Siberian pine, opened 2004). Track markings follow UCI conventions; the infield layout and exact line positions are approximate. Riders and staff are MakeHuman bodies (CC0) posed in Blender, the pedalling is solved with IK to the cranks, and the hall lighting is a Poly Haven HDRI (CC0).
What the board answers
- Who is fast right now. Recent form is the average of the last three session bests on the flying 200, not a single lucky ride.
- Who will repeat it. Spread across six weeks separates the rider who can do it on the day from the one who did it once.
- Who is heading the right way. Trend is the weekly slope of session bests, so a rider coming back from a setback can be seen climbing.
- Who fits which lap. Team sprint places go on lap-specific evidence: standing 250 for the starter, top speed for lap 2, the back half of a 500 for lap 3.
- What to train next. Here the rider page puts split progression, power and fuelling side by side, so a dip in times can be checked against load, a missed block or eating under target.
How the demo data is made
A seeded script (scripts/generate-data.mjs, seed 20261001) writes 12 weeks of three track days a week for eight fictional riders: flying 200s on Tuesdays, standing 500s with a 250 split and peak power on Thursdays, team sprint laps on Saturdays, and a daily food log against targets set from body mass.
Each rider has an underlying story so the board has something to decide: one improving steadily, one fast and very repeatable, one powerful starter who swings between sessions, one returning from a crash, one slowing while eating under target. Values sit in a plausible elite range, roughly 9.6 to 10.3 s for the flying 200. Running the script again gives the same numbers. A second seeded pass gives every effort a camera log: the frame on which the front wheel crossed each line at 240 fps. Every split and time on the site is computed from those frames.