Wednesday, March 30, 2011

prisoner puzzle

"I have a puzzle for you" my fellow passenger asked....

I was riding on the last northbound Caltrain baby bullet train out of Mountain View at 6:38 pm, the one I've been taking pretty much every day since starting my new job last October. If I leave any later, I start paying the price of riding trains which make more stops, get me home even later. This is the latest train I can take and have time to eat dinner, relax a bit, and get a solid night's sleep before catching the 6:11 am southbound the next morning. Long days, sure, but I'm having fun.

"A jailer has too many prisoners in his prison and needs to get rid of 100. So he gathers 100 prisoners in a room. In an adjacent room he puts 100 hats, each hat containing one of the names of the prisoners, in random order. One by one, prisoners are brought into the room with the hats where they can pick from up to 50 hats (half) to find their name. If they find their name in those 50 picks, they leave through a back door into a third room separate from the first. If all one hundred prisoners find their names within 50 guesses, they all go free. If even one prisoner is unable to find his name, they all die. What strategy can they follow to maximize their chances?"

I and another passenger were listening to this, and we came up with ideas which would slightly improve the prisoners' chances. But each prisoner was going to have only a 50-50 chance or slightly better to pick his number. For one hundred prisoners to succeed would be like flipping a coin a hundred times in a row and picking heads or tails every time. That's a one in 2100 chance, which binary fans recognize as approximately 100010, which basically means the prisoners have no chance at all.

Yet he insisted they did have a reasonable chance. I struggled. I squirmed. The other guy proposed the prisoners each legally change their names to the same name, so then each of them would have their name in every hat, assuring victory. But then the puzzler wasn't buying that one.

"Think of permutations" he said.

But I just wasn't seeing it. "Suppose they were to do the following", I said, then described an approach. I was going to continue, "that clearly wouldn't work" but I didn't get that far.

"Yes. That's the answer!" he said, then he gave me the mathematically basis for the solution, which involved group theory.

No way. Simply impossible. It just didn't make sense to me. You can quote group theory all you want, but it wasn't going to change reality.

So today I tested it. I wrote a little Perl code to set up the game, then follow that strategy. I was stunned. Sure enough, first time I ran it, they won. So I set up the code to run the game 100 thousand times. The prisoners won in 29919 of these 100 thousand trials (losing in 70081).

Now the key is the first guy goes into the room, and no matter what scheme he devises, he can do no better than 50%. He's picking 50 hats out of 100 and thus has a 50-50 chance to win. Then he can't communicate in any way with the second guy, since he goes into a third room and the jailer is able to restore the hats to their original condition after the first prisoner has left. Yet clearly the second prisoner now has a better than 50-50 chance, if the first prisoner succceded, then the third prisoner has a still better chance if the second succeeded. Here's a chart showing the number of times the Nth prisoner is the first to lose:

simulation results

In no case during the entire 100 thousand trials was any prisoner beyond the first twelve the first to fail.

So the reason the strategy works is it doesn't improve the chances of any one prisoner to succeed or fail. But it does mean if one fails, others will probably fail, and if one succeeds, others will likely succeed. By correlating results, my chances of succeeding with every prisoner increase, even if they don't increase for any given prisoner.

I won't describe the algorithm. That wouldn't be fair.

added As I lay in bed after submitting this post, suddenly everything gelled. It was crystal clear why the solution worked. There had been a few key points I'd missed. When I corrected those oversights, it seemed all so obvious.

Friday, March 25, 2011

VeloNews vs. Tour Magazine aero bike test: qualitative comparison

Earlier I reported on a Tour magazine windtunnel test of various "aero" mass-start road frames. Here was the plot from that magazine:

Tour magazine windtunnel data

Soon after, VeloNews, in its April edition, followed up with tests of its own on a set of its own "aero" bikes. You can read the article here, courtesy of Cervelo, which fared best in the VeloNews test.

It is curious to compare the two, because the conclusion which are drawn from the two tests are substantially different:

  • Tour used a dummy rider on each bike, using a hinged stem for handlebar placement, while VeloNews tested the bare bike
  • Tour omitted cables, a potential source of variability due to uncertain cutting and/or placement, while VeloNews included cables.
  • Tour omitted handlebar tape, while VeloNews used whatever tape was "stock" with the given bike.
  • Neither test used any waterbottles
  • VeloNews tested bikes with two sets of wheels: stock and Zipp 404s. Tour used a single set of Mavic Cosmic wheels.
  • Tour tested yaw angles of 0, ‒5, ‒10, and ‒20 degrees, while VeloNews tested more angles: ‒25 to +25 in 6.25 degree increments. Thus VeloNews didn't assume symmetry.

However such a test is done, there's going to be complaints that it was done wrong. It's way easier to critique experiments than actually conduct them. This is why I went away from experiments myself and into computer simulation. But I digress...

On the bottle issue: these are mass-start frames and mass-start frames are typically ridden with one or two bottles. The bottle has a big effect, because a bottle on the seattube will disrupt air ahead of the seat tube, while a downtube bottle will disrupt air which might otherwise have cleared an aerodynamically optimized down tube. In fact, the Litespeed Archon C1 was designed with the assumption a bottle would mounted on the downtube, so while it might fare less well than another frame without a bottle or cage, with the bottle in place it may do better. So the bottle-no bottle choice is significant. Best would be to test with both. But given only one test, a single bottle mounted to the downtube with a "typical" carbon cage cage would have been better (unless the frame comes with a specific cage). Two bottles, I feel, would be overkill, since it is quite plausible to race with one bottle, and often at the end of a race at "crunch time" only one bottle remains on the bike. And at the criteriums which constitute most of the races in the United States one bottle is the norm. So given the choice between three bikes, one better without a bottle (assumed overall fastest), one better with a single bottle, and the third best with two bottles (assumed slower than the best with one bottle), I take the one-bottle bike.

Tour clearly gets points for using a dummy. John Cobb showed, for example, that the incremental drag from a seat post is much different with a rider on the bike than without: without a rider, a bladed post may be best, while with a rider on the bike you want a wider post to fill on some of the gap between the rider's legs. One of the most prominent features of an "aero" bike is the seat post, and it's important a rider be on the bike to properly evaluate that. A real human would be best, but of course real humans can't be relied upon to hold a given position from one bike to another. So the dummy is the best solution. Cervelo, for example, specifically created a dummy of Dave Zabriskie, well known for his superb time trial position, for evaluating time trial frames. The principal downside of the dummy is it is, like the cables, another source of variability: the position will not be perfectly matched, and the articulated stem has drag which depends on its angle. Even a 1 mm difference in head and position could shift CdA by as much as 0.0004 m² (approximately 0.1% total wind drag), assuming incremental Cd of around 1 and a 40 cm shoulder width.

Next cables: I understand why Tour left the cables off. Cables move and their length isn't well defined. You could test a bike to high precision, swap out the cable housings, and then get a statistically significant difference. But cables are an important component of wind drag. Cylinders have a coefficient of drag of approximately 1. So, for example, 20 cm of 5 mm cable, perpendicular to the wind, have a CdA of 0.001 m². This compares to a typical CdA of 0.32 m² (taking the Tour result and adding 0.01 m² for a helmet). So this cable can be around 0.3% of total wind drag, closer to 1% of total bike drag (not counting the rider). If every bike had the same cable set-up, omitting cables would make sense, but aero frames usually have internally routed cables, and there are different strategies for cable entry. For example, the recently disclosed Specialized Verge is notable for its sloppy cables surrounding its carefully sculpted head tube. So points to VeloNews for including cables.

If you're going to use bar tape, use the same for each bike, preferably something minimal like Benotto. For example, the VeloNews article specifically notes the fat, padded handlebar tape on the Felt may have hurt its low-yaw performance. As I've discussed, low-yaw is the most common condition for the wind, so this may have a significant affect in how the Felt is evaluated. Handlebar tape is trivial to swap.

Not really addressed in these articles (at least from what I can tell; I don't read much German, although it's pretty easy to decode such words as "windkanaltest") is size selection. Different bikes follow different stack-reach trajectories. If the dummy is perfectly matched to the Cervelo, for example, it is unlikely any of the sizes of the other bikes will have the same stack & reach. So a decision would need to be made: do I pick the bike with the closest match in stack, the closest match in reach, or some combination? Or do I match something different, like effective top tube length or frame "size"? At some point I need to make a decision: which of two relatively similarly matched frames do I choose? Typically a larger frame will have more wind resistance than a smaller one, so this decision affects results.

Then there's yaw angle. Both magazines averaged over their tested yaws. Tour thus had an average yaw magnitude of 8.75 degrees. VeloNews, on the other hand, had an average of 13.9 degrees. I view Tour as more on target here. On the other hand, given the data, readers can make whatever weighting they prefer: no reason to blindly accept the magazine's numbers. Since VeloNews reported more yaw numbers, and reported yaw on both sides of the bike (not just one), points to VeloNews here.

VeloNews gets more points for testing both positive and negative yaw. Ironically, Tour was the one most in need of this, since they used a dummy, which was asymmeric by virtue of having one foot forward and the other back. But even on a naked bike with the drivetrain on one side and not the other, symmetry does not apply. For example, an aerodynamic crankset may help aerodynamics more with wind from one side than another, although none of the tested bikes used aerodynamic cranksets. A small error: when Tour plotted drag versus angle they fit splines through the data. Spline fits are characterized by a continuous derivative, but assumptions need to be made about the end points, for example a zero first derivative or zero second derivative. The fit chosen by Tour had a non-zero first derivative at zero yaw. Were the results symmetric, as assumed, this would result in an unrealistic slope discontinuity at zero yaw. So don't take the spline interpolation too seriously between 0 and 5 degrees of yaw.

Both magazines tested a control "non-aero" bike. Tour tested a Cannondale Ultimate System-6. VeloNews (as reported to WeightWeenies) tested a Masi Competizione with Fulcrum wheels (no Zipps). Both of these bikes are designed with fat tubes for optimal stiffness-to-weight, flaunting aerodynamics.

VeloNews then tested two sets of wheels: stock and Zipp 404 (except on their control bike, which was tested only with Fulcrums). Obviously using a fixed set of wheels is preferred: wheel and frame decisions are typically made independently. But VeloNews provides more data, showing the effect of wheel choice. More data is better, so points to VeloNews.

On the non-aero side, Tour did five bending tests: fork linear stiffness, fork torsional stiffness, fork vertical compliance ("comfort"), frame stiffness, and vertical frame compliance ("comfort"). Tour loves its bending tests. VeloNews did a single bending test: a torsional test emulating pedal loads, and for comfort and handling actually rode the bikes. The Tour test is quantitative, repeatable, and isn't affected by such things has handlebar tape selection (clearly a factor with the Felt, which had thick tape) or rider preference (in the VeloNews test, Ben Delaney Caley Fretz disagreed on the comfort of the Ridley). But then bike handling and comfort is not a linear combination of stiffness numbers: riding the bike is what it's all about, and on any stiffness component, it's been suggested there is an optimal value: more isn't always better. So I like the VeloNews approach here.

My interest is in the aerodynamics, however. So I'll focus on those numbers.

Wednesday, March 23, 2011

yaw angle : real world data?

So much for my 6.74 degree estimate....



Not that I'd want an aero frame in those conditions... like the guy on the Cervelo SLC who can barely keep his bike from going airborne.

Monday, March 21, 2011

riding into San Remo

This Saturday was Milan-San Remo, the "Prima Vera", a race considered by Italians to be their world championship. Like all of the "monuments" of cycling, it is an epic race, a grand journey which covers an enormous amount of terrain. And no professional race covers more: 298 km from Milan, to the Adriatic coast, then westward to San Remo.

When I was at Lake Como last September I had two days before my flight to Milan. I'd been thinking of going north to the Dolomites: the Stelvio, the Gavia. But there was snow in the hills, and no sign of the temperature poking its nose above zero. I needed an alternate plan.

bike on train
On the bike car, toward Genoa

So I decided to head southward. After some snafus at the train station, where I ended up buying two tickets by accident, then lost the relevant ticket and had to beg the stern conductor for forgiveness (funny: I take the train to work almost every day and have never forgotten my ticket there), I arrived in Genoa.


The next morning I boarded another train, to Savona. More of the trip was underground than above, which impressed me given the debate over burying high speed rail on the peninsula between San Francisco and San Jose. Cheap labor plus the ability to dig laterally into cliffs makes things happen. But eventually we arrived at my destination, which was to be the starting point for my journey westward, tracing the final, most famous portion of the Milan San Remo corsa.

Given how simple it should have been to begin my trip, I spent a surprising amount of time wandering the steets of Savona looking for an exit. Along the way I foudnd a very tasty pretzel, not what I expected to be eating in Italy. But finally I found the main road, numbered 1, along the coast, and set off retracing the steps of the greats of bike racing history.

Soon I had cleared the city and knew I must be going in the right direction, because the beach was on my left:

Beach southwest of Savonna

I was getting hungry, so stopped for a delicious panini at Bar Torino:

Bar Torino
Bar Torino

The thing I love about Italy is I can stop almost anywhere and get delicious, fresh food. In contrast, in the US, I need to pick my stops with care: the comparable place here would have sold greasy burgers and an over-sized serving of comparably greasy fries. But here: roasted vegetables on fresh-baked bread with recently-pressed olive oil. And on the television, the start of a Moto Grand Prix race. I ate slowly, watching the race, until it was time to move on.

The road was surprisingly flat, despite the hilly terrain near the coast. Suddenly, a peloton coming the opposite way:


It was some sort of sportif event, it seemed. The police had a rolling closure on the roadway, and I didn't hear a single complaint from any of the drivers who were held up. Cycling is an essential component of the history and culture of Italy and few there question the value such events have in their lives.

Eventually I climbed a gentle grade, something which back home, for example on Highway 1, would hardly have registered on the radar. But this was no ordinary gentle grade, it was one of the great "capi", the climbs which mark the crescendo of Milan San Remo:

Capo Berta
Capo Berta

I didn't stop for the pizza: the race was on!

Berta is the final capo along the main coast road. As the depth of talent in the pro peloton increased, the derailleurs reduced the sting of the climbs, the organizers began introducing a few scenic detours to the route to spice things up approaching the finish. The first of these two, final climbs is Cipressa.

From looking at the map I was afraid I'd miss it, or that I'd get lost along the way. As to missing it, not an issue:

Cipressa sign
to the Cipressa

Via Cipressa
start of the climb

and although the name of the road changes name several times toward the summit from the initial "Via Cipressa", as long as one keeps moving in the "obvious" direction upward, there is no getting lost. The road was in pristine condition, and the paint from past races left little doubt I was going the right direction:

climbing Cipressa
Climbing Cipressa

The descent following the church at the summit was surprisingly technical. I didn't come even close to approaching race speed. The big boys bomb down these roads at the limits of traction. The descent is actually more impressive than the climb, which was hardly a challenge at my tourist pace.

The Poggio was the next challenge... not so much to my legs, which could feel neither pain nor fatigue in my state of bliss at being on such a legendary cycling road, but to my impared navigational ability. Poggio, it turns out, is incredibly clearly marked. But along the way there were a few "candidates", of course unmarked, which attracted my attention. One of these I climbed a short distance, but the other turned into quite an impressive climb, ending in a recently developed residential pitch which had me glad for my 34/26. Nice view, however:

wrong turn
Wrong turn!

I returned to the coast road the way I had climbed and continued onward. It was a surprising distance from the Cipressa to the Poggio. It made all the more impressive the accomplishment of Clauddio Chiapucci when, in 1994, he attacked on the Cipressa, riding solo over the Poggio and to the finish in San Remo.

But eventually, after futilely trying to ask some locals for directions, I came across the sign marking the Poggio. "Poggio" it said, leaving no doubt of the way to go. Had I not worried so much and just ridden, I would have stayed on course without problem.

The climb of the Poggio was nothing short of a religeous experience. I didn't want to break the bliss by removing my camera, even: straight up and over. The climb was remarkably easy: big ring all the way except for a short bit where I downshifted for only a few seconds. Of course I was riding at less than 2/3 the speed of the pros last Saturday.

Then the descent. The descent where Sean Kelly famously overtook Marino Argentin to win in 1991. This was even more technical than the Cipressa descent, with switchbacks so tight, if you were to fall over the guardrail on the upper portion of road you'd land on the lower portion of road.

From the bottom there was a surprising distance to San Remo. I must have missed the finish line area. But after stopping for a snack:

snack time

I came across this, closer to the beach:

bike path
bike path

Then it was time to catch my train back to Genoa, then the next day pack my bike and catch a series of trains to a motel near Malpensa, from where I flew back to San Francisco.

Here's the Strava data from the ride:

I had the honor of defining these climbs on Strava. Hopefully more riders visiting this part of Italy will upload their data.

Sunday, March 20, 2011

2011 Ruota Libera

Today I checked out A Ruota Libera, a handbuilt bicycle show in San Francisco.

Unlike the North American Handbuilt Bicycle Show, which was in Austin this year, which is held in a large convention center, the San Francisco show was a modest affair held in a medium-sized pizzeria. Indeed most of the room was taken up by the line for free pizza. Despite this, I managed to see some bikes.

First up: a shout of "hi, Bruce!" had me look up to see a guy with a "Bruce Gordon" badge. Bruce Gordon, a legend of frame building, was standing next to his carbon fiber randonneur bike. Ti lugs, carbon tubes, carbon fenders, and a custom Ti front rack were topped off with SRAM Red components. The bike had been featured in the Autumn 2010 Bicycle Quarterly. The Ti lugs were masterful work: solid Ti had been machined down to thin lugs, with the Ti chips recycled. I'm not a big lug fan, but these were really impressive.

Bruce Gordon carbon fiber randonneur

Bruce Gordon Ti lugs

Then across the pizza line from Bruce Gordon was Steve Potts, one of the early players in the mountain bike game in Marin County. He was standing by a Ti mountain bike with S&S couplers, cable-actuated disk brakes, and flared drop handlebars. Cool. Jacquie Phelan won three consecutive national championships in the mid-'80's on a bike with drop bars, and John Tomac raced them successfully at the national level of mountain biking when he joined the 7-11 road team around 1990. Mountain bikes with drop bars get style points, I decided.

Steve Potts

A real highlight, however, was this blue Steelman:


Wow -- with Campy SuperRecord parts and tubular rims, this bike is still lighter than 90% of the carbon bikes you see at a typical group ride. Really, the weight difference between carbon and a fillet-brazed lightweight steel isn't that much: maybe 600 grams (assuming a typical painted carbon frame of around 1000 grams), less than 1% of total weight (including the rider). Unless weight is an absolute premium, even if the benefits of custom geometry and durability don't offset the small weight difference, the coolness factor does. And the blue color really had to be seen to be appreciated: it was vibrant without being gaudy.

And speaking of Jacquie Phelan.... there she was!

Jacquie Phelan

I was in awe. I asked her what advice she had for those thinking about doing a mountain bike race for the first time. "Ride single-speed", she said, as it's closest in spirit to the early days of mountain biking, and "keep a party attitude in a combat zone". Racing should be fun, she stressed, and she had been lucky that a side-effect of having fun was she tended to win. Her blog is here.

I was standing outside, almost ready to leave, when out rolled this:

Brett Horton's townie

It was Brett Horton's legendary town bike, built for his wife ("don't spend more than $500"). You can read about it on Cyclingnews. While not the bike I would choose from the show, the thing was an absolute masterpiece of craftsmanship, thanks in no small part to Phil Wood who contributed the hubs, crank, chainring, and laser-etched the chainguard... and probably more.

Brett Horton's townie

Then, finally, I had a quick chat with Steve Rex. He had a lugged bike at the show:

Steve Rex

Rex used to sponsor Alto Velo, my former club. He lives and rides in Sacramento, and was badly injured on the Sacramento River Ride in November 2008. He said he's still rehabbing his broken hip, although he's making frames full-time. I've met plenty of people with a Rex and every single one I asked about it said they loved it.

Wow -- what an amazing time for such a compact venue. And I never did get any of the pizza...

Saturday, March 19, 2011

Summerson's Guide to Climbing, Colorado Edition

I just got a copy of John Summerson's new book, the Guide to Climbing (by bike) in Colorado. It's not out yet, but I was very pleased John sent me an early copy.

I really like what he's doing with this series (web site here): small, compact guides to various cycling-friendly regions in the United States. First he did his national book, and that was perfect for learning about regions (among those covered in the book) that I'd not ridden in, or perhaps (like Colorado) had ridden in but had failed to appreciate due to the restricted route options of a large organized tour. But obviously a modest single book cannot come close to doing justice the the climbs in the full United States, and if I am going to be traveling in a specific region, say Colorado, why should I want to carry around a heavy guide which includes climbs in Vermont, North Carolina, Hawaii, and the entire Pacific coast?

These regional guides are perfect for that purpose. They're small, relatively light, and cover more climbs in their specific region than the national guide. And sometimes it's the smaller, off-the-beaten path climbs which are the real gems.

One thing I was pleased to see in this one was that the discrepency from earlier books between the climbing formula used in the text and the one used in ratings has been fixed. Now both agree: rating equals net average grade multiplied by vertical feet divided by 10. So, for example, a climb of 10% gaining 1000 vertical feet gets a rating of 1, or Old La Honda, which averages 7.3% for 1290 vertical feet, rates 0.94. This rating, I feel, does an excellent job of balancing the importance of simplicity and covering a range of possible riders in measuring the "quality" of a climb. Difficulty is another matter: riding 100 miles on the flat is probably harder than riding Old La Honda unless, for example, you're on a fixed gear bike with too large a gear. But 100 miles on the flat has no "quality" as a climb and therefore should by any rational climb rating system receive a zero. So given that, we agree more climbing at the same grade is better, and steeper at the same total climbing is better. While it could be argued a 6% climb is less than twice as hard/good as a 3%, and that a 20% climb is substantially more than twice as hard/good as a 10% climb, that's a gearing-specific judgement: a rider with a triple chainring or mountain bike double gear set might view the 20% climb at the same altitude gain as less than twice as hard as the 10% version. So this rating balances the needs of the diverse range of cyclists and their bicycles.

And the profiles have gotten better since the first book: just the right amount of detail. Instead of giving a highly detailed profile with grades extracted every few meters (what you get from an iBike) or too little detail with profiles averaged over each 500 meters or km (as was done in the Atlas des Cols series in France), John gives a range for each segment of the climb. That's good, since when I'm riding I always have difficulty processing too much data, anyway. Good to know what sort of grades I'll face in the short-term future without too much worry about the exact sequence in which I'll face them: that becomes fairly clear from my eyes, anyway.

Any cyclist who enjoys climbs and climbing should the national book and those for any regions in which he has specific interest. Even if a reader is inspired to climb one of the climbs described in the series, the whole investment is paid off.

Wednesday, March 16, 2011

Cervelo R5-CA geometry

The Cervelo R5-CA, Cervelo's $9000 carbon fiber frame for "experienced riders" who presumably want to ride with a lot of setback (I'm not sure if this is because of superior comfort on the bike or because of increased desire to "look pro") was designed with a 72 degree seat tube. The idea, claims Cervelo, is that the 72 degree seat tube run with a zero-setback post yields similar geometry as their canonical 73 degree seat tube run with a set-back post. Now I happen to like a zero-setback post even with my 74.5-degree seatpost. Obviously I'm not pro material. So those riding with a zero-setback post on Cervelo's 73 degree post seem to be left out of the priceless opportunity to buy this gem of a frame. Tragic: they're doomed to ride Old La Honda an extra 1.3 seconds slower than they could have by virtue of 100 extra grams.

Cervelo R5-CA in the wild. This one checks in at 5.03 kg, 26% below the UCI limit.

Or maybe this is overblown...

Here's a diagram of Cervelo of the R5-CA geometry. I've drawn a center line through the seat tube. You can clearly see it passes in front of the bottom bracket, as opposed to the R1, R2, R3, and R5 where the line passes through the bottom bracket center. From the diagram it appears the line passes 1 cm ahead of the bottom bracket along a horizontal line.

Cervelo diagram of the R5-CA. I drew the green line through the approximate seat tube center.

The relevant question, then, is if I put my saddle on an R5 with a 73-degree seat tube, move to an R5-CA with its modified seat tube, how much further back on the rails will I need to clamp the seat to get the same position?

To get the same position, the height of the rails above the bottom bracket will need to be the same. I'll define this distance as y. Then I'll assume the saddle is clamped at a distance x from the bottom bracket in the case of the 73 degree seat tube. With the R5-CA, I then need to determine the value x' with the same value of y, where positive x is behind the bottom bracket:

On the R5:
x = y / tan 73°

On the R5-CA:
x' = y / tan 72° ‒ 1 cm

I can eliminate y:

y = x tan 73°

which result in:

x' = x tan 73° / tan 72° ‒ 1 cm

Of primary interest is the difference:

x' ‒ x = (tan 73° / tan 72° ‒ 1) x ‒ 1 cm

But y is probably easier to measure than x, so:

x' ‒ x = y (tan 73° / tan 72° ‒ 1) / tan 73° ‒ 1 cm

x' ‒ x = y (1 / tan 72° ‒ 1 / tan 73°) ‒ 1 cm

which evaluates to:
x' ‒ x = y / 52.1 ‒ 1 cm

So this says if your rails are clamped 52.1 cm above the height of the bottom bracket center, then the clamp will be in the same position on both bikes. I justmeasured my commuter bike and estimate y = 64 cm. So for the same value of y, I'd need to clamp the rails 2.2 mm further back on the R5-CA than I would on the R5. Not much difference, really.

So do not fear, Cervelo fans. If you really want to spend $9000 on this frame, the geometry probably isn't going to hold you back, assuming the Cervelo schematic is accurate. And looking at that photo, while perspective can be tricky, it seems the schematic is.

On the other hand, if I compare the R5CA to my Fuji SL1, I get x' ‒ x = 2.0 cm. That's a substantial shift. To decent approximation, each 1-degree shift in the seat tube angle will shift the rail position by the height of the rails above the bottom bracket divided by 52. So seat tube angle is important. But honestly I never could bring myself to spend that much on a racing frame anyway for almost intangibly small benefit. I'm barely even riding these days anyway.

Fit is an interesting thing, though. I should be heading up to 3D Bike Fit in Sausalito to get mine checked out. Sure, I've had my fit checked before, but it's worth getting it rechecked occasionally.

Monday, March 14, 2011

yaw angle: variable wind speed and variable rider heading

Here's my fourth post in my series where I try to derive a probability distribution for yaw angle. I ask myself why I spent so much time on it, but it became something of a silly obsession, and I suppose as far as temporary obsessions go it isn't so bad. I could have been doing Sudoko or doing crosswords, for example, or playing games on my new "smart" phone. Or worse, responding to work emails and studying manuals or reading literature.

Anyway, here's the equation I derived:

P(yaw) ∝ 2 cos yaw / sqrt [ γ² ‒ sin² yaw ]

First I want to integrate this to derive an analytic normalization constant. For that I cheated and used the Wolfram Integrator:

2 arctan [ sin yaw / sqrt ( γ² ‒ sin² yaw ) ]

which integrated across allowed values of yaw yields 2 π. In retrospect this is obvious, as this is the range of headings I'm considering, and I'm normalizing over all headings. So I can write the normalized result:

P(yaw) = cos yaw / (π sqrt [ γ² ‒ sin² yaw ])

One interesting case is where γ → 1. Then:
P(yaw) ≈ cos yaw / (π sqrt [1 ‒ sin² yaw ])
= 1 / π.

This says all values of yaw with positive cosine are equally likely in this case.

Here's that plot of the result again.

yaw probability at fixed wind speed

You can see the probability is U-shaped, with a peak at the maximum yaw angle. This is important, because when Hed says there is a peak in the yaw distribution, that peak in this case is not the average yaw, but the maximum.

The maximum yaw angle can be calculated by setting the denominator to zero:

sin yaw = ±γ

The maximum yaw goes from 0 for 0 wind up to 90 degrees for wind equal to the bike speed. Note this is not what you get if you assume the wind is coming directly from the side: that would be tan yaw = ±γ. For small values of γ the two are approximately the same, and thus for very light wind the maximum yaw happens in a direct cross-wind, but the maximum yaw when the wind is nearly as fast as the rider actually occurs when the wind is almost directly behind the rider.

The next step is to combine the distribution of yaw angles at a given wind speed with the distribution of wind speeds. So I want to integrate over all possible wind speeds the probability of that wind speed multiplied by the probability for yaw at the given wind speed. This gives me a net probability for the given yaw in the presences of changing wind.

Now recall the wind speed probability is peaked, just like the yaw probability at a given wind speed:

wind speed distribution

So if you consider the cross-wind case for example, and assume the rider is moving at a given speed, then the yaw angle would also have a non-zero value at its maximum probability. But the rider isn't riding at a constant heading relative to the wind.

Note for a given yaw angle there is a minimum wind speed (or γ) which will provide that yaw (lower γ values do not contribute);

γmin = sin yaw

So what i want is;

P(yaw) = ∫ [sin yaw to ∞] dγ ( γ / γ0² ) exp[‒ γ² / ( 2 γ0² ) ] cos yaw / (π sqrt [ γ² ‒ sin² yaw ])


γ0 ≡ v0 / s.

Amazingly, I was able to evaluate this analytically, again with the help of The Integrator:

P(yaw) = cos(yaw) × exp[-sin²(yaw) / 2 γ0²] / (sqrt(2π) γ0)

Now, when I look at that I am forced to think the process I took to evaluate it was far, far from optimal. But all that matters is the final answer, right? In any case, since I need to put this behind me, I'm not going to return to try and find where I went astray.

Here's a plot:

wind speed distribution

I show both the calculated net yaw probability and a Gaussian I fit to the same data.

Curious: i started with two probability distributions, each with a peak at non-zero, and I end up with a net probability distribution with a peak at zero. But this is basically what the central limit theory says; if you combine probability distributions, the result tends to become more Gaussian. A Gaussian probability distribution is called the "normal" distribution, after all.

So the end result of all of this is that, given the assumption of an average 10 mph wind at 10 meter elevation (a stiff wind), a Maxwellan distribution of the ratio of wind speed to rider speed, an average rider speed of 11 m/sec (40 kph), and a Hellman coefficient of 0.34 (associated with urbanized areas), I get the average yaw angle magnitude is 6.8 degrees, with yaw probabilities extending from -20 degrees to +20 degrees. The yaw of greatest probability is, surprisingly, 0 degrees.

I've not seen any experimental data which contradicts this conclusion. But I look forward to seeing what comes across the forums, as this subject has gotten plenty of attention as wind tunnel testing becomes more popular.

Sunday, March 13, 2011

yaw angle: probability for fixed wind speed

Last time I began the problem of predicting the probability distribution of yaw angle if wind speed (|v|) is fixed but if the rider's heading relative to the wind (Φ) is unnbiasedly random. I calculated the derivative of yaw with respect to heading. Rider speed is s.

The probability distribution of yaw is inversely proportional to the magnitude of the derivative at the given value of yaw.

P(yaw) ∝ | ( (|v|² + s²) + 2 s |v| cos Φ ) / [ |v| ( |v| + s cos Φ ) ] |

Special case: cos Φ = ‒1
P(yaw) ∝ | ( (|v|² + s²) ‒ 2 s |v|) / [ |v| ( |v| ‒ s ) ] |
= | (|v| ‒ s)² / [ |v| ( |v| ‒ s ) ] |
= | (|v| ‒ s) / |v| |
= | 1 ‒ s/|v| |
which goes to zero for s = |v|. But I'll look more at that case later.

But in general, for this to be useful, cos Φ needs to be eliminated from the equation:

tan yaw = |v| sin Φ / ( |v| cos Φ + s )

( |v| cos Φ + s ) tan yaw = |v| sin Φ

( |v| cos Φ + s )² tan² yaw = |v|² ( 1 ‒ cos² Φ )

( |v|² cos² Φ + 2 s |v| cos Φ + s² ) tan² yaw = |v|² ‒ |v|² cos² Φ

|v|² cos² Φ (1 + tan² yaw ) + 2 s |v| cos Φ tan² yaw + s² tan² yaw ‒ |v|² = 0

|v|² cos² Φ / cos² yaw + 2 s |v| cos Φ tan² yaw + s² tan² yaw ‒ |v|² = 0

This is a quadratic equation in cos Φ :

a = |v|² / cos² yaw
b = 2 s |v| tan² yaw
c = s² tan² yaw ‒ |v|²

cos Φ = (‒b / 2a ) ( 1 ± sqrt[ 1 ‒ 4 a c / b² ] )

‒b / 2a = ‒(s / |v|) sin² yaw
‒4 a c / b^2 = (|v|² cos² yaw ‒ s² sin² yaw)) / ( s² sin⁴ yaw )


cos Φ = ± sqrt[ ( (s / |v|) sin² yaw)² + ( cos² yaw ‒ (s / |v|)² sin² yaw) ] ‒ (s / |v|) sin² yaw

solutions for 15 deg yaw

Note there are two solutions (one for the +, one for the ‒ of the ±). This is because if the bike is faster than the wind, riding straight into the wind and the yaw angle is zero. As the rider turns 90 degrees, the wind moves to the side, never reaching 90 degrees. The yaw eventually hits a maximum, then decreases again, until when the rider is moving in the direction of the wind, the relative wind is once again head‒one (the rider is overtaking the wind). So for any given value of yaw for which a heading exists (with the exception of the maximum yaw) there are two headings which will give that yaw. Were the rider moving slower than the wind, there would only be one heading for each yaw value, and we'd need to replace the ± with a +.

I checked this result numerically and it works. Note if the value in the square root is negative then there's no solution for that value of yaw. For example, if the bike is moving faster than the wind, there is no way the wind can be overtaking the bike, so the yaw angles larger than a peak value fail to yield a real solution. (Aside: negative square roots yield imaginary numbers, and it is interesting to try and interpret what that means in this context.)

So assuming there are two solutions, a given value of yaw could come from two headings, so I need to sum the probability of both:

P(yaw) ∝
| ( (|v|² + s²) + 2 s |v| cos Φ₁ ) / [ |v| ( |v| + s cos Φ₁ ) ] | +
| ( (|v|² + s²) + 2 s |v| cos Φ₂ ) / [ |v| ( |v| + s cos Φ₂ ) ] |

However, I can simplify this if I recognize these cosines can be written:
cos Φ₁ = c0 ‒ Δc/2
cos Φ₂ = c0 + Δc/2


c0 = ‒(s / |v|) sin² yaw
Δc/2 = sqrt[ ( (s / |v|) sin² yaw)² + ( cos² yaw ‒ (s / |v|)² sin² yaw) ]
(I'll clean this up further a bit later)

P(yaw) ∝
| ( (|v|² + s²) + 2 s |v| [c0 + Δc/2] ) / [ |v| ( |v| + s [c0 + Δc/2] ) ] | +
| ( (|v|² + s²) + 2 s |v| [c0 ‒ Δc/2] ) / [ |v| ( |v| + s [c0 ‒ Δc/2] ) ] |

First, there's the ugly business of those absolute value signs. Since yaw first increases with Φ, then it decreases, I'm going to assume the two terms (which have the same sign as the derivatives) are of opposite sign. I can then subtract them then take the absolute value, as opposed to summing the absolute values:

P(yaw) ∝
| ( (|v|² + s²) + 2 s |v| [c0 + Δc/2] ) / [ |v| ( |v| + s [c0 + Δc/2] ) ] ‒
( (|v|² + s²) + 2 s |v| [c0 ‒ Δc/2] ) / [ |v| ( |v| + s [c0 ‒ Δc/2] ) ] |

I'm going to try to get out of this tangled mess by consolidating the denominators:

P(yaw) ∝
| [ ( |v| + s [c0 ‒ Δc/2] ) ( (|v|² + s²) + 2 s |v| [c0 + Δc/2] ) ‒
( |v| + s [c0 + Δc/2] ) ( (|v|² + s²) + 2 s |v| [c0 ‒ Δc/2] ) ] /
[ |v| ( (|v| + s c0)² ‒ s² (Δc/2)² ) ] |

Lots of stuff cancels... only terms proportional to Δc (but not (Δc)²) survive in the numerator:

numerator =
2 [ ‒s ( |v|² + s² + 2 s |v| c0 ) + 2 s |v| (|v| + s c0) ] (Δc/2) =
2 [ ‒s |v|² ‒ s³ ‒ 2 s² |v| c0 + 2 s |v|² + 2 s² |v| c0) ] (Δc/2) =
2 [ s |v|² ‒ s³] (Δc/2) =
2 s (|v|² ‒ s²) (Δc/2) =
s (|v|² ‒ s²) Δc =


P(yaw) ∝
| s (|v|² ‒ s²) Δc / [ |v| ( (|v| + s c0)² ‒ s² (Δc/2)² ) ] | =
| (s / |v|) (|v|² ‒ s²) Δc / ( (|v| + s c0)² ‒ s² (Δc/2)² ) |

It's clear the result only depends on the ratio of s and |v|, not on the magnitude, so if I define:

γ = |v| / s

Then I can further simplify:
P(yaw) ∝ | (γ ‒ 1/γ) Δc / ( (γ + c0)² ‒ (Δc/2)² ) |

Δc = 2 sqrt[ (1/γ)² sin⁴ yaw + cos² yaw ‒ (1/γ)² sin² yaw ]
= 2 sqrt[ (1/γ)² sin² yaw (sin² yaw ‒ 1) + cos² yaw ]
= 2 sqrt[ ‒(1/γ)² sin² yaw cos² yaw + cos² yaw ]
= 2 (cos yaw) sqrt[1 ‒ (1/γ)² sin² yaw]
(Δc/2)² = (cos² yaw) [1 ‒ (1/γ)² sin² yaw]
c0 = ‒sin² yaw / γ

It's getting better, but when I plotted the result, I realized I wasn't yet done. Combine these three:

∝ | 2 (γ ‒ 1/γ) cos yaw sqrt[1 ‒ (1/γ)² sin² yaw] / ( (γ ‒ sin² yaw / γ)² ‒ cos² yaw (1 ‒ (1/γ)² sin² yaw) ) |
= | 2 (γ ‒ 1/γ) cos yaw sqrt[1 ‒ sin² yaw / γ²] / ( γ² (1 ‒ sin² yaw / γ²)² ‒ cos² yaw (1 ‒ sin² yaw / γ²) ) |

Substitute in a temporary variable:
z ≡ sqrt [ 1 ‒ (1/γ)² sin² yaw ]

P(yaw) ∝ | 2 (γ ‒ 1/γ) z cos yaw / ( γ² z⁴ ‒ z² cos² yaw ) |
= | 2 z (γ ‒ 1/γ) cos yaw / [ z² ( γ² z² ‒ cos² yaw ) ] |
= | 2 (γ ‒ 1/γ) cos yaw / [ z ( γ² z² ‒ cos² yaw ) ] |
= | 2 (γ² ‒ 1) cos yaw / [ z γ ( γ² ‒ 1 ) ] |
= 2 cos yaw / sqrt [ γ² ‒ sin² yaw ]

Wow -- that's a remarkable improvement. Jumping ahead to next post, I can evaluate the normalizing constant analytically, yielding:

P(yaw) = 2 cos yaw / ( π sqrt [ γ² ‒ sin² yaw ] )

A quick sanity check here: the result depends only on even powers of sin yaw, so the probability of positive and negative yaw values of the same magnitude are the same. That's good.

Here's a quick plot: I'll show it again next post. Note the y-axis is logarithmic.

yaw probability at fixed wind speed

I'll continue with this next time...

Saturday, March 12, 2011

yaw angle: the effect of relative wind direction

The last time I came up with a proposed distribution of wind speeds at the bike's level. This was based on an assumed relation between wind speed and height, which is for urbanized areas. It doesn't apply to open coastlines, but then it doesn't apply to dense forests, either: just an attempt to model truly "typical" conditions.

But next I need to consider that the bike may be moving in any direction relative to the wind. I assume all headings relative to the wind are equally likely. Each contributes equally to the final net yaw probability distribution.

I'll start by assuming the bike is moving at a constant speed and constant direction, and the wind is also at a constant speed and constant direction. I'll worry about probability functions later.

To go from wind speed |v| to yaw, I add a parameter Φ, the relative angle between the rider's heading (at speed s) and the wind direction. Then I get two components of the relative wind, one parallel to the direction of motion, the other perpendicular. I'll call these relative wind components wu and wv, where wu is the relative head‒wind in the direction of travel, and wv is the cross‒wind:

wu = |v| cos Φ + s ,
wv = |v| sin Φ .

The tangent of the yaw angle is then the ratio (the sign is arbitrary):

tan yaw = |v| sin Φ / ( |v| cos Φ + s ) .

I plot that result here:

yaw vs. heading by wind speed

For each value of wind speed, there is a maximum yaw magnitude, the maximum higher the higher the ratio of wind speed to bike speed.

If I consider Φ to be a random variable equally distributed over all angles in the unit circle, I can calculate a probability distribution for yaw, given |v| and |s|.

First I take the derivative of the tangent of yaw:

d tan yaw / d Φ =
|v| cos Φ / ( |v| cos Φ + s ) + |v²| sin² Φ / ( |v| cos Φ + s )² =
( |v|² cos² Φ + s |v| cos Φ + |v²| sin² Φ ) / ( |v| cos Φ + s )² =
|v| ( s cos Φ + |v|) / ( |v| cos Φ + s )²

I want the derivative of yaw, not the derivative of the tangent of yaw, so I use:

d tan yaw = dyaw ( 1 + tan² yaw )


d yaw = d tan yaw / ( 1 + tan² yaw )

which yields:

d yaw / d Φ =
|v| ( s cos Φ + |v|) / [ ( |v| cos Φ + s )² ( 1 + |v|² sin² Φ / ( |v| cos Φ + s )² ) ] =
|v| ( s cos Φ + |v|) / [ ( |v| cos Φ + s )² + |v|² sin² Φ ] =
|v| ( s cos Φ + |v|) / ( |v|² cos² Φ + 2 s |v| cos Φ + s² + |v|² sin² Φ ) =
|v| ( s cos Φ + |v|) / ( |v|² + 2 s |v| cos Φ + s² )

Sanity checks:
if |v| = 0, s > 0: d yaw / d Φ = 0 (this is correct: yaw is always 0 if there's no wind).
If s = 0, |v| > 0: d yaw / d Φ = 1 (this is correct: yaw = Φ if the bike isn't moving).

So it passes these checks.

Another interesting case:
if s = |v|: d yaw / d Φ = 1/2 (yaw = Φ / 2)

If the rider is going the same speed as the wind, the yaw angle is half the difference of the rider's direction and the wind direction up to the point the rider is moving with the wind, in which case net wind is zero and the wind direction is no longer uniquely defined.

To be continued...

Friday, March 11, 2011

yaw angle: modeling wind speed

First Tour magazine, and now VeloNews have published wind tunnel data on "aerodynamic" mass‒start bikes. Each measured the bikes over yaw angles from 0 to 20 degrees, and each averaged over measured angles. Tour measured at 0, 5, 10, and 20 degrees, which implicitly gave uniform weight to the ‒12.5 to +12.5 degree yaw range, then a reduced weight to yaws out to at least ‒20 and +20 degrees. VeloNews tested at uniform intervals across the range from ‒20 to 20 degrees.

Zipp reports, via NY Velocity, that the measured yaw distribution has peaks at around +/‒ 13 degrees, with peak extending (depending on conditions and rider speed) from 7 to 15 degrees, as measured at the head tube. So does this make sense? I thought so, but I wanted to do an analytic analysis of the problem. If wind is varying in speed, and the rider is varying in his heading, averaged over time what relative yaw angle is expected? Worth a quick calculation, I figured.

Unfortunately my "quick calculation" become borderline obsession, and more train commutes than I would ever care to admit become consumed with line after line of algebra. And since I have an enormous algabreic error rate, every minute in derivation was followed by at least five tracking down errors in that derivation.

Ah, well. Hopefully I've gotten this out of my system. I'll start with the wind speed...

For non‒interacting particles at a given temperature, the distribution of kinetic energies is well describned by the Boltzmann distribution. Since kinetic energy is proportional to the square of the magnitude of velocity, and since potential energy at a given altitude is fixed, this results in a velocity distribution described by the Maxwell distribution: velocities are distributed with a normal (Gaussian) distribution in the available velocity space. It's tempting to calculate kinetic energies, and therefore the distribution, using the mass of an N₂ molecule. However, this would be a mistake: it is how you calculate air pressure, or the speed of sound. Wind is instead the average speed of a huge number of particles, not determined by the random fluctuation of individual particle speeds, but rather from macroscopic temperature gradients. If you were to average the randomized isothermal velocities of gas molecules hitting a rider, you'd get very close to zero. Consider Brownian motion, in which a minute dust particle floats slowly and randomly through the air due to the randomized collisions with gas molecules, is an average over an area around 10⁸ smaller. But I'm digressing...

I assume the velocity at a 10 meter reference elevation is distributed with an empirical distribution which represents a Maxwell distribution but with an empirical threshold speed, rather than with an explicit temperature dependence. I then assume at the height most relevant to bicycle aerodynamics, where the wind is more influenced by its interactions with fixed bodys on the ground, topography, people, etc, it is still described by a Maxwellian distribution. Close to the surface of the Earth the wind is constrained to blow primarily parallel to the surface, so I include only velocity components parallel to the ground:

P(v) = P0 exp[‒ (vx² + vy²) / ( 2 v0² ) ] ,

where P0 = 1 / (2 π v0²) is a normalization constant. It has units 1/speed² since P(v) is a two‒dimensional distribution.

Whichever direction the bike is pointing, I'll call that direction x, with an orthogonal direction y. Then as long as the wind speed is always much less than the bike speed, I assume vx is unimportant to the relative wind, and only vy matters. However, this is not generally the case: wind speeds are significant in comparison to the bike speed, which is why it's harder to ride in a cross or headwind than in still air.

So I'll calculate the probability distribution of the magnitude of the wind speed. To do that, I need to recognize that the wind vector in any direction can contribute. The "number" of velocities which can contribute to a given |velocity|² is proportional to the diameter of a circle of radius |velocity|. So I get:

P(|v|) = 2 π |v| P0 exp[‒ |v|² / ( 2 v0² ) ] ,

or plugging in the value of P0:

P(|v|) = ( |v| / v0² ) exp[‒ |v|² / ( 2 v0² ) ].

If I integrate this from 0 to ∞ I'd better get one.... I can see by inspection that this function on the right is the derivative of ‒exp[‒ |v|² / ( 2 v0² ) ], so I do in fact get one for that integral.

One thing that's immediately obvious from this distribution is there is a peak at non‒zero wind speed: differentiate the function, set the polynomial pre‒factor to zero, and you see that the maximum is at |v| = v0.

So what to choose for P0? I've addressed this in a previous post, but I will summarize my simplistic assumptions here. Suppose the "meterilogical" wind (at 10 metere reference elevation, or at 3 meter reference elevation from an unobstructed position, the latter which I assume is similar to a typical 10 meter position) is characterized by v0 = 10 mph. The wheels extend from a height of 0 to approximately 67 cm, and the frame extends from approximately 26 cm to around 82 cm (to the top of the head tube) or to maybe 90 cm if I'm including the seat tube. Since I don't know any better, I use the Hellman formula:

(v / v10) = (h / 10 meters)α,

where v10 is the wind speed at 10 meters, and v is the wind speed at the desired altitude. This model roughly applies up to a few hundred meters above the ground. For "neutral air above human inhabited areas", which I think describes much bike racing, α = 0.34 is recommended. So if I want to evaluate the average of the square of the wind speed from 0.26 meters to 0.9 meters, I integrate (z / 10 meters)0.68 from 0.026 to 0.09 and divide by (0.09 ‒ 0.026), then take the square root, yielding 0.38. For the wheels, I get 0.31. So for the frame, the characteristic wind speed for the frame is around 3.8 mph, which is 1.69 meters/second. Or, for the wheels, I get 1.39 meters/second. Averaging from the ground to the top of the seatpost is 1.52 meters/second.

An illustration of typical yaw angles along the height of the bike, assuming 20 degree yaw at 10 meter elevation, is shown in this plot,

yaw angle versus height

For the rest of these calculations, I assumed 3.6 mph for v0 at the bike level. This is "in the ballpark" of these other estimates. When I derived that number, I assumed the seatpost was a reduced influence. In any case, applying much precision to this estimate is rather absurd, since I'm making crude assumptions in the application of Hellman's formula. But you've got to start somewhere...

wind speed distribution

Anyway, here's what I get when I use that value. The probability for wind speeds increases from zero, then it peaks out at 1.61 m/sec, then it quickly decays until by 7 meters/second it is essentially zero on this linear scale.

None of this considers the direction the rider is moving. It could be against the wind, with the wind, perpendicular to the wind, or somewhere in between. I'll look at that next time.

Sunday, March 6, 2011

Coastal Trail Runs: Montara State Park Half-Marathon

With the job I started back in late October, I've not been devoting much time or energy to training. Yesterday I got out for 50 miles on my bike, a ride cut short by a broken spoke on my Velomax wheel. Velomax wheels are designed with double-threaded spokes: one end threads into the nipple at the hub, the other end into a threaded hole in the hub flange (held there with Loctite). The idea is to avoid the stress-riser of a J-bend in the spoke at the flange side, supposedly improving spoke reliability. But this "theory" overlooks the fact a spoke can bend and rotate about a threadless flange hole, whereas with a threaded hole, the spoke end orientation is fixed, and any lateral pressure on the spoke will place a lot of strain on the spoke where it enters the hub, and since I take my bike onto the Caltrain bike car where bikes are stacked laterally, all it takes is someone's pedal in your wheel to supply lateral spoke force. Indeed, it is at the entry point of the flange where I've broken spokes on these wheels at least three times. Fortunately Freewheel Bikes in San Francisco can cut and thread a conventional spoke for me so I've been able to keep the wheel going.

Anyway, that was yesterday. Today I did the Coastal Trail Runs Montara State Park Half-Marathon. The route is all up and down: from San Pedro Valley Park we set off on a semi-loop, semi-out-and-back up to North Peak, then back to the start area for the "10 km" loop to the east.

The official course profile is here:

Here's my Strava data. Interestingly, shortly after beginning my descent from the North Peak the altitude froze in the mid-400 meter range. The Edge 500 relies on an air pressure sensor getting access to the ambient air, and if the holes, which are on the back of the unit get plugged with water, then the pressure gets stuck at what it was when the holes got plugged. Most of the run was in cool rain, and I was fairly wet. I had the Edge strapped onto my sleeve with a Forerunner wrist strap. This works nicely, but the plastic strap combined with the 2-ounce computer is uncomfortable on my skin, so I like to strap it around long sleeves if I'm wearing them. The wet clothing likely plugged the air holes.

DC Rainmaker photo
Garmin Edge 500 air holes, courtesy of DC Rainmaker

The run went well, considering how little training I've been doing. No acute pain, just fatigue. My biggest problem was descending from the North Peak, where the wet, rocky trail caused me to become very conservative about my footing with my light New Balance trail running shoes and a generally low level of confidence in my agility. In places I walked slower downhill than I'd climbed uphill earlier.

But even on the gentle, nontechnical downhills of the 10 km loop I was too slow. Toward the end of the race I passed Cara, who was hiking the 10 km event. She said I wasn't gliding like the fast runners, instead braking with each foot stroke. This is normally considered an issue with heel striking, but I try to keep my foot from getting ahead of my body, so don't think that's my problem. Rather I may simply be slamming my foot into the ground too hard. I don't know: I just need to practice more. Today was my first extended downhill running in a year.

The uphills I find easier. I don't really run them but rather do more of a power-walk. This seems to work really well. While guys like Gary Gellin or Leor Pantalot make me look like I'm standing still, I'm still competitive in these events on the climbs.

Cara, by the way, had a really good day. Her report is here. A few blisters but otherwise she did great given she's coming back from back and knee problems. We both agreed on the rainy day Coastal Trail Runs had gotten us outside when otherwise we'd have been huddling indoors waiting for the rain to subside.