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.

Thursday, July 31, 2025

Dirty Kitten '25: 5th

My official AARP invitation arrived just 2 days after this race. I'm feeling it.

Dirty Kitten is a 2-day affair. Saturday is for the hitters: the folks who want to race 60 or 80 miles. It has also seen worse weather almost every year. Sunday usually has a more casual vibe, with race options of 40 or 20 miles. Saturday's fields are typically packed; Sunday's rarely exceed 45 riders in any given field.

This year was weird.

The men's 40-mile Sunday race had 93 registrants, almost equal to the *entire* grouping of men's entries for Saturday's fields combined. The women's 40 was close to 30 registrants, putting the Sunday 40 firmly into "biggest race of the weekend". 101 people started. Crazy.

Saturday, though, was even more hampered by weather than usual. The forecast called for crushing heat, as it did 2 years ago. In 2023, the Saturday races saw temps hovering right around 100F. With a similar forecast for this year, organizers sent out a last-minute race reduction that pulled a lap off of everyone's registered distance for Saturday. 80 became 60, and 60 became 40. But then it also rained. Like biblically. The opening climb was marked with deep ruts, the grassy section was underwater, big puddles everywhere, and most worryingly: the descent from the Crusher was purportedly rutted. Lap times were way off from previous years, and folks were reaching out to me Saturday night to warn me about the conditions.

And, of course, it also rained Saturday night after the race.

But I had a brand new rear tire that should be extra grippy, and suddenly that 36T ring up front felt extra validated by the slower lap speeds. And at the starting line, I asked the organizer about the day's conditions, and he said the course had dried out nicely overnight, and that the worst of the ruts were clearly marked.

Alastair and I had a plan to start at the front, punch over the opening climb, form a rotation with any other survivors, leave a cooler in an elevated chair so we could swap bottles after lap 1, and keep things neutral until the 2nd ascent of the Crusher, after which it would be an open race to the end.

Things did not go to plan.

We knew the biggest risk of the day was heat. The race started in fog at 80 degrees, and was forecasted to finish at about 90 degrees with a real-feel well over 100. Alastair struggles mightily in those conditions, so that bottle-swap was the pivotal element of the day's plan.

Unfortunately, while the first half of the plan went great, one rider punched over the first ascent of the Crusher, leaving 5 or 6 of us to chase. We were not a confident group of descenders, either, so by the time we were back on open roads, the guy was way up the road, just barely visible. Instead of a neutral rotation, we were a chase group. Alastair and I were on our limits for the next 3 miles, and I'd already spent entirely too much time in the wind just establishing the group's separation.

When we got to the pit to swap bottles, he was empty. I was able to continue without stopping, but tried to gum up the group a little to buy him time to catch back up. The group was not impressed nor impeded, and suddenly I was also in chase mode, but this time starting to feel chills in the sunshine. I let the 2 attackers from our group go, catching them again briefly for a moment before my body screamed to stop, and then settled into limp-mode with one other rider from our group.

The leader was long gone, the 2 chasers were gone, and this was now a trudge to finish in the top 5.

I never saw Alastair again (until after the race, obvs).

I managed to hold on for dear life with one other guy until after the 2nd Crusher, which--for the first time ever--I successfully climbed twice (woohoo gearing choices!). Once we got into the final sunshine-exposed climb by the farmhouse, the chills came back, and I basically just stopped pedalling. I watched my final companion ride away and just limped to the finish line in 5th place.

It was my slowest ever DK40 at 2:26:58, with my worst finishing position of 5th.

Alastair incredibly did not buckle in the heat, but kept a steady rhythm and came across the line just a few minutes after me for his fastest ever at 2:34:47, and his best finishing position of 6th!

https://www.bikesignup.com/Race/Results/79259#resultSetId-569185

Gearing

I spent the previous posts opining about gearing options, and used this space as a place to openly explore the idea of making the least-expensive change possible on the bike to produce the biggest improvement: a 36T chainring to replace my usual 40T.

I pulled charts of gear-usage from previous editions of Dirty Kitten and Monstercross to examine the amount of time spent at either end of the cassette, along with power distribution across the gears showing that even when I got to the fastest gears, it wasn't really meaningful for keeping power.

My theory was that moving from the 40T to the 36T would roughly adjust the time distribution chart by 1 gear toward the top end, but should reduce the bias at the extremes from 4:26 in the 44 and 0:54 in the 10. I ruled out a 38T chainring as being insufficiently different to make a meaningful change, and could potentially throw me into oddball cadences at the typical cruising speeds on this course.

I'm incredibly happy to say it worked out exactly as I'd hoped. Even with slightly odd course conditions and PR's on some of the flatter segments, the gears got me over the Crusher both laps, and I never had any chain drops. In fact this was the first year I've made it through the entire race without putting a foot down.

The following images show gear usage by time and power. The left side are 2025's race, the right are 2024.





Note the more even distribution of power across the cassette with the 36T chainring, as well, with no dips in the 38 or 11. Power was very low in the 10 this year, but even with the smaller 3.6:1 max gearing, it was really only useful on gentle descents.

What this year's gearing did not do was make the Crusher easy. With ramps reaching 23%, nothing will ever make that thing easy. But it did make it manageable, without taking away from the rest of my race. The heat did that on its own.

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

Want to see the Crusher rip our little grupetto apart? Start at 48 minutes: https://youtu.be/r0Wf1c4B2TY

Wednesday, July 16, 2025

Horses for courses

Well, I did it. Ordered that 36T chainring and let it sit on the bench for a few days, nervous I'd made the wrong choice, in spite of the maths. But Monday I put it on and also mounted up a brand new rear tire, and...

It's hideous.

The 40 was never a big ring, but it looked "right" on a gravel bike. The 36, with that big 10-44 cassette out back, looks like it can't decide if it wants to be a mullet or a wayward mountain bike.



That bar tape I put on the top tube--initially as a joke, but left on when I realized how horrible shouldering that skinny tube was in CX races--doesn't win any style points, either. Nor does the pannier mounting brick on the seatpost. This bike has become a mockery of itself, and...

It's perfect.

I was worried I'd have to take a couple of chain links out, but while the derailleur folds up almost to its limit, the chain is taut in the 10. Biggest surprise of the change was having to adjust the B-screw. I don't think I'd ever had to do that for any previous chainring changes, but it absolutely would not get up onto the 44 until I made a couple of full rotations.

And the ride feels exactly the same, except now I can easily spin up some climbs at Pocahontas that used to have me grunting a little. Nothing that quite replicates the savagery of the Kitten Crusher I'll face next weekend, but sufficient to get my hardened teenage son to notice how high my cadence was while he was grinding away.

For giggles, I dug up the AXS report from 2024's MonsterCross to compare gear usage to Dirty Kitten. In that 3-hour race, I spend only a few seconds in the bail-out 44T cog, and only half a minute in the "big dog" 10T. The 40T chainring remains, in my mind, the ideal solution for that event. So this change becomes a "horses for courses" event-to-event change based on elevation profiles.


For the rear tire I stuck with the tried & tested WTB Resolute in 700x42. On the cheap-but-indestructible Sun Duroc G30 wheels, it sets up wider than a 44, and fresh rubber should help keep power delivered to the ground at the steepest parts of the climbs and when my son attacks me in the final sprint.

Monday, June 16, 2025

Dirty Kitten Gravel Race - still hunting for the perfect setup

What has become my favorite annual summer gravel race has somehow not yet warranted a post, which is bananas because I've had some decent results over my 5 attempts.

I first heard of Dirty Kitten during the pandemic, and that year it wasn't a race, so much as an isolation fondo. There were timed segments, and riders rolled out at intervals. You were allowed to ride with folks who came with you, and I brought Alastair. Though he holds no love for gravel, this one got into his heart, and we haven't missed an edition since. We always do the Sunday races, which are 40 and 20 miles, as neither of us enjoy gravel quite enough to want a 60 or 80 mile race.

I've been on the podium in the 40-miler every year since 2021, and last year was the closest I've come to victory at 2nd place.

With just over 6 weeks until the 2025 event, I'm beginning my annual panic over training and equipment for an event most folks do just for fun.

The course is just a tick under 20 miles, with no pavement anywhere. Conditions change year-to-year, but generally the gravel is stable and well worn-in, so speeds are pretty high over most of the course. It's absolutely normal to see 20mph+ on the flatter sections, even with my middle-age legs. There are 2 significant climbs that will test gearing limits. The first, Cedar Mountain, is just a deep-gear slog. It comes less than a mile into the course and generally determines who's there to compete. Usually fewer than 10 people make it over the top at the front, and fewer still get a clean run through the off-camber crumble to the screaming fast descent. Last year I nearly ate it--the trail gods demanded a bottle sacrifice.

After that, you're rewarded with 10 miles of flattish gravel. A few sharp turns, a couple bits of soupy gravel, and one section that's best described as "forest road" where the ruts and conditions are unpredictable year-to-year (but I imagine this would be MISERABLE when wet).

Then you get to the signature element of the course: the lollipop of death and the kitten crusher. This 4.3 mile portion of the course is mostly exposed to unabating July sunshine and can be broken down into a few critical elements:

  • the 1.4 mile approach road that pitches upward at anywhere from 3 - 11%. This thing just sucks the life out of you before you even get to the real climb, and every year somebody decides to make this road hurt even more than necessary. But I've never seen a move succeed here, and there's more than enough pain coming.
  • The Kitten Crusher. "Is this the climb?" Oh you sweet summer child... The approach is 8%. The first ramp is 15%. Each blind left turn holds an even-steeper grade, but just wait until it turns right. The Strava segment shows 154.5% and goddamn it feels like it. Whatever little group you've been riding with will be shattered here. Most will walk, but that doesn't really make it easier. Fortunately (?) there's an aid station at the top, and a dude with a sprayer to cool you down. If you stop, your race is done. I've made it over 2 times in 5 years / 10 efforts.
  • The Crusher Descent is quite honestly one of the scariest descents I've ever undertaken on a bicycle. It doesn't help that your heart rate is still sky-high from the climb, but the first turn is loose and steep, and while you're in blessed shade for the first time, that just makes it hard to see. Average gradient -11.4% with peaks close to -20%...in a turn. Hang your ass off the back of the saddle, squeeze those brakes as much as you dare, and just pray for the bottom--you'll get there one way or the other.
  • Though there's no segment for it, the rest of the lollipop sees you climb back up to the approach road and run it in reverse. If you got dropped on the crusher, this is where the work starts. A half-mile climb at 5% back to the road, a quick breather, a 10% punch, and then a screaming 1 mile descent in 2-way traffic of yelling at folks to stay on their side. It ends with a braking zone that would make a F1 driver weep before tackling a sharp right back onto a public gravel road.
The rest of the course is far less dramatic. At about 3 miles, it's 1 mile of flat recovery (or chasing, depending on your crusher results), 1.5 miles of undulating rollers in sunshine, and 0.5 miles of sharp rollers in the shade with an uphill kick to the finish line.

Then you get to do it all again. Yay!

I've spent years trying to get the "perfect" setup for this race. My first forays saw me on a 1x mechanical SRAM setup, always with a 40T chainring, but with various cassettes from 11-36 to one miserable effort with a 11-4(x?) and a WolfTooth goat-link intended to extend the supported cassette size for the derailleur. It didn't work well at all--the chain jumped all over the place and ghost-shifted on every climb. it was awful. Awful awful awful.

2 years ago I upgraded the gravel bike to electronic shifting, settling on a 10-44 cassette and keeping that same 40T ring up front. I was still dropping chains, but on the 2nd lap I finally made it over the crusher for the first time ever.

Last year I picked up a derailleur hanger alignment tool and corrected a massive mis-alignment, which made shifting so much smoother, but the chain *still* fell into the wheel on the way up. I ended up panicking on the 2nd lap and just got off the bike before it could fail again, costing me the potential to sprint for the win.

The only constant over the years has been at the front of the drivetrain: that 40T ring. While the gearing of the past 2 years has gone deeper than 1:1, I've still only gotten over the crusher 50% of the time, and lost the chain into the wheel 4 times. At the opposite end of the spectrum, the SRAM AXS app shows I only used the 10T cog for 54 seconds of the entire race.


That 54 seconds had an average power of 133W, as well. By contrast, the 44T cog saw 4:26 of use at an average power of 304W, with the steepest 2 ramps of the crusher at over 400W. 


So this year I'm thinking of trying something different. I cannot affix a SRAM XDR-compatible cassette deeper than 10-44 (if such a thing even exists), and even if I could, through some sort of updated Goat-link equivalent, I would never want to re-invite the issues I had with the bike 3 and 4 years ago. Going XD (SRAM's mountain-bike drivetrain popular in "mullet" gravel bikes) would add tons of cost. But I can move to a smaller chain-ring for $20.

I've resisted this option for years for a few reasons. The first is, honestly, it feels wimpy to go smaller up front. I'm a Big Strong Man(TM)! I don't need a smaller ring for MonsterCross or any other gravel/CX racing I do, and the idea of constantly swapping equipment is not even close to appealing. But aside from that, there's chain-line efficiency: the 15T (4th from smallest) gets almost 45 minutes of use--far and away the most used gear on this course, followed distantly by the 17T at just over 30 minutes. Using a smaller chain-ring would put that use farther outboard, creating a less optimized chain-line, which increases drive-line resistance, even if only slightly. Then there's the compound issue of more chain movement and slap--even with a clutched derailleur--as the chain moves farther outboard. I run a chain-keeper on this bike, but when the chain comes off, it always gets tangled in the keeper, which makes it just that much harder to re-seat when you're already on the limit. I don't want to create another situation where I panic and just get off the bike.

So what size ring? I went through this exercise when setting up the old crit bike as a purpose-built climber, and ironically ended up at 40T on that bike, too, though that was driven by wildly different goals and maths.



The power-meter crankset on this bike has a 5-bolt 110BCD interface, so I could go down as far as 34T, but that would see me spun-out for almost 15 minutes of the race. The gear-ratios of 40:15 and 34:13 are nearly identical, so that 45-minutes in 15T would become 45 in 13T, and it would come with a ridiculously deep gear on the climbs.


A 36T chain ring would offer one deeper gear for the climbs while only cutting off the top gear on the flats, making me spun-out for only about a minute. A 38T ring is honestly insignificantly different from a 40T--changes at the front need to be more substantial than changes at the back.

Since I'm trying to solve for about half of 4:26 of the race, I don't want to make a change that will impact the faster bits, so I've settled on trying the 36T.

According to my calculations, that will reduce the top speed at 90RPM to 26.9mph, which will only affect the two main descents--but let's be honest: I wasn't doing much pedalling on those anyway.



Sunday, May 18, 2025

Wintergreen Returns!

For the first time since 2019, the Wintergreen Ascent Hill Climb was back on offer. Alastair and I decided to tackle the 7.3 mile, 2500' climb since he was fresh back from his first season of collegiate road racing and had a ton of fitness. We headed up on one of the most beautiful race mornings in recent history for a ride that would hold an almost perfectly consistent low-70's temperature all the way up.

I'd done this race from 2017 to 2019, and the first year had to get off the bike halfway up and wait for pain to subside. In retrospect, I was significantly underweight at 137.7 lbs that day, and I finished dead last in category. In 2018, I finished 2nd in my 5-year age-bracket (40 - 44), and 3rd in my BAR age-bracket (35-44). In 2019 I swapped to a compact chainset and raced CAT3 in a BAR bid and got 4th.

At racing-age 50, I'm fully embracing the Masters life, and with Alastair racing CAT3, I chose the 50-54 group. The bike I raced previously was considerably lighter than the Aeroad, and seeing as I weigh a little more now than I did then, I needed to save equipment weight where I could. I pulled it down off the wall at 16.38 lbs and ran through my options.

The Ultegra 6800 groupset had been on it since November 2015, and while I'd stuffed a 11-32 cassette onto it a couple times, it never really worked all that well. 4 years ago I pulled the ancient Dura-Ace crankset and replaced it with another 5-bolt 130BCD power meter crank, with the idea that I could hold on to my chainring investments. Immediately the industry abandoned that standard and I found myself stuck with an expensive crankset with limited ring options--you can't put anything smaller than a 38T ring on 130BCD. I felt stuck for years with that setup, and considered the bike *done* when I bought the Aeroad.

While the Aeroad runs 50/37 rings up front, it supports up to a 33-tooth cassette out back--much deeper gearing than the standard 53/39 - 11/28. But the Aeroad is also heavy, even with lightweight climbing wheels.

So, standing in the garage and over-thinking things as usual, I noticed Alastair's abandoned gravel bike with its SRAM Force CX1 drivetrain: 40T chainring, 11-36 cassette. Every single bit lighter than the Ultegra 6800 equivalent. I also noticed an abandoned Ultegra R8000 drivetrain sitting in a box. An idea was born: swap out my 6800 with the SRAM CX1 and upgrade his CX bike to R8000.

The conversion took my old Blue Axino down to 15.72 lbs. Then I remembered a lightweight saddle that was also lying around, and that brought me down to 15.58. Fully 0.8 lbs removed, and the only things I had to buy were a cheap 5-bolt 130BCD 1x chainring ($20) and a new chain, since the Blue had been put up with a badly worn-out chain. Of course I opted for the lightweight gold chain, because why not?

I took it out to the local Thursday night fast group ride with that setup and, while it was spun out regularly, managed to hold on and grab a KOM I never thought I'd get. I guess I was as ready as I was gonna be?

As this wasn't my first tangle with Wintergreen, I knew the biggest mistake would be to over-commit early. The first mile is mostly flat, then it kicks up sharply. I was desperately hopeful the deeper gearing would let me stay out of wattage danger before even turning in to the resort road.

I set off at a tepid 300W and thought the guy ahead was getting away, but just held steady. I even backed it down a touch since I didn't believe I could legitimately average anything higher than 280W. Within a few minutes I was noticing him getting closer, and by the first time I had to use the deepest gear I was right beside him.

Steady, steady, steady. Heart-rate in range, power fluctuations as minimal as possible. RPM sinking into the low 70's, but that's a hell of a lot better than the 50's or 40's that I'd seen before! Suddenly I was at the entrance, one of the steepest ramps of the day. I'd caught a few more people and had another in sight, but for the first time I doubted myself, and then I lost the granny gear. The whole entire reason I'd put the SRAM setup on the bike was failing me.

It took a few minutes of pain, confusion, and anger to realize I could hold it in the granny gear by holding the shifter in. So that was gonna be the entire remainder of the ride: to get 40/36, I'd have to keep pressure on the lever. 25 minutes of hand-cramping while trying to keep the rest of my body from revolting. Then I felt the cable slip, and now I had to hold the lever even farther in (found afterward the anchor bolt was loose--I got lucky it didn't slip any further!).

But steadily more riders came into view, and by the time I got to the sunshine sectors I was passing walkers. Nobody had passed me and the resort itself was in view. So close!

Then I heard a grind behind me, and slowly another rider began to pass me...in my category. The last 2 ramps were abject misery as he passed me and then pulled away, and it was all I could do to make it across the finish line. I hit stop at 44:33, 1 second after crossing the line.

Shockingly, my results were identical to 2018: 2nd in my 5-year age-bracket (50-54), 3rd in my BAR age-bracket (45-54). Perhaps more shockingly, I was 23 seconds faster than in 2018. The bike may be lighter, but the rider isn't. I weighed ~5 lbs less in 2018 than I do now, but that increased weight has coincided with a greater ability to maintain power. My average power that year was 261W--this year it was 277W.

In 2018 I went off the line like it was a traditional TT: burst to speed above FTP and then settle in. I was 30 seconds faster in the first half. This year, with the tepid launch, I was better able to tackle the 2nd half, and finished that 1 minute faster than ever before.

I'm very pleased with my results, even if some friends were a couple minutes faster. Alastair finished 100 seconds behind my time, but he makes no claims to be either a TT specialist nor a spindly climber.

I'm looking forward to resolving the granny gear issue and going after it again next year. I think the gearing is right, and the bike is just about as optimized for weight & aero as it can be.

And I didn't have any cardiac events! Yippee!

Ok now for the super nerdy stuff. Data analysis has also improved pretty significantly since 2018, and while others may have been aware of W' back then, I wasn't, and I had no meaningful tools to compare activities directly.



This chart shows 2018 in orange, 2025 in fuchsia. You can see the hard launch and resultant higher early speeds, correlating directly to a W' loss in the first half mile. Everything tracks pretty steadily until ~2.5 miles in, when there are some deep fluctuations in 2018 that ultimately lead to a heart-rate period above 180bpm right around the 4-mile mark.

Cadence varies pretty significantly between the two, as well, with a slightly lower average in the opening 2 miles and a big drop right around that same W' low-point, strongly indicating the higher gearing in 2018 was a detriment to my race. The lowest cadence recorded that year was 49RPM (the zeroes are erroneous--I didn't stop), as opposed to 67RPM for that same point this year. After that, I clearly had to back off power, which cost me the race. W' starts to recover at that point, and every spike afterward has both lower power and heart-rate. I was cooked and barely holding on.

This year I was much more stable with my W' depletion, and it looks like I can still work on some very minimal strategy improvements to keep that depletion a bit more linear, or at least not let it recover so much before the end...or maybe save a touch for a wimpy sprint.

I've got options if I can keep this fitness for another year!

Thursday, March 27, 2025

Cardiac Event

I raced outside for the first time this year over the weekend. Didn't do great in either of the 2 races I joined, and figured I'd do a little self-flagellation on Zwift to atone for my sins and hit the Alpe. It was never intended to be a crushing attempt at it--just a low threshold effort of ~250W, or ~3.8W/kg. The kind of effort that should put my heart-rate at about 165 bpm and just hold steady.

Things did not go to plan. I was fine for the first 20 minutes, then started to feel really sluggish. I fought to maintain power, but my heart-rate for that 250W was averaging 173, making me even angrier at my poor training for this season.

Power dipped in the 2nd 20 minutes to ~230W, and my heart-rate stabilized at 170. Ok, groovy, but then THIS happened. 


Rolling close to the top, about 40 minutes into it, I felt a flutter and a gasp. HRM de-trained and started dipping, which happens sometimes, and usually I just back off power and it catches back up after a moment. Only this time the flutter was still there. I started feeling like boiled garbage and watched in horror as the number on the screen bounced to 200, then 210, then 224, and it STAYED there for a few seconds while my chest felt like a purring cat. After a solid minute of wild readings ranging from 155 to 224 and ending around 180, it finally dropped back to 165 and held there.

I've had tachycardia episodes my whole life. They usually make me feel like I'm out of breath and self-resolve after a few seconds. I've only caught them in ride data a couple of times, and this is the first time I've *ever* experienced an episode at an already-high heart-rate, and it did not feel good.

It was all I could do to finish the ride, which was probably a very stupid idea (but dammit I've done the Alpe 24 times now and I need that "masochist" badge), and all night long if I stood up for more than a minute or so I'd get woozy.

Not gonna lie--I was a little scared going to bed that I might not wake up this morning.

So my ride title "Accelerate to Cardiac Event" was not a joke, and I'll be sure to bring this up with my doctor*



*in a few months

Thursday, June 27, 2024

Power Meters on Mountain Bikes

Should you run a power meter on your mountain bike?

I'll start this with a bit of troll-bait and say that if your primary training app is Strava, then no: you shouldn't. Strava is a social platform that, on its own, isn't super useful for structured training, even when you pay for the premium features. Strava's main features that support structured training are segments, laps, power curve, and "fitness". Forget about relative effort or "suffer score"--it's a useful metric only in hindsight.

Many of us run power meters on road bikes, and pretty much everyone who uses Zwift for any serious training is using some form of power-measurement, whether it's on the bike or build into the trainer. Power meters allow us to gauge our performance improvements (or losses) over time, train to specific targets like having a powerful sprint or being able to crush a time trial.

The data they provide can also be extrapolated to determine other datapoints like VO2Max, which is very basically a measure of how much oxygen your body can process, and is seen as a kind of performance cap.

They're also fantastic for interval training, which is generally easier for most folks to do on the road because the smoother surfaces tend to make it easier to hold a given power. Need a 5-minute interval? Go find a decently tall hill. Easy-peasy. Easier-peasier? Get on Zwift and do an interval session. Hard as hell and not worth the effort? Hold 5-minutes of steady power on a trail. We'll come back to that.

Zwift dangled a very silly carrot for me late last year that made me do interval training (which I HATE HATE HATE), and around the same time I started exploring yet another extrapolated datapoint from power meters: work (or W').

W' is, similar to VO2Max, a kind of functional upper limit on your body's capability. While VO2Max can change a little over time with fatigue and health, it generally isn't directly affected by your training load. W', however, is a measurement of your anaerobic capacity, expressed in kilojoules (kJ). It's like a reading of how much battery you have for work above critical power, which is roughly your threshold power. An amateur may have a W' value of 10 kJ, where a pro may come in closer to 25 kJ.

You only use this capacity when you're operating above your critical power, which is a computed value (similar to FTP) based on a complicated formula that uses your peak 2-minute and 10(ish)-minute power numbers to determine the specific rate of power drop-off in your power curve. Unlike most other metrics, though, you can recharge your W' battery by operating below critical power.

So say, for instance, your critical power (CP) is 290W, and you have a W' of 20kJ (wow--go you!). You're riding a tough, but manageable road race hiding in the group pedaling away at 250W for an hour. It's time for the big sprint, and when you give it the beans, you deplete that W' at ~1kJ/sec. Math will tell you that you have about 20 seconds to do your worst to the group, but after that you're at complete exhaustion.

...except you aren't completely exhausted, because just dialing it back to that steady 250W and not exceeding 290W will recharge your battery. After a few minutes you may be able to tackle another 15s sprint, and if you can sit-in long enough, maybe a full 20. But every time you rotate to the front and take a pull at 350W, you're taking a few joules.

Having the ability to measure and observe W' lets you see exactly what you have in the tank. It tells you when it's time to stop attacking and start saving for the big sprint, or when it's time to push the attack because you're sitting on TONS of kJ and nobody's making any moves.

Also similar to VO2Max, your W' can be trained, but changes are much slower than, say, FTP.

W' is complicated. It isn't sexy, it's not well explained on the internet, and isn't surfaced directly--to my knowledge--in any cyclocomputer screen or performance metrics. It can be inferred, though, with maths, and those maths can be added to a Garmin device thru a Connect IQ datafield.

And that means: if you have a power meter, you can monitor your real-time anaerobic capacity.

So while it may be nigh impossible to get direct useful insights into average power on a mountain bike ride, you can use that data to determine how hard you're going and when it's time to back off, which is dark magic when your power outputs are wildly variable.

You can also use that to gauge a race effort, which I covered earlier this year in my MonsterCross race report. And it's exactly why I threw hard-earned money at a mountain bike power meter.

My choice for the Lux wasn't anything crazy expensive: I went for the cheapest spider-based power meter I could find--even one that has a known propensity for being off by a couple %. Because I'm not interested in average power for that bike or even really in knowing specific peak values: I'm only after the amount of time I'm spending over critical power, and roughly how far over CP, to determine W' bal.

So should you run a power meter on your mountain bike? If you're willing to do enough testing to determine your CP values AND you're using a head-unit that can display W' AND you're using a training platform that supports additional datafields AND you're tired of blowing up in the middle of mountain bike races, then yes. Yes you should.

Thursday, June 13, 2024

Dude what's wrong with your mountain bike??

 Ever let a buddy hop on your mtb just to check it out? It's a rare treat to find someone dimensionally similar and who has the same cleat system, and we're all a little peevish about letting others touch our equipment. But you owe it to yourself to swap rides once in a while.

I had the pleasure of riding with a bunch of high school shredders this spring as Alastair was competing in his last-ever season of varsity high school racing. These kids met every Tuesday and Thursday, and the range of equipment varied from Walmart+ to S-Works Epics. This sport is WILD. But once in a while the kids would want to check out each others' bikes, to hilarious effect. "Dude--what's wrong with your suspension? It's like you're on a jackhammer!" "Bro why is your seat so LOW?" "OMG how do you even ride this?"

I laughed. Everyone did. Occasionally a coach would take a quick look, but usually the bikes were left to the riders' preferences, and it was just assumed that they knew what they were doing.

I also assumed that I knew what I was doing. When I got my Canyon Lux WC CF 6 in early 2023, I had come from years of struggling to make the old 27.5 Anthem fast. It wasn't fast. It was never gonna be fast. But the Lux was. Right out of the box, zero config: fast. No pedal strikes, less fatigue, whip-sharp handling.

Mountain biking was fun! For the first time since I dropped dollars on a suspension bike in 2016, I was actually enjoying myself! I put as many miles on the Lux in 1 year of riding as I did on the Anthem in 6.

And over the years Alastair had become quite the adept mountain bike rider, such that he was competing for top-10 positions in the crowded JV fields at NICA & VAHS races. So we got him a really fast top-flight Trek ProCaliber 9.7, and suddenly his improvement just stalled. He could ride faster and push harder, but wasn't progressing in races and struggled mightily with confidence at speed.

He tried riding my Lux in a race and came out feeling even worse, with no improvement in position and back pain that lingered for days.

Fast forward to June 2 of this year. One day after graduation. One month after his final chance to race for high school glory. We took our bikes to Leakes Mill Park, which has a great trail system that takes about an hour to ride. Our goal was 2 laps, but riding behind him on the first lap I could not believe how twitchy his bike looked. His handling was this wild combination of pitching his body weight and catching himself by yanking the bike up under him. It looked very uncomfortable, and he was avoiding every root like it was a venomous snake.

After the lap I asked if we could swap bikes.

Within 1 minute we were doing the familiar "dude what is wrong with this thing??" Both of us! His suspension felt locked when it was open, and he insisted my saddle was too low. We rode the lap on each other's bikes with no changes, identitcal heart rates, and amazingly the lap was only a few seconds different from the first. 58 minutes of discomfort, but *different* discomfort.

I had a shock pump in the car and took 20psi out of his fork, then jumped back into the trail. It was like a brand new bike, but we didn't have time to play any more.

Then this past weekend we went out again, this time with him on a fork that works, and me still too low on the saddle. I fought to hold his wheel at the upper end of Z2 for almost 90 minutes before pulling out a tape measure and a hex wrench. 0.75" higher and suddenly the same watts were ~15bpm lower. I felt instantly fresher. Maneuvering was weird for a bit because the saddle felt like it was in outer space.

So with *both* of us on bikes that worked, we went to Pocahontas State Park and did a vibes-only ride, and we PR'd almost every single trail we touched...in Zones 2 & 3. Uphill, downhill, flat, and technical: everything was improved. Alastair was no longer ducking and weaving to avoid roots, and my power:hr was considerably higher than...ever on a mountain bike.

Now I can't wait to see what we can both do at a race-pace!

So if you know someone who's about your same size and can stomach the idea of letting someone else ride your bike, swap. Not for a day, but mid-ride. Because I'd ridden Alastair's bike before and hadn't noticed the problems. What I needed was the immediate context of having been on mine. And be honest with your feedback. Platitudes won't make you faster.

Thursday, February 22, 2024

Monstercross '24 - the analytical follow-up post

This year was the first time I made no changes to the bike. I had just installed the SRAM Force AXS XPLR groupset before last year's race, had just bought and configured the Sun Ringle Duroc G30 wheels & WTB Resolute tires & 10-44 XPLR cassette, and even last year's bar tape was still present.

Literally the only changes were a new set of pads & front brake rotor, although a review of last year's blog post suggests I was running a lower tire pressure then at 25 psi, compared to my 27f/28r split this year. That's a sizable difference considering my race-morning weights were within 0.5 lbs of each other.

Last year the race was considerably warmer, and I was wearing standard cool weather kit. This year I was in much more aero materials, from the Velotoze neoprene gloves (with hand-warmers stuffed inside on top of my knuckles) to the Castelli Perfetto ROS2 jacket that I'd first tried on the NYD not-a-race.

I've talked about how my training tends to fall off in the Autumn, and I track fitness, form (freshness), and fatigue through pretty standard algorithms in intervals.icu (it shows almost identical data to Sauce, Elevate, and others), along with various elements from Veloviewer and other sources:


In 2020 and 2022 I got off and walked after seizing up, and in 2021 we ran a modified course, so we'll start by discarding those years. This is convenient because I also didn't have power back then, and I evidently didn't explicitly track tire pressure or my race-day setups.

Looking at this year's data, though, I came into the race with a MUCH higher fitness score than in previous years, and in spite of higher average and normalized power numbers, ended with a better form number than ever before. Fatigue was high, but it took a lot of work to get to that fitness number.

In fact it took since December 1, when I got roasted alive in a Zwift Fondo and decided to put in ~12h/week, as mentioned in my previous post.


That day, as indicated by that lone purple dot, marked the start of my march from a consistent ~73 fitness score up to 90 by January 23, with a taper that was only quasi-intentional putting me on a positive form number of 14 the day before the race.

Lots and lots of Z2, folks. Seriously: it's transformative. The easiest way for Garmin users to get the bigget bang for their buck is to turn on both Training Effect data fields: aerobic (~Z2 & 3) and anaerobic (~Z4+). I started training to these numbers, targeting an aerobic score of 3.5 - 4.9 for every ride, and only doing anaerobic work a couple of times per week. Watching these numbers has turned my Zwift time from junk miles to productive training. I cannot advocate for it enough.

But as I also mentioned in my previous post, the other big change was watching W' bal. W' is the is your anaerobic battery--your matches, if you will. It's not the easiest thing to calculate--your estimates are guaranteed to be wrong, and the numbers can and will change over time. But essentially it's scored by your max power over various intervals, say 2, 5, and 10 minutes, and using the drop-off (ye olde power-curve!) to determine how many Kj you have in your battery. Go for a big sprint and watch it drop to 0 almost instantly, or do a long surging climb and watch it drop slowly, but any efforts over critical power (which is roughly equivalent to FTP) will drain it. Conversely, riding *below* critical power refills it over time.

I started using W' bal in Zwift rides to get a feel for it, and holy moly it was amazing. Suddenly those times I felt like I couldn't carry on, I had data to show that was a lie. Because we all know the mind quits before the body. And by looking at the data instead of listening to my body, I held onto some groups that would absolutely have dropped me before.

But because W' bal also recharges, it's also instrumental in gauging recovery in a race. My 4th overall segment attack on Monsterkarst the week before the race was paced entirely on W':


This chart shows W' in red overlaid on power. Power, alone, can be hard to really interpret. You can see my first 20 minutes or so are fairly consistent, and W' remains nearly full, but when it gets spiky it's hard to see where things are dropping off. W' shows that data clearly, and the Garmin data-field shows it as a percentage, so you can track your effort clearly.

That same data for the race shows what was happening in that first lap, and how the balance changed when I got on the skis out in the wind:

That opening effort to Beach Rd, with all its bridges and power spikes, had me on the ropes. And while I got tired through the rest of the race, I was never in deep trouble again.

So I finally cracked the 3 hour mark, and I did it with over half the race being out in the wind. I absolutely believe I would have been 5 minutes faster if I'd been able to reach the front group before Beach Rd, but where to go from here?

A review of my shifting data from the SRAM app shows a larger chainring could optimize my chainline, with the lion's share of my time spent in the outer 3rd of the block.


I've been running a 40T chainring for so long I'd be nervous to depend on something larger, but the math says a 46T would move the peak back 2 gears, while only losing a single gear off the bottom--a gear I only used for 9 seconds all day. If I can find an aero 46T 110-BCD 5-bolt NW oval chainring before I give up on gravel for the season, I may have to try it out...assuming my power and fitness are in the same ballpark next year.

And that's the rub. Last year I was flat thru the Fall and got COVID in January. This year I was making huge gains from December to late January before getting wobbly and forcing myself into a taper. There's no telling what the future holds, but for now I'm extremely satisified with my results.

Wednesday, February 21, 2024

Monstercross '24 - My Annual Blog Post

 This year was the 13th running of Monster Cross, and I've now officially participated in more than half of them! I had a whole great big long intro planned for this post, but then I re-read last year's post and tbh it was gonna be pretty similar, so let's lay out the season-to-date.

Just like in 2023's race, I hadn't done any racing since the 2nd Sorry Honey CX race in mid-September. Weird coincidence that was at least driven by weather this time, and not a months-long recovery from injury. But my fall season, while full of rides, was not an effective training season. It was just a mix of MTB rides, which I've really started to enjoy by finally having a good bike (more on that later?), and trainer rides. I finally realized, after 3 years of struggling with chilblains, that my feel cannot tolerate cold road rides.

But on December 1 I did the first of several Zwift fondos and decided to kick my training back into purpose. With a focus on volume and Z2, I pushed my hours up to ~12/week and held there thru early February.

Along the way, I learned about W' and added it to my data screens when dual-recording Zwift rides, and when I did push to big watts it became invaluable in knowing when to push on and when to conserve. Seriously: learn about W'. It's an absolute game-changer for racing, and I have a power meter coming for my mountain bike so I can be more precise with my efforts there, too.

Then came the annual New Year's Day not-a-race, which gave me my first opportunity to see if my training had paid off, and I've never felt fresher after ~80 miles, even if my feet were out of commission for a week afterward.

The Tour de Zwift further sharpened the stick, but I started running the risk of not training to 3 hours consistently.

The last piece of the puzzle for me was having spent very little time on the gravel/cx bike since September. The new mountain bike is *SO MUCH BETTER* than the old one that I really prefer it to riding gravel. So I forced myself to make weekend jaunts to Pocahontas State Park and put in hot laps. Since part of the official course is only open on race day, most folks either opt for a "training course" lap that starts & stops in the main lot, or the Monsterkarst Strava segment, which covers the same ground but starts at a more convenient trail hub.

Monsterkarst became my gold standard, and 1 week before race day I put in a lap that is currently 4th overall on the segment, over a minute faster than my previous best from the year before. I guess that meant I was ready.

So with aero skis on my CX bike, a power meter and W', 50 hours of volume in January alone, and a forcibly-imposed taper, I felt as prepped as I could be for a COLD day on the bike.

And it was cold. The warmup was the coldest riding I've done in months, with 2 jackets and pants over my tights. I kept all of that on until the last possible moment, and then by an absolute confluence of luck found myself at the start line right as folks were starting to assemble.

10 minutes of standing around later, and a shuffle forward that saw me pushed back to about the 6th row, and we were off! Last year I did not grid well, and while my position was far better this year, it was still going to be work to get to the front.

Just like last year, the leaders pounced from the gun, and even where I was--maybe 50th--there were already dudes gumming up the works by 1 mile into the race.


You can see it right there in the first chart: 30s Power. A big saggy dip from 0:02 - 0:04. And just like last year, that meant jumping through traffic and bridging repeatedly for the next several miles. Each peak on that chart represents catching one group and jumping to the next, and each time you can see the W' balance dropping on the bottom chart: I was burning matches quickly. But I was also VERY close to the front--by the time we turned onto the trail paralleling Beach Rd they were no more than 50' ahead.

But the surges kept taking me to groups that were getting dropped--nobody else was moving forward. So coming through that last turn I was really hopeful to have made it, but the 3 guys I caught were, predictably, getting shunted off the back. So I watched the leaders ride away and focused on recovering. We were still moving pretty well, and nobody was catching from behind, and maybe most importantly, we were picking off others who were either dropped or had mechanicals.

Also as with last year, the aero bars come with the curse of expectation: nobody wants to work when you could just get aero and do it all. I was doing a whole lot of work, along Beach Rd, down thru & up from the dam, and onto the road section, until an e-bike came rolling through and picked up the mantle. We held his wheel thru the first 2-way zone and up toward the road crossing toward the campsites until his chain dropped, and then the 4 of us were alone again through the entire north side of the course.

We came through start/finish in under 1:27:00, making it just possible that I might achieve the goal that had eluded me since 2017: a sub 3-hour finish!

I'd managed an extremely lucky parking spot where I could leave a bottle on my bike rack without exiting the course, and at the beginning of lap 2 I stopped just long enough to swap bottles. Two of the riders in our group rode on, but backed off enough that a quick trip to the skis brought them back before we even left the pavement. A pair of other riders caught us up soon after, and then an extremely fast racer dragged us for a mile or so before we gave up chasing him.

But once he was gone, it was back to being glued to the front.

Every stinking year I do other people's work sitting out there in the wind, but I also really wanted that 3-hour finish, so I didn't waste any time waiting for folks to decide to work.

The 2nd lap run along Beach Rd I don't think I came off the front once. But I also didn't really vary my effort and focused on recovering W' balance for the dam & north side.

We lost a rider along the way, possibly at the dam climb, but then Sneaky Dave caught us up on his rigid mountain bike, and at least there was a small amount of rotation on the road section.

As Sneaky Dave is 60, I'm in my late 40's, and our 3rd was a junior, I strongly suggested that we just work together and keep things smooth. They seemed to be willing...so long as I was on the front. I'm really not exaggerating when I say I was probably on the front for 20 miles of that lap. Fully 80%.

But at least they weren't attacking, and while I didn't feel great, I wasn't cramping. I was remembering to drink. I had forced myself to eat when I didn't want to. Cramps have undone my race several times, and I wasn't having it this time.

We got back to the north side and caught a small cadre of riders at about 43 miles. Our group of 3 briefly became a group of 7, and then the junior attacked. Literally no reason to do so: nobody in our group was racing him, and there could not possibly have been more than 15-20 riders ahead, and by this point there was no possibility of catching the front group. No point. Sneaky Dave and I both cried foul, but I dutifully got on the skis and limited his damage to ~10 seconds and held him there until the Monsterkarst trail hub, where he inexplicably tried to make a wrong turn and came to a full stop. MAYBE NEXT TIME DON'T ATTACK THE GROUP.

We bombed down the final trails as a group, and Sneaky Dave put in a big dig at the final walking trail, and I was happy to let him (and the junior) go. I had just about a mile left to go, and if I just focused I could barely cover that ground before the 3-hour mark.

I dismounted for the final creek crossing because I'm horrible at it, but unlike last year or the year before, I was actually able to get back on the bike and pedal. Final climb, final rooty dangerous descent, and there was the bridge. The Garmin showed 2:58.

I made my way to the foot of the paved dock climb and just put everything i had into the pedals, crossing the line at 2:58:28 on the official timing clock. Somehow the 2nd lap was only 5 minutes slower than the first.

I'd done it! On the 7th try, and having done roughly 60% of the race in the wind on the skis, I finally cracked my goal of 3 hours. And also unlike last year, I was actually able to get off the bike afterward.

No cramps, food consumed, only just over a bottle of water in me. I've never felt as good after this race. It took a few minutes to figure out how to walk, but that was it. I didn't even need a nap when I got home. I guess all that volume and Z2 training paid off!

As an added bonus, I got hardware! Last year I brought home a 5th place medal in Men 40+, and this year I brought home the 4th place medal. Weirdly, the online results show that I actually got 4th last year, and 5th this year, but either way I have the correct medals, so it evens out.

Wednesday, May 31, 2023

Memorial Day Opsec

I visited my grandparents' grave on Memorial Day. My grandfather served in the US Army in WW II, and my grandmother is buried beside him. I shared an uncaptioned picture on Facebook of their headstones with flags in the background.

It was a huge opsec failure.

My grandparents' last name is my mother's maiden name, the most common "security question" on the planet. Though I didn't identify them as my maternal grandparents, it's fairly obvious they don't share my last name, and their birth/death dates all but confirm that they're the right age to be my mother's parents.

Everything you share--no matter how small, innocuous, or minimally identifiable--helps create a more complete and exploitable digital footprint. I weaponized data against myself simply by sharing uncaptioned content.

Security questions are almost as dangerous as bad password policies. The ones that are easy to remember are also easy to guess or prize from social media.

Mother’s maiden name: launch this one into the sun. Maybe this was ok in the days before social media, but now it’s way too easy to connect dots through online friendships.
Birth city: over 50% of Americans live in the state where they were born. Some surveys put the number over 50% for still living in the same city. Nuke this question. A guess shouldn’t yield a >50% success rate.
Elementary / High school: Kind of a combo play on the questions above: if you can suss out a person’s city or state and see their friends list on any social media platform, you’ve probably already gotten their entire educational history. I think the only one that might be tough from my past is middle school, maybe. Maybe.
First pet: People generally love to gush over early pet experiences.

The harder ones force me to remember how I answered them originally:

First car: did I list the brand? The model? The year? The sub-model? I might have listed the color on one security question, and not on another.
Favorite color: My children have favorite colors.
Best friend: Uh....when? I only met my current best friend a little over a decade ago, and I’ve been filling out these questions for over 20 years.
Favorite teacher: Bro I trudged through over 16 years of education, and that was over 25 years ago--is that a thing people actually remember?
Favorite food: Again, when? I'm lucky if I can remember what I just had for breakfast.

And don’t go tacking on ‘as a child’ as a qualifier to any of these, because as I bear down on AARP eligibility, everybody under 25 looks like children, and there were times when my budget dictated that ramen was my favorite food.

Until all apps and all platforms accept passkeys, decentralized identity, or other hardware backed authentication (and users learn the vital importance of backing up their app-based authentication configurations), I see no functional way to avoid security questions. Just be careful that the answers to those sacred questions are protected with the same gusto as a bad password.

Wednesday, March 01, 2023

Monstercross 2023

Looks like I have to blow the dust off this thing again. Yeesh.

After all the excitement I had for the start of cyclocross season, I got crashed out of the 3rd training race and lost 5 months to a slow shoulder recovery. The 'cross season never happened, and I moped back to solo riding.

But after surprising myself by staying with the front group for 60+ miles of the annual New Year's Day unofficial road race, I figured maybe, just maybe, I might be able to get to fitness for Monstercross, the sorta-but-not-really-totally-unofficial start to the mid-Atlantic racing calendar.

I've written about this race before. It was my very first race, way back in 2016, and I've had a love/hate relationship with it every year since. It was also my last race before the pandemic, and my first race back afterward. It's become weirdly important in my heart to participate, and it's a great pre-season fitness test.

I'd spent years hunting for the "right" setup for it, having long believed success would come on a light-weight carbon hardtail mountain bike, but a quick pre-ride with my son on his new bike that matched that exact description suggested it was nowhere near as capable as a well-geared drop-bar bike with aero bars.

So I threw some money at the problem and converted my CX bike to 1x SRAM Force XPLR with a bargain discount Quarq Dzero powermeter and a 40T chainring. I also hit the local discount bins for wheels & tires and came away with a set of non-boost MTB wheels that fit the bike with a simple axle end-cap conversion, massive 26mm internal rim width, and 700x42 WTB Resolute SG2 tires @ 25psi.

When combined with the aero bars and a day of decent weather, this combination of changes let me put down a Strava top-10 performance on the lap (the activity is private, so no peeking!) on tired legs, so I felt pretty confident going into the race.

I also did a good job of tapering, and didn't sucker myself into even touching a bike for the 3 days before the race, carb-loaded a bit the night before, and chose the right racing category of 40+.

But I also had COVID in January and hadn't ridden with anybody wheel-to-wheel since January 1, so while I felt like I'd done everything I could, there was still the whole unknown of Other People's Readiness.

I got in a quick warmup ride on the opening miles of the course just to be extra familiar with the turns and lined up...deep in the group. This race is all about the opening mile, most of which is on a narrow twisting loop of pavement, and if you're not in the front 50, your race can be over before you even reach the first bit of gravel.

I was not in the first 50.

By the time we hit gravel, we could see almost a football field of distance between us and the group ahead, and nobody at the front of our group was putting in a dig, but they were happy to gum up the line so nobody could get through.

After almost a half mile of watching the lead group disappear, a teammate put in a big dig, opened a hole, and I chased through. A few followed, but the next 5 miles were just bridge after bridge after bridge, and every time we'd make it to within a few meters of the lead group, the wheel we'd been following would drop off the back, forcing yet another big effort.

Then, just as we made contact, a big crash split the whole group in two, and of course I was on the wrong side of the split. After so much work to get there, I didn't have another full chase in me and settled for the newly-formed 2nd group. We worked well as a whole for several miles, taking rotations and not forcing anyone on the front, though I did stick my nose out there for almost the entire road section because of my aero bars.

The group dwindled down to about 15 before we hit the campgrounds, and then another crash brought us down to maybe 10, and for the most part, that was the composition for the next 35 miles. We lost my teammate somewhere along the way, but another teammate had volunteered to be race support and handed an EXPERT-level bottle transfer at the end of lap 1.

But then I did the thing. I did the same thing I've done every year since I started racing this thing with aero bars: I raced everybody's race for them.

Lap 2 is notoriously hard. The focus is gone, the pain is present, the desire to simply survive takes over. Conversation stops, anger rises, attacks become less frequent, and the group becomes complacent.

We hadn't made it a mile into the 2nd lap before I realized my average power was much lower than in the first lap. Granted, I wasn't crossing bridges to chase, but it was down from mid-200's to under 200W. We were slowing down, and nobody seemed interested in pulling or working.

So I did. And did. And did some more. And then did again, followed by more and more and more. But I was being very cautious about my efforts, keeping an eye glued firmly to power and never doing climbs above 400W. One guy would occasionally throw an attack and get some space, but just staying on the bars and maintaining a steady ~220W would bring us right back to him within half a mile. And this continued from mile 26 to about mile 45.

We caught another pair of riders at about mile 32, one of whom went on to win the women's pro field, but aside from the one guy's attacks and her brutal responses, nobody wanted to come through. Eventually the 3 of us agreed to neutralize: we were all in different categories of the race, and the only one of us who had competition in the group was racing 60+. There was nothing he could do to attack and stay away, and we just kept dragging his competitors back to him, so I vowed not to respond to his attack if he went late, asked the lady to do the same, and just kept it steady.

By mile 46 I was in novel territory: I'd never made it this far into the race with the same group, and it looked like a 3-hour finish was just about tenable, but I knew I had to get off the front to survive the final trail section. I literally had to feign injury to get people to come around me, and I settled into the back of the group and just waited for the misery of the end: a mile of walking trails that includes some of the nastiest climbing on the course, the only creek-crossing that I can't ride, and a punishing rooty descent just when you can't take any more abuse.

And that's where I took my foot off the gas. I had gummed up the group on that creek-crossing on lap 1 and didn't want to mess up anybody else's race at the end, so I got to the back and just paced myself. The last climb was agony, and on the rooty descent there was a rider down receiving medical attention, and a guy physically blocking the entire trail with his bike to protect the scene (though I couldn't see the emergency scene because he was blocking the trail and offering absolutely no guidance as to why--he nearly caused me to go over the bars hitting the brakes, so maybe don't do this?). I went cautiously around, found there was nobody coming after my wheel, and just rolled to the end for a finish time of 3:00:04, 11 minutes faster than ever before.

I didn't realize at the time that this would be sufficient for 5th place in the 40+ category. I also didn't realize that there had, in fact, been someone else in that category in my grupetto, so I could maybe have snagged 4th and hit my sub 3h goal if I'd been a little less cordial at the end.

But overall I'm absolutely thrilled with the result. I've been on the podium twice at Dirty Kitten's 40-mile race, but a podium at Monstercross had eluded me for years. This year's setup, with a power meter to keep me honest about efforts, better tires to manage the turns, and better focus through better weather, let me be much smoother than in years past and not blow up in the final miles. The team support was instrumental, both on and off the course, and I feel like I'm well-positioned for the start of the gravel season.

But it leaves a question about the 2023 road season. I'd kinda wanted to make another low-key run at the Virginia Cycling Association CAT 3 BAR, but with a season that's mostly just crits with a couple of TT's and a single tentative road race, it's not a year that plays to my strengths. So for now I'm just going to look for regional gravel races and hit the truly local (like Richmond-local) road events, and maybe take a look at the mountain-bike race scene, since that's where my son's interest currently lies.

Also, the kid took 3rd place again in the Mini Monster (25 mile) junior competition. A good day for the whole family!



Tuesday, September 20, 2022

Cross is here!

Every year I tell myself I don't like cyclocross. I intentionally avoid registration pages and all the hype and tell myself I won't do any races. But then the road season just...ends, and I'm usually coming into peak fitness with absolutely no desire to train indoors or race on Zwift with the weather still nice. Fortunately, or perhaps unfortunately, there's a local 3-week series that picks up exactly where the crit season leaves off, and I rediscover all the ways this race format is custom-tailored to my tastes...with 2 glaring issues.

Road racing is where my heart is. I'm strong enough to be around at the end of a local elite race, but while I have a decent sprint I'm not good enough to find myself in position to use it. I can usually settle for right around 10th, though I get braver and bolder as the season wears on.

I'm a halfway decent time-trialist and can usually land on the local CAT3 podium, but the experience is not pleasant and I don't really enjoy training for the discipline. Not to mention the TT bike requires CONSTANT care & feeding and the speedsuit only lasts a few rides before starting to degrade. Hill-climbs are just misery.

I want desperately to enjoy gravel, but cannot understand the obsession with races that take 4+ hours. I know my fitness and I know where it fails, and it does not exist beyond the 3-hour mark.

Mountain bike racing is just next-level stupid for my risk tolerance, though I do quite enjoy taking the cyclocross/gravel bike out on XC single-track.

'Cross races, though painful, offer the best mix of all these things, plus the crashes don't tend to remove quite as much flesh, though I have broken a rib on icy grass.

Cyclocross has been described to me as "steeplechase on bikes", but I don't think that quite does it justice. From a visual perspective it's certainly adequate, but from an experiential perspective it's more like a 40-minute sustained heart attack. From a strategic perspective, though, it's more like go-kart racing.

Everyone lines up at the start with one goal: the hole shot. That's the first significant turn or barrier on the course, and it's the one that will make or break your race, making 'cross the only discipline I've ever done where you literally can lose the race in the first turn by not being aggressive enough. Once through the hole shot it's repeats of grass/gravel/sand laps with varying levels of complexity. Usually there will also be some sort of physical barrier requiring a dismount. [GLARING ISSUE #1: Ok I f*ing hate dismounts. I didn't buy a bike to carry it. I won't practice them, so I always ALWAYS suck at them in races, and I almost always hurt myself remounting. I can't jump them, either, because the last time I tried to jump something I ended up in the hospital with a broken face.]

At the start everyone is buzzing high with energy, but as the laps wear on small mistakes add up and riders fall away from the lead group. Usually a passed rider will remain passed until you start making mistakes, too.

But in those lap repeats you're presented with an opportunity to refine your lines in an effort to conserve your ever-diminishing energy for that all-important final push to the finish line. Each lap becomes less a race against other riders and more a race against your own prior laps. Every turn presents an opportunity to do better than last time, and just like go-kart racing, many of the turns will chain together such that doing the first one wrong will cost you time through the entire sector.

So it's both a game of energy and of refinement and also trying to bank on having enough energy to do it all again for an unknown number of laps, because if you're doing well guess what: you get MORE laps of suffering! Riders on the lead lap get a lap board, but riders who've been lapped are pulled after the leader begins his/her final lap. Confusing? Yep, and damn near impossible to bank on in a race!

But that strategic effort of identifying what you can exert and for how long and using that data to clean up lines and experiment with gear-choices through repeated laps while also dealing with a bike that's degrading in-place as the brakes & drivetrain & pedals pack full of dirt & sand while also going just hard enough to not get passed and trying desperately to figure out where you can make the next critical pass while your whole body is screaming STOP? OHMYGODTHAT'SRIGHTUPMYALLEY.

I'm not "good" at it. I do not have enough confidence to corner hard, and so I don't fight for the hole shot. I can't manage a dismount to save my life. And I cannot stand being cold [glaring issue #2], so I'm usually only here for the first few weeks of the season, but if I'm being honest I think I actually LOVE it.

Stupid 'cross.

Tuesday, May 10, 2022

Infosec is a high-stakes game of entropy

Every once in a while I get a little despondent about life in the security field. The shiny will rub off and I'll see the stark reality that my industry is built around the idea that people are awful. Billions and billions of dollars spent annually in hardware, software, and human assets to stop theft, and the worst of it is that if my whole job is to protect Person A's ideas, and your whole job is to try to steal them, assuming I do well at my job our net lifetime contribution to the world is zero.

We are just annihilation and entropy. We are exothermic and high-cost. We are creative but completely untapped for moving the world forward, and literally the only one whose ideas have a chance at succeeding is Person A, and that's only if they're able to afford the battle.

Imagine the world we could have created by now if all 3 of us were allowed to be creative toward a greater good. Imagine if businesses could innovate without fear of attack, if inventors didn't have to work so hard to secure patents just to stop theft. Maybe this comes across as a rant against fiat currencies, but books and movies show us what the human mind is capable of not just imagining, but also bringing to life. We know there have been scientific advances that were directly inspired by media. There was a US general, who, while watching the first "Predator" movie, jumped up and shouted "I WANT THAT!" when the predator became invisible, prompting decades of R&D into invisibity tech. But even that example was intended to be used toward the enormous industry of loss & loss-prevention, because what is a military if not an applied security institution?

But where would we be if all of us could take our ideas and turn them into reality? What medicines would we have? What access to information? What reaches of space?

But instead you just want to steal, and I just have to block. At scale that would suggest at least 2/3 of the planet is involved in some variation of this stupid dance.

Going back to sci-fi, one of the major themes in that genre seems to be that others got their shit together and figured out how to develop toward a common good. Star Trek IV made a big show of us still using money and how damned inconvenient it was, but it's a fairly common trope: societies rapidly advance after "moving beyond money". That's not to say they've moved beyond greed, because greed often underlies the plots of many sci-fi stories, but it's significant BECAUSE it's uncommon in those imagined worlds.

A society that isn't fettered with using 2/3 of its resources to just prevent malice makes for awe-inspiring visuals and ideas. Imagine if it could be ours, and all we'd have to do is stop trying to steal each others' crap.

But then maybe that lack of secure-by-design philosophy, born of centuries of fighting over resources, is why Jeff Goldblum was able to hack the mothership with a PowerBook 5300.

Wednesday, May 04, 2022

A whole pile of broken

 Not to be a negative Nellie, but I tend to turn to this outlet when I'm feeling less than delightful. It's my way of processing things more fully than I will just inside my own head, because I often don't pull the threads that tie things together until I commit them to the page.

Anyhoo.

Last time I mentioned Grinder Nationals, and how we're not going. It's an incredible disappointment to manage, but let's frame that discussion.

6 months ago I was racing on a fast new Zwift team. My role was the sprinter, and while I never once finished with the pack, I delivered enough intermediate sprint points to make a difference. I had a job and I did that job. I was seeing record power numbers in spite of poor finishing positions, and those power numbers made community racing fun, or at least as fun as itcan be indoors in the winter on Zwift. Fun enough, I guess.

But then I saw the announcement that Grinder Nationals would be held within my own state, organized by a guy who I met on one of my first ever group rides, and who has spent the past several years building one of the best gravel races on the east coast: Dirty Kitten.

As soon as I heard about it I signed up. I knew it was going to be a tremendous reach, and that it would require a fundamental shift in my training structure, but if a buddy was going to organize something so amazing, I was gonna support it.

I stopped racing Zwift and got outside, because May in Virginia is every season all at once.

Alastair's mountain bike team practices & races have given me opportunities to get in big mountainous training rides, but honestly I was getting worn out, then bored, then frustrated.

Riding wasn't even fun. I tried switching bikes, taking the TT bike out for a hit of fear and adrenaline. It rewarded me with a broken drink system and a bent derailleur hanger that put the mech into the disc wheel. Plus I'd forgotten how much I hate hate hate the Fizik Mistica saddle on that bike.

I put a bigger 11/40 cassette on the gravel bike, but while it has made the bike faster it also ruins the performance at higher speeds and still shifts terribly in the lowest gears. [I still think 11/36 is the right size, but ya know: supply chain]

Then I took Alastair out for a sunset-racing road ride on Monday and managed, within the span of 10 miles, to have the chain get skippy with stretch and have the rear shift cable jam.

The race is this weekend. I know I'm not going. I won't even be able to do the backup event I'd considered on the same date: the annual Cap2Cap century ride. Instead I'll be cheering for my son at a mountain bike race, which is great.

But now, in addition to saying I'm a racer without actually being one, I really don't even have anything to race. 3 bikes in various states of disrepair, and one part is on back-order until the day AFTER the season-opener at the Bryan Park Training Series.

It's a whole pile of frustrate, so I spent money on retail therapy. Gotta recable the race bike anyway: might as well freshen up that bar tape.

And oh my it's gonna be a garish delight for the senses. Because by some random happenstance my absolute favorite hideous color combination manages to be available for most of my accessories, and I'm leaning in hard. I may finish poorly this year, but you won't miss me. I cannot wait to bring the bling.

And this is the first step of how I get my groove back. Prepare your eyes.

A crossroads of anxiety where bikes sit squarely in the middle

 I say I race bikes. I find that I say it less frequently than I used to. Partly that's down to the pandemic, but partly it's down to refocusing on other things that matter a whole lot more than carbon and lycra. But I still say it, just the same.

I used to be pretty excited about it. Even as recently as February I was restructuring my year to set my sights on racing gravel and changing my training blocs from Zwift 1-hour max-efforts to multi-hour mixed-bag efforts.

Last Fall I did a season of Zwift Racing League that, while fun, kinda ruined my perspective on my own fitness and abilities. My 4.5W/kg and estimated VO2 Max of 62, which under almost any other circumstances would have been considered damned good, were insufficient to finish even a single race in the pack, and a 45-second 800W sprint was only good enough for 2nd place in an intermediate sprint, followed by immediately being dropped from the pack. Add an utter inability to read the race strategy and I didn't feel like I was holding up my end of the bargain for the team.

Since my power was already "good enough", I shifted away from ZRL to start thinking about Monstercross, which is always a hard race, but a great early-season test. And yes I met all my goals, but with a result that was much worse than in years prior, and it became instantly evident that Zwift was actually representative of the changing face of cycling: people are truly stronger and fitter than they were in 2019.

No worries: I'd have 3 months to build fitness for Grinder Nationals (100 miles, 6200', 80% gravel) in May, and I signed up for a 3-race series of progressively longer & steeper gravel races to gauge my progress.

It hasn't gone to plan.

The first race saw much the same issues I'd seen at Monstercross: I can start strong, but I run out of give-a-shit much faster than I used to. Within 30 minutes of the start I was off the pace, and by 35 miles I just wanted to quit.

The 2nd race...I skipped. Kids had been sick, work, yadda yadda. Plus it snowed on race-day, and just f* that nonsense. Lots of excuses.

Then the kids got super crazy sick and we went on vacation and I missed the whole week of training before the 3rd event, and it produced not only the worst race result I've ever had for actually finishing a race, but the highest relative effort I've ever seen for anything on a bike. My fitness wasn't improving: it was getting worse, and I had to walk the bike significant portions of the steep hills and still ended up with some of the worst cramping I've ever experienced.

One of the challenges I face at this time of year is an absolute hatred of Zwift. If it's even remotely tolerable to be outside, I won't get on Zwift. But my schedule doesn't really permit me to do many group rides, so it's solo or nothing. Alastair isn't even doing road with me because he's having a fantastic season of mountain bike racing, which is great, and gives me an opportunity to get a dedicated 2-hour block 3 times a week. But it's all solo, and it's so much easier to just ride "hard enough" when you're alone.

So I got permission to do a couple of group rides at non-standard times just to see how my fitness stacked up, and hoo boy not good. In the first, a ride I can usually do all summer long, I was nearly dropped in the first 3 miles. I rallied and stayed with it, but it was a surprise, and my average power was nowhere near what it had been last year.

In the 2nd, I was dropped HARD in about 5 miles. It was embarrassingly bad. So bad that I decided to pivot back to that skipped gravel race and just ride its course over the following weekend...which was the 2nd worst gravel ride I've ever done, and left me wondering just what, exactly, it is I think I enjoy about this sport.

If it's the racing, I'm not in the shape for that. If it's the adventuring, I sure as shit didn't enjoy that this weekend. If it's the people, I barely get to see them, and the people I like riding with hate gravel. It could be the time I get to myself, but even that gets old after a while.

So yeah I guess I race bikes? But maybe not because Alastair's having such a good time racing mountain bikes that we're canceling our participation in Grinder Nationals so he can focus on his points-standing in his current series. He hates gravel anyway so it's no big loss for him, and there's no way on God's green Earth that I could manage 100 miles on gravel right now.

I did just throw some money at the gravel bike to FINALLY embrace a mullet setup for the steeper stuff, but every time I get the TIME to test it the weather turns to shit. So...Zwift.

It's 80-degrees outside today, the sun has been shining, and there's about a 90% chance that the only way I ride today is on the hamster wheel.

I hate what I love.