Valentin Jacquemin

Visualizing my year of running with one sparkline

Around 2010, I started running. Regularly. I was going through a very tough time – betrayal, abuse and loss of trust. That was my darkest period. It took me years to recover some self-esteem and my usual cheerfulness. Although I’ve never lost hope, I often felt powerless and stuck.

Running became an outlet that helped me greatly rebuild myself, to this day it helps me to balance my emotions, to process my life and expand my gratitude.

Thanks to running, I know that I may show a good dose of grit. I know that I can be disciplined enough to follow a training program to be fit to run a marathon at a given pace.

Thanks to running I’ve had unforgettable experiences. I’ve seen places, I’ve strengthened friendships. I’ve marveled at what our body is capable of achieving.

I’ll always be thankful that running is there.

Early came technology to the mix, I’ve used initially Runkeeper as a platform to track my runs. I think I purchased my first training programs there too. It started with half-marathon goals. Later came Strava, that’s where I post my runs until this date.

I used to have a subscription on Strava and that meant having access to a whole bunch of different tracking data. I would from time to time check my yearly progress in elevation, distance, etc.

But I dropped that subscription a couple of years ago as my running volume decreased drastically. New (happy) life priorities.

With no subscription comes less statistics, that’s part of the deal. But Strava provides an API you can use to fetch all your personal activities.

I’m using this API to generate a sparkline on my running blog. That one gives me the one statistic that I still like to look at: yearly distance.

Sparkline illustrating my running distance over 52 weeks. I amounts to 1006.9km.
The sparkline, how it looks like today on runboyrun.

To generate and publish it automatically I’m using sal a command-line tool I’ve created to first fetch the data needed.

I chose Go to build sal because I’ve been reading a couple of Go codebases over the past 2 years1, found nice what I read and thought this command line utility would be a perfect side project to get some practice. I liked especially how easy it’s been to generate cross-platform binaries. Knowing that I’m developing on a MacBook and that my goal was to run this little thing on my tiny home server running a Linux distro, that cross-compiling feature has been a decisive factor!

Every day, sal downloads all my Strava activities from the past year, 52 weeks and stores them in a JSON file. I get all the details I need in there, specifically distance, the type of the activity and its datetime.

That’s the foundation.

Then how do you transform this raw dataset into a sparkline? I’ll describe that second part in another post.


  1. I’ve been diving into CKAD in 2023, LFS261 and LFS241 in 2024 and Terraform in 2025 all of which are codebases written in Go ↩︎

Also on: Bluesky Mastodon