Monday, August 09, 2021

Shortest VCA Calendar ever?

 This weekend was the whole road season. Crit on Saturday, age-graded TT on Sunday.

I won't spend too long on the crit: thunderstorms loomed heavy in the forecast and opened up halfway through the race. When 2 dudes crashed in front of me in the rain with 6 to go, I pulled the plug. Glad I did, as the rain got heavier and the sprint was apparently blind. Full respect to the Carytown crew for sticking it out and bringing Will Hart a shiny new medal.

Bailing early meant I wouldn't be going into Sunday tired. Woot! First time for that. And the forecast for Sunday was glorious: cloudy, no wind, temps in the low 70's. Basically identical conditions to 2019, which becomes important! The course was still very wet from Saturday's deluge, and the humidity was off the charts.

I'd wanted to get there with an hour to set up & get ready, but ended up having only 40 minutes, which still sounds like a lot until you handle registration, pin on numbers, kit up with all the fancy ridiculous TT accessories, find the disc wheel inflator adaptor, and then try to figure out how to pee in the speed suit (it zips up the back).

So I got almost no real warmup--maybe 15 minutes, tops--and was still choking down my pre-race snack literally 3 seconds before I was released.

I'd spent a lot of time and effort getting the bike ready over the summer, slamming the stem, tweaking the skis, converting to 1x with a massive 56T chainring, and rebuilding that damned rear brake like a million + 1 times. A few rides on it confirmed I was moving in the right direction, as I finally made the ride to work in less than an hour of elapsed time without even wearing the speedsuit.

Unfortunately one change, though, was a mixed blessing. The road bike puked its big ring a month ago, so I moved the power meter crankset from the TT bike to the road bike (since I use it ~12:1 more than the TT bike). That allowed me to remount the Rotor aero crankset, which mated beautifully with the aero mega-ring, but it meant no power numbers. But that's kinda ok, too, because my 45-year-old eyes struggle to read all the numbers on the Garmin these days. So I knew I'd be racing to heart-rate and pain thresholds, which isn't ideal but hey: I'm old and can't see.

With identitcal weather conditions to 2019, my goal was to exceed my performance, which seemed like it should be within reach given the bike improvements. That year I'd done the event at an average speed of 25.8 mph, an average heart rate of 175 bpm, and an average power of 259W. Obviously power wouldn't be tracked, but I really wanted a nice even 26 mph flat.

I made the start block with 30 seconds to spare, choked down the last bites of my caffeine bar, and rolled out...to realize I'd forgotten to stop my warmup ride. I'd have no ability to track my average speed.

But I was much more cautious about over-exerting in the first quarter than in 2019, getting quickly to threshold and just keeping my 1-minute man in sight ahead. As mentioned, the course was still wet, but not consistently: the inside line was mostly dry, and I found that my speeds went up when my tires weren't shedding water. I moved back and forth across the road for dry spots, and pretty quickly my 1-minute man was right in front of me, and before the turn I'd caught him, my 2-minute man, a straggler from a previous group, and was closing in on my 3-minute man.

The turn itself was a cluster: I was right on top of the straggler without enough time to complete the pass and had to let up. He heard me and gave me the inside line, but I'd already been off-throttle for way too long and ended up losing about 8 seconds total.

3rd quarter of the race was just pacing. Pick a gear and hold it: the course is pancake flat so get a rhythm and go. Hunt for dry pavement and resist the urge to look back. Vulture the neck and ignore the growing pain from the saddle.

4th quarter is supposed to be more aggressive, but it's not an easy delivery after 30 minutes in HR zone 5. I ended up holding steady pace & power until the last half mile and barely had any kick to add even then.

I crossed the line at 48:26, hit my 26.0 mph mark exactly, and averaged 176 bpm, a single beat higher than in 2019 (after a season of not racing consistenly, I'll take that!). The time was 24 seconds better than 2019 for the same effort (+/-0.6%) in the same conditions, good enough for 3rd place in Men 45+. 

Crucially that 24-second improvement was the difference between 3rd and a tie for 4th, and the guy who finished in 2nd also came in 2nd in 2018, beating me that year by almost a minute and this year by only 15 seconds.

So the setup is getting closer, but I still know there are significant improvements left. I haven't switched to latex tubes or dedicated TT tires, the combination of which could make up that 15 second deficit alone. My skis are the older flat style, so I'm not in the modern "mantis" position, but they put my aero drink system almost completely out of the wind. Moving up the cost ladder, I could keep my eyes open for a 80 - 90mm front wheel. The 404 is a great aero/handling compromise, but this is a race of inches, not miles. And I think a more comfortable saddle would definitely help me keep my head in the game for longer, and a bespoke speedsuit with a windowed pocket for the number would be about as much as I could do with equipment before I visit a fitter (don't come at me) or rent one of those fancy pitot tubes for measuring CdA in the real world.

I definitely need to adjust my Zwift setup to see the screen while on the skis so I can train to power indoors over the winter months, too.

The guy in 1st beat me soundly by 2.5 minutes, so he's basically doing a different sport entirely, but the margin to 2nd is something I believe I can eliminate. Now I just have to wait another year to find out if I'm right.

Friday, June 04, 2021

Unscheduled Equipment Check

Last night I had an absolutely soul-sucking ride with Alastair. We headed out early into a 15mph headwind to catch the weekly Thursday night ride out of Crump Park. I have the bigger engine, so I let him sit in my draft while I plowed through 14.5 miles of misery in HR zone 4 to arrive a minute early. The whole way down I felt drained, but was looking forward to the group ride because it would let me shelter, recover, and most importantly: run downwind!

Alas, when we got to Crump Park, there were only 2 other riders ready for the earlier 5:30 start time, so my opportunities to shelter would be greatly reduced, but at least we'd still be running downwind.

But I never felt like I could recover. I'd come off the front and just feel miserable, way out of spec for the level of exertion. My heart rate wasn't crazy high, and neither was my power, but it was becoming more of a mental struggle to stay focused, and even though it wasn't particularly hot, I was thoroughly drenched with sweat as we rode between two lumbering storm fronts.

As we got closer to home, I made the call to pull us both out of the tiny group and head home. Alastair wasn't feeling super great, and I had no desire to get rain-wet as the fronts closed in.

By the time we got off, we were both so exhausted we could barely stand. We'd only done 38 miles with barely any efforts into Z5, no crazy power numbers, but my back was DONE and his face was red with wind-burn.

And it vexed me all night as to why I felt so awful for what should have just been considered a moderately tough ride. I was ready to pull the plug on the whole weekend and just call it a recovery period, except I'd just done that last weekend. And my recovery indicators suggested I should be feeling much fresher, so what the heck?

This morning I glanced over at the bike and noticed the hoods were pointed down at the floor: the handlebar had rotated about 15-degrees downward, probably over a series of jarring bumps over the past week or so. Since I prefer to ride with my hands on the hoods, that meant I was stretched out by at least 1/2" farther than I usually am, so my whole upper-body position was off. That explains the pain in my back.

I grabbed a wrench to fix it and found the lower stem bolts were almost loose enough to turn by hand. Yikes. Another couple of rides in that position and (assuming I didn't throw the bike over a bridge and walk home) I'd have had an exciting moment with the bars coming loose.

With racing season under way, check your stuff. Bolts, lubes, bearings, brake pads, everything. Check it before you wreck it. This is already the 2nd time this season I've found parts on the bike where the condition did not match my expectation.

Monday, April 19, 2021

Fi'zi:k and my money

Sometimes it's ok to just be really really good at one thing.

There is no other saddle quite like an Arione. From crits to centuries to cross, nothing comes close. It's so good, in fact, that I keep trusting Fi'zi:k with my money. Which is super frustrating because literally every other thing they make has turned out to be a disappointment.

I've gone through something like 4 Ariones on my race bike. It came with one, I loved it, and when it got as scalloped as a European horse saddle I bought another. And another And another. The one on the bike right now has close to 14,000 miles on it, and is in desperate need of replacement. More on that later.

On that success I've tried their bar tape. My commuter kept unwinding its 2.5mm LizardSkins tape, so I went with a cotton-backed roll of Fi'zi:k, and it was probably the worst tape I've ever used. The edges were razor sharp and the color was dull & duller. The feel was so bad it made me stop enjoying my commute to work, and with absolutely no damping it transferred all the road buzz straight into my hands. I left it on far too long before going back to the LizardSkins, unravelling-be-damned.

Since that was just one experience I tried replacing my road bike's saddle with their fancy new Vento Argo saddle last year. They look cool and seem to match the recent trends in saddle shape, plus I really don't move around a whole lot during a ride, so it made sense. And that saddle was absolutely amazing in terms of fit, feel, and even power-transfer...for about an hour. After that it felt like it was splitting me in two. Back to the worn-out Arione, and no more long-range discomfort.

I have a Mistica saddle on the TT bike, but as I have nothing to compare that to, I'll just say it's an "experience" to use, rather like sitting atop a perpendicular knife edge.

So you'd think that after consistent failures at 2 contact points I'd maybe not look to Fi'zi:k for shoes, but their new Vento Infinito's were so universally exalted that I figured I'd roll the dice.

Fi'zi:k Fi'zi:ked Fi'zi:kly, and now I have brand new shoes that I literally cannot wear.

To be clear, they felt amazing out of the box. I'd measured my feet 6 ways to Sunday to make sure I got the right size for me, and everything indicated these shoes would transform my life. I wore them on carpet for 30 minutes before committing to mounting the cleats, and took painstaking effort to match the cleat position to my old (5 years, 30K+ miles!) Garneau shoes.

The briefest of Zwift spins suggested it was pretty spot-on, so I confidently reached for them for a 40-mile road ride the next day. I knew I was in for yet another "experience" before I even made it out of the driveway.

Fi'zi:k is rather proud of the stiffness of this shoe. If that's the metric for success, then they should be proud, indeed. Every pebble, every undulation in the pavement, every everything is transferred directly into your foot. Raw and undiluted, like stepping on a LEGO brick. I found myself checking over and over again to see if I'd flatted the rear tire.

After 10 miles or so I kinda started to get used to that, though big bumps were still grabbing my attention, and I started to become aware of how well the shoes are ventilated. A plus after years of steamy stinky feet.

We were rolling hard for the first 30 miles, barely taking a moment to breathe, but when we did stop at mile 30, something happened with my left foot, and for the rest of the ride it felt like someone had jammed a stick into the top of the shoe.

It was excruciating and unrelenting. I tried loosening the upper BOA: no change. Now the bumps didn't just hurt the bottom of my foot, they were so painful that I found myself stepping out of the left pedal. I honestly though I'd broken a metatarsal, and I briefly considered calling for help.

I waited a day before trying them on again, but couldn't even cinch them up without experiencing that same pain. Turns out the upper BOA's base-plate presses very slightly into the shoe, so slightly you can only barely feel it with your fingers, but in exactly the most sensitive spot on the top of my foot, right where an artery passes.

And now, like I said, I can't even put them on.

Fi'zi:k makes a fantastic aftermarket saddle in the Arione, but their desire to be represented across the rest of the cycling world is maybe a bit of a stretch, because literally everything else I've bought from them--including used OE Arione's, which for some reason consistently measure 7mm narrower than even the regular model--has been a disaster.

Saturday, April 17, 2021

My trainer and a 1991 Miata have exactly the wrong thing in common


Won't you join me for a brief journey into industrial design?

You may recall that I bought a "new" trainer a couple months ago: a CycleOps Hammer H2 from the "garage sale" section at REI. In every way it's been an improvement, save for the ~10% power discrepancy, but that's been solvable by just using the on-bike PM's.

It even turns out to be relatively future-proof, with end-caps for easy conversion to 12mm thru-axle support, and even an available XDR freehub conversion.

But what it is not, evidently, is an exercise in good industrial design.

Yesterday I jumped on the trainer for just a short recovery ride and was instantly greeted to neat-o grinding noises. And that's when my afternoon turned into a pile of tools and mild panic.

Distinctly NOT what a quick recovery session should look like

A quick inspection of the outer shell revealed that I was going to need some non-standard bike tools, namely some big Torx bits and FOR SOME UNGODLY REASON a 1/8" allen key: exactly the sort of tool every cyclist with a set of metric hex tools has lying around. Fortunately I found mine before rounding off any of the bolts with the so-close 3mm NORMAL bit. Anyway...

I had a sense that things had gone poorly inside the unit when I saw the molten plastic through the side:

That's not licorice gum

But what I did find inside surprised me. Of all the things in the world from which to draw design inspiration, I would never have expected to see a resemblance to a 1991 Mazda Miata's crank nose, and yet:

Woodruff keys and all. Did we learn nothing the first time with this design?Anyway, this is almost exactly how I first found it, and you might notice that something is missing. Something, say, to hold that pulley and woodruff key in place.

Something like a bolt. Maybe this bolt, melted into the plastic housing:

And along with that melty bolt, a rather tidy shaved detente for that pulley. Notice what else isn't there? Thread locker. Like maybe this thread locker, that they thought to apply liberally to all of the external housing bolts:

So let's fix that and put things back together nice & tidy, shall we?

And once that was done, a quick clean out of all that burnt up plastic:

So the good news is there doesn't appear to have been any significant damage. Once again I seem to have gotten lucky in both timing and the availability of tools on-hand. Had this happened in a race, for instance, I either would have kept riding until it detonated or have lost 45 minutes to the repair.

The less-than-great news is that this piece is clearly under-designed. The bolts for the plastic housing are beefier than this critical bolt that literally attaches the flywheel to the drive-unit. While torque applied to the trainer should, in theory, run in the same rotational direction that tightens the bolt, if it DOES come loose, even slightly, its impact into the housing will cause it to instantly back out completely, which is clearly exactly what happened.

The housing actually created a phillips head driver of molten plastic to facilitate removing the bolt.

After getting it all back together, I hopped on and knocked out a short ride, but now my power meter wouldn't pair, and wouldn't ya know this was the first time the unit reported power numbers that jibed with what my heart-rate suggested. I look forward to re-doing my power test on the trainer now that it's actaually assembled correctly.

Monday, April 12, 2021

The end is the beginning: Monstercross '21

 Yadda yadda "these difficult times", but if you'd told me I'd start my 2021 season with the last race I did in 2020, I'd have had to assume there was some MASSIVE injury involved that took a full year's recovery. But that is exactly what happened, and in a way it felt like closing a loop. I truly cannot think of a better way to have started my outdoor racing season this year than to resume exactly where it stopped last year.

This was my 4th crack at the monster, a race that, while I'd finished twice before, I never felt like I had a clean run. The first time I did it on a poorly-adapted road bike and quit after a lap. The 2nd time we had to stop for 30+ minutes in the steamy sun for a medi-vac helicopter. The 3rd time my fueling strategy failed so badly I had to walk most of the last mile.

This time would be different. This time I would stay hydrated. I would eat. I would pace myself better. All lofty goals, but I did help myself by parking the car on the course so I could swap water bottles mid-race. That meant there was no need for the Camelbak. And it was going to be in the 60's & 70's (benefit of April over February!), so I could wear a roadsuit with pockets instead of a skinsuit without, which in turn meant easier access to food.

So with food and hydration plans in order, I was able to set bonus goals: sub-3 hours. With COVID restrictions in place, riders would start in waves of no-more-than 50, so I was hopeful to not blow myself up chasing toward the front of a 700-strong peloton in the first 10 miles, but would be able to find a steady group to roll fast. This course is very much fast enough for drafting, so going solo would definitely be the hardest way to try to crack 3 hours.

But my group was fast and furious out of the gate, and by the time we hit 2.5 miles (of 50!), I was in deep trouble. My heart rate was deep into zone 5 (of 5!), which wasn't going to scale. And so I got off the gas and was dropped in the 3rd mile. Wow. The race seemed like it was already a wasted effort with only 5% of it done.

But I didn't just stop. I got my heart and my pacing under control and pressed on, hard but not too hard, and within a couple miles I was in a pretty steady cat & mouse with a couple other riders, and by mile 7 it was just two of us: he was faster on flats and descents, I was faster on climbs. We'd gap each other off by 50 - 75 yards and always come right back together when the terrain changed. And we did that for another 18 miles, occasionally reeling in another rider or two, and only being passed once. Suddenly what felt like a ruined race started to feel like it might work out, because our average pace was above what I needed to make 3 hours.

And then he broke his bike, and I nearly crashed on the next turn without a line to follow.

Help came 30 seconds later in the form of a charging group of 4, and I settled into their group to the end of the first lap, stopping briefly at my car to swap water bottles and chase back on. And I stayed in that group, doing an awful lot of work in the wind, for another 5 miles before realizing that I'd suckered myself into working for other people again. I was running out of steam, and it occurred to me that I hadn't eaten any of the food I'd stuffed into my jersey.

Easy to solve, except my hands were so numb I couldn't even find my pockets. My hands always go numb when I spend too long near the limits. So once again I sat up and let myself get dropped. I had time in the bank to meet my goal, needed to eat, and needed to refocus on racing "my" race. I stuffed my face with as much food as I could choke down and forced myself to slow-roll for a couple minutes before settling back into a moderate chug.

I didn't see another rider for the next 45 minutes.

It's a mighty weird feeling to roll 11 miles in a race completely by yourself, like you've slipped out of time and gotten wedged between realities. Deep into a race like Monstercross, the only way to focus on NOT PAIN is by chasing other riders or striking up conversations about how "fun" this is. Without that, and with the sun beating down on your loneliness, it's tough to stay focused. Everything hurts and it all feels incredibly pointless.

But I reminded myself that it was basically a 50-mile dirt time trial and that I'd passed a lot of folks, and nobody was passing me, and that meant I was still racing. And I was still racing the clock, but starting to lose time. My once-impressive pace of almost 18 mph had slowed to barely 15, and it was time to pick it up.

And on the north side of the reservoir on the 2nd lap, with less than 10 miles to go, I knew I could make it to the end. My pace picked back up and I pushed past a few more riders into the final segment, taking a few seconds off my first lap's final mile.

My finish was incredibly anti-climactic, as a minivan and several walkers were effectively blocking the road to the finish line, but I rolled across the line with the race clock showing 2:55 and change, and an official chip time of 2:49:54. I'd met my goal of going sub-3, nothing had broken, and while my whole body was on fire, I was able to dismount without falling off the bike and didn't even have a saddlesore.

I'd held my heart rate in zone 4 for almost exactly 2 hours, with less than 8 minutes in zone 5, which was night & day from last year's 45 minutes of murder-death before I completely imploded. I'd consumed much more water than last year, although that really only amounted to a little over a single bottle. I'd eaten. In so many ways it had been perfect.

But.

I came in 8th of 37 for my class (Men 40+), and while that was my best result ever, I unintentionally hamstrung myself by not racing the Men's Open category, where my time would have been good enough for 5th of 37. But for a category change I would have been on the deep podium.

And while I did crack the 3-hour mark, the course had been rerouted to avoid the campground, taking 1.4 miles off each lap. Had we gone the full distance (and applying the same speed), that would have translated to 3:00:25.

So I have work to do. My yoyo-ing on the first lap showed me that I can make up  a LOT of ground with more confident cornering and descending, and my overall speed of 16.6 mph suggests that an aero road helmet would be a better choice than a traditional mountain bike helmet. That I can fix right now, as (sssshhh: don't tell anybody) my fancy brand new aero helmet just arrived today. The former can only come with time and practice, and I have a whole year of gravel adventuring ahead of me to work it out.

Tuesday, February 23, 2021

How to get 2 new bikes without buying (or selling!) anything

I had a problem over the summer. Alastair had outgrown his first cyclocross bike, and I was itchin' to get drop-bar gnarly with him. He'd never found the joy in off/soft road adventuring, and I chalked it up to a combination of 3 factors:

  1. 1. his CX bike was WAY too rigid and built almost entirely of spare parts
  2. 2. he flatted every single time he rode the thing
  3. 3. it was just too small

So when a good local deal popped up on a new one, we jumped on it. Let me find "good local deal": it was the exact same bike as mine, just one year newer. Same size, same spec level, same everything. So with both a 2016 and a 2017 Giant TCX SLR 2 on the car, we set out to find joy on the road less traveled.

And he flatted. And flatted. And flatted.

It struck me one day that his riding style can best be described as "heavy", whereas mine tends to veer more to "light". I pick up the back wheel for minor obstacles. I use my body to reduce impact because I know the value of the components under me. Alastair does not do those things. His butt stays on the saddle unless (and ONLY unless) he is actively sprinting. And it is always the rear tire that goes down for him, so I can only attribute that to style. He's never broken or deformed a rim, and frankly at 121 lbs I'm not sure he can, just pinch-flats all dang day.

So I figured I'd just quicko swap my old CX tubeless wheels to his bike and see if we could get through a couple of rides.

Except 2017 was the first year Giant equipped the TCX with thru-axles. NBD: when I bought the wheels new in 2017 they came with the promise of easy conversion. Only, and this is super cute, half of the pieces necessary to complete the conversion are discontinued. Only half, and not the same pieces from front to rear. Just kinda randomly chosen, but super critical pieces. Gone. Not even a hint of a whisper on ebay.

This was a huge issue for me, and I railed to Easton about having the AUDACITY to make wheels and discontinue repair parts within 5 years, which is illegal in some places (ran across that little gem years ago when Apple got in trouble for discontinuing service parts). They didn't prioritize getting back to me. And then it got worse, as Easton basically stopped making repair parts for everything. The market for 11-speed R4 freehubs dried up almost overnight.

Anyway, I couldn't put my tubeless Easton EA90XD wheels on his bike, and I wasn't going to put my newer wheels on it, either. I like 'em. They're mine. But I did have all the necessary parts to put them on that bike.

The Eastons would have solved another problem for him, too, weighing over 1 pound less than his stock wheelset.

And then it hit me: why not just switch bikes? The Eastons weren't doing any good rotting on a shelf: there's no CX to race, so I didn't need them under my bike when my fancier gravel wheels were doing just fine thank you. But the bikes, being otherwise identical in every meaningful way, should just take a quick cockpit and drivetrain swap. Because he also wasn't getting my carbon handlebar or SRAM Forcee 1 drivetrain.

And since he wasn't getting any of that, the job would be made even easier by just pulling the handlebars off at the stems, cables and all, and just switching them. I didn't even have to undo bar-tape! And then it just kept getting conceptually easier because it turns out his saddle was actually NOT identical to mine, but WAS identical to my MTB saddle, and I can happily do just as many hours on that, so that conversion just became "raise/lower the post".

And so, about 3 weeks ago, with a plan to salvage his interest in gravel and get him rolling on nicer wheels while also not spending a single dollar, I pulled our bikes down to frames, lined everything up on the bench, and swapped it all. Cables were like-for-like, which was easy on my 1x setup and a friggin' nightmare to fish through the frame on his. I swapped cranks so I could save time moving pedals and chain-rings, and was ready to run new shift-cable inners in less than 2 hours on both bikes. And I had spares of those from previous projects, so literally nothing was spent to complete the conversion!

And when it was all said and done, we both had tubeless setups that should last a ride without flatting. I just now had bar tape that didn't match the bike, so I broke my rule and spent $27 on a new roll. But still: $27 for new bikes all around? Not a bad bargain.

Wednesday, February 10, 2021

Exuberance and disappointment in the same breath

 I got a new trainer! Yay! At least, new to me. It's sorta new in that I got it from a store, but it was covered with dust and marked waaaaaay down and labeled 'no returns', but I GOT A NEW TRAINER! WOOHOO!

I've been on a wheel-on trainer since 2015, and while it still works just fine, it's definitely showing signs of age and wear. It's noisy as all get-out, and that is not helped by the different tire compounds Alastair and I have on our rear wheels (seriously: the first 5 minutes sound like someone is using 10-year old windshield wipers on dry glass). And that brings up another challenge: Alastair and I share it. So to do a race with him I have to move over to an even older dumb trainer and use plain ol' fluid resistance and a power meter. It's not ideal. Oh and the 2015 Kickr Snap has somewhere in the neighborhood of 15K miles on it, so the drum's worn down with a nice deep groove that really makes me question its power accuracy.

So anyway I'd been targeting a new trainer for a while, a wheel-off (or direct-drive, as the cool kids say) unit with greater accuracy and reduced noise and improved "road-feel" and, well, fewer YEARS on its clock. And then the pandemic put that desire in a choke-hold, because everyone who could actually afford a new trainer bought one, and deals evaporated overnight.

But I had a plan.

I'd created a short list of trainers that I found to be accurate and quiet and affordable enough to justify the expense, and I'd check local inventory at my favorite bike shops, because sometimes they actually have trainers in stock that aren't the top-of-the-line units.

My list comprised the following options:

  1. Wahoo Kickr Core at $899, +/-2% accuracy, 2000W capability, ballin' on a budget
  2. Elite Direto XR at $949, +/-1.5% accuracy, 2300W capability, cassette included (one less thing to buy!)
  3. Wahoo Kickr v5 at $1199, +/-1% accuracy, 2200W capability, the gold standard
Let's be clear: I was only going to consider the Kickr v5 if there were literally no other options and the store accepted payments in kidneys. But it made the list because Wahoo's products are pretty future-proof and enable some of the best integrations available in the trainer space. They're dorky, but nerd-cool dorky.

And before I went out the door to my local bike shops (LBS's to the cool...you get it), I figured I'd check stock online because ew yuck people gross. Yeah: still a pandemic going on, still no stock of the "affordable" options (I don't even mention some of the more expensive options, like the ones with built-in vibration, because apparently sitting on a trainer for hours isn't torture enough--you need it to vibrate!), so on Saturday, Alastair and I headed out with masks to do a quick round of bike-shop visits.

We never made it.

On a lark, I figured it might be worth dropping in to REI. They're kinda notorious for having wild deals on stuff and really not knowing their inventory very well. We'd been in the store for 5 minutes, and after asking if they had any trainers in stock, were ready to pull the plug when the dude showed us to the "trainer things" that were just front-wheel riser blocks (c.f. above about their knowledge of inventory) when *another* dude said he thought there was something bike-related in the "garage sale" area.

Do you want to guess what it was?

Well it wasn't anything on the list above, but it was a trainer with no box and a "no returns" tag. Specifically it was a CycleOps Hammer H2 with an accessory bag, an 8-speed cassette mounted, and a tag that further elaborated "used once". With that 8-speed cassette, I'm not surprised. Blech.

Oh, also? It was less than $500. Get the car, kiddo.

Now the deal with "no returns" is that, obviously, it's a gamble. And a big one, since this is a unit from almost 3 years ago that, while it still has its warranty card in the bag, mmmmmaybe won't be honored. But saving many hundreds of dollars wasn't exactly my plan, and you may know that I'm somewhat technically savvy, so OH HELL YES WE ROLLED THIE DICE.

Got it home with the quickness and immediately ditched the cassette, pulling a spare 11-speed 11-28 from an unused cyclocross wheelset (more on that in the next post!). Got the unit paired quickly and went for a quick...70-mile Zwift gran fondo. Nothing like a trial-by-fire.

That's kinda short-selling the experience. I did have some initial issues pairing the unit, so I rode the event pulling power from a separate power meter and used BLE to control the trainer's resistance. But OMG it was amazing! So quiet! So smooth! So much the better ride that I almost forgot I was on a trainer! Not even exaggerating: it was that much better.

But I knew it could be even better, because there's no reason I should have to use a separate power meter. A quick check of the H2's specs shows that it's supposed to be +/-2% accurate on power and somehow calculates cadence. So I tried it using all its onboard goodies, and...the numbers felt weird. I felt like I was working really hard, but the power numbers were low.

And do you know what that means? It means it's time for science! Which I did today! Because science!

I happen to own two bikes with onboard power meters. One is my primary road bike, a 2011 Blue Axino with a Stages left-side-only crank-based power meter. Let's call it a Stages "Gen 1", since there's no generational data on it. It's old, is kinda my point. And it's gotten wonky before. In 2017 I was seeing some of the most amazing power numbers of my life until I did a mid-summer calibration and saw an almost 30% drop. Booooooo. More recently it just stopped doing nice stuff altogether until I did a factory reset on it, but it's been my primary power source for Zwift racing and outdoor riding December 2015.

I also have a TT bike, a 2016 Swift Neurogen, with a Quarq D-Zero crank-based power meter. The Quarq requires far less care & feeding, includes fancy bits like temperature compensation (you don't have to calibrate it because it got cold outside) and left/right power offset (which leg is stronger?). I don't often use it on Zwift because with the wheel-on trainer the disc wheel is horribly loud, the TT position is weird and makes me look up up up at the monitor, and the front end of that bike is super wobbly (are all TT bikes like that??).

So back to the science! Today I picked a route on Zwift and rode it twice: once with each physical bike that has an onboard power meter. Each ride had the same settings in Zwift, from "trainer effect" to chosen in-game bike. Each ride was also dual-recorded, with Zwift capturing the CycleOps H2 power and cadence data over ANT+, and my Garmin Edge 520 recording the bike's power meter and cadence. Heart-rate data was recorded from the same Wahoo Tickr for each and would serve as the anchor for data overlays. Firmware was updated for the H2 to latest (I didn't catch the version number).

The goal for both rides was a general Zone 2 effort, with a 300-ish watt climb in the middle and an unspecified 15-minute effort through rolling hills to get SIM mode doing its thing. In both cases, at 14:30 into each ride I stopped, calibrated the onboard power meter, and performed a spin-down calibration on the trainer. Temperature in the riding space was maintained at 69F throughout.

With both rides done, I pulled the .fit files from Strava for the Garmin recordings and uploaded them into data analysis sets at zwiftpower.com, and the results are amazing.

First up, the TT bike: Quarq D-Zero vs CycleOps H2



Ok, 5%-ish deviation across the ride. Not too terrible. Kinda on the limit of acceptable, but let's look at pre- and post- calibration.

Well that's just ridiculous. It was within 2.x% before calibration, and drifted apart after. That's not how "calibration" is supposed to work!



Oh that is not better. Oh yikes. Overall an 8% deviation between the two power sources. Generally speaking, +/-3% is considered good, while +/-5% is acceptable. Anything outside that is...a problem. The trainer seems to think I am doing less work. But wait! That big double-gap in the first 1/3 is the calibration, and it definitely looks worse before that than after! And it is: 11.6% vs 7.1%, but still way out of acceptable limits for racing in such a competitive community as Zwift.

So somehow calibration hurt the TT bike and helped the road bike. To see how that trend aligns with the overall results for the ride, let's take a look at critical power curves for both. Now bear in mind that the calibration was performed at ~15 minutes, and all efforts leading up to that had been Z2, so nothing on this curve shoud really reflect anything pre-calibration.

Again, first the TT bike:


Oh now that's neat: it seems the Quarq evidently can't handle burst power very well (not that it was a lot of burst power, but bear with me), but tracked fairly accurately on shorter intervals, deviating pretty substantially with longer duration efforts. In fact it seems the ONLY thing the Quarq and Hammer agree on is efforts ~1m or less.

But then there's this, from the road bike:


The numbers are pretty amazingly similar, even if the graph looks a little different. TBH I'm probably prouder of the fact that I was able to turn in such similar rides than anything else, but we're here to compare technology and not marvel at my consistency (seriously, though: those are pretty consistent!).

So what's the takeaway? The new trainer is amazing, but it under-reports power. I have 2 power meters that agree far more closely with each other than they do with the trainer (except for 1s, they're within 3% all the way down, even factoring their differences and using the comparative values from the trainer to extrapolate what they "would have been" in an exact-match ride). So it seems that I'll be relying on onboard power meters in Zwift races for the foreseeable future. And it's a bummer, because I was hoping Alastair could use the trainer with his non-PM bike to improve the accuracy of his rides, but it seems to be no more accurate than the old Kickr Snap, even if it is hella quieter, smoother, and nicer to ride.

Monday, January 04, 2021

2020 sporting year in review

2020 was one for the ages. It's safe to say nobody had the year they expected, though I've been super impressed at all the ways folks found to challenge themselves in quarantine. A lot of fitness goals were smashed, including some of my own, and I've heard it joked that we had enough time to both get into and back out of shape. Because my whole world is a sea of numbers and metrics, I thought I'd look at the data to see if that held true for me.

At first blush, it appears to be true:

This chart represents fitness (purple), freshness (orange), and fatigue (yellow) based on dark magic calculations of stress scores for activities, heart-rate values, power numbers, weight, and voodoo to plot "fitness" over time. However they come at the data, Strava seems to generally agree:


I came into 2020 with much lower fitness numbers than I would have liked because of late-2019 business travel and a crash in December 2019 in which I broke yet another rib. Following the purple fitness line into the year, it stayed pretty flat as I continued to try fitting activities around business travel. And then came March. And from March to early July my numbers rose faster than literally ever before. Along with the rest of the nation, I was working from home, and my lack of commute, combined with the lengthening daylight, put more time at my disposal to ride:


Crack-of-dawn outdoor rides, sunset chases, or the occasional webinar-on-the-trainer became my opportunities to go. And go, I did. And while I'd eschewed virtual racing for a few months, 2 series came together in relatively quick succession that pulled me back into competitive sessions on Zwift: Thursday night team time trials and Saturday morning races with the folks I couldn't see outside. Now I wasn't just riding: I was *training* with a purpose.

But with that purpose came a loss in some of the fun and a re-focus on metrics, something I had really wanted to forgo in 2020. Zwift (my preferred--only--platform for e-racing) races tend to be somewhere in the 1-hour-or-less range, so it's tempting to train to 1 hour efforts. When people talk about being "indoor specialists", that's kinda the underlying statement: they're amazing for 1 hour, but get 'em outside for a 30+ mile ride and they'll fall apart. My principal goal for 2020 had been to stop being an indoor specialist, a goal solidified by my complete and utter collapse in the closing miles of the only 2020 outdoor race I got to do, and about which I've already blogged considerably.

So it's pretty hard to focus on training to a specific series while also trying not to fall into the trap of training for its exact requirements, and that, in turn, meant some other elements of my riding kinda fell off a bit. Commuting wasn't really a thing until mid-July, so the Fuji barely moved off the rack in the first half of the year, and has only recently been pressed into service for outdoor rides to reduce the inconvenience of pulling the race bike off the trainer. Yeah: it's that bad.

Literally the only time the Fuji got less use was 2016, and I bought it in mid-October that year!

But while the Fuji may have seen under 1000 miles of use for the first time in 4 years, the Blue (my primary race bike) got put through the wringer.


All told, my 2011 Blue Axino was used for 5989 miles in 2020, exceeding its previous record by over 1300, though 3900 of those miles were on the trainer.

Speaking of the trainer, I turned 4066 miles in 186 hours, both records by a landslide (over 1200 miles than ever before, with just shy of 50 hours more than ever), and trainer time in Zwift's majestic mountain ranges allowed me to accumulate over 365K' of climbing, a record by 62K'.

But some bikes simply do not go on the trainer. My cyclocross and mountain bikes do not do trainer miles, and they, like the Fuji, largely hung on the wall through the early lockdown times, although both ultimately exceeded their usage time and distance from both 2018 and 2019.

The TT bike was the saddest story of the bunch, having been ridden just 12 times, 2 of those rides being on the trainer. The mileage for that bike was only a shadow of its use in 2018 & 2019, and it remained the most expensive bike in the stable by rides and days owned. Because yep: I track all of that, too.


The TT bike continues to tell a fascinating story, too, even through its lack of use. It seems to need servicing just about every single time it comes off the rack, but so far that servicing has been handled with bulk cable purchases, so while it's constantly down for repairs, those repairs don't really cost a lot (as seen in yellow, above), whereas the road bikes are comparatively maintenance nightmares.

And those nightmares were compounded by the availability of replacement parts. The Fuji puked an Easton R4 freehub, which in any other year would just be a $80 charge on Amazon and 10 minutes of work, but this year meant scrounging for another set of wheels to use on it. Good thing the climbing wheels weren't busy, but I'd rather not subject those to the harsh needs of commuting. Then I tried to move another set of Easton wheels from one bike to another to re-balance the load, and even though that wheelset was ONLY 4 years old, the parts necessary for the conversion were all discontinued. Not just discontinued, but completely unavailable, even on eBay.

But 2020 was also the first year I ever stuck to my budget for bike stuff, in spite of buying new wheels for the 'cross bike, a new 'cross bike for Alastair, and enough stuff to cobble together a 2nd trainer setup so Alastair and I could race on Zwift side-by-side in the garage. Aside from those costs, I had no tire purchases, only a couple of tubes, a whole mess of chains, and a couple sets of cables. Once the lockdowns started, and it became clear the Blue would get all the attention, I kept things hyper simple, buying just a handful of additional bike upgrades all year: a shorter crankset for the mountain bike (LOVE LOVE LOVE) that was on deep clearance, and new Time ATAC XC8 pedals for both the mountain bike and cyclocross bike, which in turn allowed me to move my old SPD pedals to Alastair's off-road stable.

So the moneys were lower, the trainer was up, the racing was basically indoor or non-existent, but in spite of it, I still had my 2nd best mileage & time year ever, my best elevation year ever, my biggest training load by leaps & bounds. I managed to burn just over 288,000 calories and compete in 47 races.

But did I gain or lose fitness? The charts at the top seem to indicate I did, but Garmin's largely un-scientific VO2 Max calculations tend to disagree, putting me back at 60 in December after a year spent mostly at 59:

And all of us cyclists obsess over FTP (functional threshold power), or the theoretical maximum value of power, measured in Watts, we could hold over the course of an hour. That value seems to be down, slightly, from a measured value of 282W in July to 275W, though that may simply indicate I haven't gone full-tilt boogie for a full hour in the past 6 weeks. Strava seems to think that may be the case, too, as it currently estimates my FTP at 288W:


That 282W measurement was from a climb of the virtual Mont Ventoux, a climb that took just over 75 minutes without letting up, so while it's a measured value, it's probably not a theoretical limit for a 60-minute effort.

So in spite of the dip in "fitness", I've gained back my pre-2020 VO2 Max, and my FTP seems to be stable or possibly slightly higher, but that FTP graph above also shows an interesting thing at the 2h mark, a thing that happened just yesterday in 2021: a 13W or 5% increase in my maximum 2-hour power. That's a huge gain for un-structured training, and I'll take it, as it implies I'll be better prepared for a return to outdoor racing...as long as I don't have to sprint, because that's way off from 2019. Like let's not even talk about it kind of bad (-13% @ 15 seconds... oof).

And while the hours on the bike and the corresponding "fitness" numbers have tapered, I've been fortunate to keep my weight pretty stable throughout the year, again with a slight corresponding increase in the back half:


Again, not 2017 death-skinny sub-140, but also not dizzy all the time.

And while the numbers have remained fairly consistent, the results steadily improved! The Saturday morning race series had 4 "seasons" through the year, and in the 3 in which I participated, my overall finishing position went from 3rd to 2nd to 1st.

So, to tie it all up, here's a pretty infographic showing my major stats of 2020: