CoffeePacer
All work
LiveSince July 2026

CodeRunTravel

This site: eight years of running that updates itself every morning

Open

The problem

Running apps are good at today's run and bad at showing how you changed over years. On top of that, the history was split between Strava and an Apple Watch.

The calls

  • One log from two. The full Strava export and a 1.6 GB Apple Health export are streamed, never loaded whole, into a single dataset. When the same run appears in both, start time and distance weed out the duplicate.
  • Fixing time itself. The Strava export turned out to stamp dates in UTC, not local time. Shifting them to Bangkok time finally made the time-of-day analysis right; it had been seven hours off.
  • Daily updates, no server. Every morning a GitHub Actions job pulls new runs from the Strava API, commits them, and the site rebuilds. No database, no API call per visit.
  • Hand-drawn charts. Plain SVG, no chart library, so labels stay sharp on a narrow screen and every value can be read by mouse, touch or keyboard.
  • A map drawn by running. The travel map is not a hand-kept list: each GPS track is tested against country borders to decide where it was run.

Where it stands

It is the site you are reading. Runs going back to 2018 update themselves every morning, in Korean and English.