The power of “ouch”…

March 25, 2010 at 12:06 pm

From my bicycle blog…

Three of them

Triathlon report

September 26, 2008 at 6:15 pm

For your “enjoyment”, a report on the Triathlon I did last Sunday…

7 hills (+4) and 29 undulations of Kirkland, 2007 edition

May 29, 2007 at 12:08 am

Today I did my first hard ride of the year, the 11-hill version 58-mile “metric century” 7 hills ride. Last year I did CTS training, and while it did great for my aerobic endurance, I didn’t think it had enough strength work or interval work. This year I’ve been spending more time pushing bigger gears, and have been doing the majority of my rides on my middle chainring (rather than the tiny one). I’ve also done some core work, and am starting to do some specific climbing workouts.

Looking back at my HR data from last year, I averaged 13.8 MPH for 46 miles with 2900 feet of elevation gain (which included a quick ride to the start and a pretty slow ride home afterwards). This year, I averaged 15.3 MPH for 59 miles with 4125 feel of elevation gain.

That’s a pretty significant improvement, though some of it also came from climbing at a cadence of around 85 RPM vs the 100 RPM that I was targetting last year. The lower cadence seems to allow me to work out at a higher effort with less cardio load, which is good as long as your legs hold out, at which time you have to switch to spinning. Or you need to do it if your knees fall off.

The ride itself was very nice. A bit cold (49) in the morning, but overcast with a bit of sun and not too warm, with no wind. The ride was nicely run as usual, and it seems that it’s growing each year. Recommended if you like hills.

This too will come to pass…

May 14, 2007 at 9:20 pm

This year, I got into RAMROD (though it should more correctly be named “Ride on the Eastside of Mount Rainier in One Day because the roads are washed out” – I guess ROTEMROD isn’t terribly catchy…), which features (among other things) a climb up Sunrise. Sunrise being a small visitor center on the east flank of Mount Rainier, a great place to visit, so much nicer (and sometimes less crowded) than Paradise on the south side. If you look at the page on the climb, you’ll see that it’s about 3000 feet of climbing, which is something I haven’t done yet.

So, given that I’m off this week between jobs, I spent the night at my ski place in Skykomish, and rode up Stevens Pass, which is very similar to Sunrise. I started at the Skykomish city park on the north side of the river, headed across the tracks to ride old cascade road to where it met highway 2, and then up and up to the summit. The weather was bright sunny, and about 45 degree at the start.

The first 6 miles is a warmup. There are a few bridges where you need to look for a break in traffic, and a bit where there’s not a lot of shoulder. There are also some steep parts and some flat parts (and one pseudo-flat part…). Given how often I’ve driven this route (easily in the hundreds of times), I was struck by how different it is at 11 MPH. You’re near the river for the bulk of the time, and the sound of rushing water is never far away. It’s really pretty and the light traffic didn’t really detract from the experience.

Things start getting steep at Deception falls (a nice stop when you’re in the area), and once you get to Glacier, you leave the river and the railroad behind and just climb. The shoulders from there on all the way up are great, and the road is two lanes the whole way, so there are few traffic worries (though the large trucks laboring up the hill at 25 MPH do get your attention).

I settled in and did the remainder of the climb at around 7.5 MPH, with my HR somewhere in the 130s, which was fairly comfortable from a HR perspective but not really from a leg perspective. Though the temp was in the mid 40s, I had to take of my jacket off to stay cool enough, even in the shade. The last mile or so was enhanced with a nice 10 MPH headwind coming from the east.

At the top, I sat down on the 6-pack chair next to the granite peaks lodge (that Stevens bought someplace surplus, since they don’t have any 6-person lifts), and rested while looking around. If you were willing to do some hiking, you could still ski skyline top to bottom with only a couple of bare spots.


16.1 miles
Average speed: 9.3 MPH
Average HR: 137 BPM
Elevation Gain: 3175 feet

Steep part:

9.5 miles
Average speed: 7.7 MPH
Average HR: 142 BPM
Elevation Gain: 2680 feet

After 20 minutes of rest, I put on my jacket and headed down. I did the steep part in 19 minutes, at an average speed of 31 MPH (would have been faster, but I had to slow down for hairpin because the pavement is really torn up). The total descent took 36 minutes, averaging 26 MPH.

Overall it was a nice ride. I’d definitely recommend a weekday rather than a weekend.

Cycling 2006 and 2007

December 28, 2006 at 7:54 pm

I spent some time playing around with my Polar Software to get some summaries for the last year. Here’s some data.

2006 Cycling Summary

Distance: 2540 miles
Elevation Gain: 109,259 ft
Average Speed: 14.8 mph
Calories: 113,615
Time: 181 hours
Heart Beats: 1,308,687

I’d expected to hit 3000 miles, but the early winter meant that I haven’t been out much in the last two months. I don’t have a sensor on my rain bike, so any time I spent on that bike (in the rain or on the trainer) doesn’t show up as distance, though there is HR data for some. That might add a couple of hundred more miles to the total. I’m not sure how much I trust the calorie estimate.


I did the following organized rides this year:

I had done the first two before. The last three were all tough, but the mountain populaire was the toughest. I had planned to do RAMROD, but when I didn’t get a place through the lottery I used that as a reason not to do it, though I very likely could have gotten a ticket from somebody else. I’ll try again next year.

I had a nice time riding this year, and managed to take about 15 pounds off my 6’2″ frame. I’m down from about 177 to 162 (though back to 166 after a few weeks of holiday eating…). I still have a little bit of fat around my middle, but not much. That put me back into the same size Levis I wore when I was in college. My wife now says I have no butt.


I’m not sure yet what my plans are for 2007, but I do have a few thoughts…

  • I’m going to work on my core strength.
  • I’m probably going to get a coach to design a training plan for me.
  • I’ll try to do RAMROD (really try) this year.
  • I might do another biking vacation with the family, perhaps to the San Juans
  • I may do STP again (or perhaps not…). If I do it will be a one-day variant
  • I might ride RSVP with my 13-year-old daughter, if she’s up to it
  • I’m probably going to take a track racing class


Studious sloth

October 2, 2006 at 1:46 pm

Yesterday, I had the chance to go on the Kitsap Kolor Klassic (really, the Kitsap Color Classic), but I didn’t.

Excuses were proffered and accepted. I was tired from all the rides I’d done. I needed to work on my deck. I had family committments. All were good.

But in truth, I just didn’t feel like a long ride. So, I went out on a short ride (about 30 miles), and 12 miles into it, my bike converted itself from a 30-speed to a 2-speed through a break in my rear shifter cable (right at the shift lever). And since you can’t run a chain from the small chainwheel to the small sprocket in the back without a lot of mechanical pain (and risk of chain break), neither of the gears I had were of much use.

A quick look around showed that Richard Dean Anderson was nowhere in sight, so I jury-rigged the shift cable. Here’s what you do:

  1. Shift the bike onto the largest sprocket by pushing the derailuer by hand (watch out for the point parts)
  2. Bend the cable in half sharply in the middle of the exposed section on the downtube.
  3. Tie the bent cable into a single knot. This gives you a loop tied into the cable.
  4. Loop the remaining cable around the front attachment for the cable (where the cable comes out of the sheath from the shifter), back through the loop, and pull it tight.
  5. Wrap the cable around itself, put it back through the loop, and arrange it so it won’t perform minor surgery on your leg as you pedal.
  6. Ride. You may have to readjust it as you go.

Happy was I that this didn’t happen in the middle of a long supported ride. My laziness saved the day!

SIR Mountain Populaire 2006

September 24, 2006 at 8:11 pm

Today, I rode the Mountain Populaire 100K, put on by the Seattle International Randonneurs.

Randonneuring is a long-distance cycling discipline that originated in France (hence the name) way back in the 1800s. It’s organized around a series of rides known as “brevets”, which are pronounced exactly the way you would expect if you speak French. The goal is to finish a ride of a specific distance within a specific time limit. For example, the 200 km brevet typically has a an overall time to finish of 13:30, the 300 km a time limit of 20:00, and so on – all the way up to 75 hours for a 1000 km ride.

Given the length of most of the brevets, some clubs host “populaires”, which are shorter events for new riders for “introducing new riders to the ways of randonneuring”.

These rides are different from most organized rides in the following ways:

  • They are not supported. There are a few people who follow the group around, but there is no sag wagon, no mechanics, no food.
  • There are no dan henry’s – you need to follow the route sheet.
  • There are controls along the route. Some are manned, where somebody will sign your sheet. Some are unmanned, where you’ll need to answer a question to prove that you were there.
  • They’re typically much smaller.

Instead of doing a typical introduction, the folks at SIR decided to host a “Mountain Populaire”. Instead of doing a typical course, it’s a course with as much climbing as possible. (note that I’m assuming that SIR is different in this regard – it may be that all Populaires are like this).

In this case, the course packs 5480 feet of climbing into 110 km. The climbs are:

There is a claimed 8th hill, but I don’t recall exactly where.

So, how does this compare to the Summits of Bothell or 7 Hills? Well, 7 Hills has a lot of climbing, but only seminary hill and winery hill are really challenging. Summits of Bothell has a lot of steep climbs, but most of them aren’t very long. And they’re both in the 40ish mile range.

This ride is 69 miles, and while it does have a couple of fairly easy climbs – 164th and Tiger mountain – it starts out with a 1000′ climb, and then finishes with a 700′ climb, both of which have slopes in excess of 15%. My legs were certainly tired when I got to Mountain Park, but I had to tack back and forth to make it to the top (I was not the only one).

Definitely the hardest ride I’ve been on, and a nice way to end the season. Beautiful day, and a nice group to ride with.


Summits of Bothell 2006

August 28, 2006 at 12:08 pm

Yesterday I rode the Summits of Bothell. Like its more popular cousin to the south, S (I’m not a big fan of “cute” acronyms so I’m not going to use it…) is a ride focused around hills, originally 7 but now 8 in a bid to outdo the competition.

Their other bid to outdo the competition is in steepness. The advertisement sheet says two very troubling things. The first is an offhand comment about equipment:

Triple cranks and <24″ low gear highly recommended as well as beefy brakes

24″ refers to “gear inches”, a measure of how far your bike moves forward for each pedal revolution. An average “riding on the flat” gearing for me is something like a 42-17 (teeth on the front/teeth on the rear), which is about 67 gear inches. My lowest gear (with my 12-27 rear cassette), is 30 gear inches. 24 gear inches is very low.

The second comment is a list of the hills:

Ascents – 14% (2), 16% (3), 18% (1).

Though I run a site for bicycle climbs, I am not a climbing specialist. But I have done some steep stuff. 10% is steep. 15% is painfully steep, and above that is just crazy.

But I’ve survived the Zoo multiple times, so I know what it takes to get up those kinds of hills. And I’m doing the Mountain 100 km Populaire in September, which includes the zoo (and other such climbs), so I need the practice at the steeps.

In other words, my strategy is sound.

My tactical decisions, however, are fairly suspect. I’m riding with a few friends, but what I’ve forgotten is that rides like this are self-selecting – the people that show up are the ones that can *climb*. I have at least 25 pounds on all of these guys, and at 170 pounds on my 6’2″ frame, I’m not carrying a lot of weight.

Franklin doesn’t ride that much more than me, but is strong on the flats and fast up the hills. He “went on a long run” yesterday.

Steve is riding his steel Colnago. Steve is scary fit – on our group rides, he’ll just be talking to you at the bottom of a climb near the back of the group, and then he’ll just ride past everybody on the ascent. He “rode 120 miles” yesterday. That is not a good sign, it’s a sign that I’m out of my league. Anybody who rides 120 miles on Saturday and then shows up for a pain-fest on Sunday is to be watched.

And finally, we have Joe. Joe has focused in on the ride guarantee – “If not completely satisfied, you can ride the course a second time for FREE!

He is planning on taking them up on that.

The start is very low key. A sign-in table, where you get a map (this is the 2005 map, and doesn’t show the 8th hill up Hollyhills drive) and a T-shirt (included in the $25 fee). Some water and sports drink, and that’s about it. And there are only about 20 people milling around. A nice change from the 3000 people that do flying wheels and the 9000 that do STP.

We head out to the first hill (Hollyhills), and ride up it. I start slow at the bottom, but stay about 10 seconds behind the group. It’s fairly easy – 7%-8%, and I can compete on those grades. The group crests the top, circles once as I crest, and we descend down. One down.

The second hill (Bloomberg) is a different story. It starts at around 10%, the group gaps me, and then it kicks up to about 13%, and the gap grows. And then it gets steep – 16% (ish) for the last half block.

At this point, I part ways with the group. This is a very good thing – I killed myself on the southern cousin by trying to stay with this same group.

The next three hills – Beckstrom, Nike, and Westhill – blend together. They’re steep, I ride up them trying to keep my HR in the low 150s. The day is perfect, and I talk to the very few riders I run into as we ride between hills.

Which takes us to Finn Hill. I’ve climbed this hill a few times, but never in this direction. This hills is probably the steepest one of the ride. I ride slow (around 4MPH), but manage to get up it in one piece without having to tack back and forth across the hill. This is the only place I see people walking.

Norway hill is next, but it’s Norway from the South side, the easy way up, then Brickyard Road, and back to the finish, my finish-line ice cream, and my Costco cookie.

I don’t have my full stats, but I do know my average speed was 13.4 MPH. There are no real flats on this ride, and there are a lot of stop signs and traffic lights, so don’t expect to be pace-lining it.

Discounting the considerable amount of pain involved in the climbs, this was a very enjoyable ride – I liked it more than its smaller cousin. Very low key – the rest stops were very tiny but with great volunteers, cold water and the right food. And they had some cookies at the end of the ride, when you really want something solid. The course markings were all great.

I do have one small complaint with the signage. When I’m climbing, it’s nice to know how to mashall my effort, and to do that I need to know when the pain will end. On several of the climbs, you’ll finish the really steep section, and then ride at least half a mile on gentle slopes or rolling terrain to get to the “summit”. Delaying the signage until that point diminishes the feeling of accomplishment at finishing the steep section, and makes you think there’s more steep. I think Norway is the only exception, where the climb finishes right at the top.

It also makes the stats seem weird. Bloomberg hill is 440′ high at the true summit, but the climb distance is perhaps 7000 feet, giving it a gradient of only about 6%. But the section on 240th gains 230 feet in 1770 feet, putting it right at 13%, and that’s the average for that section, not the max.

It would be nice to have an indication of the steeps on the map (perhaps with some beads of sweat on the route), and a sign that says, “Pain lessens” at the end of each steep section.

I was going to suggest that they get a real website, but that would encourage more riders to participate…

STP 2006 – one day

July 12, 2006 at 11:46 pm

T- 2.5 days:

It’s the Wednesday before STP. STP is the biggest cycling event in the Seattle area, in which 9000 riders will leave from Seattle, hoping to reach Portland under their own power.

Most will ride 100-125 miles on Saturday, and then finish the remainder of the 204.5 mile route on Sunday. About 20% will leave slightly before sunrise on Saturday, hoping to reach Portland before dark. They plan to spend 10, 12, or even 15 hours in the saddle.

They are, by any reasonable measure, more than a little disturbed.

I am one of those riders.

Of course, cycling is a pasttime of relative insanity.

The casual rider feels sane because he knows “crazy people” who ride 50 miles at a time. The 50-mile-rider feels sane because he knows “crazy people” who ride single day double centuries.

A good indication of the relative insanity of the STP one-day riders is the universal reaction from riders who are thinking of doing it. Their reaction isn’t, “wow, that’s a long day”, or “I wonder if I can make it?”. Nearly universally, their reaction is, “4:45AM starting time? That’s crazy…”

I feel sane because of these people. And they feel sane because of these people, who are crazy enough that they don’t care about their sanity. Which is good, because they are at the top of the pyramid.

T-1.5 days:

Tonight I spent some time getting my stuff together. Here is my list (well, lists, actually – there’s one for my backpack (going on a truck, a second (carried by me) , and one of things to do before I leave.


  • Helmet (Giro Pneumo, red/white)
  • Gloves (Pearl Izumi, very gamey)
  • Sunglasses (Bolle)
  • Sunscreen (Coppertone sport 30)
  • Headband (Voler)
  • Shoes (Nike)
  • Camelback (70 oz)
  • 10x Accelerade
  • 4 Clif bars (Chocolate brownie, the only worthwhile flavor)
  • 4 Clif bloks (“Cliff” and “Block” are two words that we can’t spell…)(Cran-Raspberry)
  • Heart Rate Monitor (Polar 720i)
  • Jerky x 2 (1100 mg sodium per serving)
  • Phone (Nokia)
  • Extra tube (Continenta)
  • Jersey (Cannondale) with number already on it. Racers crumple theirs so that they don’t rustle in the wind. You can do this as well, but note that if you wear a camelback over the top, it sort of ruins the effect.


To do:

  • Parking pass in truck
  • Bike with number in truck. STP gives you a number card (approximately 85″ x 32″) to go on the front of your bike so that the event photographer can identify you. They also give you a small adhesive label with the number to put on your helmet. Some people put the number tag inside the front of their frame, which identifies the bike but not the riders. The photo proofs aren’t big enough to tell what I look like, so I forgo the card and put the adhesive label on the bike.

T- 6 hours, 45 minutes:

This happens at 8PM on Friday night, where I head to bed. I manage to get some quasi-sleep between worrying whether I’ll hear my alarm.


Federal regulations prevent my from actually telling you when I got up, but you can calculate it from the previous entry. I get up, eat a clif bar, have a glass of accelerade (you really need the sugar when you start off early), put in my contacts, and then put on my clothes.

Which brings us to a delicate topic. Chafing is an issue for some riders on long-distance riders. To get around it, you use what is known as “Chamois creme” on the pad inside your shorts (and on the complementary parts of your anatomy) to address the issue. The one I use is known as “Chamois Butt’r” (yes, those cyclists have such a sense of humor). Other cyclists use Bag Balm (Made in Vermont since 1899, for udder care. If you’re childless, you undoubtably find this pretty weird. If you’re a parent who used it on diaper rash, you’re nodding your head). Some of the pros use a creme from Assos, though I avoid it because a) it has menthol in it, which seems like the wrong choice for such an application, and 2) they don’t use cyclists in their ads.

That task completed, I pull on my underarmour base layer (very nice in the heat), and my jersey.

I then put on sunscreen, which is arguably one of the strangest things to do in the middle of the night.

I then leave to pick up F. at his house in Redmond. We get there, load his bike, and I realize I left both my water bottles in the fridge. Back to my house, pick up the bottles, and fly over to UW to the start. Meet up with S., who was also going to ride with us. Drop our bags in the portland van (there are other vans stopping at other places for the two-day riders).

Wait at the start for them to re-open the start (they have to start in waves), and roll through the gate at 5:00 AM.

(All times are ride times, not counting stops)

Mile 1

There’s a steady “tick, tick, tick” as I pedal. I look down, and see that my cadence sensor is hitting my crank. Reach down and move it, but it starts ticking again. Not really a recommended maneuver when you’re riding in a group. Finally stop, and realize that the tabs on the bottom of my carbon fiber bottle cage have broken, and the bottle is sitting on the sensor. Sensor finally gets caught and bent under. No more tick, no more cadence, but I can do without it.

Mile 24: 1:20

We stop at the REI headquarters stop for a nature break. I go to the water station. Fill up the bottle halfway, add in my accelerade powder, shake, top off with water, put on lid. Taste.


REI is on of the pre-eminent outdoor retailers in the world. Cascade is one of the best cycling clubs around. But neither of them know that:

  1. Garden hoses – especially new garden hoses – have lots of plasticizers in them. Not ones that you should be drinking.
  2. You can get hoses that are drinking water safe. They aren’t even that expensive.

If they did, I wouldn’t be drinking a bottle filled with parking lot runoff.

Mile 43.3: 2:24

“The Hill”

Okay, so it’s a bit steep, but if my polar data is right, it’s only a little over 200 feet. Not really a hill in my book. Wouldn’t be in the top 3 on flying wheels.

Mile 60?

So far, we’ve spent most of your time in pacelines. It’s hard not to with this many riders – you will catch up with people and join their line, or if not, you’ll be at the front of another group.

But the problem with the these pacelines is that most of the people aren’t experienced, so the pace wavers up and back, which makes it hard to ride in.

But about this time, we hook up with an organized group, all wearing Vitamin Water jerseys. There are about 6 of them, they rotate every 2 minutes, and – most importantly – they pull a very steady pace. We ride with them for about 2 hours. It is wonderful.

Mile 100: 5:27

The first century ends in Centralia. Many two-day riders stop here. They have a food stop for the one-day riders, but inexplicably all they have is fruit. For somebody who has been eating clif bars, clif bloks, and accelerade, fruit is not high on my list. I have some jerky, and after about 20 minutes, we set out on our second century.

I should note here that 5:27 is the fastest century I’ve done.

Mile 113.4: 6:09

We reach Napavine, WA. Not really noteworthy, except for the fact that they have closed one of their streets for a festival. The street we’d like to ride on. There’s nothing going on on the street, but the officials make us ride very slow for 1/2 mile, and then walk our bikes for 1/8 mile. Nobody knows why, but it slows us down a bunch. It takes us 9 minutes to go 1 mile.

While waiting for a train, I notice two things:

  1. My head hurts
  2. My stomach doesn’t feel good
  3. I don’t feel like eating anything sweet.

This bad. If I don’t eat enough, I’ll run out of carbs and bonk. But at this point, there’s not much I can do about it, so we ride on.

I’m having trouble staying in the pacelines. Like driving in rush hour, small changes in speed up front amplify towards the back, and you spend time alternatively riding hard to close a gap and coasting (or feathering your brakes). Doing that is making me feel worse.

I send another text message to my wife. Usually I just send her the mileage, but this time I tell her that I’m looking for the grupetto. (Sorry about the translated page, but I can’t find a good page in English.)

Mile 128: 7:03

Another stop. Feeling about the same (not good). I’m still not able to drink much accelerade, as it makes my stomach worse. I try to drink more water, which I can tolerate in small quantities.

Mile 140: 7:45

This stop is at Castle Rock High School. I pull off to the side and lay down in the shade of a tree. F and S are concerned. I’m *concerned*, because I still have at least 4 hours of riding left.

After a few minutes, I wander over to the school to experience the wonder that is indoor plumbing, and to buy a peanut butter sandwich and some cold water. This tastes pretty good. On the way back to the shade I pass more than one rider sleeping on the lawn.

When we start riding again, I’m riding behind my friends at my own pace. I look back at one point, and there are two riders drafting behind me. They pull in front, I slide behind, and we pull up to F and S, and now our group is 5.

And I feel sick again.

Turns out that as long as I set the pace, I don’t feel as bad. “Put the sick guy at the front” isn’t the most logical approach, but it works, and I ride either at the front of our group or behind our group.

My legs feel fine. If I keep spinning at around 100 RPM and keep my HR between 110 and 120 (maybe 140 on climbs), things go pretty well. Thank god for the tailwind.

Mile 152.8: 8:27

We take the Lewis & Clark bridge (named after Lewis & Clark, a college in Portland) across the Columbia. I tell S that I may starting singing “Roll on Columbia” on the crossing, but the climb is fairly steep, and while I can remember “Your power is turning our darkness to dawn, so roll on, Columbia, roll on”, I can’t remember any of the seven verses.

On the way down to the Oregon side, the rider in front of my brakes suddenly before an expansion joint, I shout “slowing”, hit the brakes, and hope that the people behind me don’t hit me. That’s not the kind of thing you want to do after 8 1/2 hours on a bike, but everybody else is paying attention, and we get into Oregon fine.

And we still have 50 miles left to ride. Bastards.

I ride on at a steady pace. S and F either lag behind a bit, or ride up in front.

Somewhere around mile 170, F disappears ahead of me. That’s fine – I know that I’m holding both of them up, and while I’m having no fun at all, I’m sure that I’ll finish.

Mile 189: 10:43

I have half a bagel and some pretzels, and dunk my head in water. That helps

Soon after the last stop at 189, S pulls off as well. I ride on, still feeling the same, but thanks to my training, my legs still feel fine. If my head and stomach were okay, this wouldn’t be that bad.

Mile 204.5: 11:46

The finish line celebration. As you pull through on the path, people cheer for you, and you get a “one-day finisher” patch.

I run into F and his mother as I wander around. I go to the adjacent hotel, grab my backpack, and ride to my hotel.

I check in, go to my room (two floor up is hard to climb), and collapse on the bed. My plan had been to take a shower and go out for some food, but it’s all I can do to call my wife, take a shower, take out my contacts, and crawl into bed. My head hurts, and my stomach hurts. I drink as much water as I can (not much) and try to sleep.

I wake up at 12:30, still feeling crappy, drink a whole bottle of water, and then finally get some quality sleep. But I’m awake again at 7AM, miraculously feeling decent, and eat breakfast.

And then I ride 3 miles to the train station (on a very tender butt), and ride Amtrak back to Seattle.

What worked:

  • My training was good. My legs never ran out of steam, and I was always fine aerobically.
  • S and F were good companions
  • The support was pretty good, with the exception of the aforementioned parking lot runoff
  • Riding the train back was a nice way to get back.

What didn’t work very well:

  • I tried to get used to getting up early by getting up at 5 that week. That made me more tired than I thought.
  • In retrospect, I think the headache and stomach upset was sinus/allergy related. I don’t usually have problems in this area, but I think I had a touch of it at Flying Wheels. If I’d taken the right drugs, I would have done better. Southwestern Washington is a lot drier and dustier than Puget Sound.
  • I should have grabbed something real to eat at Centralia.
  • I should have planned for food fatigue. You can only eat the same food for so long.
  • Start pouring water on to cool off earlier.
  • If you stop drinking your energy drink, drink more water. Lots more water.


I’m surprised how short this list is:

  • 5 bottles accelerade
  • 2 clif bars
  • 2 bags clif bloks
  • 1/2 bagel
  • 1 peanut butter sandwich
  • One chicken-vegetable wrap thingy
  • 1/2 banana
  • 1/2 bag pretzels


  • 204.5 miles, 11:46, 17.4 MPH. Not bad for feeling crappy and having that walk in Napavine. Make it 11:40 @ 17.5 MPH without the Napawine slowdown.
  • 4422 calories (Polar estimate)
  • 86930 heartbeats
  • 123 BPM average heart rate
  • 3620 feet elevation gain.

Would I do it again? Well, it was absolutely the worst day I’ve ever spent on a bicycle, but if I didn’t feel so sick, I could see doing it again.

A close escape, and more on inappropriate cleverness

June 2, 2006 at 11:53 am

Monday I went on the 7 hills ride.

Wednesday night, I wrote a long and detailed post about it, and hit the “Post” button.

In a fit of editorial brilliance, my blog server chose that exact moment to experience a problem, and the post vanished into the ether.

Few will quarrel that that event was a net positive for western civilization as a whole.

So, here’s the short version.


Now, that that’s out of the way, there were a few comments on the 6th deadly sin post that I’d like to comment on:

(BobHy) “Inappropriate” is relative to time (as your first story illustrates) and point-of-view (“cui bono”).  Would you agree that cleverness which benefits the user who runs the code (efficiency) or the team who maintains it (maintainability) is appropriate?  And if the clever bits trade off one of these against the other, who gets to decide the direction?  

Inappropriate is obviously a value judgement. Who decides? Well, I do, since it was my post. In general, I’d expect that the team would decide, though in my experience there aren’t that many teams with the sort of culture that allows this.

But, yeah, I agree with this.

(BobHy) OTOH, even when we consider cleverness whose only benefit is to amuse its author, it’s fair to ask whether the author’s happiness is itself a benefit to the user community (“a happy programmer is a cooperative, bug-fixing programmer”) or to the team (“a happy programmer remains on the team and trains his/her successor”).  

An ancient Chinese programmer once said,

I pity the fool who has to maintain or extend the code of a programmer who wrote clever code because it made him happy.

I’ve experienced many cases where a developer writes code that is clever, moves on to another job, and then the people who have to deal with the code have to deal with that cleverness. My current team is dealing with this now, and it’s a big problem for us.

If you want to amuse yourself writing clever code, do it on your own time. But don’t make your team deal with it.

(BobHy) I’m beginning to think “inappropriate cleverness” may be a vacuous term. But there certainly is “incorrect” cleverness, where the claimed benefit of the design is refutable.

You are obviously not a long-term reader (assuming, for the sake of argument, that such a person exists) if you find the presence of a vacuous term in a post of *mine* surprising.

The difference between inappropriate and incorrect seems mostly one of semantics. I chose inappropriate because I think it’s more of a judgement call, while incorrect implies a black and white choice.

(Tomer) It’s funny, I keep running into arguments as to the pros and cons of the sort of “codespace-optimized” loops you mentioned. I’m actually very much for them – they’re usually used where the algorithm is very simple (for example, when writing to a frame buffer and adding a stride value to your target pointer) and tend to make the code “look” a lot more elegant.

I will confess to being somewhat of a code aesthete in my earlier days, looking for more compact expressions. I got started in that back when I was writing games in interpreted basic, and the size of your code could have a big impact on how fast your program ran.

Over the years, writing a lot of code and trying to understand other people’s code, I realized that the #1 most important feature of well-written code is clarity. And for me, the two most important facets of that are:

  1. Predictability (the code in method a looks like the code in method b)
  2. Simplicity

The world where for loops just do looping is a conceptual simplification over the world where they sometimes do additional things. In the first case, I read the for statement once, and then concentrate on the loop body. In the second case, I read the for statement, read the loop body, but have to remember that there’s something else going on that I have to go back and refer to later. When you write that, you’re making me work harder, when you simply could have put “j += stride;” as the last statement in the loop.

That’s why foreach is such a useful construct. It’s not that you type less. It’s that it’s conceptually simple – you know that there’s no funny business going on, and all you have to worry about is the loop body.

(Shahar) We used to have a dev in a previous company I worked at (circa 2000) who had his own special way of doing HRESULT-COM error checking..

Shahar goes on to detail what the practice was, which I agree is bad, but it’s a matter of degree, since all HRESULT handling techniques suck.


Most code is read far more times that it is written. Go read this post by Peter Hallam, one of the C# compiler devs.