Skip to content

Cycling in and out of work and renewal periods

Life is cyclical. Recognizing that allows you to optimize your personal and professional activities, maximize fun, and make the biggest possible dent in the universe.

I was reminded of this recently while reading “Relax! You’ll Be More Productive” from the New York Times (@nytimes) after a G+ tip from Alexander Howard (@digiphile).

People sometimes ask me how I approach work-life balance, so I thought this would be a good opportunity to share.

I find ninety minute bursts of productivity with renewals in between works very well for me.

My ideal work day: I walk my child to school (a little hit of sunshine and light exercise first thing), followed by checking email and then a quick team video call. After dealing with any pressing issues raised on our team standup, I try to take a short break where I get up and out of my home office for a few minutes. After another period of ninety minutes or so of work, I break for lunch. A third work period, then an afternoon workout (usually a run). A fourth period of work on days when family commitments don’t preclude it, and then I try to get to bed at a decent time to repeat tomorrow.

On “rest days” when I’m not running I will try to spend my mid-afternoon renewal time either reading or napping. Either way, I stay out of my office and away from my laptop to avoid diving immediately back into work and problem solving mode.

Getting to bed at a decent time is where I most often fail. Lots of temptation to get back into work mode after getting the kids to bed, when I should be settling in for the night.

What works for you?

Health Graph Hacking 101 updated

I’ve updated our Health Graph platform (@healthgraphapi) overview slides for recent developments and new resources.

The latest slides are available on Slideshare:

Changes to the slide deck include:

  • Updated Health Graph platform stats for growth in users, partners, and data
  • Added links to set-based APIs (after removing links to now-deprecated corresponding discrete measurements)
  • Asked all developers to please read through and follow the Health Graph Best Practices as they develop and prepare to deploy their integrated apps, services, and devices

Health Graph Best Practices include exposing RunKeeper as part of your in-app experience

Please take a few minutes to review the slides and let us know if you have any questions. Thanks and happy hacking!

Cross-posted from the Health Graph blog.

Our first freedom is the only way to end school massacres

I don’t believe in immediately jumping on the political bandwagon as soon as something bad happens. I’ve been biting my tongue, but given the continued shortsightedness and frankly extremely irresponsible rhetoric from many this week, I feel the need to point out some cold hard facts.

There are multiple fundamental disconnects from reality in much of the media coverage and popular dialog every time something like the tragedy at Sandy Hook is carried out by a criminal.

Ask any policeman or policewoman (we have several family and friends who serve) and they will confirm:

  • Bad guys will get weapons, period.
  • Bad guys don’t care whether the law says the weapons they want are legal or not.
  • Bad guys will target “gun free zones” for the same reasons wolves prey on weaker animals.
  • Police are not here to protect us, there aren’t anywhere near enough of them in any sort of democratic society we’d want to live in; rather, the police are here to draw chalk outlines and catch the bad guys after the bad guys have already broken the law.
  • Responsible citizens must have the ability, and that includes weapons, to defend themselves when attacked.

If you consider that this was a “gun free zone”, as was Columbine, as are the vast majority of such crimes, and you really think about it, it is obvious that “gun free” does not work.


I believe in the right to defend my family and others. Without that right, all the other things in our lives are subject to removal. In that sense, the Second Amendment truly does acknowledge our “first freedom”. The inalienable right to self defense enables all other rights, freedom, and liberty.

If you don’t believe that a little sign or a law will make bad guys leave their weapons at home, then the only rationale response is to allow responsible, legally vetted adults to carry and defend themselves and those who cannot.

We already trust our childrens’ lives to school officials including administrators and teachers. Why not allow them the one tool that will help ensure bad guys are stopped from harming our kids? And by allowing them to carry, and telling the bad guys that schools are not soft targets, why not end the vast majority of school massacres before they ever start?

It’s the only sane thing to do in this whole insane mess.

Launch RunKeeper on Android

In my last post, I showed you how to launch RunKeeper from your iOS mobile app using some Objective-C URI magic.

I also promised a similar capability when we released our next update to RunKeeper for Android. And now the time has come, RunKeeper is ready on Google Play, and away you can go a’launching it from your own Android apps!

To launch the RunKeeper app on Android:

  1. Present the user with a button in your app that they can click to launch RunKeeper.
  2. When the user clicks that RunKeeper button, start the RunKeeper activity using the Intent com.fitnesskeeper.runkeeper.intent.action.MAIN
  3. If the user has an up to date RunKeeper release installed, the RunKeeper app should launch and they can begin tracking immediately.
  4. If the user has an older copy of RunKeeper, or hasn’t installed the RunKeeper app yet, prompt them to install the latest RunKeeper release from Google Play and then they can begin tracking after installation.

We’d love to hear from you and see examples of how you will use this capability, on Android and/or iOS. Please contact us in the comments if you’re doing so.

We might even feature you in an upcoming blog post or our new Health Graph (@healthgraphapi) “Best Practices” guide. And we’d love to hear your feedback on that guide, too!

Cross-posted from the Health Graph blog.

Launch RunKeeper from your own iOS app

Are you a Health Graph (@healthgraphapi) partner with an iOS app of your own? And do you encourage your users to track their fitness activities using the RunKeeper (@runkeeper) app?

If you do and you want a way to ease their transition from your experience into RunKeeper tracking, we’ve got just the ticket!

We’ve added support for launching RunKeeper on-device from your app. To launch the RunKeeper app on iPhone (or iPad, if a user rolls that way):

  1. Present the user with a button in your app that they can click to launch RunKeeper.
  2. When the user clicks that RunKeeper button, attempt to open RunKeeper using the following Objective-C code:
                [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"RunKeeperPro://"]];
  3. If the user has an up to date RunKeeper release installed, the RunKeeper app should launch and they can begin tracking immediately.
  4. If the user has an older copy of RunKeeper, or hasn’t installed the RunKeeper app yet, prompt them to install the latest RunKeeper release from iTunes and then they can begin tracking after installation.

Here’s an example of how you might implement this, taken from our partner GymPact (@gympact; learn more about GymPact from this previous partner profile).

First up, notice how GymPact places a prominent RunKeeper button on their app homescreen once a user connects their GymPact account to a RunKeeper account (connection is a one time only operation per user).

Once the user clicks that button, GymPact loads this RunKeeper screen to provide additional context before starting the RunKeeper app.

Clicking on the “Connected – Get Running!” button on the screen above tells the user they’re about to open the RunKeeper app if they have it, or that they need to install the RunKeeper app if they don’t already have it installed.

From here they can grab RunKeeper from the App Store if need be and then away they go!

We hope this will be useful for many of our iOS app partners. Please give it a try and let us know what feedback and requests you have.

And Android partners, fear not, we have you covered too: Similar support is coming in our next Android app release. This will be supported via Android Intents. More details once that release is available in the Google Play store.

Cross-posted from the Health Graph blog.

RunKeeper at Quantified Self

While this post is targeted at attendees of the September 2012 Quantified Self conference in Palo Alto, even if you’re not attending you still might find some useful Health Graph information and development tips.

Welcome Quantified Self attendees and hackers! You’re in for a great weekend of learning and networking. And hopefully plenty of fun!

This post will walk you through RunKeeper and Health Graph platform related Quantified Self sessions, then provide key information and procedures you need to use the Health Graph.

Here are the sessions where I’ll be representing RunKeeper:

  • “Hacking APIs” breakout session, Saturday 10:30AM – Beau Gunderson (@beaugunderson) of Singly and I will be discussing APIs for self quantification and hackery. We hope to have a lively discussion with you and each other, examining APIs for QS from every angle.
  • RunKeeper & Health Graph office hour, Saturday 1:30PM – I’ll be available to discuss Health Graph development and answer any questions you may have.

I will also be attending as many of our partners’ sessions as I can, while hopefully having lots of time to share ideas and make new connections. Please shoot me a tweet (@billday) if you’d like to get together at the conference.

To prepare for the conference, or begin using the Health Graph directly on your own, you should start by watching this high level overview of the Health Graph platform:

For a quick primer on developing with the Health Graph API, click through the more technical presentation below:

All Health Graph partners are required to follow the Health Graph API Policies.

You can access more technical details on the RESTful Health Graph API by clicking here. Experiment and prototype with the API using the Health Graph Developer’s Console (click here to load the console).

When you’re ready to start your app in earnest, visit the RunKeeper Partner page and click “Connect To Our API“. From there you can fill out the form to register your new Health Graph integrated app, service, or device.

Click here to learn about authorization removal callbacks before providing your callback URL on the form. If you will be reading data out of the Health Graph for accounts other than your own app registering account, you should also request Read permission on the form, being sure you give a detailed explanation of what you will do with that data once you’ve accessed it. Likewise, if you would like to ask users for permission to retain their Health Graph data across deauthorizations and/or edit health information for authorizing users, please request permission(s) on the form.

Need some inspiration to get your developer juices flowing? Check out some of the applications built and deployed using the Health Graph API, available from the RunKeeper Apps page (click here). You can also access an archive of third party libraries, wrappers, and bindings which might make your Health Graph API-based development easier by clicking here. And there’s more information on how app and library partners are taking advantage of the Health Graph via our Health Graph partner profiles series on the blog.

When you encounter issues, you can ask questions and join in the developer conversation by visiting the Health Graph discussion group. You can also reach our team on Twitter, Facebook, and Google+.

One more tip: Click here to learn how to export your own user data from the Health Graph; useful for programmable self hacks as well as backups and parsing your data to re-upload into a test account via the Health Graph API.

Now that you know how to use the Health Graph, go build something great!

Cross-posted from the Health Graph blog.

Earn discounts with your favorite retailers from Bank of Fitness

Bank of Fitness (@bankoffitness) turns your workouts into discounts from your favorite retailers. Learn how and why Bank of Fitness chose to use the Health Graph (@healthgraphapi) to access out-of-gym workout data from RunKeeper (@runkeeper), opening up a new world of potential savings for exercising consumers.

Bill Day: Please tell us about yourself and Bank of Fitness.

Corey Draffen: I created Bank of Fitness (BoF) because of the severe lack of motivation there is for the average person to exercise and lead a healthier life.

Bank of Fitness is motivating the world to be healthier. We plan to keep people exercising by providing motivation through real-life rewards. Exercise at a gym or using a mobile fitness app and Bank of Fitness will automatically award you points redeemable for free items and valuable discounts at great retailers. The more you exercise, the more points you earn. The more points you earn, the more you save!

BD: What is the “elevator pitch” for why someone should use your app?

CD: Workout. Get Rewarded! It’s that simple.

BD: Can you tell us a bit about your users? What kinds of things do they do with Bank of Fitness?

CD: Our beta users have tracked more than 1500 workouts and redeemed rewards for Target gift cards, Visa gift cards, and some special discounts with retailers. We are in the process of partnering with gym management software companies to reward millions of users for going to the gym every day.

BD: How did you get started using the Health Graph API?

CD: We reviewed the Health Graph API documentation, then did a proof of concept to explore how an integration would work. We are excited to see it moving forward! is now ready with end-to-end integration with RunKeeper.

BD: How is using the Health Graph benefiting your business?

CD: RunKeeper’s Health Graph keeps track of fitness activities for users. Fitness activity feeds enable us to reward RunKeeper users every time they workout.

BD: What do you like about the Health Graph platform? What would you like to see changed?

CD: We like how the platform keeps track of different type of activities; it’s not just limited to cardio exercise.

Having access to comprehensive API documentation that’s simple to understand has been really helpful, too. And when our QA team identified issues while integrating with the user registration process, the RunKeeper team was very responsive. We appreciate the quick turnaround.

BD: If you could request any new feature from the Health Graph, what would it be? How would you use it?

CD: Currently we have to ask users to register with BoF after RunKeeper Registration/Sign In. This is because the Health Graph API does not return user email addresses. This two-step registration process will likely increase the drop-out of first time users. If there were a way to get the email address of users who authorized RunKeeper access to BoF, it would be a very helpful feature.

BD: Can you share any future plans for Bank of Fitness? What’s coming next that your users will be excited about? Does the Health Graph play a role in that, and if so, how?

CD: Our near term plan is to integrate with fitness club management software companies so we can reward people working out at gyms. The Health Graph will play an important role, since we want those millions of gym members to also track their workout activities outside of the gym.

We have some exclusive discounts from retailers and are in-process on building new relationships that will result in even more exciting gifts and discounts for our users.

We have also created BoF APIs for use by fitness club management software companies. We are in partnership conversations with club management software companies to use our APIs.

Cross-posted from the Health Graph blog.