There’s something I do on a regular basis that too many of my peers do not, and that is exercise. I want to talk about this today, not to position myself as a superhero, but to explain a few things in hopes of getting more DC readers to exercise.

Since credibility is important, here are my numbers for 2016.

  • 4,001.1 miles cycled in the course of 211 hours, 16 minutes
  • 232.7 miles run in the course of 32 hours, 26 minutes

I’ve also experimented with cross fit, but cycling and running are the two primary ways I choose to stay fit. If you’ve already made a habit of exercising and these numbers sound bleh, then you can move along. If you write software, I want to hear from you, please.

The reality is that I know very, very few software developers that take exercise seriously. It’s weird but in a technology company, it seems like it’s always the graphic designer or the quality assurance person who hits the gym three times a week and half marathons on the weekends while the people who are actually writing the code are doing well to get a walk in. Walks are good for you, but they cannot replace rigorous exercise.1

So how come software people just don’t exercise? I have a few theories. The first one is that they take Steve Jobs a little too literally when he said:

What a computer is to me is it’s the most remarkable tool that we’ve ever come up with, and it’s the equivalent of a bicycle for our minds.

Another slightly less humorous theory is that programmers are so busy writing code that peeling them away from their computer is like pulling teeth and they just won’t budge for anything other than for food and TV.

My third and final theory is that it’s because the United States is the second most obese nation in the world and people are just fat, programmers are collateral damage, and they’re not actually that much worse off than the average adult.

I don’t know what the reason is. But I do know that if programmers were to instead have an unusually high rate of exercise, that’d be amazing, and given the tools that I’m going to discuss, there’s no reason that can’t happen. The question becomes, How can we get people who love software to love getting their heart rate high? I’m convinced that the answer is that you take the hardware and software that’s been built for athletes and you use it in conjunction with listening to some good podcasts, and that as a programmer you geek out over the data, feel great afterwards, and get addicted to doing it regularly. The reality is that in the past 5-10 years we’ve had some innovations that are truly ground breaking. But first let’s remember how it used to be, in the bad old days.

My friend Bob would run a 10K every day, six days per week, when he was in his 30s. Every night he’d come home from work, he’d change his shoes, and start running. This was decades ago, before iPods and Garmin Watches. The only reason Bob knew the course distance was because he’d driven his car through his neighborhood and mapped it with his odometer. This was what it was like to be a runner in the twentieth century. No wonder so few people did it. There was never any feedback, other than logging the event on a piece of paper. I’ve said it many times before, but if today’s hardware and software didn’t exist, I wouldn’t exercise. It just wouldn’t happen.

Today’s hardware and software for athletes gives instantaneous and longterm feedback. The instantaneous feedback shows the numbers that you’re generating in the moment. If you’re running, that’s pace and heart rate. If you’re cycling then that’s cadence, heart rate, speed, elevation climb, and power output in watts.2 The longterm feedback is seeing all of this in the aggregate: your average speed, your average heart rate, your highest heart rate, your total distance. The longterm feedback shows a map of your activities on a calendar, very similar to GitHub’s contribution chart. This puts a dot on each day you exercised and shows how many hours per week you’re doing it.

Here is my exercise tech stack.

For outdoor riding I use a Garmin Edge 520 and Garmin sensors for cadence, speed, and heart rate. The Edge 520 uses GPS to track speed (among many other things) but the dedicated speed sensor attaches to the wheel and compares to the GPS to make sure they’re always in agreement. In the event that the required 4 satellites aren’t in range when it’s time to start a ride, this sensor can also act as the sole determinator of speed until the satellites arrive. Throughout the ride, these sensors constantly relay their data to the Edge 520, which saves it in memory and displays it to the screen. When I’m done with my ride, the Edge 520 takes all of this data, saves it to a .fit activity file, sends this file to the Garmin Connect app on my iPhone, which in turn triggers a web hook integration to Currently, Garmin Connect serves purely as a middleman. The ultimate destination is Strava. Strava is where everything is happening. It is the GitHub of exercise.

For outdoor running I use a Garmin Forerunner 10. It goes through the same process above; through Garmin Connect and then to Strava.

For indoor riding I use Zwift. The cadence, speed, and heart rate sensors all wirelessly connect to the Zwift application on my MacBook Pro via a Garmin ANT stick. When the activity is done, Zwift saves it on its server and Strava’s. Zwift is one of my favorite pieces of software in use today. I won’t go into how it works here, but go check it out. I’ll just say that it’s a virtual world in which you’re being productive with time, not wasteful.

That’s my tech stack. Yours can be different. Find a mixture of software and hardware that works for you, that gives you instantaneous and longterm feedback, and run with it. Block out the time in the week. Don’t make excuses. Let other things suffer, and make excuses for those things. Make exercise a priority. Watch less TV. Get up earlier. Whatever it takes. Just Do It.

Here’s to a healthy 2017.

  1. Actually, walking can serve as a substitute for rigorous exercise, it just depends on what your goals are. That’s not something I wanted to admit up there which is why I’m making this a footnote. But it needs to be addressed. If the main goal is I don’t want to be fat, then yes, walking will be good enough for that, assuming you do it enough. If the goal is I want to be able to run a quarter of a mile without dying from being out of breath then walking will not be enough. Another important situation where walking may not be enough is when, like most working adults, you have a limited amount of time per day you can devote to exercising. Walking takes twice as long to achieve the same calorie burn, which is another way of saying it’s grossly inefficient if you’re using it sheerly for the exercise benefit. If you’re not starved for time and you prefer to go on a lengthy walk (2+ miles) in order to listen to a podcast or talk to someone special, that’s not a bad use of your time at all. But when you’re tying your shoes to go on a walk, revisit why you’re doing it, what you hope to accomplish by it. It may be you should be running that walk. ↩︎
  2. This is a list of all the possible sensors. You don’t have to use all of them every time. I don’t. What you want is enough of them to make the activity engaging and motivating. ↩︎
  3. None of this involves custom scripts. The integration between Garmin Connect is all built out seamlessly in the interface. ↩︎