John's YEAR IN MOTION
Loading...
John Covered
--
kilometres
Loading...
Time on John's Feet
--
hours running
Loading...
PBs this year
--
Total Heartbeats
--
Avg BPM
--
Peak Avg BPM
--
Lowest Avg BPM
Loading heart stats...
Based on 5K best effort pace
Loading monthly data...
Loading hourly data...
The conditions John ran in most often
Every run, every day
That's like -- worth of hang time!
* Calculating based on your running conditions...
Total Mechanical Energy
--
MegaJoules
THAT'S A WRAP! JOHN IS...
Analyzing your runs...
Your running persona is being calculated based on your year of data...
Every run is tracked with GPS, heart rate, pace, and elevation data via my Garmin watch synced to Strava.
Spotify listening history is scrobbled to Last.fm, capturing every track played during runs.
Historical weather conditions (temperature, humidity) are fetched for each run's location and time.
A scheduled pipeline extracts data from all APIs, matches music to runs by timestamp, and calculates aggregated statistics.
A daily Azure Function sends run titles and year stats to ChatGPT to generate fun awards and a unique running persona.
A scheduled Azure Function queries the data warehouse daily and exports the wrapped stats as JSON to Blob Storage.
This page fetches the JSON from Blob Storage and dynamically populates all 22 slides with my year in running.