On the care and feeding of online forums

IMG_6402
I’ve had two online forum transition experiences in a week now. It’s interesting to observe how quickly an existing user base can be fragmented or even lost altogether.

The Yahoo Finance message boards uproar continues. Now that I’ve tried it more than once during the past few days, I’m still finding it difficult to scan quickly. More importantly to Yahoo, there are signs of mass migration to other message boards by very active participants looking for a new home. Much of the flock may still settle back at Yahoo, but it looks like there’s been a lot of people checking out the alternatives during the past few days.

On a completely different front, I have been part of a running forum which has been at Runners World magazine. I usually check in once a week or so, and participate in a weekly motivational game in which teams of runners post their weekly mileage. A few weeks ago, Runners World changed their forum software. In the process, the site went completely offline for a while, and later required re-registration by existing members. Their new message board there isn’t as much of a change as the Yahoo boards, but the extended outage appears to have dispersed many of the participants to other message boards. I only check once a week, and haven’t succeeded in re-registering my account yet, so I effectively disappeared. A few people from the Marathons forum eventually tracked me down today and pointed me at an “escapee” forum set up during the interim, which seems to have picked up many regulars in just a few weeks.

Assuming that either Yahoo Finance or Runners World finds it constructive to run an online message board, it’s interesting that there has been very little (no?) dialogue that I know of between the operators of the sites and their respective user communities. I suspect that a few bread crumbs of communication would have kept more people on board.

Big Sur Marathon 2006

IMG_6259

This past weekend I ran the Big Sur Marathon, my 3rd time on the course. I’ve been posting on a separate running blog for a while, here’s a roundup of Big Sur posts:

Runners on Bixby Bridge

My new running blog

I’ve signed up for the Big Sur Marathon again. I’m also splitting off the running posts so regular readers here won’t have to wade through my training posts and other running minutiae.

This is also giving me a chance to try out WordPress 2.0 over there before updating the main site.

My new running blog is at hojohnlee.com/running.

A treadmill in your hotel room?

Today’s Wall Street Journal mentions that some hotels are offering to place exercise equipment in your room. For $20, the Westin will provide a treadmill or stationary bike, and several others will provide yoga mats and DVDs.

I’d be interested to hear if anyone has first hand experience with this. On the one hand, it might save a few minutes finding / getting in and out of the gym, as well as fixing the problem of gym hours not lining up with when you’re actually at the hotel during business travel. I routinely find that the published hours don’t reflect reality, although I can usually get someone to open the gym if it’s a real hotel (i.e. well equipped but overpriced).

On the other hand, a decent treadmill would occupy a large chunk of many hotel rooms, and I suspect that people in the adjacent rooms might not be thrilled about the “thunk-thunk-thunk-thunk” grinding along at 180 paces a minute for an hour or so (or three, if it’s a long run day on a marathon training cycle).

Camping out at Singapore Changi Airport

I’ll use this week’s no-GYM theme to go with something completely different:

I’ve travelled between the US and India something like 20 times in the past few years. From the Bay Area, it’s roughly equidistant to go via Europe or via Asia. I often have other stops to make elsewhere in Asia, but one reason I like to go westbound is because of the facilities at the Singapore Changi Airport. (Another reason is that I find the Frankfurt airport vaguely creepy, but that’s another story.)

IMG_1806 IMG_1811

I typically fly on United from San Francisco, connecting in either Tokyo or Hong Kong, and arriving in Singapore at midnight. There’s a connecting flight to Bangalore at around 7:30am, which leaves just enough time for a few hours sleep, a workout in the gym, breakfast and e-mail at the business lounge, and picking up any last minute items at one of the many stores.

The Singapore airport has two transit hotels, a swimming pool, and two gyms on the terminal airside, meaning that you don’t have to go through security. This is a bigger win these days than a few years ago. I’ve also gone into town to stay at a “real” hotel, but while I’m on business travel I hardly do more than sleep, run, and wash at any hotel, and it hardly seems worth it.

The Ambassador Transit Hotel is bare bones, but offers much better sleeping conditions than any airplane bed, flat recliner or not. It can be difficult to book a reservation ahead of time, but there are a number of “economy” rooms, which are rarely fully booked, and even when they are, I have been able to get a room within an hour or so of waiting around at the desk. The regular rooms have between 1 and 4 beds, a small desk, television, and bathroom. The economy rooms are smaller, some do not have a television, do not have a separate bathroom, but are adjacent to the gym, where there are a number of shower rooms.

economy room double room

Interestingly, the rooms have indicators pointing to Mecca, for the convenience of their Islamic clientele. There is also a small children’s play area on the ground floor, but I’ve never seen any families at the transit hotel. It usually seems to be business travellers, and people are just trying to sleep. International flights are coming and going around the clock, so the hotel books blocks of six hours at a time, which can be extended by the hour. It’s about US$35 for a room.

IMG_1473 IMG_1814

Use of the terminal 1 transit hotel gym, showers, and swimming pool are included in the room charge, but can also be purchased separately. The transit hotel gym has a fairly new Precor treadmill (was finally replaced this spring), a stationary cycle, and a few weight machines, and a rack of dumbbells. The shared gym showers are much nicer than the ones in the rooms. They’re equipped with glass doors and soap dispensers, while the ones in the rooms have just a curtain, with a drain in the floor (so the whole bathroom floor gets wet), and little packets of soap (which are hard to open).

IMG_1468 IMG_1467

The swimming pool is on the roof of the building, and is accessible through the Terminal 1 gym. The pool doesn’t open until something like 9am, so I’ve only used it on a couple of occasions when my outgoing flight was delayed.

The Terminal 2 transit hotel doesn’t have a gym, but the separately operated Plaza premium lounge and gym nearby is much nicer than the Terminal 1 gym. The desk can also supply you with exercise clothes, although you still need to bring your own running shoes. Their gym has several nice treadmills, along with a newer weight machine, hand weights, and mats for yoga. They also have showers, nap rooms, oxygen therapy, and a lounge with snacks.

IMG_0660 IMG_0665

The view from the treadmill at Terminal 2 is more interesting, as you can watch all the people coming and going at the food court across the concourse. (They are also watching you, of course, while they munch on their noodles and french fries, and wondering at the fact that you were there when they arrived, and still there when they left…) In contrast, the view from the terminal 1 treadmill looks out onto part of the runway.

Terminal 2 is newer in general, and has all the Singapore Airlines gates. United and others are mostly on Terminal 1, which is older, but has been updated somewhat over the past few years.

Singapore is also the best place in the world to be stranded by a missed flight connection. It has cheap and reliable phone service, free wireless networking, and the equivalent of a midsized shopping mall along the concourses. Even without the transit hotels, you could quite easily live in the airport and get a lot of work done for days or weeks, sort of like Tom Hanks in The Passenger, except with credit cards and communications services.

IMG_0666 IMG_1487

A number of airlines contract their business lounge service to the SATS premier lounge. This causes some confusion sometimes, as SATS is a unit of Singapore Airlines, but there are two separate (and much nicer) lounges for travellers flying SQ. If you’re on United and have access to an international lounge, you will be able to use the SATS lounge for free. It has a supply of alcoholic and non-alcoholic drinks, chairs, and mostly pretty bad food. I usually bring my own food for travelling, and skip their snacks except for some nuts and chips. There are a couple of PCs for internet access (free), along with a large television and several telephones. I’ve never succeeded in getting the lounge phones to work for me, although I don’t have any trouble with the ones out on the concourse.

IMG_1480 IMG_1479

The telecom rates to the US from Singapore on the pay phones are comparable to my US domestic cell phone service. Some of the phones have card stripe readers which accept normal credit cards, such as American Express, Visa, or Mastercard, while others take only cards from local phone companies. A 5 minute call to the US ends up costing around US $3.

IMG_2480

Some other notes:

  • There is also a small shower in the bathroom at the SATS lounge. I’ve never used it, as I always shower at the transit hotel. There’s also a new “Rainforest” lounge in Terminal 1, which looks pretty nice, and has showers, massage, aromatherapy, and some treadmills, but I haven’t had occasion to use it.
  • Elsewhere in the airport, there are “quiet areas” where you can sleep, power points for recharging phones and computers, a theater for free movies, many electronics shops (good for buying connectors and cables before heading into India), a cactus garden, a free bus tour of Singapore, and lots of free wireless. Just be sure you’re running a VPN or something.
  • During the SARS crisis, each gate at SIN had a thermal imaging scanner to quickly screen passengers that were running a temperature, which kept incoming traffic moving along. SQ was also distributing kits of information and a disposable thermometer to their passengers. Hopefully we won’t see the return of the process with an avian flu outbreak, but they’ve had practice now.
  • singapore-air-personal-thermometer-kit

  • There are armed patrols of Singapore troops all over the airport. It can be a little surprising to walk off your flight to be greeted by people with submachine guns, especially if they’re juxtaposed with some of the wacky entertainment (singing, dancing, variety) that turns up on the stage in the middle of the concourse bar area.
  • The airport has a tram system running between T1 and T2. It takes around 20-25 minutes to walk at a normal pace, but if you run you can make it in 10, even with hand luggage. I’ve been the last person allowed to make my connecting flight out of Singapore more than once…
  • IMG_2479

More photos

Map My Run


Map My Run is a new Google Maps-based application for plotting and measuring your runs. I just tried plotting one of my usual loops around the Stanford campus and it’s pretty close to what I get with my GPS running watch.

You can plot routes by clicking points on the map, or upload a GPS tracklog (didn’t try this, though). These sorts of applications are great for estimating your mileage when you don’t actually have a GPS or some way to measure the course. Unfortunately, Google’s map coverage is still somewhat limited outside the US, so it works great for plotting runs around London’s Hyde Park but not so good for loops around the Vidhana Soudha or Cubbon Park in Bangalore, although if you know your way around you can use the satellite view to make a rough guesstimate.

As an aside, it’s remarkably hard to find a good online map of Bangalore, given the huge number of technology-related business travellers that visit there. Maps of India has a reasonable city overview, but if you want street-level detail, try this one from Superseva (only seems to work on Internet Explorer). It’s an interactive scanned image of a paper map(!).

See also: Gmaps Pedometer, Favorite Run, Walk Jog Run, Motion Based

via Google Maps Mania

Emily wins the Palo Alto Moonlight Run

This evening my 9-year-old and I ran the Palo Alto Moonlight Run. The event is run every fall, in the evening, when the moon is full (or nearly full) so there’s light to see on the course which runs around the Baylands.

I really wanted Emily to have a fun time at her first race event. We did the early 5K family walk/run, which isn’t officially timed, and they encourage family participation, including dogs, kids in strollers, etc, so it’s a pretty casual, festive affair, with a DJ, frisbees, and booths with fun kid-friendly samples items like Hobees coffeecake, Luna bars from Whole Foods, and blinking lights from Runners High. I’d been thinking that Emily might like to give it a try, since she’s never actually run in a race or event, but has actually gone futher than that a number of times. She’s also been doing soccer this fall, (which I’m coaching,) so every week she gets a lot of sustained light-to-moderate running, which she generally seems to enjoy.

I’ve been trying to help Emily and her friends learn to run “medium” instead of “fast” all the time. I remember when I was a kid in school they always wanted everyone to run “fast” all the time. For me, at least, it would have been more productive to learn what a sustainable pace should feel like, and mix it up with some speed. Running “fast” is great, but I’m trying to help the kids I work with develop some aerobic capacity and a sense of pacing, so they can actually enjoy running or other activities later, instead of thinking of it as an uncomfortable activity to avoid. If all your running is effectively sets of short sprints, you’re going to feel terrible, and you’re not going to do much for your general conditioning either. I can also see some of the kids starting to overstride because they think taking bigger steps will help go “fast”. They’re all starting out being able to run, I’m just hoping to keep it that way.

We signed in at the on-site registration. Emily wanted to make sure she got a t-shirt. Kids get to register for free, but the t-shirt costs extra. We got extra-large, as all the shirts are too big for her to wear but she likes wearing old trade show t-shirts for pajamas these days. (She loves the “elephant poo” t-shirt from SimplyHired I picked up at last month’s SearchSIG.) An XL t-shirt pretty much comes down to her ankles.

She had lots of fun collecting a chem-lite necklace, blinking runner’s safety light, and assorted nibbles of food samples while we waited for the start. She was very serious about explaining our race strategy to me.

  1. She wanted to start in the front
  2. She wanted to make sure that I stayed right next to her where she could see me
  3. She wanted to make sure that I didn’t go faster than her
  4. Her goal was to run the whole way and be the first person or at least the first kid or the first 4th grader to finish
  5. I should be sure to finish 1 or 2 seconds behind her

I suggested that she try running at whatever pace felt comfortable, and we could speed up or slow down or walk whenever she felt like it. In her PE class at school they’ve recently been running timed miles, and she said that she did a little more than 12 minutes the last time they tried it. I figured we would probably do something like 12-13 minute miles overall, possibly including walk breaks, shoe fiddling, etc.

We actually did line up at the front. Much of the crowd was in fact walking, with dogs, strollers, or kids on leashes, so lining up at the front was a good place for us to be. There were also a fair number of runners. The “serious” runners aren’t in the untimed 5K family walk/run, though, so it’s mostly slower runners. At the start, a few adult runners took off, and we appeared to start off on the trail among the first group of “kid” runners.

Emily was really excited about wanting to beat everyone, and was very pleased to have left most of the starting pack behind (I think people started getting congested at the trailhead when the main group arrived). She started getting a little side ache after a couple of minutes from going out too fast, so we slowed down until it felt better, and I told her again she was in charge of what speed she wanted to go. We passed several bigger kids that had gone out very fast and were walking. We followed some adults who eventually slowed down.

By the 1 mile marker, Emily was feeling much better and was also really happy about the idea that she was able to keep her pace and catch up with the much bigger people who went out faster than her. At the water station (1.7 miles?) we stopped briefly for a bit of water than continued. Some boys came charging up from behind us but ran out of gas before the 2 mile marker.

The whole time we were running we were also chatting about the lights around the Bay, the airport runway, the interesting and spooky looking clouds, the sillhouetted birds on the mud flats. The Palo Alto schools go on a number of field trips to the Baylands, so the kids all know lots of trivia about the local wildlife and ecology. We ran past the interpretive center toward the duck pond. Emily was very pleased about not seeing any kids her age around anywhere, and passing lots of adults and big kids.

After the duck pond, the 5K course turns back onto Embarcadero Road, which is straight and lit by streetlamps so you can see who’s ahead. No kids in sight, and only a few adults. We pass several more runners on the approach to the Baylands Athletic Center, and I tell Emily that she should start running a little faster when she feels like she’s close enough to manage it ok. She goes pretty fast for the last couple hundred yards or so, I need to shift into a more normal running stride for me to keep up.

Since it’s not timed, and we’re way ahead of the walkers, there’s not much at the finish other than people setting up for the 10K start. Emily is looking around to see if there are any other kids. We don’t see any, although I think a few adults have come in ahead of us. We decide that she’s the first kid to finish, and she also decides that she’s probably around 4th or 5th overall and that makes me 5th or 6th. She wants to know if she gets a prize. I tell her she can go collect some more free samples, plus now we can get some Hobees coffee cake. We collect a variety of packaged food samples to bring home, along with a bagel. Lots of walkers are still coming in when we pull out of the parking lot at 8:30ish, an hour after the start.

Emily says “I smoked them!”

Splits:
1 mile 12:18 12:18 / mile
2 mile 24:31 12:13 / mile
5K finish 36:50 12:19 / 1.1 miles = 11:12 pace

overall pace 11:51/mile

I’m really happy that she had a fun time. Tonight she’s been telling me that next year she wants to stay up and try the official 5K (which doesn’t start until almost 9pm). In the meantime, she’s sleeping in her extra-large glow-in-the-dark t-shirt, and is already planning to have her extra Luna bar samples for breakfast.

We’ll see how tomorrow morning’s soccer game goes…

Fall Feebleness


Over the past few weeks I’ve started ramping back up from nearly zero mileage to around 20 miles per week. My normal week until this spring has been around 50+ miles per week, or roughly 7 miles / 1 hour per day.

I had an OK easy 6+ mile run this morning. This is the longest distance I’ve gone in weeks now, after a self-imposed cutback on running over the summer to ward off some impending injuries. The good news is that all the moving parts are feeling a lot better than they were at the beginning of the summer, I haven’t picked up any weight, and the heart rate monitor shows that the cross training and shorter runs have kept me from turning into a total slug. The bad news is that I’m having a hard time getting the mental groove back together. I think taking a break has thrown off my running routine more than I anticipated.

I’ve been logging a lot of 3- and 4-mile runs lately. In the past, I often take at least 20 minutes to warm up and start feeling comfortable, and sometimes take as long as an hour before everything has seemed like it’s working OK. So all these short runs mean that I’m spending all my runs feeling a little off. It also takes me a while to mentally tune everything out so I can just think and run. No shortage of interesting stuff to think about these days, but having the impulse to go fire off a quick search isn’t helping running concentration at all.

It’s hard to be excited about cracking 6 miles, but that’s where things stand at the moment. I need to go re-read Lydiard or something and get some motivation going.

Hacking the Timex Bodylink – Part 2

Here’s some sample data, and an example of how to read the heart rate data from the binary dump file eeprom.bin, continuing from part 1 of my notes on the Timex Bodylink.

This is what we don’t want to see when using the Timex Trainer software to download from the data recorder.
Timex Trainer Application Error

In my case, this happened in the middle of a long (4+ hour HRM and GPS) data download. I suspect, but can’t confirm, that this was related to leaving the “speed smoothing” function on and tripping over an unhandled exception related to a missing point or something along those lines. I didn’t seem to have problems after disabling the smoothing option.

When retrying the download, the Timex software would complain:

Timex Trainer shut down unexpectedly during the last data transfer. This may indicate a problem with the way the data was stored in the memory of the Data Recorder. Check all the connections to the Data Recorder and make sure Recorder’s battery is notl exhausted, then try the transfer again. If the transfer is still unsuccessful, you may have to erase the data in the Data Recorder (refer to Help for the procedure). Unfortunately, this means that any data currently stored in the Data Recorder will behat the ue to a loose cable or low battery. If you continue to have problems after the Data Recorder memory has been erased, contact Timex Customer Service.

In my case, I had a fresh set of batteries in the GPS pod, the HRM strap, and in the data recorder, so that wasn’t the problem. The Timex software provides a raw data dump utility, which I used to save a copy of the bits with. This takes the binary data directly from the data recorder memory without attempting any processing, and always seems to work uneventfully, even when the software otherwise complains.

I spent an evening searching online for a fix with no luck, and also spoke with Timex service on the phone, also with no luck, so I’m left with the data and some curiosity.

Here’s are some bits for anyone who wants to play along at home:

Data dump from the 2004 Big Sur Marathon: eeprom-timex-040425.bin (46KB) and eeprom-timex-040425.txt 143KB)
This is around 5 hours of HRM plus GPS data, with the time stamp probably incorrect because I don’t recall resetting it after changing the data recorder battery.

Here’s another data dump of a 75 minute HRM + GPS run: eeprom-timex-040516.bin (12KB) and eeprom-timex-040516.txt (37KB)

This run was around 75 minutes, 7.5 miles, and came after giving up on a useful response from Timex Customer Support, and resetting the data recorder using the recessed silver button on the back of the unit. This time I remembered to set the time after resetting the unit.

Here’s a data dump of a HRM-only run: eeprom-timex-040517.bin (3KB), eeprom-timex-040517.txt (9KB)

This run was a 70 minute treadmill hill interval session. There’s only one session in the recorder, as the previous session was cleared.

Now let’s have a look at the data. Here’s the top of the HRM-only session:

80 01 00 94 0B 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 11 03 0C 10 04 04 63 65 65 65 68 6A 6A 68 69
69 68 6B 6C 6B 6A 68 67 66 6B 68 69 69 6B 6C 6E
6F 6E 6E 6E 6E 6F 70 70 6F 70 6F 6F 6F 6C 6D 6D
6C 6D 6D 6C 6B 68 66 66 67 68 68 68 68 67 68 67
66 67 68 68 68 68 6A 6B 68 68 68 68 67 68 68 68
69 68 67 67 65 66 66 67 67 64 64 64 65 64 64 64
66 6B 6B 6B 68 68 68 67 67 64 64 64 65 65 65 66
66 63 63 63 67 68 65 67 67 65 65 65 64 64 64 65
64 62 62 62 63 62 62 63 63 62 63 62 63 63 63 66
65 64 63 63 63 63 63 62 64 64 6B 6C 6D 6E 70 72
72 72 72 72 72 72 72 73 74 75 75 76 76 76 76 77
77 77 79 79 7A 79 77 77 77 78 79 79 79 79 79 77
77 79 79 79 7A 7A 7A 7C 7C 7C 7C 7C 7D 7D 7D 7E
7D 7E 7E 7E 7F 7F 7E 7E 7E 80 7F 7F 7F 7F 80 7E
7E 7D 7E 7D 7D 7D 7E 7F 7F 7F 7F 80 7F 7F 7F 7E
7F 7D 7D 7B 7C 7D 7E 7E 80 81 81 83 83 83 83 82

Here’s how to read the heart rate data dump:

The first 240 bytes contains directory header info for all sessions in the recorder memory.

The first 2 bytes contain the magic number

80 01

Each subsequent 3 bytes contain the offset in bytes to the end of the Nth data session.
In this case we have

00 94 0b

After byteswapping to

00 0b 94

this works out to 2964, which is the length of the binary dump. If there were a second data session logged, it would start at offset 2964 from the top of memory.

Now let’s look at the actual session data. The first 240 bytes appear to be reserved for storing the session offsets. The beginning of interesting data looks like this:

00 11 03 0C 10 04 04 63 65 65 65 68 6A 6A 68 69 

The first few heart rate entries that turn up in Timex Trainer for this session are

99,101,101,101,104,106,106,104,105,105,104

In hex, this would be

63,65,65,65,68,6A,6A,68,69,69,68

So it looks like there’s a 7 byte session header. This is probably just a serialized internal data structure from the Timex Trainer software, which appears to be built with Visual Basic for the GUI, and a DLL to handle device functions, probably written in C.

From looking at various headers, here’s how to read the session header:

00 11 03 0C 10 04 04

00 = heart rate data only
11 hex = 17 decimal = seconds
03 hex = 03 decimal = minutes
0C hex = 12 decimal = hours
10 hex = 16 decimal = day
04 hex = 04 decimal = month (0 = January)
04 hex = 04 decimal = year (0 = 2000)

So this session starts at 12:03:17 on May 16, 2004.

After the heart rate data starts, there’s not much else going on here, since there’s no GPS records mixed in. Occasionally, we see something like this in the middle of the data:

59 59 59 59 60 60 60 61 00 00 00 00 00 00 54 00
00 00 00 00 00 04 66 65 66 69 68 68 67 68 00 6B 

I think the recorder just fills in zeros when it doesn’t have a valid input.

At the end of the heart rate data session, we again see a 7 byte trailing record.

00 31 1C 0D 10 04 04

Not so sure about this part, but the

04 04

seems to turn up at the end of other data sessions.

At this point, you should now be able to reliably extract heart rate data from the raw data dump provided by the Timex Bodylink data recorder.

The next post in this series will look at the GPS-based speed and distance data.

See also: Hacking the Timex Bodylink – Part 1

Hacking the Timex Bodylink – Part 1

I have used various heart rate monitors and GPS-based distance measuring systems as part of my running in the past. A couple of years ago, I wore a Timex Bodylink HRM and GPS system, with the data recorder, during the Big Sur Marathon. Since I’m a bit of a data junkie, I wanted to compare the race data with my previously recorded training data.

Unfortunately, the Timex Trainer software choked while downloading the 4+ hours of data. It did let me download the raw data from the recorder, though. I was hoping that someone at Timex might be able to either parse the data or provide a specification so I could process the bits myself. Other than signing up as an OEM developer, there wasn’t much in the way of software support, and no useful response from Timex with regard to either recovering the data from the binary dump (eeprom.txt) or getting a specification.

I never got around to fully decoding the raw data dump format, but thought I would share my notes for anyone who is interested in picking this up. At present, I can read the session directory, and the heart rate data. The GPS data encoding is more complicated, and may use the native encoding from the GPS chipset used by the (Garmin-manufactured) Timex GPS pod (might be SIRF).

From viewing the Timex Trainer database (Microsoft Access format):

  • we can see that all HR data times are integer multiples of 2 seconds
  • no HR data times are recorded on odd seconds
  • HR records store prkey, sessionkey, cum_duration(int seconds), and HR
  • HR only session is session_type 0, GPS only is session_type 1, combined is session_type 20
  • all GPS data times are exact multiples of 3.57 seconds
  • GPS records store prkey, sessionkey, cum_duration(float seconds), speed, and cum_distance
  • minimum recorded distance is .001 miles
  • before that cum_distance is 0>
  • minimum recorded speed is 0.075
  • we see cases where speed is non zero and cum_distance is 0
  • we see cases where speed is zero and cum_distance is non-0

Dump header format (eeprom.bin / eeprom.txt)

  • 2 bytes = 80 01 magic number?
  • 3 byte offset to end of session N
  • repeated for each session.
  • 1st session starts at offset +240 from top of file.

Session header and trailer:

  • 1 byte = session type (0 = HRM, 0×22 = GPS, 0xFF = GPS+HRM)
  • 1 byte = seconds
  • 1 byte = minutes
  • 1 byte = hours (24 hour format)
  • 1 byte = day-1 (1st = 0)
  • 1 byte = month-1 (Jan = 0)
  • 1 byte = year-2000 (2004 = 4)

See also: Hacking the Timex Bodylink – Part 2

On Vacation, in London

IMG_2583 IMG_2582

Family travel is so much different than business travel on my own. Not necessarily better or worse, just different. Among other things, more luggage and logistics. My daughter’s passport renewal ran a bit late so we drove to the San Francisco passport office to pick it up in person, then left for the airport a few hours later.

The flight to London on United was totally full, but on time, and I was pleased to see that our luggage made it as well. It’s a bit sad that my expectations of air travel have gradually been reduced to the level where I’m now a little surprised to arrive uneventfully with luggage in hand.

We arrived in London just in time for a second round of bombings on the tube and bus system. We got on the Heathrow Express at 1:55pm and there were extra security people going through each compartment checking everyone out and matching luggage with passengers. At the time I thought this was just extra security following the bombings two weeks ago, but when we pulled into Paddington station, there was a sign indicating that the Underground was closed for the day. Apparently the entire system had been closed at 1:25pm after small explosions reported starting an hour earlier.

IMG_2587 IMG_2589

Outside, the taxi queue was predictably long, but moved quickly. At the hotel we checked the TV news for updates and were happy to hear that there were no deaths or serious injuries. Strangely, the hotel cable has CNN and Sky News, but the BBC channel wasn’t working yesterday. We’re staying at the edge of Belgravia and Knightsbridge.

IMG_2591 IMG_2600

Things around here look pretty normal, other than the tube entrance being roped off and the papers on the news stands reporting the bombings.

IMG_2609 IMG_2610

This morning I had an excellent run all around Hyde Park and Kensington Gardens. Ran past Royal Albert Hall, Kensington Palace, the Round Pond, Peter Pan, the Diana Memorial Fountain, lots of ducks, and various old flyers regarding Live 8. Only saw three other runners, It was early. I started out at 5am, having been up since 4. New pair of GT2100s, I think my latest aches and pains were from the last pair getting worn out. These really feel much better, plus there are great paved and dirt pathways in the park.

I also discovered it’s pretty hard to get coffee around here until at least 7 or 8am. Too many retail stores and designer boutiques, and not enough offices or something. Most of the cafes seem to open at 9am. A very nice shopkeeper down the street gave me a cup of coffee when I stuck my head in at 6:15am, she was preparing breakfast food, to open later at 7am. Apparently most of her customers are taxi drivers getting started for the day. Haven’t checked the state of public transport this morning, it may be a good day for mostly walking around.

Interesting to find myself thinking about checking for terror alerts in the same category as the weather forecast and traffic report.

Gmaps Pedometer

The Gmaps Pedometer is a great hack combining two of my current interests, running and map hacking.

I just tried entering a couple of routes that I run on regularly to compare the results from the Gmaps Pedometer with my logs from my Timex Bodylink GPS, and they’re pretty close. This seems like a relatively painless way to get approximate course distance without having to actually measure the course, assuming you remember where you ran.

update 2005-07-07 20:46 – looks like they may have exceeded the Google API 50k request limit, it’s complaining about the “Maps API key used on this web site was registered for a different web site”.

95 year old sets new record for 100m

95 year old Kozo Haraguchi sets 100m world record of 22.04 seconds
 
Awesome. I love reading about people like Kozo Haraguchi. Most people would feel pretty good just making it to 95. I hope I’m able to run at all when/if I live as long as this guy, who just set a record in the 95-99 year old male running bracket. Plugging his 22.04 second 100m time into McMillan’s equivalent pace calculator, he would be doing something like 92-second 400m or 7:28 miles or a 4:12 marathon, which is around what I did in my first marathon a couple of years ago.

From Sports Illustrated:

“It was the first time for me to run in the rain and as I was thinking to myself, ‘I mustn’t fall, I mustn’t fall,’ I made it across the goal,” Haraguchi told reporters.

Japanese media reports Monday said that Haraguchi had beaten the world record of 24.01 seconds for the 95 to 99 age group set by Hawaii-resident Erwin Jaskulski in May 1999.

updated 2005-08-07 11:57:27 to fix broken image link. This one’s from the Sydney Morning Herald.

Big Sur Marathon 2005


The Big Sur Marathon has a well-deserved reputation for being difficult, scenic, and well run. This is my second time at Big Sur, having run it last year (2004) as well. It’s my 3rd marathon overall, after starting as a novice runner in 2002. I’m continuing to build an aerobic base and improving my running mechanics, so each time out on the course is another experiment and learning experience.

During the past year I’ve maintained a base mileage of 45-55 miles per week, with no major injuries. I’ve regularly logged 13-16 mile runs during the past year, but have only gone up to 18 miles on this training cycle, vs the previous year where I put in four 20 mile runs and weekly hill intervals. From my training log paces and HR data I can see that I’m in better base condition than the previous year, but going in I’m uncertain about how things will hold up after 3 hours on the road.

Continue reading Big Sur Marathon 2005

Big Sur Marathon 2005 – Taper Time

Yogi Berra once said that “Baseball is 90 percent mental. The other half is physical”, which also applies well to marathons. It’s taper time, and we’re clearly working on the mental part of the game.

With seasonal allergies in full swing, I wake up feeling tired and groggy every morning, so it’s easy to be anxious about whether I’m in shape to run Big Sur, especially without the reassurance of completing a decent workout every day. This week I’ve been mostly doing short, easy 3-5 mile runs, vs the daily 9-13 mile runs I was getting in a few weeks ago, since part of the reason for tapering is to let the body recharge a bit. Unfortunately, while that’s good for the body, it’s tricky for the mental aspect of preparation. In my case, I know it can take up to an hour of easy running before I get comfortable, so between allergies and short runs, most of my workouts this week have left me feeling slightly uneasy. Today’s workout was a full hour, and felt awkward for the first 30 minutes but the last 3-4 miles clicked off cleanly at MP-to-LT paces, which makes me feel better for now.

Since I’m running less this week, I’m spending more time on planning. Today I’ve been debating which shoes to run in. I’m down to my last pair of Saucony Hurricane 5′s, which I have been alternating with the Asics GT-2100 for the past few months. The Hurricanes are a little heavier and provide more foot protection, and I’ve used them for thousands of miles of training, making them a safe choice. Unfortunately, they stopped making the 5′s over a year ago, I didn’t like the Hurricane 6, and haven’t had a chance to try the Hurricane 7′s yet. My current Hurricane 5′s are the last of the ones I stashed away when they were discontinued, and they’re at something like 300 miles, which is where I typically stop using them for long runs. They occasionally have some at Road Runner Sports, but not in my size lately.

The GT-2100′s have been working ok so far. They’re lighter than the Hurricanes, but aren’t “lightweight” like the New Balance NB900′s I got a while ago for shorter/faster workouts. I didn’t like the Kayano IX or the GT-2090 for some reason when I tried them a couple of years ago, but the GT-2100′s haven’t given me any discernable problems. My stride mechanics are substantially better, and I weigh less than when I started running, which makes the extra cushioning in the Hurricanes less critical now than back when I originally picked them. However, I can definitely tell that the GT-2100′s are less “cushy” after 13+ miles compared with the Hurricanes, not sure how they’ll feel after 26+. They feel a lot worse if my form gets sloppy, which is an incentive to pay attention.

I’m probably going with the GT-2100′s.

The Longest Mile

Just over a week left before the Big Sur Marathon, found this blog linked from the web site. Reading about these guys over at the the Monterey Herald makes me feel a little better about how this training cycle has been going.

The Longest Mile is an online diary following the triumphs and travails of Ken Ottmar and Jon Segal, two overweight, out-of-shape, newspaper desk jockeys training for the brutal Big Sur Marathon. Come and taste the pain.

Just looking at these guys makes my feet and knees ache. Hope they do ok next weekend, or at least avoid major injuries…

Update on Training for Big Sur 2005

Time for a followup. I received my “Last Minute Instructions” from the Big Sur Marathon today. It’s on April 24th, a little more than two weeks away, so it’s time to take inventory and start planning. One of the things I like about marathon training is that 26.2 miles is far enough to require a bit of humility and honesty about oneself. In a 5K or 10K there are many naturally athletic individuals who could muddle through the event without training properly.

In a marathon, any number of things can randomly go wrong during training and the actual race, but there’s also almost no way for someone to simply show up and finish the event without putting in the time on the road. You can’t fake your way through a marathon.

This training cycle hasn’t been terrible, but it could be going better. Compared with last year, I’m probably in better running condition. Given time and scenery, like in Maui a couple of weeks ago, I don’t seem to have any trouble knocking out 9-12 miles for a daily run. I also got through 18 miles out there in rain, wind, heat, and more rain with only one gel, after extending a planned 12 mile run.

I also noted that on Oahu, I was able to run the ascent on the Diamond Head loop with relative ease compared with last year. The ascent at Hurricane Point on the Big Sur course starts at mile 11 and is around 2 miles of 5% grade, with a bit of 6-7% near the end. Last year I recall that part as being easier to deal with than the smaller hills at around mile 22-23. I really need to go take a look at the course map and see where and how long those last few hills are.

Last year I felt better prepared, putting in 3 20-mile runs and weeks of hill and pace intervals. This year I’ve done some hill intervals and some pace intervals, no 20-mile runs, but lots of longer easy runs and a few longish LT runs, something like 30-60 minutes at 7:30 to 8:00 pace. I think I felt like I was working harder last year, partly because I was, but also partly because many of the scheduled runs were more difficult for me to complete last year. I used to routinely bring water and gels on any run over 6 miles last year, and this year I have only taken gels on runs over 10 miles, as I simply haven’t needed them.

My main concern is that I haven’t put in the really long runs this time around. Endurance training isn’t exactly something you can do at the last minute, either. On the plus side – I’ve done many more 10-16 mile runs than on the previous training cycle, and they have all gone far easier this year. On the minus side – I don’t have any current data on how my body will hold up beyond 3 hours, which is distracting.

I think I’m going to end up aiming for something like 8:45 to 9:00 pace for the beginning until I see how things are going. That’s well below what the pace predictor says I might be able to do, but I’m not planning to take much downtime after the marathon either. That would put me somewhere around 3:45 to 4:00 hours at the finish. Assuming the weather cooperates.

Thoughts on signing up for Big Sur Marathon 2005

I just got e-mail confirming my registration for this year’s Big Sur Marathon on April 24th. Had been putting off signing up for a few weeks now, debating whether to run it again or to try something different in the spring, or to hold off until the fall.

The course is beautiful, and we always enjoy spending time in the Monterey/Carmel area. On the other hand, it’s a famously hilly course, so I have no expectations of going particularly fast. I have been making slow, but steady, improvements to my endurance and pace, and am gradually getting within theoretical range of a Boston Marathon-qualifying time. “Theoretical” meaning that the various equivalent race-pace calculators such as McMillan Running indicate that I might be able to hit a 3:20 marathon time, based on my current 10K time, provided that I complete adequate preparation and training.

A 3:20 finish requires an average 7:40 pace. At the moment I think I could probably hit 8:00 pace on a flat course. At Big Sur, I’m probably looking at something like 8:30 to 9:00 pace, since it’s hilly and I’m likely to aim for a more conservative/comfortable run than an all-out effort. Depending on how things go in the spring, though, I might be in position to train for something flat and faster in the fall.

In another 3 years I will be in the next age bracket for qualifying, so I would only need to hit 3:30, which seems pretty likely, assuming that I stay mostly injury-free.