Everything published so far
Numbered in the order it was written. The series builds, so the early ones are the place to start.
- What An AI Cycling Coach Actually Does (And What It Only Claims To Do) 1,823 words Separates the three distinct things vendors call 'AI' — rule-based plan adjustment, statistical modelling, and genuine LLM reasoning — and argues only the middle one currently changes your training outcomes.
- Getting Your Ride Data Out: FIT, TCX And GPX Without Losing Fidelity 1,729 words Argues that most AI analysis fails at step zero because riders feed tools lossy GPX exports, and shows which export route preserves per-second power, cadence and temperature channels.
- What An LLM Actually Sees When You Paste A Ride File 1,680 words Demonstrates that a 3-hour ride is ~11,000 rows the model will silently truncate or sample, and that pre-aggregating into interval summaries beats dumping raw data every time.
- FTP, Critical Power And eFTP: Three Numbers, Three Different Meanings 1,849 words Makes the case that these are not interchangeable estimates of one truth but outputs of different models with different assumptions, and picking the wrong one miscalibrates every zone below it.
- How Accurate Is Automatic FTP Detection? Testing Five Platforms Against A Lab Number 1,543 words Benchmarks auto-detected FTP from Garmin, Xert, intervals.icu, TrainerRoad and Strava against a measured MLSS value, showing the spread is wide enough to matter for threshold work.
- HRV For Cyclists: What It Measures And What It Cannot 1,763 words Grounds HRV in parasympathetic reactivation rather than 'recovery', and argues a single daily number is only interpretable as a trend against your own rolling baseline.
- AI Route Planners Tested On UK Lanes: Where They Fall Apart 1,543 words Runs the main AI routing tools over Peak District and Suffolk test areas to show that OSM surface and access tagging, not the routing model, is the binding constraint in the UK.
- Your First Strava API Project: Pulling A Year Of Rides Into A DataFrame 1,708 words A working end-to-end script with OAuth refresh handling, arguing that owning a local copy of your activity history is the prerequisite for every other tool in this series.
- A Prompt Library For Single-Ride Debriefs That Beats 'Analyse This Ride' 2,013 words Shows that giving the model your intended session, your target zones and your RPE turns vague praise into an actual execution verdict, with five reusable prompt templates.
- TrainerRoad Adaptive Training: Six Weeks Of Watching It Change My Plan 1,780 words Logs every plan adjustment Adaptive Training made and argues its progression logic is conservative in a way that suits time-crunched riders but underloads high-volume ones.
- Ramp Test, 20-Minute Test Or Modelled FTP: Which Should You Actually Run? 1,860 words Argues protocol choice should follow your phenotype — high-W' riders are systematically flattered by ramp tests — rather than whichever your app defaults to.
- A Morning HRV Protocol That Produces Signal Instead Of Noise 1,766 words Makes the case that measurement conditions dominate day-to-day HRV variance, and specifies a repeatable protocol plus the minimum baseline length before you act on anything.
- Gravel Route Planning In The UK: How Bad Is The Surface Data? 1,702 words Audits AI gravel routing against ridden ground truth to show that unsurveyed bridleways are the failure mode, and offers a pre-ride verification checklist.
- intervals.icu API Versus The Strava API: Which One Should You Build On? 1,803 words Compares the two on rate limits, stream availability and wellness data, arguing intervals.icu is the better backend for analysis tools while Strava remains the better ingest layer.
- Why LLMs Invent Numbers From Your Ride Files — And How To Catch It 1,987 words Shows reproducible cases where a model reports a normalised power it never computed, and argues you must force tool-based calculation or verify against a known value every time.
- Join Cycling's Adaptive Plans: What Happens When You Miss A Session 1,737 words Tests Join's rescheduling behaviour under deliberate disruption, arguing its calendar-first model handles real life better than block-based plans but blurs periodisation intent.
- Fitting Critical Power And W' From Your Own Ride Files 1,694 words Walks through fitting a 2-parameter CP model to your own maximal efforts and argues most riders' W' estimates are corrupted by never having tested the short end properly.
- Garmin Training Readiness And Body Battery: An Honest Audit 1,819 words Compares Garmin's readiness score against next-day interval execution over a training block, arguing it tracks sleep debt well and training stress poorly.
- Pacing A Hilly Time Trial With A Physics Model Instead Of A Guess 2,026 words Builds the power-versus-gradient case that variable pacing beats constant power on rolling courses, and quantifies the seconds gained on a real UK 25.
- Parsing FIT Files Locally With Python: Streams, Records And The Gotchas 2,129 words Argues local parsing removes your dependence on any platform's derived metrics, with working fitdecode code for developer fields, paused time and dropout handling.
- Aerobic Decoupling: The One Metric Worth Asking An AI To Compute Every Endurance Ride 1,834 words Argues Pw:HR drift is the highest-signal, lowest-cost readout of aerobic durability, and shows how to get an LLM to compute it correctly rather than eyeball it.
- Xert's Training Advisor: Strong Model, Demanding Inputs 1,376 words Argues Xert's MPA framework is the most sophisticated model on the market but degrades badly if you don't regularly feed it near-maximal efforts.
- CTL, ATL And TSB: How Much Should You Trust The Performance Manager Chart? 1,568 words Argues the fixed 42/7-day time constants are a 1970s convenience, not a physiological finding, and shows what happens to your chart when you fit them to yourself.
- Whoop, Oura Or A Chest Strap: Which HRV Source Survives Scrutiny? 1,555 words Compares simultaneous overnight and morning measurements, arguing the device matters less than sampling window consistency — but that optical wrist data is noisiest for lean cyclists.
- Wind-Aware Pacing: Building A Race Plan Around The Forecast 2,075 words Shows how yaw-angle and headwind segments change optimal power distribution, and argues AI tools that ignore forecast wind give you a plan for a course that doesn't exist.
- Build A Personal Training Dashboard With Streamlit In An Evening 1,693 words Argues a 200-line local dashboard answers your three recurring questions better than any subscription, with the full code for load, power curve and decoupling views.
- Reviewing A Whole Season With A Long-Context Model 1,740 words Demonstrates a summarise-then-reason pipeline over 300 rides, arguing the useful output is pattern detection across blocks, not commentary on individual sessions.