Saturday, January 28, 2012

simple Strava to CSV ride decoder with Perl

Slight detour from my project... Just wanted confidence I could decode JSON data, at least in Perl.

I wrote a little decode for Strava ride data using Perl. The code, which I call "Strava_to_csv", requires a command line option specified as follows:

Strava_to_csv -activity activity-number

where activity-number is the number of the activity.

It's nothing fancy, and not very robust. It expects all data to be scalar except for "latlng", which is an array of two numbers, the first the latitude, the second the longitude. It worked for me.

This code uses the JSON module version 2.53 from CPAN. There's a lot of stuff there about encoding type, but since Strava is unicode, it worked simply.

The code is written for Linux and maybe OS/X: it uses a system call to the "wget" command to download the URL (a Perl package for HTML could be used instead).

Anyway, here's my code. This hardly took any effort at all, maybe 30 minutes, which makes me wonder why it's taken me until now to get around to doing it. Since my blog has such narrow columns many of the lines may wrap around (sorry).

Okay, back to Java...

#! /usr/bin/perl
use strict;
use JSON;
use Getopt::Long;

my $activity;

my %options = (
  "activity=s" => \$activity

die "$0 : illegal command line options specified: @ARGV\n"
  unless GetOptions( %options );

die("$0: must specify activity with -activity option")
  unless(defined $activity);

my $url = "$activity";

# slurp
undef $\;

open FP, "wget -O - $url |"
  or die("ERROR opening url $url\n");

my $s = <FP>;

my $json = JSON::PP->new;

my $data = $json->decode($s);

# check to make sure array lengths are the same

my $ndata;
my $k0;
my @keys = keys %$data;
for my $k ( @keys ) {
  my $l = scalar @{$data->{$k}};

  die("zero length data element $k found\n")
    unless ($l);

  unless (defined $ndata) {
    $ndata = $l;
    $k0 = $k;
  elsif ($l != $ndata) {
    die("keys $k0 ($ndata) and $k ($l) reference arrays of different length\n");
  # special case: we expect latlong to be an array of length 2
  if ($k eq "latlng") {
    unless((ref $data->{$k}->[0] eq "ARRAY") && (@{$data->{$k}->[0]} == 2)) {
      die("$k expected to reference data arrays of length 2\n");
  elsif (ref $data->{$k}->[0] ne "") {
    die("data element $k expected to be scalar; reference found instead.");

# print label line
my @labels;
for my $k ( @keys ) {
  push @labels, ($k eq "latlng") ? "lat,lng" : $k;
print join(",", @labels), "\n";

# print data lines
for my $n ( 0 .. $ndata - 1 ) {
  my @data;
  for my $k ( @keys ) {
    if ($k eq "latlng") {
      push @data, @{$data->{$k}->[$n]};
    else {
      push @data, $data->{$k}->[$n];
  print join(",", @data), "\n";

writing my Strava Android app, part 2

More progress...

First, I did more sketch work on my proposed pages for the app. One of these involves data plots: plotting the altitude, and on a separate plot, speed from a Strava activity on a graph. This is the biggest challenge of my GUI design: the rest consists of a text widget, a bunch of button widgets, and some labels, with more simple widgets in the "configuration" screen. Plots with limited pixels are a challenge: I believe the screen resolution is only 480 × 800 for which only a small subset, for example 400 × 100, will be available for each plot. Not so bad, actually, but real estates needs to be used efficiently. I'll avoid doing anything fancy: no scrolling or zooming, for example. The goal is just to identify portions of the ride in a clearly identifiable fashion. For this I can either do my own plots with graphic primitives or use a more general purpose plotting package. I'm not yet decided on this.

Second, I looked into the Strava API itself (it's a work in progress so I resist putting the link here). It's not nearly as bad as I feared. The Strava API consists of specific GET and PUT transactions, using the appropriate URL's, to read and write JSON data to the servers. JSON stands for "JavaScript Object Notation". The advantage of this is it is effectively language-indendent. For example, CPAN has a nice JSON package for Perl, my favorite scripting language. However, I will resist the temptation to do this project in Perl: Java is definitely the way to go. Perl is great for quick-and-dirty projects but for stuff intended for distribution on Android Market I should toe the line and follow best practices, which means Java. (Note: this won't stop me from at some point whipping together a quick script in Perl to export ride data to CSV format, something which I'll find personally useful). Previously I'd been a bit intimidated because the Strava API examples are in Ruby, a language of which I know virtually nothing. But Java should work equally well. The challenge with the API will be writing data: I still need to experiment with that. Worst case is the app will write data to a new activity, then leave it to the user to delete the old one to avoid duplication. But I strongly suspect I'll be able to work out activity deletion or even direct data substitution as well.

Here's an example of what version 1 of the Strava API produces: JSON data of a recent short ride I did. It's fairly straightforward, if inefficient. For example, were I to want to download all data for all crossings of the Golden Gate Bridge for statistical analysis (which would be interesting, to get a statistical distribution of speeds), that would be extremely slow; I'd want a compressed data format like FIT (used by Garmin: a Perl library and a link to the Garmin SDK are here) for that purpose. But for a single ride the rich text format provided by JSON is fine.

As an aside, version 2 of the API claims to allow data to be filtered before download (similar to Garmin "smart sampling"). This should help a lot on the bandwidth hit. But using FIT or similar would probably be at least a 10× improvement.

There is another issue: user authentication. Hopefully this can be handled by the standing Strava app. But I may need to add a log-in page to mine. This isn't something with which I've dealt before.

On the number-crunching side, Java is a fairly simple, sequential language and the sequential array processing should be simple enough.

So things are looking okay. The goal on any programming job is to take complex tasks and break them down into simpler sub-tasks. Then take these sub-tasks, and if necessary, break them down into even simpler sub-tasks. You keep breaking tasks down until the remaining tasks are so simple, the actual coding of them is trivial. It's a lazy shortcut to try to take too much in one bite: to do a complex task directly, and attempting to do so invariably turns the project into a mess. The actual coding part for each sub-task should be simple. The challenge is in organizing the tree of tasks, in knowing exactly what you want to do before you try doing it.

Friday, January 27, 2012

writing my Strava app: part 1

The first step in writing my Strava app was to make a note of exactly what I wanted it to do. Well, perhaps not exactly: I don't know the capabilities yet of the Strava API. In particular, does the Strava API allow you to replace the data on a ride? Apparently it does, since StravaHaHa allows modification of ride data. Honestly I don't know where the API is documented, but I am deferring that until later. No rush.

So then when I knew what I wanted the program to do, I set out to design some pages. So I measured the screen on my HTC Incredible phone and found it was 5 cm wide by 8 cm high. So I set up an image file using GIMP with 500 pixels wide by 800 pixels high, and for each screen, began "sketching out" how I wanted the page to look. It's different assembling a page from a widget tool kit, so details aren't critical here: I just the look and feel of each page.

When I got tired of doing that, and I was on-line, I started downloading some of the stuff I want for writing the app. For example, this tutorial page provides some nice guidance. First I went to upload my Ubuntu version on my laptop, but my CD player is being cranky, and I can't get the installation CD (written from my work machine: shhh!) to run. Hmm... I'm not going to invest any money in this laptop, however, as it's from 2007: ancient. Instead I think I'm ready to dip my toes in an Apple's OS/X. I'll work on that...

The tutorial recommends Eclipse as a development platform. An alternative is to use a simple text editor. But that seems so old-school: better to use a proper development environment. So I'm just finishing up downloading Eclipse now.

Next I need to download the Java Development Kit. Android apps can be written in C, but Java is more common, and I should follow the best practice. I really like Java, as I noted. But it's been quite a long time since I've done any Java coding.

So time for a Java tutorial. That's easy: Oracle (formerly Sun) has some nice tutorials. So I'm going through those now.

A lot needs to come together for this to work. Honestly I'm not sure I'm going to make my deadline. But I need to stick to it, and by writing here my intent puts some pressure on me to make it work. If I can, I'll feel pretty good about it.

added: Sure enough, Eclipse crashed and burned on my system, which is Ubuntu 9.04: it states it requires 10.04 at least. Hopefully I can get my CD drive working so I can install 11.10. Otherwise I need to wait for that Apple.

writing an Android app

I've long wanted to write an Android app so now seems a fairly good time to give that a shot. I want to port over some Perl stuff I've done, not directly necessarily, probably in Java, which I've done some work in before but long ago. I really liked Java, though: a proper object oriented environment rather than the layered kludge-fest which is C++, or for that matter "object-oriented Perl", neither of which I've ever liked. I end up with hybrid object oriented - sequential code. Better to have the environment optimized for the object oriented paradigm and stick with that.

Step one didn't go too well... upgrade my Ubuntu to the 11.10, but then my CD drive on my old Thinkpad isn't working well. I tried to clean it but now it's working worse...

Anyway, I got a book on the subject ( Android Applications for Dummies ), but am not waiting for that to arrive. There's plenty of on-line reference material and tutorials. Book form is just more convenient for my train commute, and there's something to be said for the coherence of printed books. When Cara and I were in New Zealand we had an old Lonely Planet printed, a new one on Kindle, and after one attempt at the Kindle version we were back to the old printed copy the rest of the time. Kindles are fine for linear access, or in principle for text-based searching, but for random access of pages with a good index and table of contents printed still wins.

First thing on any programming project is to clearly define what you want to do, so that's where I'll start. I find once you have that down, the actual coding becomes nearly trivial, the details of the language barely relevant.

I want to use the Strava API for this project. Cosmo's done some nice stuff with it. For example, his TCX exporter is my method of choice for getting data off Strava, better than the native GPX exporter Strava eventually added.

Cosmo's stuff is web-based, which is another option. That's another option: it would also give me a chance to expand my web skills, which would help for the Low-Key Hillclimbs. It would be fun to write something to browse historical data. But that's a second priority, and time is so limited as it is.

Goal for this project to be functional is 29 Feb.

Thursday, January 26, 2012

rating New Zealand climbs

I've described a decent number of climb profiles from my trip to New Zealand, with profile data collected from a Garmin Edge 500 or, in the case of Haylocks, by Strava using topological data in conjunction with positions recorded by the Strava Android app. It's then obvious to ask: how do the climbs compare? Which was the toughest?

Good question.

First, some data. I plot here the altitude gained versus the climbing distance for each of the climbs. I define "the climb" as the portion of road which maximizes my climb rating, which I've described in this blog before. Here's the result, where I normalize each by the number associated with Old La Honda road:

vertical vs. distance

What makes a climb tough? To me, it's continuous time spent at a big grade, with a lot of altitude gained.

click on image for expanded view

Haylocks profile
profile of Haylocks from Maori church. Ignore wiggles, a mapping artifact; climb is continuously up. Click on image for larger view.

Using an objective combination of grade, continuity, and meters of elevation difference I'd have to rank Long Bay Road as the toughest. Haylocks Road was definitely the steepest: it was an effort just to keep the bike moving on that one, but it was fairly short. I did have the advantage on Haylock of having not climbed it continuously: I stopped at the junction with Hamiltons, went up Hamiltons, then descended back to the junction and did the portion of Haylocks from there. But even accounting for that I felt Long Bay was the greater endurance challenge.

click on image for expanded view

click on image for expanded view

You can see from the first plot that both sides of Crown Range Road gained more vertical than Long Bay. But the east side of Crown Range is gradual, only a few percent, for a considerable distance. Long kilometers on the road can be difficult and tiring, but the difficulty I'm talking about here isn't about hours in the saddle, it's about the portion of the difficulty due to the climbing itself. The western slope of Crown Range is far steeper. However, there is considerable recovery provided: approximately 5 km where the grade barely touches 7%, including descending. These kilometers dilute the rest of the climb, where the grade sustains between 10.1% and 12.6% by my determination. Long Bay Road also has recovery sections, but they are much shorter: 500 meters and 200 meters, approximately, most of the rest of the climb hovering about the 12-13% range.

So which is harder? A short grunt of a climb (Haylocks) flirting continuously with the nasty side of 20%, or a much longer climb (Long Bay) which tends to hang out in the 12-13% range? The answer depends, of course, on what gears relative to your strength-to-weight ratio.

My climb rating formula includes an exponential difficulty factor proportional to the exponent of the ratio of the grade to 8%: when the grade gets much over 8% difficulty per unit altitude change increases rapidly. With this assumption, the difference between a given amount of climbing at 12% and at 20%, sustained, is around a factor of e, or around 271%. This pays off big-time for Haylocks.

So here's a plot of the derived ratings, where I applied a 100 meter dual-sided exponential smoothing function to the Haylocks profile to get rid of those anomalous wiggles before applying the formula:

rating vs. vertical

Haylocks, despite being the least total climbing of any of the climbs I plotted, wins on the difficulty scale. Hmm... I still disagree, from my perception, but with different perceptions (for example, had I been stuck with a 39-23 low gear instead of a 34-26) it might have been an undisputable conclusion.

Here's a summary of the numbers, all of which have been normalized to Old La Honda Road (5.55 km, 393 meters, rating formula = 1005.5 meters):

Pigeon Bay Rd, Banks Peninsula
Dyers Pass Rd (S), Governors Bay
Crown Range Pass (E), South Island
Okains Bay Rd, Banks Peninsula
Arthurs Pass, Westland, South Island
Crown Range Pass (W), South Island
Long Bay Rd, Akaroa
Spur Rd - Haylocks Rd, Onuku

Wednesday, January 25, 2012

climbing Onuku hills

With climbs, there's a tendency to focus on those which gain big altitude and are frequently ridden, preferably in top-level races. However, sometimes it's the back-road little-known compact climbs are equally memorable, or in this case, surprisingly challenging.

The day after my big Banks Peninsula hill ride, I went for a short scenic ride with Cara south of Akaroa. The goal was to check out Lighthouse Road. From the distance Lighthouse road is clearly visible, etched in the side of the treeless hill, the occasional car snaking its way slowly up the road's numerous switchbacks. It looked steep. But before our trip I'd set Cara's bike up with a 34/32 SRAM 1070 cassette with a medium cage SRAM Rival rear derailleur, a very nice combination which seemed to work very well (I detected no reduction in shift quality relative to her previous SRAM Red short-cage). So I figured we'd go check it out and see how steep it really was. Looks can be deceiving.

In central Akaroa, she zipped away in her frequent fashion, thinking I'd meant the road to the present location of the lighthouse. But the lighthouse was moved years ago when the actual heavy lifting of keeping boats off the rocks was taken over by an automated beacon: the old residential lighthouse was now just another tourist attraction. Lighthouse Road went to the old site, where the beacon now lives.

The coastal route Cara led us on didn't pan out as expected, however, as first it turned to dirt, then ended in overgrown brush at an exit point for a treated sewage line. Not a tourist hot-spot, I decided, although I hate to discriminate against sewage pipes. I was reminded of the proposal in San Francisco to rename the sewage treatment plant after George "W" Bush, but it was decided that was unfair to the workers there. In any case, we backtracked and continued the way I'd intended, towards Lighthouse Road.

The Banks Peninsula is volcanic, and like Maui, another volcanic land mass we'd visited (in October), the land rises up from the sea without much pause: if you go inland, you go up, at least until you start going down towards the opposite shore. So moving inland to intersect Lighthouse resulted in some non-trivial climbing on Onuku Road at a fairly stiff grade.

But Lighthouse Road was in a different league. I turned briefly left onto the road and immediately recognized this wasn't the sort of thing I'd planned to take Cara on, especially since she was recovering from toe pain at the time.

So instead we continued down Onuku Road which leads to the town of the same name. Onuku is a Maori village whose primary tourist attraction is the 19th century church there: a melding of Christian and traditional Maori iconography. Prominent is a big face with it's eyes bulging and tongue extended, a trademark Maori expression.

The church was in fact very nice, right near the shore. As we were there, a tour guide riding a motorbike with a client in an attached sidecar came by, paused, U-turned, and returned to Akaroa. But we weren't ready to turn back.

The road cut inland from the church, tilting upward before turning a corner. "Uh, oh," I said, "this looks steep!"

"We'll see," Cara replied, and up we went.

Around the corner it kept climbing... and climbing... and climbing. I wondered how far it would go. Once a road starts going up, it's hard to turn back; the top might be just around that next corner!

Eventually I got to a junction, the road continuing steeply in both directions. One direction, labeled Hamiltons Road, appeared to be a more major road than Haylocks Road, the other direction. I paused for a bit, not wanting Cara to get confused about the direction I'd gone, but then I decided she'd probably recognize Hamiltons was the "obvious" route, so that's how I went.

the junction

Wow -- now this was really steep. Cara, I realized, probably wouldn't climb this far, so I wished that the road would end, even if I wasn't ready to turn around voluntarily. My wishes were met, however, when I reached a gate marking the entrance to Onuku Farm Hostel. A car which had recently passed me was there, the passenger opening the gate, but I didn't try to slip through. I declared this the top of the public road, and turned back.

top of Hamiltons
gate at top of Hamiltons

When I reached the junction with Haylocks, I was surprised to see Cara waiting there. Not only had she climbed to that point, but she'd gone further: up Haylocks a bit, before turning back. I looked once again up Haylocks, only now appreciating how pathologically steep it was. Just by climbing a part of that, even with her new climbing gears, Cara proved I'd underestimated her. I told her I'd check it out myself (not wanting to be out-done) and would be back soon.

Haylocks was too steep for me to clip in directly, so I did a little loop at the junction to get into my Speedplays. Then I started to climb.

I was in my 34-26 (34-23 being simply out of the question), but at times I wondered if I'd be able to keep that gear turning. This road was really, really steep. Not Filbert Road in San Francisco levels of steep (31.5%), that road I could only handle for a short distance, but this road was close to my limits for sustained climbing.

After a bit, I noticed a house in the distance, well up the hill, a road leading to it. Roads not being in huge supply around here, the reasonable conclusion was the one I was on led to the house. I steeled myself for the life of pain to which I would be condemned for the foreseeable future... But then, salvation arrived. The road crossed a rough cattle guard at a gate.

the end of my Haylocks
gate marking the end of my Haylocks climb

I briefly considered "sprinting" to a speed which would give me a chance to get over the wide gaps in the guard, as the gate was open, but then I noticed a sign proclaiming "Lambing: keep out" and marking it as land for a Bed and Breakfast. I decided to follow orders, and returned to the junction where Cara was waiting. This descent gave me another hint about the grade: it couldn't be much over 20%, because at around 25% such as I encounter on several blocks near home, I have problems controlling my speed, while here I was in no danger. After I joined Cara we then rode back to our holiday park, a journey which took us over three significant steep climbs, but nothing more of the level of Haylocks.

The ride ended with an epic fail as I went hard at the base of Old Coach Road, intending to set a good Strava time to the holiday park on Morgan, but I simply had nothing in the tank, my motivation snapped mid-pedal-stroke, and I came to a virtual stop seconds later before recovering enough to crawl the rest of the way up the steep hill.

For the ride I was using only the Strava Android app on my phone. My personal Garmin Edge 500 was lost before the trip (stolen? misplaced? Maybe I'll never know), and so I had a Garmin only when Cara wasn't using here. The app records only longitude and latitude, with Strava using map data for determining altitude. This works surprisingly well, but not as well as the altimeter built into the Garmin Edge 500, so there tend to be fluctuations in altitude about the true value.

Here's that result, where I show the profile for riding from the Maori church to the junction and onward up Haylocks to the gate. I constructed this from my climb first to the junction, and later my climb from the junction up Haylocks:

Haylocks profile
profile of Haylocks from Maori church. Ignore wiggles, a mapping artifact; climb is continuously up. Hamiltons profile had greater artifacts and is not shown.

The line shows a 20% grade, and Haylocks has no problem keeping that pace. It would have been interesting to see how it continued on to the bed & breakfast. I suspect it was more of the same.

As for Cara, I'm super-impressed she was able to ride up Haylocks at all, especially after riding the climb to the junction. She's getting much stronger in her long return to her fitness levels she had before her mountain bike crash in 2009.

Later in the day I considered returning and exploring Lighthouse myself. However, I was simply too tired from all the recent activity. I needed some rest.

Tuesday, January 24, 2012

Climbing Dyers Pass Road

Christchurch was the beginning and end of my just-completed trip to New Zealand. Christchurch consists of a dense central district, a suburban ring, and beyond that, agricultural land dramatic mountains. The central district has been largely destroyed in two days of quakes: 4 Sept 2010, and a highly destructive aftershock on 22 Feb 2011. The damage to the suburbs is less visible but just as real: many houses were condemned due to structural damage.

But the riding outside the city limits remains truly excellent. There's three popular passes just south of the city: Gabbies Pass, Dyers Pass, and Evans Pass. My route book, "Classic New Zealand Road Rides" by Jonathan Kennett and Kieran Turner described a ride over Gabbies Pass and Evans Pass, and shorter ride over Dyer Pass and Evans Pass. Each of these rides went over Evans Pass, but I was told as I staged at Zero's Cafe near Princess Margaret Hospital in Cashmere (part of Christchurch) that Evans was closed. So my alternate plan was to ride Gabbies to Dyer.

But two separate riders independently suggested an alternative: at the top of Gabbies Pass, ride "The Bastard", a climb along the local Summit Road (not to be confused with the one near Akaroa) to the top of Dyers Pass. Then I could descend Dyers back to Christchurch.

This presented a bit of a problem: I didn't want to deny myself some classic local climbing. But as I was riding towards Gabbies, a solution occurred to me: ride The Bastard, but then descend and reclimb Dyers (towards Governors Bay, the good side), then descend to Christchurch.

I asked someone at a cafe along the route if this seemed reasonable... there's a lot of cafes in this cycling-crazy region. "I'd doubt your sanity" he replied. That sealed it.

My derailleur cable slipped when I was riding Gabbies Pass, ruining that effort, and as I climbed the Bastard, the climbing itself took a back seat to admiring the spectacular views. To one side, Lyttelton Harbour, and to the other, the patchwork of extensive agricultural fields surrounding Christchurch. It was great.



But after climbing to the peak of Summit, then riding the rolling descent beyond, I came to the "Sign of the Kiwi", an historic cafe at Dyers Pass. One rider after another ascended from the right, the Governors Bay side. Others at the top cheered on those approaching the summit. It appeared to be some sort of large group ride, if not a formal event. I wanted my turn!

So without further delay, I set off down the descent, recovered a bit at the bottom, and began my climb.


Other than the car traffic, I loved climbing Dyers Pass.

On the down-side, it's a two lane road without much shoulder, blind corners resulting in occasionally uncomfortably short sight lines for drivers to see cyclists. But it has the advantage of popularity: with so many cyclists on the road, drivers seem to be generally aware, and I had no issues during my ride there.

But the climb itself is a straight uphill grind. Gaining close to 300 meters to its 331 meter peak, it's just a put-it-in-a-single-gear-and-go sort of climb, 10.2% average according to Strava. At that distance, you can really go out at a good, hard pace without fear of digging yourself too deeply. Sure, it will start to hurt, but then you just ride through the pain for the few extra minutes it takes to reach the top. The finish is fun: it lets up for a short distance, then makes up the deficit in the final meters. Doing a 50 meter smooth on altitude versus position, however, results in only a 1.2% increase in grade here about the mean, so it's easy to power through this in the same gear. If you have anything left, however, this is a good chance to upshift, build up some speed, and finish hard. In the big picture, though, Dyers is an easy climb to make an effort on, since there's not much thinking involved. If I lived in Christchurch I'd love doing this climb.

Given how unfresh I was from my recent hard rides, and how much extra mass I had on my already relatively heavy Ritchey Breakaway, I felt really good with my effort. It was good enough for the Strava KOM, with what for me is a solid VAM number.

Dyers Pass

I contemplated also climbing the Christchurch side. However, as I descended, it was obvious this was less interesting: the grade was generally shallower (a bit steep only near the bottom) and the influence of the shifting winds would be greater. So I decided enough was enough for the day, and so headed back to Zeroes to meet Cara, who was finishing up her flatter ride.

Monday, January 23, 2012

Climbing Pigeons Bay and Okains Bay Roads

After climbing Long Bay Road on that second ride, I continued along Skyline Road, west towards Hill Top.

Summit Road was absolutely gorgeous. Never flat, it's alternately up and down the whole way as it offers fantastic views of both sides of the ridge. It's reminiscent of Skyline Road in San Mateo and Santa Clara counties of California, Summit Road and Highland Road down near Loma Prieta, and Ridgecrest Boulevard on Mount Tamalpais, or El Camino Ciel above Santa Barbara. Each is gorgeous, each similar yet unique. The pavement on Summit on Banks Peninsula was quality chip-seal, no issues at all, and traffic was light, although a high fraction of the traffic was trucks. It's a rural place, with ranches on either side of the road, ranches taking up much of New Zealand land.

So I passed first the road to Le Bons, then Okains Bay Road, then Pigeon Road, in addition to several "unsealed" roads along the way. But then I emerged finally at Hill Top, the terminus of the "tourist" route from Akaroa to Christchurch.

At Hill Top I descended 75 to Barry's Bay at the water's edge. The descent was fantastic: certainly it could have been taken a lot faster than I did. The roadway is excellent and there's no surprises in the corners, with turns presenting even the slightest challenge well-marked with recommended speed limits. The standard speed limit on even two-lane roads in New Zealand seems to be 100 kph, so any turn which can't be taken this fast is marked thus.

Traffic on 75 can be a bit heavy. It's especially bad if you catch the tour buses. On the descent, however, this isn't a bit issue. The road was certainly empty on my first descent, relatively early in the day for traffic originating in Christchurch.

Pigeon Bay Road

Approaching Devauchelle, I reached my next target: Pigeon Bay Road. Here's the profile. Pigeon Bay has some challenging sections, but since it gains only 290 meters, it passes relatively quickly. But it's actually a bit more than this if you consider all of the roads between 75 and Summit begin at peaks in the undulating Highway 75, and (except for Long Bay) intersect Summit at dips. So there's some climbing to be done before reaching the base of Pigeon Bay.

At the top, I turned left on Summit, returned to Hill Top, then descended 75 again. This time there was substantially more wind and more car traffic. People were beginning to arrive from Christchurch. I even had a vehicle tailgate me a bit to let me know it wanted to pass. It was really the closest thing I'd had to that point to an "incident" in New Zealand. But really it's nothing anti-cyclist; were I in a car at the same speed he'd have done the same thing.

This time after passing Barry's Bay I continued through Devauchelle, climbing again to the next climb in the series, Okains Bay Road. There are two other prominent roads inland between Pigeon Bay and Okains Bay, but they aren't paved routes to Summit.

Okains Bay Road

I was getting tired by this point and Okains Bay Road wasn't a very good effort for me. It's longer than Pigeon Bay, gaining around 371 meters. Indeed it seems to go on for quite awhile, Summit always visible above, yet since Summit is descending towards its intersection with Okains Bay, it's never clear how much climbing remains. To make things worse, or perhaps more interesting, the grade increases in segments, so if one isn't aware of this it's easy to think fatigue is winning the battle. In my case, perhaps it was.

But the intersection is only part of the way. There's still over 200 meters of climbing between Okains Bay Road and Long Bay. Tired and hungry, I stopped for a sandwich along this segment, admiring the view while I ate.

Finally I descended Long Bay back to Akaroa. This is the finale of "Le Race", the annual bike race between Christchurch and Akaroa. I can't imagine ending a race on such a steep descent. I'm told there's crashes every year.

Sunday, January 22, 2012

Climbing Long Bay Road

Akaroa on the Banks Peninsula, southeast of Christchurch on South Island, New Zealand, provides for excellent cycling: probably the best encountered on Cara on our vacation.

First up on the list is Long Bay Road, which goes from the northern boundary of Akaroa up to Summit Road. Summit runs along the rim of a volcano, Akaroa Harbour forming the cone, and Long Bay (among others) on the outer edge of the rim. There's a series of roads which run from the harbor (the cone) over the rim. From east to west the paved ones are Long Bay Road, Okains Bay Road, and Pigeon Bay Road. I rode all three while in Akaroa last week, but Long Bay received most of my attention.

Long Bay is the longest and toughest. Upon arriving in Akaroa, having done a fantastic 10 km trail run at Lake Takape that morning, I went for a "preview" ride of the hill. I'd not planned on doing the whole climb, but with Summit Road dangling in the distance, the hills mostly stripped of sight-blocking trees by ranchers in the 19th century, it was virtually impossible to stop climbing. Actually the climb extends a bit, "unsealed" gravel, beyond summit to a place called Cloud Farm. The name makes sense when you realize it's open space land purchased by the Queen Elizabeth II National Trust to preserve it from development. Here's that preview ride:

The next day I was feeling okay, so I set off to do a stronger effort up Long Bay to begin a longer ride.

There are two primary routes of access to Long Bay Road from central Akaroa. The "obvious" route is Highway 75, the main highway between Akaroa and Christchruch. There can be a relatively large traffic on this road, so it's not my recommended route unless you are gunning for a Strava segment which includes it, like this one, or this one which I created based on my "preview" ride.

A better option is to instead climb Old Coach Road. This road forms a semi-circle, starting and ending at Highway 75, the upper intersection adjacent to the start of Long Bay Road. Along the way Old Coach intersects with the bottom of Morgan Road, which is paved for the short segment to the Top 10 Holiday Park, but afterwards becomes rough gravel until it reaches Long Bay Road part-way up. I wanted to investigate this road but never made time for it: the gravel at the top seemed fairly rough; it was perhaps better at the holiday park entrance.

From the base, Long Bay Road begins climbing moderately steeply: steep by most standards, but not to the typical New Zealand standard. It's a fairly steady 8.2% for 1.0 km. After this the road levels out for another 500 meters. But then the real fun begins. The road heads upwards...

The next 2.6 km is a series of steep pitches and brief reductions in grade. I did a regression on the data from a 2 km segment, yielding a 12.2% grade, but the actual grade fluctuates about this value. My first ride up I tried to hold onto my 34/23 here, but in the second ride I more quickly retreated into my 34/26. Perhaps not surprisingly, the second ride was faster.

Finally the road once again relents. My first time, with a tailwind, I even thought there was a descent here, but on my second ride this perception was gone. The altitude data shows no descent, but compared to what you've just been through, it may as well be. Looking ahead, however, reveals that there's still more to come: the road is clearly etched into the hillside above the present altitude, even if the climbing directly to follow is hidden around the corner. Look for the tower, however: that's the goal, the tower past Skyline.

And once around the corner, up the road goes again. I have this section at 12.9%, but it's basically the same as the upper portion of the previous segment. The altitude difference just mentione is closed quickly: only 400 meters of suffering and the intersection suddenly appears. Long Bay is done.

top of climb

But wait; there's more! Cross Summit Road and an easily ridden gravel road continues to climb, somewhat steeply but without the pressure of timing yourself here, not bad. At the top are the best views of Akaroa below, and the Cloud Farm Open Space.

Cloud Farm

This was the end of my preview ride. The ride the following day, I skipped the gravel and instead headed west on Skyline for more adventure.

Thursday, January 19, 2012

climbing Crown Range pt 2 : Queenstown side

Having climbed the east side of the pass, it was time to descent to the west. Every new turn brought a fresh view of the scene laid out before me, and it was a challenge to keep my focus on the road. After a wonderful series of sweeping turns, one punctuated by an active road construction crew, I entered the final portion of this descent, a series of tight hairpins reminiscent of my descent of the Poggio on the Ligurian Coast last fall. I knew I was riding these too slowly, but taking the turns a bit easier had the benefit of extending their duration, and they were worth savoring.

The descent done, I was ejected onto Highway 6. I expected this would take me to Arrowtown just down the road: a few km at most, based on my reading of the route profile before I'd left.

But I'd misunderstood the route profile. What had been so close to the Crown Range was Arrowtown Junction, not Arrowtown. It was still 5 km to the town. So down the side road I went.

When I arrived at the town, it started to rain, lightly but steadily. I first went into a Holiday Park (RV Park) for directions, which were trivial, then continues into the quaint, Los Gatos-like downtown where I rolled along, counterflow on the one-way road, until I found a bakery. Looking past all the meat pies I noted they sold French bread. I got a wonderful baguette, which would serve as my calorie source for the return trip.

It was still raining as I returned to Highway 6, but cleared by the time I'd returned to Crown Range Road. And so I began the highlight of this ride: the ride of its western slopes.

click on image for expanded view

It was a hard climb, longer than I'd remembered from the descent. Finally I made a push for what I thought was the summit, but it was not... several more steep segments remained before finally I reached the lookout at the pass. It was never super-steep, but often uncomfortably so, and I spent plenty of time in my 34/23 even if I resisted the 34/26. But the summit finally arrived, as it usually does.

A curious characteristice of this climb are the flat portions, which take up close to 3 km of the 10.8 km total distance. These really hurt VAM numbers for the climb: far better would be a steady grade of the same distance and total altitude gained. With the exception of a 200 meter break, what I had initially thought to be the finish, the final 3.0 km are sustained at 10% or more.

This would make a fantastic Low-Key Hillclimb. My rating algorithm scores it at 172% Old La Hondas of difficulty. This puts it between Montebello Road and Sierra Road in the climbs I've rated from the Low-Kehy Hillclimbs.

As I'd approached the top, I'd noticed a dirt road snaking up past the summit lot, so when I reached the finish of the paved climb, I went to check it out. It was fenced off, but a stair provided pedestrian access past the fence. After a bit of recovery, I carried my bike over the stair, and walked it up the first portion of dirt: the surface was too rought and steep to clip in. At the first switchback, it was evident the road only got worse further on, so I admired the view there and returned the way I'd come.

I'd hoped for tailwind on the return to Wanaka, but to the contrary, I battled a headwind the whole way. When I finally arrived, my baguette long since eaten, battered and a bit broken, I pulled into the Racer's Edge bike shop to fill my tires to their target 80 psi (they were down around 40... so much for getting an easy 100 psi from my hand pump). I asked the mechanic whether it was always this windy in Wanaka.

He looked outside, paused. "It's not windy today," he finally responded.

That basically answered my question.

Even the winds, and getting lost heading back to the holiday park, couldn't dampen the euphoria of the Crown Range. If you come to New Zealand, this climb is a must.

Wednesday, January 18, 2012

climbing Crown Range pt 1 : Wanaka side

During a particularly good SF2G, I head the rider called "Space" say he'd been to New Zealand. I asked him what the best ride he'd done there. "Wanaka to Queenstown", he said. At that moment this became a "must-do" for my trip to the country.

There's two routes connecting the two cities. The main route, Highway 6, goes around the mountain while the more direct route, Crown Range, goes over it. Obviously Space has been referring to the latter.

Crown Range was only paved relatively recently. Indeed, the profile in Scott Kennedy's book marks it as dirt. The text description, on the other hand, makes no mention of a dirt surface (although gravel on shoulders is described in the summary directions). Obviously Lonely Planet had failed to update the profile in the edition where the text was updated with the new road work. The book has many issues.

Strava verified Space had ridden the Crown Range. So when Cara and I arrived in Wanaka, after a fun stop to run the maze at Puzzle Town, the ride was on my short list of to-do's.

We were staying at the Outlet Holiday Park on the shore of the lake. It was a wonderful place, within walking distance of the Sticky Forest, home to a virtual amusement park of bike-legal single track. Not only were the trails legal, but they were labeled with such evocative names as "Super G" and "Woo Hoo", marked in signs with a Bike logo. While I didn't have a mountain bike, the trails made for a most excellent trail run.

click on image for expanded view

From the park it was a bit of a ride to get to the Crown Range Road. But once there the route was simple: ride west on the road over the pass, turn right at the "T" with Highway 6, go to Arrowtown, stop for food, return.

The route began nicely enough but unspectacularly. After an initial little rise, the road began its initial gradual ascent. I stopped to take a photo of a sheep, one of many this trip. It was to be my last photo of what was to be a day of spectacular scenery: my camera battery emptied with this shot.

The first goal was Cardrona, approximately 25 km from Wanaka, 22 km from the start of the "climb". After passing through a construction zone and the entrance to the popular winter ski resort, I was there. As far as I could tell, there was no active mid-summer commerce here: a historical general store/post office, and an old hotel. I did see a woman in what appeared to be a kitchen of the hotel, so that was probably open. There was an antique car parked on the street.

Onward... I knew from Kennedy that the road eventually kicked up from here, increasing in grade. Indeed as soon as I left town I began climbing in earnest. This section is around 5.9%, but doesn't last long. Soon after the road levels out again, beginning a series of crossings of the Cadrona river: ten, I think.

I crossed a cement cattle guard. I noted I'd not before seen a cement one: they're almost always metal. Soon after this musing, I noticed something else: my front tire was most definitely going flat. So much for any Strava heroics on this side of the hill... at least starting in Cardrona.

Before the trip, based on advice from my SF2G brethren relayed by me, Cara had purchased two Lezyne "Road Drive" mini-pumps. 100 psi without problem, I'd been told. When we arrived here, our tires deflated by Security, I'd inflated them with around 150 pumps of the little pumps. This was the pressure where pumping became difficult. I'd not really assessed how much pressure this was, but when after this ride I stopped at Outside Sports in Wanaka to inflate my tires fully, I realized they'd probably been only around 40 psi. No wonder I pinch-flatted.

I repaired the flat, perhaps unwisely using a patch instead of swapping tubes. Another Lezyne purchase before the trip: their expensive but apparently high quality "glueless" patches. I put one of these on a puncture hole, reinstalled, and reinflated. No luck. So I removed the patch, which seemed to still be intact, applid some patch kit glue, and moved the patch to cover both holes. This worked: the patch held, and the tube held air when I reinflated it. 17 minutes for the stop... but it seemed like less, as it really was a nice place.

My incident marked the beginning of the true climb From here the grade began to increase, never decreasing until the summit. The final 2 km was surprisingly steep: sustaining around 11.4% before finally relenting in the last hundred meters.

And when I reached that summit, what i saw was absolutely spectacular.

I can't really describe the view from Crown Range Pass. It was so panoramic, so dense in detail, it was just too much to really all absorb: the road winding down the opposite slope to an expansive valley, mountains in multiple layers of distance, dirt roads winding up the closest slopes. It was an overwhelming excess of color and shade: various hues of green marking the valley and hillslides, extending to white snow on the distant peaks, a light patching of clouds on the otherwise blue sky. Really incredible.

And my camera battery was empty.

Enough, I decided: I'd told Cara I'd be back by 2 pm. So I got back on my bike and continued down the western slope.

Much later, when I'd run my rating formula on the numbers from Crown Range (E), I got a rating for this climb of 106% Old La Honda, with a distance of 705% OLH and an altitude gain of 197% OLH. So it gains more altitude but does it so gradually, at least initially, the net "difficulty" comes out about the same.

Tuesday, January 17, 2012

Hass Pass returned from the dead


After not seeing the Haas Pass data on several log-ins, it appeared on my account... not sure where it was hiding, but glad to see it back!

Actually, I think there's an issue with Synchronization when running in "airplane mode" when running the Strava app on a phone. I'm running airplane mode because data and voice are too expensive overseas, and I want to avoid any risks apps will check for updates or new mail or whatever and incur $1.99/minute data charges. And when I'm on vacation, spending time dealing with the internet becomes a low priority: it's liberating to do things like read actual newspapers, play Scrabble, or just sit and enjoy the chirping of the birds in the morning.

So Haas is back. A few other activities are now mysteriously missing, but I have confidence eventually my phone will "sync" them with my account. Patience, patience....

On my trip: not riding much, but every day is something: runs, hikes, even a fun day of riding a rental downhill bike in Queenstown. Cara, on her first mountain bike ride in 33 months since badly injuring her knee in a mountain bike crash, was dusting me on the beginner course. I salvaged some self-esteem by doing the intermediate course as my last run, after she'd declared herself tired and ready to stop... good time, but I will never be good at throwing myself at the mercy of gravitational acceleration.

More pass reports to follow... presently I'm heading back towards Akaroa near Christchurch where I'll get to sample some of the best road climbing on the island. The island has huge potential for epic climbs, but a lot of land is private ranch land with crude dirt roads which are accessible to "trampers" only. In fact, this is a hiker's paradise, with wonderful multi-day routes with a regular spacing of comfortable huts. Many of these routes cross private land, but people here aren't as fanatical about the delineation between private and public property as self-absorbed Americans.

Anyway, back to life... time to log off and do a quick trail run from Lake Takepo.

Sunday, January 15, 2012

climbing Haas Pass

Next on my list of New Zealand climbs was Haas Pass. In a way, this was a ride destined to end in tears. But more on that at the end.

Cycling New Zealand, a guide written by Scott Kennedy for Lonely Planet, describes the route from Makorora to Haast Junction, crossing the pass. However, if you look carefully at profile, shown on page 268 of the Sept 2009 edition, it's clear that only three data points were used for the profile between Haas Pass and Haas junction, covering 82 km. There's a point at the junction, of course, then one at 11 km from the pass at 100 meter elevation, then one at the pass itself, at what appears to be 560 meter elevation. So that's 460 meters gained in 11 km, an average of 4.2%. No problem, one might decide: this calls for an 11-20 straight block.


I rode with Cara from our D.O.C. (pronounced "doc") campsite at Boundary Creek. Riding was effortless, it seemed, a good sign that there was going to be a heavy price to be paid later, with interest. it was around 15 km to the Makorora, then another 8 km to the Blue Pools, our goal. We locked our bikes, switched to our walking shoes, then did the wonderful little hike to the pools, which are surprisingly, well, blue for their depth. Perhaps the lack of particulate matter in the water results in reduced optical attenuation, increasing the vibrancy of the color. In addition to the view, the pedestrian suspension bridges are very nicely built. New Zealand takes its tramping seriously.

Back to our bikes, Cara set off back to the camp, while I went on to ride the pass. Of course high on my mind was Strava: when in foreign lands, K.O.M. opportunities abound.

The southern side is relatively easy, since according to Lonely Planet the real climbing here is only around 180 meters over 3 km. That seemed about accurate. It's a nice effort, but nothing epic.

The descent was surprisingly quick. Not only is it much steeper than the 4.2% indicated by Kennedy's profile, but the tailwind reduced the relative headwind, increasing my rate of acceleration on the straights. And occasionally I'd feel the instability of the shifting winds as I went around corners. As is often my practice, I took the descent carefully.

At the bottom, I wanted to make sure I'd cleared the Strava segment, so continues onward effortlessly.

I turned a corner to a spectacular view of distant mountains. I stopped and took a photo. A look at my phone showed the distance so far: 44.5 km. This would be a good time to turn around. So after a few pictures, I turned.


Instantly it was made clear to me why the riding on the flats had been so effortless: I was going straight into a brisk headwind. Ah, well...

The climb began right past the lookout for McFarlane Falls. And it was instantly steep: the grade meter was definitely pegged above 10%. At least the wind was less here due to the mountain's shelter.

And what a climb! Views of the gorge on the left, waterfalls cascading down the sheer cliff on the right, the occasional cattle guard to keep things interesting, all cooperated in keeping my mind off the effort. The road snaked along, rising above the Haas river, until it left the river for the final climb to the pass.

I kept the effort up here, increasing it when I saw the opposite-facing sign welcoming travelers to Westmore, not letting up until I cleared the simple pass sign on the left, the older, stone-etched county line divider on the right. I felt this was a Strava-worthy effort.

Haas Pass

After the rapid descent came the long run back to Boundary Creek. Near Cameron Flat I looked again: 59 km covered, so 30 km remaining based on my turn-around. It was the last time I would look at the distance reading on the unit, but I knew at least I had both crossings of the pass in the bag. No other significant climbs remained.

So 30 km left, but what a 30 km... winds were occasionally tempered by lines of trees which marked the boundaries between sheep-grazing fields, but otherwise, it felt as if every pedal stroke was being heavily taxed: 2/3 for the wind, 1/3 for forward progress. A part of my issue was likely food: I hadn't brought enough.

I finally reached Makorora and it's surprisingly expansive Cafe/General Store/Information Center, which I entered after parking my bike outside. I resisted getting a $5 smoothy (well, fruit-flavored milkshake, but I assumed a smoothy could have been procured) and took the $1.50 banana instead: it was only 15 km further. I stopped to check on the Siberian Experience, a combination plane ride - hike - jet boat adventure. $320/person.... I decided really the hike was the part of it I wanted, and that can be had gratis. So off I went.

The final kilometers opassed, as they will, although much slower than wanted due to the wind. I'd hoped for a banana-induced kick, but none was granted. But turn over the pedals enough time and a goal is reached, and here I finally saw the 4 km to go sign, then eventually the campground itself. I decided I've gotten headwind-soft living in San Francisco after my time in Austin, Texas. I let the headwinds beat me down. Cara, by the way, later told me she hadn't minded the headwinds at all.

Here's where things went to tears: there was a problem with Strava and, although my app had been showing full distance, only the first 18 km of my ride had been recorded. These had been ridden at a relaxed pace with Cara, of no Strava interest, so I didn't bother saving them. My climb efforts were lost in the void of unrecorded data, the place we call /dev/null.

I was stunned. Shocked. A small bit of my life drained away in a spasm of despair. Surely I could have avoided this... had I not lost my Edge 500 before the trip... had I replaced it before the trip... The Strava app is great, but there's no beating specialized hardware for reliability.

Ah, well. There would likely be no further climbs of Haas in this life, but at least I had the memory of what was a surprisingly challenging climb, especially given Lonely Planet's neglect. Indeed, this is just one of many examples where the book fails to do justice to New Zealands fantastic cycling roads. I hope a better cycling guide for New Zealand is published soon. John Summerson, are you listening?

Postscript: Later, in Queenstown, I found a much improved guide to New Zealand cycling: the domestic "Classic New Zealand Road Rides" by Jonathan Kennett and Kieran Turner. It's a bit pricey at NZ 39.90, but the route profiles and descriptions are clearly superior.

Monday, January 9, 2012

Climbing Arthur's Pass

New Years Day meant two big events for me: riding the San Bruno Hill Climb for the first time in four years, and going to SFO to fly to New Zealand.

After a night in Christchurch, viewing the sobering post-apocalypse which was the central business district and the contrasting beauty of the botanical gardins, Cara and I got in our rented camper van and headed out on national highway 73. Our destination: Jackston's Retreat, a very nice holiday park in Jacksons, west of Arthur's Pass through the New Zealand Alps. I'd read about Arthur's Pass using Strava Explorer. It's part of the Five Passes Tour, a combination bike tour + state race where riders tour the southern island and are timed over 5 climbs along the way. Arthur's Pass is rated a 5: the maximum points of the five.


The profile was impressive. The net stats are fairly close to Kings Mountain Road: 6.87 km and 490 meters of total climbing, no intermediate descents: average grade = 7.16%. Kings mountain is 6.95 km, gaining 469 meters, a 6.77% average. The key is that Arthur's Pass starts out quite gradually: 2 km in and you've climbed only 73 meters, a 3.7% average. The rest of the way is an 8.60% average, with most of the climbing steeper than that.

I set out from Jacksons onto a gradual uphill, but the upward grade was largely canceled by the typical western wind. The southern island of New Zealand is in the "Roaring 40's", the 40 to 50 range of southern latitudes well-known for its strong westerlies. On this side of the pass, there was little to abate the winds coming in from the ocean, providing a nice tail wind for eastern riding.

I was still feeling sluggish from the 16 hours plane journey and four hour time zone difference from San Francisco (four time zones plus summer time in New Zealand), so wasn't in a hurry for the climg to arrive. But soon enough I reached Otago, the town marking the base of the real climbing. I'd noted from Google satellite view via Strava that the Strava segment started somewhat east of a bridge just outside the town.

I was a bit worried about the weather on the pass. Low-hanging clouds obscured some of the tall peaks nearby, but the pass ahead seemed clear. It looked like a good day to climb it.

Not long after passing through the town I arrived at the bridge. Many bridges on the New Zealand south island are one-lane, two way, with one direction having the right of way. I would later encounter a bridge that was one-lane, 4 way: two vehicle directions, and remarkably, two rail directions all sharing the same space. This one wasn't quite that dramatic, but for a one-lane bridge it was fairly long. So I looked carefully to make sure no motor vehicles were approaching, then crossed the bridge. It was time to start the serious riding!

At the other side of the bridge I deposted one of my two water bottles at the side of the road, avoiding having to carry that weight up the hill. I was fairly heavily loaded, with my big saddle bag, a sandwhich in my pocket, my cell phone, and Cara's Garmin (mine I managed to lose somehow...). Still, every bit helps.

Then I started. This was clearly "climb", so I ramped the effort up to something appropriate. My gear started to skip almost immediately. Damn... I experimented with the shifter to find a gear I could pedal continuously.

Normally the thing to do here would be to adjust the barrel adjusters on the down-tube. But because of the high placement of the cable housing braze-on, there was no room for my barrel adjusters, so I omitted them: cable tension is adjusted either at the rear derailleur, or with a bit of risk, at the cable splitter. Neither of these is accessible when riding. I could have descended and started again, but since I'd told Cara I'd be back around 11 pm, I didn't want any extra delay. I was committed.

I was able to guess the cause: when I'd swapped the front housing for my rear derailleur cable a few days before leaving, the cap for the hold housing had been mangled, and I'd installed the housing without a cap, too rushed to go to a shop to get a new cap, and with inadequate support from the slotted braze-on, the housing separates, allowing cable tension to relax. It was a stupid mistake, one I'd made before.

But I was stuck doing the best I could. Not long after, however, the road steepend... dramatically. I shifted into my 34-26, a gear where the derailleur position is set by the limit screw rather than the cable tension, and the bike operated fine again.

The road here is a real grind: 15.5% for around 800 meters, with fluctuations around that mean. But I love this sort of thing: on a new climb on the opposite side of the world, absolutely gorgeous views everywhere. I knew the discomfort wouldn't last long, but I'd always remember this climb.

I turned a corner and hit a dramatic view, from the opposite direction, I'd seen from the camper van the day before: an open tunnel, similar to what one would expect in the French Pyrennees or Alpes, with a small aquaduct carrying water clear of the road, creating a waterfall under which I rode. I forgot instantly about the discomfort: this was great.

Then a landmark of this road: the Otira Viaduct. The viaduct was biult in the early 1990's, a considerable piece of engineering, to replace the roadway along the "scree slope" which was prone to periodic collapse. Riding the viaduct is really special, even if there's a bit of concern about the huge drop if one were to get bumped over the edge by a passing truck or car. But I had the viaduct to myself.


After passing the viaduct, the road leveled out a bit, passing a viewpoint where Cara and I had had a Kia perch itself upon our van of the same name, apparently enjoying tastes of our roof. But I wasn't stopping now... Here again I was forced to fumble with my shifting, trying the big ring to see if that would help, holding the lever partially depressed to put the derailleur in a position where it wouldn't shift.

Another steep slope followed. This was it, the last section, maxing out at around 18%. But it's short, only 60 vertical meters.

Then the road flattens for a sprint before a final rise to the plaque marking the summit. I initially missed this, riding onward, until the road had clearly begun to descend, and I was at a memorial obilisque for Arthur himself. I then turned around and began my ride back.


I stopped to climb a steep road to a viewpoint of the viaduct, a detour Cara and I had missed the day before. It was quite a view. It appeared this had been the old roadway before the viaduct had provided a safer route. A stone wall blocked cars from going beyond the view point, although there was little sign of a roadway extending past the wall.

The viaduct was quite an experience descending. Gusting winds, seeming far stronger than those I'd encounted while climbing, caused me to ride in the center of the vehicle lane when descending to provide adequate buffer from the guar rail. Two cars passed me in the opposite (right) lane.

As I descended, the wind got lighter, though, and the ride once again became pure joy. I stopped at the bridge to pick up my water bottle, then continued onward until I met Cara who had ridden east from Jackson Retreat an hour or so after I'd left.

Well, that hadn't been the way I'd hoped to have climbed Arthur's Pass. Little shortcuts on bike maintenance can come back to haunt, and in this case I was stuck with a self-destructing derailleur housing. My Strava time: 26:15, well off the target, but good for third in the rankings so far. All of the other rides have been from the Five Passes Tour: I expect Strava to catch on more here in the next year. Too many good climbs.

Tuesday, January 3, 2012

San Bruno Hillclimb

San Bruno this year was a striking contrast to the Low-Key Hillclimbs in which I participated for six consecutive Saturdays from October to November: the nature of the climb and the wind made for an especially tactical race.

San Bruno Hillclimb route profile

I'd registered for E3 instead of my master's 1-2-3 category because, considering the start list at that time, I thought my podium chances were better in E3. To that point, E3 registrations were typically light, but the masters was already heavily populated with big guns. In the "clearly stronger than me" department were Cale Reeder and Kieran Sherlock. Carl Nielson was there: I'd beaten him in our last head-to-head, on Kings Mountain, but that had been the only time in my recollection and the big money was on him to finish ahead. Add in Clark Foy and Tim Clark, both of whom had been training well, who were also in contention for the podium, not to mention the riders with whom I was unfamiliar, and an "in the money" top 3 was looking very unlikely for me there.

In the E3: the two names I knew were Adrien Costa and Zeke Mostov, both riding for the Chipotle Development Squad. I knew they'd keep it together. I was fairly confident against Zeke, as he'd not been able to keep the pace on the Kings Mountain Low-Key. Adrien, on the other hand, while he'd finished only seconds ahead of me at Kings, clearly had more punch than me and would likely win this one, I felt. So I only had to worry about two unknowns in E3. The goal was to follow Adrien.

My pre-ride the day before had confirmed the weather forecast for wind being a factor. There was tailwind on Guadalupe Canyon, then mixed wind on Radio Road. Guadalupe Canyon would be a good place to get away for a strong rider, as the intermittent head and cross-winds on Radio Road would disrupt the coherence of a chance among uncooperative riders. But it was also clear that no effort was too great to stay within contact of a group on Guadalupe, as there would be ample opportunity for recovery on Radio Road with the wind factor.

I'd planned on pre-riding the entire climb. However, my train from San Francisco had been 15 minutes late, and there just wasn't time. So I had to do with "sampling" the beginning of Radio Road, but I didn't specifically know the wind conditions near the finish.

Our group headed out at a nice brisk pace at the base of Guadalupe Canyon. The pace was clearly unsustainable but not super-red zone, and I was able to sit in the group without much issue. I knew that everyone knew there was recovery on the false flat by the intersection with Carter Street (ordinarily a source of delay but during the race we didn't need to worry about the light phase), so I had no fear anyone else found the pace particularly comfortable. Racing is racing and it's all about sharing the pain.

Not long into the section, a rider launched himself off the front. But his progressed quickly stagnated as the Chipotle boys kept the pace. It was still early going and I wasn't ready to bury myself in a

Sure enough, when the grade leveled out, I was able to restore some physiological sanity. All I had to do was to stick for the shorter second steep pitch on Guadalupe Canyon, then it would be mission accomplished for part one.

But then Gregory Coleman of Dolce Vita launched a hard attack. I later spoke with him and he said he thought that was a good place to dig deep because the entry to the park would provide recovery. It was a good tactic: the Chipotle pair chased, as well as a few others. I knew I didn't have the top end to go with these accelerations, and things would very likely regroup on the entrance to the park.

This was a section I'd worried about: not lose time on the semi-technical right turn past the park entry kiosk. I'd practiced this several times, and I wasn't going to take chances, but at least I knew the line I wanted. Here things slightly unraveled, however: the rider ahead of me slowed ridiculously. A second gap to the leaders was lost in an instant. I probably should have more assertively passed him, but instead I let his mistake cost me time.

We started the climb and when the fog cleared from my brain, there were three riders up the road: Gregory in his Dolce Vita kit, Ned Britten in his Davis Cycling kit, and a single Chipotle ride who had to be Zeke, since Adrien was the better climber of the two. Adrien, it turned out, was long gone, but I was clearly closing on the other three. I had an advantage since all I had to do was to catch them and I'd get recovery, but the leader of that group had to keep to a more sustainable pace.

And bit by bit the gap did close. First I passed Gregory, who was perhaps suffering from his early attack, then I caught the other two. The win might have been up the road, but I thought second place was going to come from this group. All I had to do was beat one of them, and I was good for my goal of top 3.

Again I things are a bit of a fuzz here. The winds seemed to be all over the place, sometimes head, sometimes cross, sometimes briefly tail. I tried to use that to my advantage, but none of the other two guys in our group was willing to take charge.

As I finished a pull (I think this is when it happened), Zeke attacked. He got a quick gap, and I should have responded, but instead I waited for Ned to respond. Ned stayed on my wheel, however, so I upped the pace. I glanced back and there seemed to be a gap, so all I had to do was catch Zeke. But the gap wasn't coming down.

Soon we hit the last right-weak left-right combination to the finish. I thought I was good for third here, but Ned came around me and I just couldn't. Time collapsed into a singularity as the cross-wind changed into an apparent tail, shooting us forward to cross the line in our present order.

I was fourth. Again.

Starting with the Low-Key Hillclimbs, my results in races have been 4th, 4th, 4th, 4th, 4th, 5th, and now.... 4th. I was 4th overall in the Low-Keys. Crossing the line, I felt like I'd worked hard, but lacked that totally spent feeling from having dipped mhy feet into the "running from the pedator" reserve. I could have done more.

That's how it is with tactical racing. I could have worked harder, riding hard from early in the Radio Road, and Ned could have sat in for the ride and out-sprinted me. Or he would crossed his personal threshold, and been dropped. I would have liked to have been able to conduct that experiment, because my indulgence "game theory" was a failure. I hadn't met my goal of top three.

Ah, well. At least I'm happy with my time: 16:03. It's said San Bruno is 30 seconds faster than OLH, so that's about consistent with my most recent Old La Honda time, despite my Christmas travel and eight days off the bike (running only). I'd love to put this one in the bank and look forward to my next one, but the next mass-start hillclimb around here is Mt Tam (canceled two out of the past three years) in September. Sure, there's Mt Diablo in June, but that's a time trial: no tactics there, just ride.

For years I've contemplated organizing a USA Cycling sanctioned hillclimb. I've never been able to move ahead with the idea on my own. I need to get the right collaborators: people I know and can work with to make a truly good event. San Bruno is such an event: better today than when I first rode it so long ago. They even had post-ride food for riders, a feature of the Low-Keys.

In any case, while I failed in tactics this day, I am super-happy with my fitness, so time to set another goal and move on. I'm not sure what that goal will be, but I'll have time to think about it during my vacation, where I am now.