Skip to content

100 Runs

My previous entry way back on Aug.18 talked about the Nike+ipod widget I had picked up along with a first gen Nano. I figure it is time for an update. I still use it 5 or 6 times a week and I just logged my 100th run. There have been a few more actually, but I have had the odd Nano crash/corruption on me before I had a chance to upload a run.
Despite those occasional technical glitches, I still really like using it. I have been eyeing the Garmin Forerunner 305, but I actually like listening to music or a podcast as I run and it seems a bit much to strap a GPS to my wrist and also carry an mp3 player. Plus the thing costs $300+ vs. the $27 the Nike+ipod gadget costs, assuming you already have a Nano.

My 100th run looked like this:

620 miles later and some 80,000 calories burned I have gone from being a 205lb fat slow geek to a 175lb slow geek. Not entirely true, I lost about 10lb before I started running more seriously, so the Aug.18 to Jan.27 timeframe was about a 20lb drop. 80,000 calories and I read that one pound is about 3500 calories which seems to fit my numbers.

I ran a couple of hundred miles in a pair of Nike+ shoes. It is very convenient to have the sensor right in the sole of the shoe, but that is the only thing I liked about those shoes. Now I have a pair of New Balance 767's and have sewn the little sensor seated in a Switcheasy RunAway thing to the front of the shoe with the back looped through the bottom of the laces. That gets it as horizontal as possible and I find it is more accurate that way. Of course the RunAway plastic thing needs a bit of tape to make sure it doesn't swing or pop open. Here is a picture of the hack job:

I have also been playing with the run data a bit. Each run is stored in an XML file which is uploaded to the Nike site by itunes when you synch. You can easily read the files yourself by mounting the ipod and navigating to it. However, the red Nike interface you see above is a flash thing and since flash is obviously client-side the site needs some sort of API. With a little digging with Firebug it was trivial to figure out how it worked and I whipped up a little Serendipity plugin to show my stats. You can see it in the right column of this page. And I wrote a simple PHP 5 class that makes it rather easy to integrate this stuff into other apps. You can see the code here:

Each run in the run list has an id and you can call the run() method in that class to get the raw data for that run. Graphing that gives us something like this for that same run I showed at the top:

The grey line is the raw data and the red line is a Lowess curve based on that. I find it interesting how noisy the raw data actually is. Especially for the shorter runs, but by applying a bit of local regression it cleans up nicely and data that seems accurate emerges. I can pick out the uphill stretches of my run from the graph above. If you click on the runs in the right sidebar section there you can see the graphs of my other runs.

If I could somehow find some free time I'd love to build a better tracking site than that Nike thing and then also have it support the Forerunner and whatever other devices are out there. But for now most of my free time is spent running. Probably better for me in the "long run" anyway.


No Trackbacks


Display comments as Linear | Threaded

Ryan Kennedy on :

I run with a Garmin Forerunner 301. It has most of the features of the 305, but you can get one on Amazon for $150. It's nice, but like you said, if you want music then you have to strap on another device.

One nice thing about the GPS data, though, is being able to slap it on a map. I'm not sure how much calibration the Nike Plus takes when you get it out of the box, but the Garmin doesn't require any since it does everything via GPS. The heart rate monitor is sometimes annoying, but you don't have to run with it if you don't want. However, if you use the software that comes with it, you can upload training programs to the Garmin for doing things like intervals. Some of those training programs will keep an eye on your heart rate.

Anyway, neat stuff. You can also upload your Garmin data into Motion Based. You can track your workouts, find other routes/workouts and so on. I haven't made extensive use of it yet, but as I start training for my run I'll probably see if I can milk anything useful out of it.

Rasmus on :

I am not sure how useful sticking my runs on a map would be. I know where I am running. All I really care about is knowing how far I have gone and more importantly I need to know my pace during the run. I was looking at the 305 over the 301 because it has the foot pod thing that works on a treadmill as well. GPS doesn't do much good there, and I do occasionally get stuck in places where running outside just isn't feasible. Like Bangalore.

I could still see picking up a 301 and perhaps using it in combination with the Nike and I like that it works for biking as well.

Ryan Kennedy on :

Ah, I didn't realize the 305 came with the accelerometer. That's definitely cool for the treadmill. I've often wondered how best to mesh my treadmill running data with my outdoor, GPS running data. Damn, maybe I should look into upgrading.

I've always thought plotting on a map would be nice for things like run sharing. Go for a run and plot your trail. This was especially useful for me to show people where I ran up in Sacramento where there are a lot of uncharted bike trails. It's also nice because you could use pushpins to show telemetry data at certain points. Like, "my heart rate was 140bpm at the bottom of the hill and 180bpm at the top."

Speaking of the heart rate monitor, I also find that useful. I often go out way too fast and the heart rate monitor helps to keep me at a pace that won't burn me out so fast. Does the Nike Plus work with any heart rate monitors?

Rasmus on :

Nope, no heart rate monitor option for the Nike. I have tried a standalone one, but I just can't handle something strapped around my chest when I run. I think I'd need an implant or something for that to ever work for me.

I pretty much know how fast I can run and that if I am doing more than 10 miles I can't go any faster than about a 6:40 min/mile pace for the first couple of miles. Hitting the center button on the ipod lowers the volume and tells me my pace so I don't have to look at the small screen.

I can definitely see where GPS data could be fun for run comparisons and such. It would need a decent web site behind it though. Without that just sitting there looking at your own GPS data doesn't seem all that compelling.

Jeff Gibbs on :

Have you messed with accessing the challenges yet?

Rasmus on :

Sure, scroll down a little bit further. You'll see them listed below my run data.

Philip on :

Hey Rasmus,
I'm a php newbie and I'd like to use your script to incorporate my Nike+ data on my web site. Any chance you could provide an example of how you implemented the php classes? I'm too much of a newb to figure it out from the code you already provided, but an example would go a long way! I'll run with it... ha ha.

Henrik N on :

Great stuff, thanks!

Philip: see from this code:

Philip on :

Hi Henrik,

I am more of a newbie than you think! :-) Would it be possible to have a php file that shows the php code cut into the html? I don't understand how to use a "class" and can't figure out where to put my Nike+ login, password, etc...

Thanks in advance if you can help!

Henrik N on :

Not quite sure what you mean. My example.txt is one example of PHP code (and some minimal HTML) to display all the active challenges you are in. That file requires the file nikeplus.php5, which is all Rasmus' code, linked above:

If you don't think it's apparent from Rasmus' or my code where to put the username and password, or if you don't know what a class is, I recommend you read up, online ( or in a book.

Mariska on :

Hey Rasmus
Can u tell us how you grab youre stat of 1 run, i see the pic is grab from a server/site slowseek. Can u tell me more about that, i have my own website and grab some data, but want to know how u can see the stat/data from a run.
Let me know if i can do somtehting for u.

Greetings from holland


Rasmus on :

If you look at that nikeplus.phps link you will see a run() method that grabs the run data for a single run. You get the run id from the run list.

Here is the source code that grabs the data for an individual run given the run id and graphs it:

It uses a graphing library called ChartDirector which isn't open, but you should be able to plug in just about any graphing library.

Mariska on :

Hey Rasmus,
Goodmorning, i have build my website, not finish yet. But i work on it, maybe u can help me a little.
Tonight isp install PHP5 for me, what can i do to work it fine, i have install de blog, thats works fine, and than... import the nikeplus.phps code into the sidebar?
please let me know, thanks again.

xxx maris

The author does not allow comments to this entry

Add Comment

Enclosing asterisks marks text as bold (*word*), underscore are made via _word_.
E-Mail addresses will not be displayed and will only be used for E-Mail notifications.
Form options

Submitted comments will be subject to moderation before being displayed.