Building a dashboard to track workouts

Combining my work and my work outs.

In Part I, I designed a data structure to track my workouts. I thought I’d keep playing with pandas and work on complicated visualizations.

Instead, I just used the blog entry as a workout guide. Turns out it’s hard to query python on a smartphone when you’re sweaty and huffing in a gym. I also couldn’t load the workout in an easy-to-read way when

Design Specifications

  • The dashboard must be easy to read, defined here as “viewable on a smartphone screen with minimal scrolling”
  • The dashboard should help me decide what exercises to do by providing relevant info, for example:
    • The exercise, sets, and reps — so I don’t mix up my 5 sets of 8 deadlifts with my 3 sets of 20 elevated bodyweight squats
    • The maximum weight loading — for progressive overload, but so I can deload if I’ve gone a while without lifting
    • Muscle group, to avoid killing legs before a hike, say
    • When I last performed an exercise — because I know I’ve missed a few

Using my previous Google Sheets, I created a simple dashboard with some Excel techniques I learned from GA:

Yesterday was Arms day

Useful features:

  • Choice architecture :: Instead of planning workouts, I’ll just do whatever the top 6 or 7 exercises are. I can even do supersets by alternating arms & legs exercises.
  • days_since and last_done :: This highlights which exercise I’ve not done in a while; in fact, the dashboard is sorted by days_since.
    • I’m also pretty sure I performed dumbbell_rows last week; I just didn’t track it. This frustration will hopefully incentivize me to do better tracking.
  • Type is also colour-coded for easy reference. I may hide this column later once I get used to the colours.
  • Exercise, sets, reps, reps_max :: I can look at the workouts and what to do at-a-glance

Formulas & Techniques

I used these Google Sheets/Excel formulas:

  • unique — I used this to identify the different exercises
  • maxifs — This is interesting. I used this to lookup the maximum reps/sets/weights for each exercise, based on each exercise.

    For now, it’s more useful for me to figure out my maximums and progressively increase weight while holding sets/reps constant. In the future I may look into adjusting the weights x reps x sets formula for higher weight at lower reps.
  • vlookup — The holy grail of Excel formulas, I used this to vlookup the most recent session in the exercises table and match the date in the sessions table.
    • I also used index(match) as a left-handed vlookup, to find the muscle_group for exercises
I highly recommend dbdiagram.io

I also used these custom Excel features:

  • Create Filter — this let me sort my dashboard by days_since. Actually, it was really helpful for me to clean up my spreadsheet.
    • I also used Filter Views to remove warmups from the dashboard, to make it easier to read and refer to.
  • Conditional Formatting > Custom Formula > =$B2="arms" — This I used to highlight rows by muscle_group.

Ideas For Future Projects

I described a previous idea, which was:

My idea is to write a function in Python that spits out the next set of exercises in the gym

Part I: Designing a data structure to track workouts

The dashboard more or less does this for now. More practical ideas include:

  • Visualization — Plot of weights/sets/reps max over time, including frequency of sessions and strength increase over time
  • Summary stats — Total weights lifted, number of rows performed etc. Thinking that I have lifted a literal ton of weights helps to excite me about how much weight I can lift, and how much more I can do.
  • Input Form — I should be able to create a simple Google Form to log exercises into the sheet directly
  • Automated Workout Planner — Right now the dashboard just tracks the latest workout (descriptive); In the future, I should be able to use conditional logic to plan a workout with 7 exercises (say, 1 compound exercise plus a mix of legs and arms), to determine whether to increase weight (were all reps completed? did I reduce weight or reps in the last set) and whether to deload if it’s been > 7 days since the last exercise

Read more in the [Data x Workouts] series:

  1. Designing a data structure to track workouts
  2. Building a dashboard to track workouts (you are here)