Saturday, October 17, 2026

Tour de Midnight 2026: "you can do hard things"

 Today was not a good day to ride bikes. It stormed all night and the temperature dropped steadily from yesterday's high of 86F to a start-time temp of 53, with light rain continuing throughout the morning and a stiff wind from the north.

I had every intention of griping about the weather the entire time, but I wouldn't have had a very good audience even if I'd been able to, because of the roughly 300 registrants, there were fewer than 30 riders on the start line (at least for the 66-mile option).

We rolled off the line and out of the parking lot I knew I had a problem: the left shifter wasn't working. I could shift up, but not down. Because I'm an idiot, I took that to its logical conclusion and went straight to 50/10 before we even got onto the public road.

I pushed 5:1 up that road 1.5 miles to the stoplight and begged our grupetto of 5 to let me pull over to see if there was anything I could do. 3 of us stopped, and my hands were already wet enough that I couldn't open the SRAM app on my phone. After confirming the shifter battery was reporting 'good' and noting a pending firmware update on the rear derailleur, I eventually gave up, remapped the right shifter to down-shift, put it in 50/17, re-remapped the shifter, and hopped back on.

Trying to chase back on was a nightmare: I was constantly spun out and trying to actively pedal 120+ RPM to hold the wheel, but we got back to the front riders pretty quickly. I was only 5 miles into my day and thinking there was little chance I'd be able to hold on for 60+ miles alternating between spin & grind, so I took a risk and shifted up...twice...to 50/14. That's a properly hard gear to pedal uphill, but reasonable on the flats in a group. But what started as a group of 5 was back down to a group of 3, and we were gonna be pushing into that stiff northerly wind for the whole first half. I was trying to be very cautious not to shift up.

But habits are hard to break, and when I got distracted on descents I found myself slipping, first to 50/13, which was getting pretty close to untenable on the short ramps, then in a fit of frustration of wind & water in my ear I accidentally went to 50/12, and that was a bridge too far.

Fortunately by this point our 3rd rider asked for a rest stop. I whipped out the phone again and fought through drenched gloves to pull back to at least 50/14 and run the derailleur's firmware update as we rounded the midway point to embrace that glorious tailwind...and still dropping temps.

I was in my "Flandrian Best" (Rule 21) with ostensibly waterproof materials from head to toe, and while my core stayed warm enough, the soaked bib & shoe covers, the drenched gloves, and the sleeves of my jacket were making me more & more aware of just how miserable a day it was. I couldn't handle the food in my back pocket, and when I could get something out, I couldn't open the packaging. We'd managed to find a stretch of minimal road-water that expired just as the temps reached their nadir at 50F, so it was full spray and constant soaking for the last 25 miles. But we were pointed homeward and now it was just an issue of survival.

My attention quickly wandered again, and with it another accidental shift. The firmware update had made no improvements, and with ~18 miles to the end, I knew I couldn't ask the others to stop again, so it was just going to extra super suck to the finish. The ramps got steep enough that a few times my cadence dipped below 30 RPM. The power was still there, though, and my back wasn't griping like it had been all summer (thanking past-me for the few days I've taken off the bike recently!).

Entering the final 10 miles I was in full countdown mode. Every 10th of a mile (if I could see the numbers on the screen thru all the water) was like checking off a to-do-list item, and my mind was quickly cataloging all the remaining ramps as my legs started feeling more wooden.

When we got to 3 miles left, our 3rd guy let the wheel go, and I had to come around him uphill to close the gap. Not sure if that was the final nail in my coffin, or my inability to eat, or the sheer volume of ground water I'd consumed, but while I caught back on, there were no matches left. I took one final pull to get Alastair within 1km of the finish and came off the front as the road pitched down. Unwilling to risk another gear, I tried to no avail to spin fast and hold on. He crossed the line 20 seconds ahead of me to "win" the charity ride.

I cannot believe I was able to complete that ride. I spent 81 minutes in 50/14, 76 minutes in 50/13, 9 minutes in both 50/16 & 50/12, and 5.5 in 50/10, and we were done in 3 hours 2 minutes. I ate exactly 1 rice krispie treat and nothing else, averaged 203W (normalized 228W) with an average cadence of 71 RPM, and somehow managed to go 22.1 mph over 66.9 miles. Absolute bananas. And in the worst possible conditions of rain, wind, and falling temps.

https://www.strava.com/activities/20623313078

My therapist likes to tell me, "you can do hard things." Sometimes, it seems, she's right.

(after a battery change, the left shifter is back--it never gave any warning and was reporting 'good' status during the ride)

Friday, September 18, 2026

I was paying Strava

I was paying Strava for arbitrary goals that increased my anxiety when I didn't meet them.

I was paying Strava for Power Skills that told me I'm almost strong enough to be a world-tour pro...at 50.

I was paying Strava to create routes that put me on 60mph roads, sometimes against traffic.

I was paying Strava to analyze ~only~ power, cadence, heart-rate, speed, and temperature, when ANT+ has long-since been expanded to support custom data.

I was paying Strava to never finish development of long-sought features like "The Roster" and "FlyBy".

I was paying Strava to develop an unhelpful AI that I immediately disabled.

I was paying Strava to determine my self-worth against the power of guys half my age.

I was paying Strava to pretend that being the fastest rider on a specific piece of pavement is in any way meaningful.

I was paying Strava to then police their reporting on that specific piece of pavement, flagging impossible rides that they promised for YEARS they were getting better at flagging on their own.

I was paying Strava for pricing insecurity. What remained a steady price of $59 for 8 years flew into disarray in 2023 with some members seeing renewal pricing of $99/year and others $79. At $59, Strava is a "who gives a crap" subscription at $5/month. At $79, it falls into the "what gap does this fill?" level of spend.

I was paying Strava for 10 years. $720 that could have bought new equipment or actual coaching.

I'm not paying Strava any more.

Thursday, October 23, 2025

Hunting for marginal gains

I wrote back in May about the changes I'd made to my old crit bike to turn it into a sub-16 lb climbing monster for Wintergreen. My goal then had been to spend as little as possible to get the bike back on the road and just see what I could do with it. The result was a 15.7 lb 1x setup with a 40T ring driving an 11-36 SRAM 11-speed cassette. At the time it seemed perfect, even if I had failed to adequately tighten the cable in the derailleur. Oops.

But then I got a little greedy. The bike had been my main steed for 8 years, and getting it so cheaply back on the road made me want to ride it more. I had an idea to use it as a backup crit bike, just in case. That would be easy enough to accomplish with a cassette and ring swap. I raided the parts bin and found an old SRAM RED 11-28 and ordered a cheap ($25) 48T ring. 48 x 11 is kinda small for a top gear, but it would preserve the chain length perfectly. A few (dozen) turns of the B-screw, and I had a bike that was almost as fast on the flats as it was uphill, but now at an incredible 15.15 lbs.

This, of course, made me want more.

For months I've dreamed of finding a way to shave off that magical 0.15 lbs that would put the bike on UCI minimum weight. 2 principle options emerged:

1. tubeless -> TPU tubes

2. 32T chainring...somehow

The first option would be exponentially cheaper, and would seem like the obvious easy answer: TPU tubes typically weigh somewhere around 35 - 45g each, generally 1/3 that of butyl tubes, and also a fair amount less than sealant. I have about 2 oz in each 700x25 GP5000 S TR. Making the swap to TPU could net as much as 150g, or 0.3 lbs, in savings. That would put me under 15 lbs, and it wouldn't vary with sealant top-ups. But it would be a big job to clean out ALL of the sealant, and with rim-brakes, the lightest TPU tubes aren't really an option, as they're prone to heat failure from braking. Maybe fine for just pure climbing, but not for coming back down the mountain.

It also only achieves that weight goal with deeply sub-optimal gearing. The 11-28 cassette might rocket up the local hills with either a 40 or a 48T ring, but it would make Wintergreen harder than ever.

To hit that climb successfully, the math says the right chainring is a 32T. At 90rpm, 32 x 11 produces 20.5 mph, which is typically the highest speed I see at the base of the climb. 32 x 28, however, is a gear ratio of 1.14:1, very close to the 1.11:1 of 40 x 36 that was so good on the steepest slopes of the mountain.

32 x 11-28 also has 16 fewer chain links than 40 x 11-36.

It's physically less metal in the chainring, so reasonable to assume it would be lighter, as well.

But. My crankset is a 5-bolt 130BCD, meaning the 40T is really already the smallest it can support. To go lower would be expensive. It's also a BB30 crank in a BB30 frame, so the bottom bracket is an outdated, but insanely light, standard.

So here's where things get complicated quickly. Mountain bikes and road bikes typically cannot share components around the cranks and bottom brackets. The exact same standard, whether it's BB30 or Shimano Hollowtech or whatever is different based on road vs mtb. They may say the same thing, but they're not the same. This is usually in regards to the width of the bike frame itself, but also bolt-circles and chainring tooth profiles and all sorts of DEEPLY UNNECESSARY COMPLEXITY.

TL;DR: there is no such thing as a 1x 32T road chainring. There are plenty of 1x 32T options for MTB. If I want my unicorn, I must create it.

As luck would have it, though, the MOUNTING interfaces between road and mtb cranks and their chainrings--the spider--do appear to be identical. 8-bolt SRAM is 8-bolt SRAM. 3-bolt is 3-bolt. So if I get the proper crank arms and mount the correct spider, in theory I could run any size chainring I want. In theory.

In theory.

In reality, while there are a million bottom bracket specs and a million various crank manufacturers and standards, the options diminish significantly when factoring for matching road & mtb interfaces, future supportability, and cost. That pool basically comprises SRAM and Rotor.

While SRAM spiders are available in 3-bolt or 8-bolt interfaces, SRAM no longer makes the necessary crank arms & spindles for 3-bolt. So if you don't want to rummage through parts bins or hope for unicorn finds at the local bike swap, it's 8-bolt on a DUB spindle. Not a deal-breaker for most frames, but they used to make GXP and 30mm spindles, too. Shame they're out of that game or this conversation would already be over: my bike is a native BB30.

But because it's a true actual skinny BB30 frame, and DUB spindles are not designed for 68mm inboard-bearing frames, the only purported option that I could find was a $300+ adapter from BBInfinite. That ain't gonna happen.

But what about Rotor? They offer a 30mm spindle (98g, $35) with an extremely modular design that makes swapping cranks MUCH easier, so no bottom bracket work, and I could choose pricey carbon cranks in pretty much any length I want (all the way down to 155mm/255g for $351!).

Rotor's spline interface appears identical across their road & MTB ranges, and they've been around as a brand with reliable staying power for many years, so while there's 0 chance they'd stand behind this unholy union, at least the parts would be available?

Looking at the available spider options on PowerMeterCity, it seems there are a couple in the $400 range, but they're all out of stock for now, including the new Sigeyi AXO that allegedly only weighs 83g.

I really don't think I want to drop $825+ on a silly idea to tackle one single race, but dropping the crankset mass from 690g to ~485g would be absolutely insane, more than accomplish my rush to the UCI minimum--in theory the bike would weigh just a tick over 14.6 lbs, and I could still throw in a pair of TPU tubes for Wintergreen (the race explicitly prohibits riding back down), potentially rolling up the mountain on 14.25 lbs of carbon.

When the Aeroad arrived in June 2023, I never expected to ride my old Blue Axino again. She's harsh AF by today's standards, but her evolutionary cycle is not yet complete. For now, she's a dedicated trainer bike for the winter, but it's exciting to know there's a potential path to even greater glory.