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:
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
andlast_done
:: This highlights which exercise I’ve not done in a while; in fact, the dashboard is sorted bydays_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.
- I’m also pretty sure I performed
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 exercisesmaxifs
— 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 recentsession
in the exercises table and match thedate
in the sessions table.- I also used
index(match)
as a left-handedvlookup
, to find themuscle_group
for exercises
- I also used
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 bymuscle_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 comment
Comments are closed.