Fitness
Everything I log on Strava, plus the code I ship on GitHub, updated daily, and whether I'm ahead of or behind last year.
The last 12 months
Each line is a rolling 12-month total, against where it stood a year ago (on a ratio scale, so doubling and halving look the same size). Up means I'm doing more than I was. Code is my GitHub contributions, mostly commits.
- Running
- 871 km
- ▼ 12% on the 12 months before
- Riding
- 1,108 km
- ▼ 27% on the 12 months before
- Weights
- 55 h
- ▼ 47% on the 12 months before
- Code
- 7,048contributions
- ▲ 588% on the 12 months before
Code and training
7,048 GitHub contributions and 172 hours of training over the past year, week by week.
There's no clear link between how much I train and how much code I ship. (correlation −0.13 over two years of weeks)
GitHub contributions (up)Hours of running, riding and weights (down)
The last 12 months
Each line is a rolling 12-month total, against where it stood a year ago (on a ratio scale, so doubling and halving look the same size). Up means I'm doing more than I was.
- Running
- 871 km
- ▼ 12% on the 12 months before
- Riding
- 1,108 km
- ▼ 27% on the 12 months before
- Weights
- 55 h
- ▼ 47% on the 12 months before
- 2026 distance
- 775 km
- 116 runs
- 2026 climb
- 4,438 m
- 71h 14m moving
- Longest run
- 53.0 km
- 10 Jul 2021
- All time
- 5,097 km
- 724 runs since 2017
This year against last
By 13 November last year I'd run 910 km. This year: 775 km, 135 km behind (−15%).
At this pace 2026 ends around 892 km, short of last year's 1,006 km.
To beat it I need to lift my weekly km to 34 km for the rest of the year, up from 17 km a week so far.
20262025at this pace
Month by month
20252026needed to beat 2025
The past year
878 km over 124 days. Each square is a day, darker for longer runs.
Less More
Records
My personal bests since 2017. Paces are the average over a whole run of at least that distance.
- Longest run
- 53.0 km
- 7h 31m · 10 Jul 2021
- Best pace, 5 km or more
- 3:48/km
- 5.0 km in 19m · 30 Oct 2020
- Best pace, 10 km or more
- 4:13/km
- 21.4 km in 1h 30m · 8 Nov 2026
- Best pace, half marathon or more
- 4:13/km
- 21.4 km in 1h 30m · 8 Nov 2026
- Best pace, marathon or more
- 8:31/km
- 53.0 km in 7h 31m · 10 Jul 2021
- Most climb
- 1,720 m
- 53.0 km · 10 Jul 2021
- Biggest week
- 61.1 km
- 3 runs · w/c 5 Jul 2021
- Biggest month
- 183 km
- 16 runs · January 2023
- Biggest year
- 1,006 km
- 156 runs in 2025
- Longest streak
- 6 days
- in a row, from 28 May 2025
Races
- 8 Nov 202621.4 km1h 30m · 4:13/km62 m climb
- 23 Mar 202426.5 km3h 09m · 7:08/km529 m climb
- 10 Jun 202316.8 km2h 41m · 9:36/km1,392 m climb
- 25 Mar 202325.6 km2h 29m · 5:48/km327 m climb
- 2 Oct 202221.8 km1h 42m · 4:42/km104 m climb
- 10 Jul 202153.0 km7h 31m · 8:31/km1,720 m climb
By year
RunsDistanceClimbLongest
Each line is a share of its own best year.
| Year | Runs | Distance | Climb | Longest |
|---|---|---|---|---|
| 2026 | 116 | 775 km | 4,438 m | 21.5 km |
| 2025 | Best year: 156 | Best year: 1,006 km | 10,499 m | 21.3 km |
| 2024 | 70 | 488 km | 10,610 m | 26.5 km |
| 2023 | 94 | 668 km | 11,449 m | 30.0 km |
| 2022 | 69 | 471 km | 6,804 m | 28.1 km |
| 2021 | 88 | 739 km | 10,777 m | Best year: 53.0 km |
| 2020 | 110 | 851 km | Best year: 12,339 m | 30.0 km |
| 2019 | 10 | 47.5 km | 772 m | 8.7 km |
| 2018 | 2 | 9.0 km | 189 m | 4.7 km |
| 2017 | 9 | 44.2 km | 676 m | 10.0 km |
Best year
- 2026 distance
- 921 km
- 42 rides
- 2026 climb
- 6,280 m
- 32h 51m moving
- Longest ride
- 43.0 km
- 29 Aug 2025
- All time
- 2,649 km
- 135 rides since 2024
This year against last
By 13 November last year I'd ridden 1,523 km. This year: 922 km, 601 km behind (−39%).
At this pace 2026 ends around 1,061 km, short of last year's 1,709 km.
To beat it I need to lift my weekly km to 115 km for the rest of the year, up from 20 km a week so far.
20262025at this pace
Month by month
20252026needed to beat 2025
The past year
1,137 km over 53 days. Each square is a day, darker for longer rides.
Less More
Records
My personal bests since 2024. Paces are the average over a whole ride of at least that distance.
- Longest ride
- 43.0 km
- 1h 30m · 29 Aug 2025
- Fastest ride, 20 km or more
- 36.9 km/h
- 20.1 km in 33m · 27 May 2025
- Most climb
- 587 m
- 28.3 km · 25 Oct 2025
- Biggest week
- 93.4 km
- 5 rides · w/c 9 Jun 2025
- Biggest month
- 300 km
- 17 rides · June 2025
- Biggest year
- 1,709 km
- 91 rides in 2025
- Longest streak
- 5 days
- in a row, from 24 May 2025
By year
RidesDistanceClimbLongest
Each line is a share of its own best year.
| Year | Rides | Distance | Climb | Longest |
|---|---|---|---|---|
| 2026 | 42 | 921 km | 6,280 m | 35.9 km |
| 2025 | Best year: 91 | Best year: 1,709 km | Best year: 13,220 m | Best year: 43.0 km |
| 2024 | 2 | 18.3 km | 112 m | 14.4 km |
Best year
- 2026 sessions
- 62
- 46 hours
- Typical session
- 44m
- average in 2026
- Longest session
- 1h 19m
- 17 Jun 2025
- All time
- 289
- sessions since 2021
This year against last
By 13 November last year I'd lifted for 100 h. This year: 46 h, 55 h behind (−54%).
At this pace 2026 ends around 53 h, short of last year's 109 h.
To beat it I need to lift my weekly hours to 9.3 h for the rest of the year, up from 1.0 h a week so far.
20262025at this pace
Month by month
20252026needed to beat 2025
The past year
77 sessions, 56 hours. Each square is a day, darker for longer sessions.
Less More
Records
My personal bests since 2021.
- Longest session
- 1h 19m
- 17 Jun 2025
- Biggest week
- 5h 30m
- 7 sessions · w/c 23 Jun 2025
- Biggest month
- 18h 36m
- 24 sessions · July 2025
- Biggest year
- 109h 12m
- 169 sessions in 2025
- Longest streak
- 45 weeks
- with a session every week, from 3 Feb 2025
By year
SessionsTimeLongest
Each line is a share of its own best year.
| Year | Sessions | Time | Longest |
|---|---|---|---|
| 2026 | 62 | 46 h | 1h 04m |
| 2025 | Best year: 169 | Best year: 109 h | Best year: 1h 19m |
| 2024 | 29 | 11 h | 46m |
| 2021 | 29 | 13 h | 55m |
Best year
Share this page

The card is what people see on X.
Powered by Strava. Only dates, distances, times and climb are shown here: no routes or places.

