Feature: The Life Tracker

The Life Tracker


Three  over five years ago I was fresh out of college, living on my own, and, for the first time, truly responsible for my own life. It was great, and greatly intimidating. All the sudden I realized I was an adult. I had a job. I had my own place. I didn't have any more schooling to get to. So I started to settle down and look at the long-term. I already knew who I was going to marry, I had a wedding ring for her and a trip to Thailand planned out to make that happen. What I didn't have planned out, though, was the rest of life. I wasn't eating well. I wasn't on top of my exercise or spending habits. Worst of all, I felt as though I had no idea how to keep track of it all. I was filming one second every day to try to put together a "Second-A-Day" video, but that didn't really track the hard data. The gozintas and the gozoutas of life. To me, it was clear that some sort of orchestrated system to help keep track of things was necessary - and necessity is the mother of invention.

Using a suggestion Melissa (my soon-to-be fiance) gave me, I took a look at Google Forms, an online survey creation & distribution platform. Creating Google Forms was easy; but more importantly, using them to input data into a spreadsheet is even easier. I played around with form creation & back end spreadsheets that the data got put into, creating various mockups of grand overarching ideas for tracking systems. The problem was data display and formatting. The spreadsheets created by the Google Forms were barebones and ugly. Moving data between sheets manually is just as hard as entering data in manually, so why use forms in the first place? Some Googling led me to the discovery of Google Apps Scripts. Right before I left for Thailand to go propose, I was able to write a script to move move data between sheets automatically. Interestingly, the code to do so was actually my second of the day for April 3rd, 2013.

I few to Thailand, got engaged, and flew home. My fiance wasn't coming back from her study abroad anytime soon, so I had to figure out a way to fill out that time. On April 22nd, 2013, exactly one week after I got home, I had my first entry into what has become the second longest-running project of my life (after the aforementioned second-a-day video project). Ever since that day over one-thousand days ago, I've been keeping track of my diet, exercise, goals, and money in the Life Tracker.

What it is

"The Life Tracker"  (you'd think I'd come up with a better name after 1000 days, but that is apparently giving me too much credit) is a Google Forms-based system for keeping track of the things that a productive person would find important. It is a quantified-self dashboard, a journal, and one of my favorite things I've ever made. I use the Life Tracker every day to retain of interesting points of data for analysis and future reference. Examples of the kinds of things you could find in my spreadsheet:
  • A journal of major daily activities
  • Caloric intake, including a breakdown of fats, carbs, protein
  • Exercise log
  • Money spent
Those were my initial tracking points. Over the years I've been using it, I've pulled in several new ones sleep, location, weight, and others.

How its used

I use several apps for their respective purpose:
LifeSum MyFitnessPal for food
Google Fit for exercise & heart rate
Sleep as Android for sleep
Withings Health Mate + smart scale for weight & heart rate

Each night I fill out this form:
Displaying Screenshot (Jan 17, 20...
This whole paragraph is a link to a duplicate of the form I fill out. It's not the live form, so you can go nuts checking it out or filling it out with whatever data you want. No skin off my back.

... and at the end of the day, I get a new row in a spreadsheet that looks like this (but all one one line):

That's all the on-going work that's required. The 1285* lines of code do the rest of the work.

*as of this writing. Code not minified. Comments included. DISCLAIMERFOURNOTFOUND.

Worth noting - I have built in intelligent "data incompleteness" handling. If I miss a day of food, it doesn't take that day's worth of food into account. It will not affect the recorded averages (although this means the averages do NOT take into account a hypothetical day in which I eat 20,000 calories and don't track them).

Also worth noting - that graphic is about 6 months old. There are a couple of new columns in there nowadays. 1) A column that contains links that take me to whatever Google Photos happened on that date. 2) A column that contains the total amount of time my phone's screen was on for each day.

Interesting results

When I first started this project, I had absolutely no idea what my baseline numbers would be. Did I eat a 2000 calorie/day diet like the people who make nutrition labels assume I do? Do I eat twice that? I'm a big-ish guy, you know. These were the kinds of questions I sought to answer. However, those types of questions aren't the reason I still use the Life Tracker now, over 1000 days after I tracked my first day. The on-going value I get from it comes in the form of journaling. I have used the Life Tracker to answer questions like "when was it that we went to Topeka and did that thing?" on dozens of occasions. Also, the macro view of my life is interesting. I am no longer as concerned about the micro, day-to-day view, but the "Yearly" summaries sheet is what I'm continuing for. I have noticed over the four years on record (which includes the just-now-started 2016) that my diet is trending in a good direction, for example.

Having said that, there have been some interesting "raw data analysis"-type results. The following charts are a selection of some of the more "interesting" data visualizations:

"By Day of Week" daily averages

I seem to eat in an "every other day" pattern, more or less.
My macronutrient ratio is not much affected by day of week... perhaps I eat less protein on Saturdays
My meals start off well behaved at the beginning of the week, then start to muddy up by the end of the working week. On Saturdays I actually eat more for lunches than I do dinner. Weird.
I guess I am hydrophobic on Fridays.
This data is effected somewhat by when I am able to actually wear my watch. I literally just got a new "dumb" pedometer in the mail that I'll be able to use to ensure these data are accurate.
This is 100% what I expected it to be. Discipline falls off throughout the week, partially recovering on Sundays.
This is another case of "100% what I expected it to be".
I don't accomplish much at work on the weekends, but do meet my social goals more often. Go figure.

Those weekly averages are interesting, but don't show how I've done over time. For that, let's take a look at how data change over the 34 (as of this writing) months I've been tracking.

"By Month" daily averages

My weight roughly follows my average calorie intake. Good to see the Laws of Thermodynamics play out in the data.
Try to guess which month Melissa and I tried out a Paleo-ish diet based off that graph.
I was doing 5-a-week workouts when I first started the Life Tracker. I haven't really ever caught back up to that time in my life. I had a gym in basement back then. It was sweet. I haven't gotten any stronger since then either. Stupid body. Note the jump in May of 2015 is probably more likely due to a lack of usable data than actual commitment to exercise. More on that below.
My "data completeness" chart is only really interesting because you can see two huge jumps that both coincide with version bumps of the Life Tracker in October, 2014 and July, 2015. I seem to have troubles with tracking in the month of May for some reason. Every May.

Lastly, here are my newest charts and stuff. I recently added a tagging system for days. I can tag days with things like "DayOff" to indicate I didn't work on that day, or "Movie" to indicate I watched a movie in theaters. Here's how the data look when accounting for tags.

"By Tags" daily averages

I eat more while traveling ("Travel" = slept not at home). I eat less when I don't work. Interestingly, most of the times I'm traveling, I'm also not working. So, those days where I stay around my home area and also don't work I REALLY don't eat much. Also I eat more when we go out to the theater.
I eat less protein while traveling. I eat more carbohydrates on days in which I travel, go to the movies, or fail to complete the survey - but still track food (those days are rare, but do happen). My fats are all below average because the AVERAGE lines are average for ALL dates, the colored bars only are the averages for the the date range since I (recently) introduced the Day Tags feature.
I drink less water while traveling, going to the movie, and when it's not a workday. Interestingly, those few days where I managed to tracked water intake, but did not manage to complete the survey (also rare) I drank a ton.
I sleep less than my average 7.53 hours on days when I'm traveling, working and gone to the movie. I sleep more on days where I don't work and days when I fail to fill out the survey (but still manage to use my sleep app). I like when the data display trends you expect to see - example: I sleep more when I'm not working.
Again, when I'm out of a routine (either traveling or not working) I tend to be less disciplined. If you're saying "why is data completeness for days marked 'Untracked' not zero?" If you are, first off, great job paying tons of attention, because I anticipate zero people will study this hard enough to catch that... but to answer the question - it's because "Untracked" just refers to the 25% of the "data completeness" criteria that is my daily personal goals. I could have a day that was "Untracked" and still 75% data-complete.


Popular posts from this blog

#122 - Make-up Post

#370 - Feature: Aaron Information Management (AIM)

#100 - One Hundred