## Monday, November 28, 2011

### Low-Key scoring algorithm: addition of variance normalization

As always happens in fall, the Low-Key Hillclimbs have taken up a large chunk of my time, leaving less time for blog posts. But it was worth it: the series was an unqualified success, with every climb coming off well, the last few finding valuable seams in the weather. At Hamilton riders experienced moderate rain on the descent, and for some towards the end of the climb, but it was warm enough that the long descent was still tolerable in the wet.

One aspect of the series worthy of revision, however, is the scoring system. Never before were artifacts in the median-time-normalized scoring more obvious. So for 2012, I am finally overcoming inertia and changing from the median-based scoring we've essentially used since 2006.

I've described in preceding posts a scheme to calculate a reference "effective" time for each climb. With this scheme, instead of taking a median each week, we take a geometric mean where effective times for riders (adjusted for male, female, hybrid-electric) are adjusted by the rider's "rating", which represents how the riders tend to do relative to the reference time. It's an iterative calculation which is repeated until rider ratings and reference times are self-consistent, weighting means by heuristic weighting factors to give higher priority to riders who do more climbs, and climbs with more riders, since these provide better statistics.

Here's a comparison of this approach with the median-based system used this year. I plot on the x-axis each rider's rating and on the y-axis that rider's score for each designated week. In this case I used weeks 5 (Palomares Road) and 6 (Mix Canyon Road). These climbs are at opposite ends of a spectrum: Palomares is short with plenty of low-grades, while Mix Canyon is relatively long with extended steep grades.

Here's the plots. I've omitted riders who did only one climb, as for them their rating from the one climb they did is equal to their rating.

With the 2011 scoring scheme, you can clearly see that there is a lack of low-weighted riders relative to Palomares. As a result, moderately-rated riders in particular were given low scores, since the median rider was, relative to the entire series, above average (rated over 100). In contrast at Palomares there were more low-weighted riders.

So then I replace the median time with a reference time, adjusting each rider's effective time by his/her rating. Now you can see the scores for Mixed Canyon have been boosted:

But there's an issue here: the curve for Mix Canyon is steeper. So relatively slower riders score lower, while relatively faster riders score higher, then they did or would at Palomares. So I added a bit of complexity: I compare the spread in scores with the spread in rider ratings and I make sure that the ratio of these spreads is the same week-after-week. I call the adjustment factor the "slope factor". The result is here:

Now the curves line up nicely! Sure, each rider may score in a given week more or less than his rating, but the overall trend is very similar.

I'll add in the other weeks. First, here's the 2011 formula:

You can see distinct curves for different weeks. Some weeks a rider of a given ability is more likely to score higher, some lower. This isn't what we're after, as we want riders to have the opportunity to excel on any week.

So I add in the adjusted effective reference time, and then the slope factor, and here's what we get:

All of the weeks have generally overlapping curves. No more fear of turning our for a tough climb or a climb in difficult conditions, and have your score buried in obscurity because there's a disproportionate number of fast riders. Or similarly, no more volunteering for a week only to have your volunteer score end up lower than riders you finish ahead of week after week, simply because the median times were relatively long due to rider turn-out.

To me, this system looks like it's working nicely.

## Monday, November 14, 2011

### week-to-week stability of proposed 2012 Low-Key scoring formula

In two previous posts, I described an attempt to revise the scoring code for the Low-Key Hillclimbs. The scoring has placed a priority on simplicity. At first, we normalized times to the fastest man and woman each week. But then everyone's score was exceptionally sensitive to the fastest rider. Then I switched to using the median time for normalization, first separately for men and women, then using combing them with an empirically determined conversion factor for women. But while median is less sensitive to any single individual showing up, nevertheless the most challenging climbs tend to attract fewer beginner riders, deflating the scores for these weeks. So the alternative approach is to iteratively rate each climb using a reference time based on the rating of riders who show up, and assign each rider a rating based on the reference times (and their results) of the climbs they do.

A concern about this approach is that if I use all available information equally, I re-rate each rider and each climb after each week's results. This yields scores for previous weeks changing each time results for a new week become available. This is in principle an undesirable feature. It could be avoided by forcibly freezing ratings for climbs each week, rating only new climbs using results including those which preceed it. You might call this approach causal scoring (nothing is affected by future events). However, before taking such a compromize, I wanted to test whether pragmatically this is a problem. Obviously if relative scores from previous weeks are highly volatile then it makes tactical decisions difficult. For example, your previous scores might all be better than the scores of another rider, then you mark him and out-sprint him in this week's climb, but afterwards you've fallen behind in the standings because of a re-evaluation of the reference times for previous weeks. This is something of a pathological example, but it's in principle possible, so it needs to be tested using realistic data.

So I ran the scoring code for 2011 data, which exist for seven weeks of climbs. Two climbs, Kings Mountain Road and Mount Hamilton Road, have not yet occurred.

After week 1, Mountebello Road, there is only one climb on which to determine a reference time, so I revert back to using the median time. I could also use the geometric mean, which would be closer to what I do when there's multiple times, but the median works well so I stick with that. The climb's field is then by definition average. There is no adjustment for the strength of the field.

Then I add data from week 2, Sierra Road. Now we see that some riders did both weeks. On one or the other week, using median times, these riders would score lower (it turns out they generally would score lower on Sierra Road). I then assume that on the week they score lower the average rider was stronger, and adjust the climb reference time so riders who did both, on average, score the same (using geometric means). Then each week other riders are scored relative to these repeat riders. This causes a re-evaluation of the reference time for the first week: it's no longer the median time.

Now I add week 3, and I can use all data from riders who did at least two of the climbs to rate the fields of riders relative to each other. These riders are used to re-establish reference times for the first two weeks.

And the process continues until I have added data from all seven weeks.

Here's the test results. First I plot the ratio of each week's median time to its reference time. So if this number is more than 100%, that means that the reference time will be less than the median time, and riders will score lower than with the 2011 algorithm. This adjustment is because, according to the algorithm, on average there were more slower riders and fewer faster riders on that climb. The plot shows this ratio for each climb plotted at the end of each week. After one week, there is only one point: for week 1, Montebello, and of course since that climb uses the median time it is at 100%. After two weeks there are two points: one for Montebello and one for Sierra Road. That curve is orange. Here Montebello is around 102.5% and Sierra Road is around 97.5%, so there were stronger riders at Sierra Road. Week 3 was Page Mill and that came out between the first two climbs. You can see how each week the reference time for each climb is adjusted, generally upward since as the series has continued later climbs have attracted on average stronger riders, it seems. So each week scores from Montebello, week 1, would tend to drop a bit as the algorithm assigns relatively higher scores to riders with a similar relative placing at later climbs.

This seems like it might be a problem, having things change over time. And this is true for someone who has a particular score goal, like 100 points. They may have 100.1 points after Montebello only to find that has dropped to 95.1 points later in the series. But for the standings, all that matters is how points from one climb compare to points of another. For example, if after two weeks rider A, who climbed only Montebello, scored 101 points there while rider B, who climbed only Sierra Road, scored 100 points there than rider A is ahead of rider B. After week 3 perhaps rider A's score for week 1 drops to 99 points and rider B's score drops to 98 points, but that's okay as long as the gap between the two doesn't change much.

So next I plot the ratio of a climb's reference time to the reference time for Montebello. If the two change by the same proportion this ratio doesn't change, and a comparison of riders between the two climbs won't change much. As hoped, this ratio doesn't change much as new results are added to the analysis.

The resolution of that plot is limited, so in the next plot I how much each of these ratios changes after each week of results is added. Using the example before of riders A and B, for rider A to keep his 1-point gap over rider B, we want this ratio to be stable to around 1%. From the plot you can see that none of the comparisons between any of the weeks and week 1 changes by more than 0.5%. The biggest change is between week 2 and week 3, but still these change relative to each other by barely over 1%. So scores shifting relative to each other over the course of the series doesn't seem to be a big problem. So the scoring system seems to work pretty well, at least if you don't mind scores drifting a bit together.

## Saturday, November 12, 2011

### testing 2012 Low-Key Hillclimbs scoring code

I seem to have debugged the new Low-Key Hillclimbs scoring algorithm, so tested it on 2011 data for the completed first six weeks.

Recall the method is to calculate a rider's rating (not used for overall rankings) based on the natural logarithm of the ratio of his time each week to that climb's reference time. Meanwhile the climb's reference time is calculated as the average the natural logs of the times of the riders in the climb, subtracting their ratings. These "averages" are weighted by heuristic statistical weights which assign more importance to riders who did more climbs, and to a lesser extent to climbs with more riders. Each of these factors depends on the others, so the solution is done self-consistently until it converges, in this case until the sum of the squares of the reference times changes by less than 10-6 seconds2. This took 8 iterations in my test.

To avoid contaminating the results I check for annotations that a rider has experienced a malfunction or wrong turn during a climb, or that he was on a tandem, unicycle, or was running. These factors would generally invalidate week-to-week comparisons for these results, so I don't use them. So a rider whose wheel pops out of true during a climb and is forced to make time-consuming adjustments before continuing won't have his rating penalized by this, assuming that incident makes it into the results data.

All times here are adjusted for division (male, female, or hybrid-electric), as I've described.

```week 1 median    = 2149.50
week 1 reference = 2054.26
week 1 ratio     = 104.636%
week 1 quality   = 0.0398
week 2 median    = 1760.50
week 2 reference = 1762.51
week 2 ratio     = 99.886%
week 2 quality   = 0.0096
week 3 median    = 2614.00
week 3 reference = 2559.27
week 3 ratio     = 102.139%
week 3 quality   = 0.0237
week 4 median    = 2057.50
week 4 reference = 2119.96
week 4 ratio     = 97.054%
week 4 quality   = -0.0140
week 5 median    = 1237.50
week 5 reference = 1246.35
week 5 ratio     = 99.290%
week 5 quality   = 0.0310
week 6 median    = 2191.00
week 6 reference = 2322.56
week 6 ratio     = 94.335%
week 6 quality   = -0.0254```
Here the week "quality" is the average rating score of riders in the climb. You can see in general the ratio of the median to reference times tracks this quality score, although one is based on a weighted geometric mean, and the other is a population median.

In general less steep more popular climbs (1, 3, 5) have rider "qualities" which are positive, meaning times were somewhat slower, while steeper, more challenging climbs (4 and 6, but to a lesser extent 2) tended to have negative "qualities", indicating riders were generally faster. The exception here is week 2, Sierra Road. While this road is considered cruelly steep by the Tour of California, apparently Low-Keyers have a higher standard of intimidation, and it still managed a positive quality score with a ratio quite close to 100%. It essentially fell between the super-steep climbs and the more gradual climbs.

A side effect of this, even if I don't use this analysis for the overall scores (this year's score algorithm can't be changed mid-stream, obviously, although it's tempting, I admit...), is I get to add a new ranking to the overall result: rider "rating". This is a bit like the ratings that are sometimes published in papers for rating professional teams, not a statement of accomplishment, but a guide to betters on who is likely to beat whom. Don't take these results to Vegas, though, as they're biased towards riders who did steeper climbs, which produce a greater spread in scores. I could compensate for this with an additional rating for climbs (how spread the scores were), but I'll leave it as it is. I like "rewarding" riders for tackling the steep stuff, even if it's only in such an indirect fashion.

For the test, I posted the overall results with the official algorithm and with this test scoring algorithm so they can be compared. One thing to note is only this single page is available with the test algorithm, any linked results will be the official score:

Riders who did both Mix (week 6) and Bohlman (week 4) really benefit from this new approach. Coincidentally that includes me and my "team" for the series (Team Low-Key, even though my racing team is Team Roaring Mouse, which I strongly support).

## Friday, November 11, 2011

### proposed 2012 Low-Key Hillclimbs scoring algorithm description

The whole key to comparing scores from week-to-week is to come up with a set of reference times for each week. Then the rider's score is 100 × this reference time / the rider's time, where times have first been adjusted if the rider is a woman or a hybrid-electric rider. Presently this reference time is the time of the median rider finishing the climb that week. But if riders who would normally finish in more than the median time don't show up one week, for example Mix Canyon Road, everyone there gets a lower than normal score. That's not fair. So instead we can do an iterative calculation. Iterative calculations are nice because you can simplify a complicated problem by converting it into a series of simpler problem. The solution of each depends on the solution of every other. But if you solve them in series, then solve them again, then again, eventually you approach the self-consistent solution which you would have gotten with a single solution of the full, unsimplified problem, except that problem might be too difficult to solve directly. So here's how we proceed:
1. For each climb, there is a reference time, similar to the median time now. The reference time is the average of the adjusted times for riders doing the climb.
2. For each rider, there is a time adjustment factor. The time adjustment factor is the average of the ratio of the rider's time for a week to that week's reference time. So if a rider always does a climb 10% over that climb's reference time, that rider's adjustment factor will be 1.1.
We have a problem here. The climb reference times depend on rider adjustment factors, and rider adjustment factors depend on climb reference times. We need to know the answer to get the answer. But this is where an iterative solution comes in. We begin by assuming each rider's adjustment factor is 1. Then we calculate the reference times for the climbs. Then we assume these reference times are correct and we calculate the rider adjustment factors. Then we assume these are correct and we recalculate the climb reference times. Repeat this process enough times and we get the results we're after. Once we have a reference time for each climb, we plug these into the present scoring algorithm where we now use median time, and we're done. The rest is the same. One minor tweak: not everyone's time should contribute equally to a climb's reference time, and not every climb should contribute equally to a rider's adjustment factor. This is in the realm of weighted statistics. Riders doing more climbs get a higher weighting factor, and climbs with more riders get a higher weighting factor. The climb weighting factor depends on the sums of the weighting factors of riders doing the climb, and the rider adjustment factor depends on the sum of the weights of the climbs the rider did. So this is another part of the iterative solution. But this tweak is unlikely to make a significant difference. The basic idea is as I described it. There's an alternative which was suggested by BikeTelemetry in comments on my last post on this topic. That would freeze scores for each week rather than re-evaluating them based on global ratings. That I haven't had time to test, but the code for the algorithm described here is basically done; just ironing out a few bugs.

## Wednesday, November 9, 2011

### San Francisco: City of Passive-Aggressive Losers

The San Francisco mayor's election was yesterday, and it looks like Ed Lee won it with around 30% of eligible voters voting.

Quoting the San Francisco Examiner, referencing critics:

"...the career bureaucrat would be nothing more than a shill for powerful City Hall insiders. Lee also was dogged by accusations of voter manipulation by an independent expenditure committee that supported the mayor and other backers laundering campaign donations, which prompted a District Attorney’s Office investigation..."

He attracted a huge number of donations, driving up the amount the city needed to pay in public financing. His donations were largely from out-of-city donors, many laundered through low-income workers to circumvent the \$500 donation limit. Then there were the nominally unaffiliated supporters, for example those who produced and distributed free copies of the book of his life story. Meanwhile, he violated the law by refusing the disclose details of public contacts within the required time limit. This was so obviously fee-for-service it couldn't have been any clearer.

There was massive fraud in the early voting. Housing managers in Chinatown were reportedly collecting the absentee ballots of tenants and filling them in en mass. Shady "voting booths" were set up where voters brought their absentee ballots for "assistance". "Helpers" were filmed filling ballots out for people, and in other cases stencils were handed out so voters could fill in Lee's slot without the risk of voting for any other candidate. No doubt these absentee ballots were procured with further "assistance"

Lee sat out most of the series of mayoral debates, instead choosing to go hang out at bars and get close to his people. His campaign slogan, "Gets it Done", couldn't have embraced mediocrity any more, mediocrity where the city desperately needs vision and leadership to get it back on track to fiscal responsibility. Indeed, even the deal he claims to have brokered himself to get high-income city employees to contribute to their pensions and health care, Proposition C, he himself is gutting by promising these same workers (SFFD and SFPD) a compensating pay raise. Not only does that cover the pension contribution, but actively increases the city's unfunded liability further by increasing pension payouts, which are proportional to salary. Oh pity the poor police officer, most of whom make well over \$100k/year, and can retire on that with full health benefits at an age when public-sector workers are typically mid-way through their careers, wondering how they're going to be able to retire.

Lee supports Proposition B, which pays for road maintenance with debt. Why is debt needed? Because the budget for road work has been diverted to other things, like the massive city worker salary & benefits budget. Lee, "who gets it done", was the Public Works director from 2000 to 2005, the one most directly responsible for road infrastructure. He's part of the reason the roads are in such sorry condition, and a Proposition B is claimed to be needed.

Lee is a shill, a puppet, a tool of the money machine. It was clear as can be he had to go. Nobody I've interacted with admits to supporting him, and I even walked door-to-door in Mission Terrace as a David Chiu volunteer. Yet how can someone who is so clearly unpopular, so clearly corrupt, so clearly a tool of outside money, be elected?

Well, it doesn't help that the ten-thousand-member San Francisco Bike Coalition campaigned for him. SFBike endorses candidates based on a member survey on which members were explicitly asked to rank candidates based on responses to a lame curve-ball set of questions, and Lee finished 3rd. Yet surely the stories of corruption and fraud which followed that survey could have tempered the zeal with which SFBike daily bombarded the internet with messages encouraging a position for Lee on the 3-slot ranked-choice ballot? I even asked an officer of the coalition: had Lee made a racist comment, would you continue to support him? He admitted probably not. Yet naked corruption and fraud is okay?

And I'm also sure he got support from many of the 27 thousand city employees, 3% of the San Francisco population. The number of city employees has reportedly increased under Lee's brief tenure as mayor, and he's taken no steps toward making the efficiency improvements which are so desperately needed (efficiency means fewer workers and people working harder and learn new skills; none of these are popular with existing workers).

But the real culprit here is the lethargy of the voters. Turn-out was weak. It was reportedly very low even among protesters at Occupy San Francisco. Perhaps many of these protesters were from out-of-the-city, I don't know. But if you're going to smugly call for the downfall of the Man in the streets and then not exercise your legal obligation to vote for representative government, you're destroying the integrity of your own message. The reason the banks are able to get away with so much is voters aren't providing adequate oversight of their elected representatives. And there's no better example of that than yesterday's election. This is especially true because several candidates made an explicit point to support and defend the rights of free speech and public assembly of these same protesters.

San Franciscans will continue to whine and complain about how the city is in such a sorry state, how budgets are unsustainable, how public transit is little more than a fiscal tar pit, how there is no vision for how the city is to move forward. Yet many of those same felt they had more important things to do with their time than participate in yesterday's election. Those people are the definition of passive-aggressive, an affliction which is in epidemic proportions. These people deserve mediocrity, corruption, and insider deals. They deserve Ed Lee.

If you live in San Francisco and didn't vote, either yesterday or absentee, I extend my finger in your general direction. You, my friend, is what is wrong with this city.

## Tuesday, November 8, 2011

### Natural Selection Voting Theory

In nature, if you can't do what it takes to survive, you die, your genes are eliminated from the pool, and someone else takes your place.

Maybe what takes your place is better, maybe not. But if not, it will also die, be eliminated, until eventually something able to do what it takes comes along and so, by this process, things generally improve over time.

This is my theory of voting. Rule #1: if the incumbent isn't doing a good job, vote them out.

So often in elections I hear about the "lesser of two evils". "I don't like the incumbent XXX, but he's better than YYY." Sorry: the rule of natural selection says I vote XXX out of office anyway. Maybe YYY is even worse. But then I vote YYY out at the first opportunity.

Eventually corrupt and unqualified candidates will stop running. Eventually you get someone good in office.

But if you vote "lesser of two evils", things will never change. You'll always have candidates who suck, just slightly less than the competition. We'll remain mired in the corrupt stagnation which we've had at all levels of government for as long as I remember.

So my first rule is if I don't like the way things are going, the incumbent doesn't get a vote. I pick from the alternatives.

## Monday, November 7, 2011

### New scoring scheme for Low-Key 2012?

Low-Key scoring has gone through various phases.

In the 1990's, we scored based on fastest rider. The fastest man and the fastest women each week would score 100. Those slower would score based on the percentage of the fastest rider's score. This was super-simple, but when an exceptionally fast rider would show up, everyone else would score lower than normal. Additionally, this was frustrating for the fastest rider (typically Tracy Colwell among the men), since no matter how hard he or she pushed himself, the result would be the same 100 points.

So with Low-Key 2.0 in 2006, we switched to using the median rider (again treatng men and women separately). The median is much less sensitive to whether a particular individual shows up or not, so scores were now more stable. However, there was still an issue with women, and most especially with our hybrid-electric division, since smaller turnouts in these again made the score sensitive to who showed up.

So in 2010 I updated the system so now all riders were scored using a single median time, except instead of actual time, I used an "effective mens's time" using our history of Low-Key data to generate conversion factors from women's and hybrid electric's times to men's times. Mixed tandem's were scored by averaging a men's and a women's effective time.

This worked even better. Now if just a few women show, it's possible for them to all score over 100 points, as happened at Mix Canyon Road this past Saturday.

But the issue with Mix Canyon Road was because the climb is so challenging, and for many it was a longer than normal drive to reach, the turn-out among more endurance-oriented riders was relatively poor. The average rider at Mix would have scored over 100 points during, for example, Montebello (data here). It seems almost everyone who did both climbs had "a bad day" at Mix. That is far from the truth!

There is another scoring scheme I've been contemplating for many years. It's one which doesn't use a median time for each week, but rather compares the times of riders who did multiple weeks to come up with a relative time ratio for each climb. So if, for example, five riders did both Montebello and Mix, and if each one of them took exactly 10% longer to climb Mix, then a rider on Mix should score the same as a different rider on Montebello as long as the Mix rider's time was exactly 10% longer than the Montebello rider's time, once again after adjusting for whether the rider is a male, female, or hybrid-electric.

So why haven't I made this switch yet? It sounds good, right?

Well, for one it's more work for me. I'd need to code it. But that's not too bad because I know exactly what I need to do to make it work.

Another is it's harder to explain. It involves iterative solution, for example. I like things which are easy to explain. Median time is simple.

But another is it would mean scores for any week wouldn't be final until the entire series was complete. So a rider might celebrate scoring 100.01 points on Montebello, only to see that score drop to below 100 points later in the series. Why? Because the time conversion factor for a given climb would depend on how all riders did on that climb versus other climbs. And it's not as simple as I described: for example if rider A does climbs 1 and 2, and rider B does climbs 2 and 3, then that gives me valuable information about how climb 1 compares to climb 3. In effect I need to use every such connection to determine the conversion factor between these climbs.

But while scores might change for a climb, the ranking between riders during the climb would not. That's the most important thing. Finish faster than someone and you get a higher score. The conversion factor between men and women, for example, would stay the same. That's based on close to 10 years of data, so no need to continue to tweak that further.

I'll need to get to work on this and see if I can make progress. I'll describe my proposed algorithm next post.

## Sunday, November 6, 2011

### Riding the Diabolical Duo at Mount Vaca

approaching the Low-Key finish (Cara Coburn photo)

Yesterday I rode the Diabolical Duo at Mount Vaca.

First: Mix Canyon Road. Coordinator Barry Burr did an excellent job organizing this one, definitely the "road trip" ride for many in the 2011 Low-Key Hillclimb schedule. For my car pool it wasn't a big deal: one hour from San Francisco, even stopping for gas. Rides like Alba Road, Bonny Doon, Henry Coe, Jamison Creek Road, and Hicks Road we've done in the past are all substantially further, with plenty more of comparable distance. But most of our riders live closer to San Jose than to San Francisco, and for them the trip was further.

But even from San Jose this trip was worth it. A big part of it was our Strava event: The Diabolical Duo. The Low-Key Hillclimb covered just the first part of this: to complete the Duo, riders needed to also climb nearby Gates Canyon Road.

Inspiration for the Duo event came from The Toughest Ascent Blog. I won't even try to describe these roads: the blog already does an excellent job. All I'll say is they are seriously tough climbs. Take Mix: after a mellow start, it hits riders with a few steep pitches. Wow, that was tough, I thought, and then I hit the chalk "Hammer Gel Time" coordinator Barry had written on the road, marking the beginning of the "tough part". Tough? What had we just gone through?!?!

But what followed was truly impressive. When I hit the tight switchback from the Toughest Ascent Blog, I had to laugh. This was just insane!

But I got through that in my 34/27. Coming out of these switchbacks, you might expect some relief, but no luck: the road continues steeply until a following switchback. In the climb yesterday we had a photographer in that corner. Cool, I thought, the end of the steepness.

However, after turning that corner my hopes were crushed like a walnut shell under a cycling shoe. Not only was the steep stuff not over, but the road actually got even steeper still beyond this corner. This final part of the climb has been suppressed from lactic acid poisoning of the short-term memory centers of my brain. It wasn't even the raw grade numbers, but all that we had been through leading into those numbers.

Cara at the happy face marking the approaching finish (Lisa Penzel photo)

But like all climbs, this one finally ended. After the finish line for the Low-Key, Barry had set up a second line further up Blue Ridge Road, a gravel road which Mix Canyon intersects. This road was a bit wash-boarded but ridable even in my 20mm 182 gram sew-up tires. It took only a few minutes to hit this second line, the true summit of this climb. But I'd been wasted from my effort leading to the top of Mix, so I my pace here was far from impressive, especially given the distraction of the rough surface.

Returning to the Low-Key finish line at the top of Mix, I was a wasted shell of a human. I was still warm from climbing, but eventually the chilly 12C air penetrated, and I started to shiver. Fortunately I had warm clothes in the volunteer car, so was able to rectify this. I then got some fruit from the event refreshments. I was done.

Done, except that Ammon (with whom Cara and I had carpooled that morning) was waiting for me so we could do the second climb in the Duo, Gates Canyon Road. I couldn't disappoint him, I figured, I had to try.

So eventually we were off back down Mix. Ammon descends much faster than I can, especially with my flaky carbon Edge rims with their unsmooth braking surface which makes them prone to skidding, and my narrow tires pumped to 140 psi hardly inspired confidence. But eventually I made it down where Ammon and other riders were grouped. We set off together towards Gates Canyon, a few miles away. It was a nice ride along well-named Pleasants Valley Road.

Gates is interesting. It starts out almost flat, barely ascending from the valley. Then soon after the proper climbing begins, still not steep, one hits the road indicating the unpaved road. This is steep enough that grip is an issue. Ammon had zoomed ahead, and I was riding at that point with Low-Key regular James Porter, and while he was able to ride this, my tire skidded on the gravel. I could have let out some air pressure, but didn't want to risk damaging my rims if the pressure got too low, so just walked here. It was slow going. James was by now gone.

In sections, the road became just plain dirt. This had not been indicated on the Toughest Ascent Blog, so represented a recent change. I worried about clogging my Speedplay cleats, but they were fine.

But the dirt didn't last too long, and beyond it the pavement was very good, surprisingly good for what seemed to be a road to nowhere. But as soon as the pavement re-appeared, it bent into a disturbing, highly vertical angle. This road was even steeper than Mix had been! I was barely turning my 34/27, grinding away up the ferocious grade.

Many riders reported this had been tougher than Mix. Honestly I hadn't felt that way. Sure, it was steep, but I wasn't in nearly the same hurry, and I could focus on just getting up the thing rather than every second getting the most of out my legs. So here I was substantially less traumatized when I reached the end of the pavement, the end of the Strava segment. I then walked a bit on the gravel road which continued on to Mix Canyon Road, but just far enough to get a good view, then turned back.

As I got ready to descend, a local rider I'd passed arrived at the top, then soon after a group of Low-Keyers descended the dirt road I'd just walked down. The Low-Keyers had climbed to the high point of that road, almost to Mix, but had turned back. One had crashed and was bleeding. Just a flesh wound, though...

The local told us how he climbed Gates Canyon every Saturday, Mix Canyon every Sunday. He lived in Vacaville, he explained, and these were the local climbs. I was in awe. Deja-vu from Maui, where riders would climb 10 thousand foot Haleakala every week or two. No matter how extraordinary a climb, there are those for whom it becomes the ordinary.

We said goodbye to the local rider, descended together to Pleasants Valley Road. The descent wasn't bad. The fine gravel which I couldn't grip was fine descending, and the deeper dirt I could easily run. It was fun. At the bottom we then split up as we rode to our respective rides home.

Ammon, it turned out, had completed the root to Mix Canyon, and descended that instead of Gates. Very cool.

I didn't hear a single rider complain the longer-than normal drive hadn't been worth it. This day absolutely made the 2011 Low-Key series. If every one of the three remaining climbs is canceled from rain, I'd still say the series was a success. I'll never forget climbing these two roads.