Workout Tracking Solution

I love to exercise. It gives me an excellent chance to relax and preserve my overall goal of maximizing my physical strategic margin, or keeping maximum function as long as I can. (I want to be able to wrestle with my grandkids as long as I can.)

I also love data. I love to track everything and know that if I care about changing something I should probably track it. I am also becoming more aware of a tendency to focus on long term goals instead of achieving short-term success and moving on from there. For several years, I have recorded if I worked out our not and give myself a 1-5 score for the category fitness. (As I do for my wife, relationships in general, devotional living and stress.)

While I have enjoyed looking back at my monthly graphs and reports, there have been several trends I’ve noticed that have been very insightful for me. I also am motivated to meet my goals when I know I am accountable to myself and anyone (my grandkids again?) who are going to look at my data. However, one of the things I have never been able to crack is how to track my workouts. I thought about making a simple text field that I can search, but how could I see my progress over time. When I was primarily a runner, I used to make graphs showing my mileage and overall pace improvements, but how could I show improvement with the diversity of workouts that CrossFit is providing me.

When I had to list my goals, I went back to my values. In this case they are:

  • Don’t get hurt (learned this one from experience)
  • Frequency: workout every day in some way if possible (yes, diversify)
  • Diversity: don’t long-neglect any of the core principles: Strength, Stamina, Cardiovascular Endurance, Flexibility, Speed, Power, Agility, Accuracy, Balance and Coordination
  • Improvement: improve in all core principles

With this in mind. I would like to track workout’s at the most granular level, if I could do so quickly. So, in setting software requirements, I look at the questions I would want to answer. Some examples where (T) is a threshold (must do) and (O) is an objective (want to do):

  • (T) Have I worked out frequently this month? (=> calendar view over varying times)
  • (T) Am I improving? (=> need to show incremental progress; chart)
  • (T) What is my PR for overhead squat? (=> query that lists PRs for all workouts; make this public?)
  • (T) What is my last score for “Cindy”: (=> that would be on PR page, so named workouts and movements would have to be in a similar query)
  • (T) What are my last 10 scores for Cindy (=> time series query from previous)
  • (O) How many Watts did I burn this week? (=> need to track Work / Time)
  • (O) Is my ability to do more work faster improving? (=> need to index performance)

Next, I wanted to look at the data format when I just write down my exercises:

  • Run 3.65 miles in 20 minutes (=> need to record, distance, time and workout name)
  • Cindy: 28 rounds (=> need a database of crossfit workouts preloaded)
  • 5 rounds Cindy, 15 Squad Cleans (#145), 5 rounds Cindy in 13:48 (=> need to record reps of named workouts)
  • Bench 245 x 10 x 3 (=> need to record reps, weight, rounds | might not have time)
  • Bike 6 miles in 25 minutes (=> same requirements as running)
  • Climbing for 2 hours (V4+!) (=> need notes field; might not have distance or reps)

All together, I had enough to start on the database design, which I always do on paper and ended up looking like this:

ER Diagram

Basic Entity Relationship Diagram

In listing out the basic data, I clearly needed to track weight and distance, in addition to the time duration and quantity that the basic exercise was performed. In order to connect between a workout and a specific instance of an exercise I created a join table value named an exertion. The tricky part would be the set of characteristics required to derive power from each movement. For example, the bench press would move a distance of my arm down and up with a resistance equal to the weight on the bar. My agile strategy was to input the data and start recording what I could and then figure out how to deal with the data later when collected.

The results of my initial web application are below:

Workout Entry

Some features I did incorporate were the ability to create an exercise on the fly when inserting data. I wanted to make the data input quick and painless. I also made the four input fields very basic, and not tailored to the exercise in question. A future iteration on this would be to disable fields that are not relevant to a particular exercise. Through using the chronic gym and rails virtual attributes, I made the input general as well, so you could type in 6:41 for a mile run time or something like 6 min and 41 seconds or even 401 seconds. I haven’t incorporated it yet, but I also would like to input the distance in meters or miles and have either one work seamlessly. In any case, this format is going to work for now. I plan to collect data for a couple months, then play with adding the ability to track progress and some basic validation on the form elements. Please let me know if you have any comments or suggestions how I can make this better. This might already exist, but I haven’t found it, and I want to get this to work with my overall system and will probably stick to a custom solution, so I can own my data and adapt the system over time.

*Edit:* Check out this site, science behind sweat I probably can improve on this, but looks cool.

Work Life Balance for a Dad and Husband — who loves His Job

In a meeting last week, I had a moment of clarity that put a question directly in front of me that I’ve been dreading to answer: How much of my heart should I put into my work and at what cost to my family and other work interests?

You see, the meeting ended abruptly at 5pm because it was time for that particular office to “lock up”, meaning that they had boundaries and were used to going home to their families. I’m used to meetings at the end of the day being extra-long because there is almost a contest in the Pentagon to see who stays the latest, and therefore works the hardest and, we might assume, cares the most, is the smartest and has the overall highest worth to society. I stretch this a bit, but only slightly. Throughout my working life there has always been a tension to put in more hours, give the most of your heart and life to the system. This seems to be a concrete way to distinguish yourself as a top-tier worker.

Part of this is because the military is a large bureaucracy where everyone is compared to their peers at a local level and the system allows for abstract feedback. But working harder always demands some form of recognition. This is not all bad. I am convinced it is a good thing to want to do good work and devote oneself to making a difference, even if there are high personal costs. Looking some of my heros off the top of my head: Jesus, Dietrich Bonhoeffer, Martin Luther King, CS Lewis, Cicero and the Apostle Paul  — I don’t see a 9 to 5 life. All these individuals probably didn’t coach little league (or their equivalent). All had strange family lives and suffered terribly.

This is the start of the conundrum: how much do our heros mislead us in who we are supposed to be? I mean, the suffering of Paul and his desire to spread the Gospel were a singular focus — totally out of sync with my desire to optimize my “wellbeing” in several spheres: relational, physical, spiritual, financial and intellectual. Did Paul check the air in his tires, fund his 401(k), apply fertilizer in the spring, always remember to write thank you notes, and read challenging books, oh and did he remember that what interests his boss, should fascinate, and consume, him?

No, he lived for the Gospel. Which is what I should be doing. Now, before this devolves into a discussion of life focus and God’s will, I want to bring this back to the main point: How much of my heart goes into my work? I have two main thoughts on this.

First, we should serve our work and put our full heart into it. I don’t jog well. I kind putz around and get tired. However, I can run fast. When I really put my heart into something, I can hold around a 6/min mile pace for marathon distances and am willing to really take my effort into a pretty extreme place. The same goes for my work. I can perform, but I have to really focus and really push myself to do something hard. I feel I should be sprinting at work — giving my employer, who happens to be the US citizen the very best I can. In giving my heart to my occupation and seeking to make a difference, I leave the legacy to my family of hard work and societal contribution. In working hard, I serve my son in ways that working only 8 hours a day might never provide him.

However, I feel that I need to be grounded in the Gospel. My heart must be grounded in the Gospel. My day must start and end with devotions and prayer. My risk tolerance must be calibrated by eternal consequences and supported by my knowledge that my self worth is provided by the Gospel. My hunger, motivation and passion must be centered in the Gospel. My sole metric is the commandment of Christ: am I loving the Lord my God above all else and am I loving my neighbor as myself?

Perhaps there is a tension here, and this tension is where I feel called to be. What it means practically, is that I am here to serve: to serve my family, to serve my country and to serve my God. But! The Gospel tackles fear head on. The Gospel tells me to forget all that and to trade fear for love.

Thoughts greatly appreciated.