Monday, February 29, 2016

First cycling road race in the books!

Saturday morning I got up bright and (dark and) early at 5:50am, loaded a sleepy boy into the car, and headed down to Williamsburg for my first ever road race. The morning was cold--24F when we left the house, and predicted to be only 30F at the 8am start time--though the day was supposed to warm up considerably. The car had been packed the night before with all the necessaries and sundries to keep a bike, a boy, and his bike in running order through a long day, and yet somehow we still managed to take a 1-hour drive and turn it into a 95-minute panic attack.

We arrived with only the barest of time left to unpack and get to registration, so it was with great relief that I heard the start had been pushed back to 8:15. I got my bike ready, made sure Alastair was warm enough and knew where to be to watch the race, and gathered at the start for the neutral roll-out.

The pre-race briefing was very difficult to hear, but I heard the guy mention "centerline", which was a term I'd learned literally just the night before while watching race videos. The "centerline" rule means the double yellow line on the road is inviolable, just as for cars, and within 3 miles of the start, I learned just how inviolable it was.

Just past the neutral roll-out, I found myself in the left side paceline, tight on the wheel of the guy in front. We'll call him Yellow Armwarmer Guy, or YAG, because he comes  back later on. The group in front accordions, and YAG zigs left across the double yellow to avoid a collision. Only instead of tucking back in, he breaks and charges up to the front. His break comes maybe 100m from a right turn, and I follow as other riders fight for space on the right (really? nobody wants to widen out that first turn?). Only instead of crossing a double yellow, I'm charging behind him in an unmarked area, and there is no line past the turn. Right as we get to the front (with 1 rider way out front trying to make something for himself), up comes the motorcycle, beeping like crazy. YAG gets dressed down and told to go to the back, and I quickly drop back into the paceline.

YAG is pissed.

The race continued uneventfully for the next couple of miles, with that one lone rider eventually getting reeled in and another pair trying to break at the first climb. This time I was closer to the front and bridged with enough momentum to continue the break on my own. I was hoping they'd chase and make a 3-man break, but they didn't, and after a mile or two out in the air, I sat up.

When the group caught me, I went pretty far back into the pack, pinned down on the right shoulder. Amazingly, for the next 6 miles, nothing happened. Nothing at all. No attacks, no breaks, no nothing. Just a parade of 50 bikes in a tight peloton. I managed to work back up to within sight of the leaders--maybe 20 riders from the front.

Then course is only 9.44 miles, repeated twice, with a 1-mile road off to the left at the end. So as we began the 2nd lap and approached the first climb again, it was clear that everybody had exactly the same strategy: make a break at the climb. But the trouble with the centerline rule is that, because you can only use one half of the road, if the group is still together, the whole group can only move at the speed of the slowest riders up front. So again: no break. I realized I was too far back to effectively counter a break if it happened, so I spent the next couple of miles working back up to the front.

I made it my only goal in life to suck wheel off the lead rider. When any attack started, I'd rob the 2nd rider of the wheel. I must have done it 10 times in that last lap, when YAG came back. First he tried  to break on the right, but the lead rider (6'+, 200lb+) moved right, and YAG went off onto the shoulder. He fought back, now extra super pissed, and decided to try to steal my spot.

This was the first time in my life I've ever rolled 20mph+ and had someone intentionally run into me, and YAG had me by at least 30lbs. But I knew it was coming, so I put myself a few inches ahead of him, making my position more stable and lower on the bike. YAG did not win that battle, but he tried and tried and tried for the last 1/2 mile to the final turn. It was frankly terrifying, but with each failed attempt, I gained a bit more confidence at holding my position.

And even though there was just about a solid mile left at the turn, that's when it happened: everyone broke en masse. My coveted 2nd position was swamped by two pace lines, then 4, then 6. Riders everywhere, all abandoning any sense of teamwork or even wheel-suck, just hammering like lunatics for the final mile to the finish.

And I'd over-spent. I watched about 20 riders pull ahead and was just on the verge of saying "screw it" when we got to the last short climb to the finish. And riders started bonking. Within sight of the finish line, five riders just dropped their pace and slogged up, and I got them all. I'm not sure, but I *think* YAG was one of them. I hope he was.

I was credited with a 16th place finish out of a field of 50, and I learned a TON. I cannot wait to do it again.

Thursday, February 25, 2016

Of Monsters and Classics

Last weekend was the first outdoor event of my 2016 racing season. It was not a good start.

The event was the annual MonsterCross race at Pocahontas State Park, a 2 lap, 50 mile mixed-surface event open to mountain and cyclocross bikes, and the weather forecast looked to be just about perfect for the first 3 hours of the ride.

I mounted SPD pedals and Schwalbe CX Pro 32mm tires on the Fuji Sportif 1.1D and headed down last Thursday for a recon ride. Within the first 5 miles, I was already regretting my life-choices. At 12 miles I was convinced the park was trying to kill me, and at 20 miles I was hopelessly lost on a maze of trails that all have the same name, and rapidly running out of daylight.

After a bit of panic in the wilderness, I calmed my shit down and found the way back to the car, displeased that I would have to repeat the activity on the weekend, but taking solace in the idea of suffering with 500 of my closest enemies.

Sunday morning, with the best big-boy attitude I could muster, I packed the car and rolled back down to Pocahontas.

The environment was amazing, and my attitude quickly improved, almost to hopefulness. Almost. I got the bike ready, did a quick warm-up, and got in the corral and waited. And waited. And waited. The race, for whatever reason, started at least 15 minutes late. I've done a fair number of timed competitions in the past few years, and aside from one very small local 5K, none have ever started late. Whatever: that would be the least of my concerns.

The first few miles were exactly as I'd thought: jockeying for any ground to move forward. Being a roadie, I was ill-prepared for the need to keep a constant eye on the ground below the bike for roots. Thursday's recon ride had told me it would be nasty, but nothing like the first 'hit'. At about 5 miles into the race, on a long fast dirt & gravel descent, I hit a root that twisted my handlebars down by about 15 degrees.

From that point on, I was putting extra stress on my back, but I kept fighting and pushing and eventually fell into a really nice rhythm that held up for another 5 miles or so. I got in with a group of CX riders who were on a strong push to the front, and as we made the turn toward the first steep descent & creek crossing, was asked to team up with another guy. As soon as he asked the question, my rear tire went down. Pointed downhill at about 20mph on big loose rocks (I'm sure the rim is toast, but I honestly haven't even looked at it since).

I pulled off and got into my bag quickly, pulling out the tube and tools and just couldn't get the damned thing to mount. I spent 14 minutes stopped by the side of the trail putting on a frickin' tire, which is insane, and then forgot to lock the wheel in place when I got going again. That was caught by total blind luck, and I started on again. And then a mile later, I crashed the bike. ON THE ROAD. The actual paved road. Grrr. I was making an outside pass in a sharp-ish turn when the guy inside casually turned out from the apex, leaving me pointed straight at a ditch.

The impact was very light, with only minimal bleeding and no tears to my kit, but I didn't realize it turned the left brake-hood inboard by about 10 degrees.

So now my handlebars were pointed down and canted inward and my confidence was done. But I rallied. I decided I would likely only do one lap, so it might as well be balls-out. I briefly held KOM in Strava for the next segment, and I blasted through the woods as hard as the bike would allow, heart-rate alarms going off every 30 seconds or so.

I got to the north half of the course--where I'd gotten lost just 3 days before--and picked off bike after bike until I felt like I'd made up most of the time lost on the tire.

And then came the worst conditions I'd seen so far: 3 more creek-crossings I hadn't seen on Thursday, and a muddy road that was somehow muddier than it had been before, in spite of dry weather. But I didn't care. I was flying. And as I was nearing the top of another ascent, 1 gear off the bottom and grinding out those last few feet, a mountain-bike rider took my lane (in spite of a shouted "on your left") and I darted farther left, not realizing that I would have to go through 12" deep leaves. I made it 10 feet before I was forced to acknowledge that the bike couldn't get back up on the trail and rode straight into a tree.

....and scene. Race done. But 4 miles from the car is not where one can arbitrarily declare oneself "done". So against any sense of better judgment, I continued on, *still* rolling as hard as I possibly could, which was really freaking stupid because I knew I have a race coming this weekend, too. Three of those last four miles are not designed for cyclists, and on any other day are explicitly prohibited for cyclists. I imagine the mountain-bike guys probably liked some of it, but the CX guys had to have hated it: sharp climbs, lots of roots, no room for error, really fast descents with loose crap all over the road. It was terrifying, grueling, and with no spare tubes left, I wasn't sure I was going to make it back to start/finish.

But I did, at 1:57 & change on the race clock. I'd put in one lap and had less than no interest in repeating the experience, so I packed it in and ate a whole mess of fry. 1 hour later, it started to rain and the temps dropped. I'm confident I made the right call.

Tl;dr: MonsterCross was awful.

So with only 5 days between that and my first road race, I needed a little boost.

I tore down the drivetrains on both road bikes, cleaned them as thoroughly as possible (why are Ultegra chains harder to clean than KMC?), and signed up for Tuesday night's Zwift ZTR-PDT C race.

I've done a couple of abortive attempts at Zwift races. In the first effort, I over-spent and got dropped on the first lap. In the second effort, I lost my Internet, and Zwift does not appreciate working offline. Plus, the laptop was 3+ years old, so running Zwift at all was kind of a stretch.

New laptop should alleviate such problems, right? And one can foolishly hope-against-hope that the new laptop will somehow...not...lose...internet? Right? Maybe? Well I did. Hope, that is.

Of course I missed the start of the race by 40 seconds, because I am me. And then Zwift started doing its magic: locking up my brand new PC while it tried to resolve rider names. The neat thing about Zwift racing is that results are compiled after the fact by uploading rides and comparing ride and rider names against Strava, so if you go offline, you can still race, but you lose the draft. And without the draft, you have to work really, really hard.

I was not about to have a repeat of Sunday's misery, so with the internet flaking in and out, and Zwift locking up hard from time to time (anywhere from 5 to 90 seconds), I just rolled as hard as I could until 5 laps were done and waited for results. In so doing, I inadvertently increased my FTP to 246W (an increase of 20W as measured by my trainer, or 10W by the power meter) and unlocked level 10, which grants access to incredibly fast wheels in the game.

And when the results came in, I got really weirdly mixed news: one site had me in 12th of 15, and another had me in 5th of 13. Because of my lockups, the site that analyzes my saved ride-file recorded only the time that Zwift was actually working properly: 1:14:11. The other site, however, looks at known GPS coordinates at known times, and therefore captured where my PC clock had me: 1:20:59.8. If, however, I take my un-corrected time of 1:14:11 and subtract that from the race-winning time on the second site, I move to 4th place.

Because the locally-saved ride file captured the actual effort of my ride, I'm going with the 5th place finish. And I'm quite proud of that.

So now I'm getting ready for this Saturday. At 8am I'm scheduled to start my first road race, the William & Mary Tidewater Winter Classic. At 22 miles, it should be over in an hour.

The course is mostly flat, with two short climbs. I've fitted my lightest tires to my rebuilt wheels and my fastest gear-set, and now I'm wrestling with kit and strategy.

It will be cold, but how cold? If it's above 38F at start time, I know exactly what to wear. But if it's much below that there are glove, bib, and jersey choices that are warmer, but at dire cost to weight and flexibility.

It's a Cat 5 race (entry-level), so nobody has a lot of experience. I know I can pump out 22 miles in an hour, but looking at past results, it looks like the Cat 5 typically ends at 1:04 to 1:10. Is that just a conservative pace-line that holds until 20 miles and then breaks? Do I just say 'screw it' and blaze for an hour, hoping the other guys will pop first? I doubt that's the right answer with almost 40 riders in the field, as I'd be giving a free tow to at least 2 or 3 of them. Do I watch carefully for the first rider to break, or wait for the first group to break? I know how many times I can bridge before I'm toast, so I know where I need to stay in the group. What about if I break at the first hill? The second?

The math nerd in me says to break early and hold a 22mph+ pace for the hour. It would be tough, but not impossible, and would put me almost 6 MINUTES ahead of a 20mph pace-line. That's a hell of a lot farther out than any human can achieve in a 2-mile sprint at the end. Even at 30mph for the last 2 miles, you would only gain 2 minutes over a group moving 20mph. Of course that needs a REALLY early break to work, as doing only half the race at 22mph hands back 3 minutes.

I'm so nervous and excited!

Wednesday, February 10, 2016

A Weekend of Riding

Saturday I took the boy out riding. I'd just signed up for a 50-mile off-road race and needed some training, and the boy was bouncing off the walls in the house. By magical mystical luck, I'd also just the day before come into possession of platform double-sided SPD pedals.

So after an evening of tinkering with the pedals, fitting the right tires, stripping all the unnecessary hardware from the commuter, and fiddling about with kit, he and I set off to Richmond's James River Park System.

Since parking at Tredegar Iron Works is usually a huge PITA, we started our trek from the top of Forest Hill Park (sneaky ploy on my part to make him work harder), rode down around the pond, through the park, and across onto the trails.

Neither of us had ever been on the South Side trails to access Belle Isle, so we were completely unprepared for a 1-mile long ride on a 2' wide track with a fence on one side and a cliff on the other. Oops. But once we made it on to Belle Isle, he had a blast riding his bike around the island and through the technical course. After much cajoling, I even convinced him to ride across the suspended pedestrian bridge to the Iron Works, and he suggested riding the crazy steep ascent to the VA War Memorial. It was a good time, but he was spent, so we made a straight shot of it across the (Lee) bridge back to Riverside Dr, where, in an utter lapse of judgment, he rammed his bike straight into a curb. The bike bucked, he stayed on. The rear then hit and bucked, and he STILL stayed on. But for reasons that will never be clear, once the bike was almost back to stable, he bailed.

No real harm to the bike, and a random passerby gave him kudos for staying upright, though the soft bits took a bit of a blow.

By that point he'd ridden almost 9 miles, more than he'd ever done in a single stint, so it was over to Crossroads Coffee & Tea for a Mexican Coke and a cookie.

Sunday was a different beast.

I woke up feeling cruddier than I wanted to admit, with a hint of a sore throat and a headache that sort of came and went through the morning. But with a forecast of 50F, I wasn't going to let the day get away without some saddle time.

I'd spent part of Saturday evening putting together some longer routes to let me explore more of the Richmond area without re-tracing all of the normal Saturday morning rides. I've fallen in love with the views along the James River, so I knew I wanted to include Riverside Dr, and I wasn't interested in refitting the enduro/commuter bike, so the racing bike would be the steed du jour.

So after lunch I kitted in a medium-weight winter kit, readied myself mentally to be out for about 4 hours (including coffee stops), and rolled out.

The first 25 miles were amazing. PR's left and right. The cool early-afternoon air felt almost refreshing, and the bike felt alive under me. I knew I was throwing away too much energy, but I held out hope that all the training I've done recently would buoy me. I made it to the South Side and halfway along Riverside Dr before I noticed a growing problem.

Chafing. And in a rather distinct and unpleasant area.

It seems that on the racing bike I can achieve a much tighter tuck position, one that causes the bibs to release a bit of their tension on the tenderest bits and allows them to move about a bit. And this movement seems to happen right at the sewn edge of the chamois.

For 25 - 30 miles or so, this isn't much of a problem. At 40 it becomes an irritation. Sunday I rode 65 miles.

And it might seem a simple enough solution to just not get down into the tuck position. Sure. That would be one idea. But Sunday did not get to the promised 50F. In fact it never crossed 40, and those lower temps were accompanied by some erratic gusts that seemed to always come from the direction I was headed. No tuck: no progress.

So tuck I did, and re-adjust as well, but each time the problem would return.

But the ride, from mile 25 to 40, became a mix of joy at riding with distraction and discomfort, with the realization that the only option was to soldier on or call for help. I ain't no quitter, and I wasn't about to abandon my planned route, even though it for some dumb reason included both Libby Hill and 23rd St.

At about 40 miles I came to Richmond's first official multi-use bike path. It connects the North Side to downtown, but both ends are in really weird locations, the climb is overwhelmingly steep for a multi-use recreational path, and even though it was only opened last year, it appeared to be functionally abandoned. Granted, it was a cold, gray, windy day, but gumballs completely covered the path at points, and deep slippery mud blocked at least 2 entrances.

Not knowing I was at the end, I avowed to abandon it myself as being more dangerous than just being on the road. I doubt I'll bother with it ever again.

Then came the winds. And while I'd had some winds to deal with, these were ruthless and unabating. I kept looking at flags blowing straight at me, no matter which way I was headed, and I lost a lot of interest in what I was doing.

So I guess it was good luck that I'd planned the last 20 miles to match my typical evening cycling commute. If I'm gonna be miserable, I might as well be miserable in familiar territory.

And then the temperature started to drop.

It's a really weird thing to be able to feel a 2-degree drop, and to have such a small change throw off your whole game. But at mile 45, the temp went from 39 to 37, and it chilled me to my bones. Uphill, into the wind, falling temps. As I came back through Ashland at mile 60, it was time to warm up with coffee and put on my wind-breaker.

I called my darling wife, told her I'd be 30 minutes later than I'd expected, and sipped a hot hot hot cuppa and ate a sammich and thought about asking for a ride. But as we were expecting company, I realized that making her pay for my miscalculations wasn't fair, so I hopped back on and shivered my way up the road.

It's worth pointing out that there are hills in Richmond worse than 23rd. They may not be as steep, but they are certainly long and grueling and steep enough of their own merit. There are 3 that fall at the end of my ride, they follow in quick succession, and each seems to build on the worst properties of the one before. For reasons that remain unclear to me, my bike--specifically my racing bike--likes to drop its chain at the base of the 3rd hill. She held true to this odd tradition, and at 64.4 miles and 36 degrees F dropped her chain with my street in view, leaving me with no momentum to start a 10% grade after 3.5 hours in the saddle.

But then it was done. I'd beaten the darkness, arrived home before my guest, and put down a 65-mile solo effort. I got to see some of my favorite parts of Richmond, and I unlocked February's Gran Fondo kit in Strava!

Now I just have to figure out the secret to prevent chafing (bike, bib, seat, position, cream?) and go for 80. The Cap-2-Cap ride in May won't train for itself!

Tuesday, February 09, 2016

Of Licensing and Deployment

For YEARS I maintained my own personal licenses of Microsoft's suite of products through the now-defunct TechnetPlus subscription program. It was genius: for $249/year, I had access to Microsoft's entire product catalog. It allowed me to build my own network at home without falling afoul of licensing restrictions and stay on top of changes in my industry, all without impacting a customer environment. It also allowed me to run critical applications like Visio and Project.

2 years ago, that program died. I'm not sure how upset the IT community really was, but I was gutted. For me it was the best $249 tax-deductible annual fee I could possibly invest my continuing education, and it was just gone. And then last year the licensing expired on my existing installations, forcing me to scramble to back-fill those application gaps.

The first thing I had to do was to re-install Office. I leveraged the company's Office 365 licensing to install Office ProPlus, but no matter what I did, I could not get Visio to re-install. Visio is key to my role in designing and implementing systems, and I couldn't just not have it.

A bit of research revealed an interesting limitation: if you install Office products from your Office 365 subscription, you cannot install other Office products from any other licensing structure. Specifically, Office 365 licenses you to download and install products via click-to-run. The click-to-run SKU's are directly incompatible with EA or volume-licensing SKU's, though there is no warning or message built into the installer to alert you to this.

Once I was able to assign myself the click-to-run Office 365 Visio and Project licenses, installation through the Office 365 Portal was...well, simpler, but not great. I still had to *FIND* the products in the Portal, which seemed awfully inconvenient from an end-user perspective.

Fast-forward to last week, when a client was experiencing a similar limitation, and we got to leverage a pretty cool bit of tech to solve a global issue: a client was facing a familiar issue of unsuccessful Visio and Project deployments, but wanted to alleviate the end-user strain thru Microsoft Intune.

Whereas almost any other package in Intune would require pulling down an ISO, mounting it, tweaking the contents, re-packaging it, uploading it, and then working out the deployment scenarios, the click-to-run installation couldn't be done the same way. There is no ISO to download, and you cannot shoehorn the volume-licensing version into a click-to-run scenario.

A quick search of  the Interwebs revealed that others had run up against the same challenge, but there wasn't a lot of good guidance to bridge the gap.

In the end, all it took was the Office 2016 Deployment Tool and a few tweaks to an XML file. The entire size of the download is 3MB, a far cry from the 420MB ISO for VisioPro 2016.

The configuration.xml file will not work in its default state--everything is commented out. Once the comments are removed, though, the EULA is set to accept and the installation is set to silent. The only things to tweak are the specific product name and to add a line for logging, if you're so inclined.

Once done, I logged in to the Intune Portal, built an app package specifying the downloaded setup.exe and passed "/configure configuration.xml" as a command-line argument, and published the app. Within 2 minutes I was able to see the package in the client's company portal, and 5 minutes later I was running Visio.

As a demonstration for my peers, I took the same two downloaded files, re-tweaked the xml file to say "ProjectProRetail" in the product name, built a new app package, and deployed Project to myself.

This is the power of integration. I went from no product to a globally-deployable and repeatable solution in under 10 minutes with only 3MB of file-transfer. I am loving the future.

Monday, February 01, 2016

The Tale of the Cursed Jersey

Sailors used to believe that knowing how to swim was bad luck. The going logic was that if you knew how to do it, you would be called upon to do so. Better to keep the ship afloat when you have no other options, I suppose.

So I guess it's fitting that, after learning how to properly change a tire last week, I should have been called upon to do so on a ride this weekend.

If only it weren't for that damned jersey...

At the end of the UCI World Championship Men's race, Alastair and I happened upon a tent selling German and Belgian jerseys & hats. I wanted a Germany jersey, but could not deny how awesome the Belgium one looked, and it helped that they had my size. So we settled on Germany hats, and I plunked down some coin for a fancy jersey.

Opportunities to wear it didn't present themselves for a while, but just about every time I've worn it, something either breaks or goes horribly wrong.

I can't recall if I was wearing it when the shifter snapped off, but given that it was the first time I'd been back on the bike since the UCI race, it probably was. Anyway...

I wore that jersey for my first Zwift race and got dropped on the first lap. My fault for over-spending energy (though I still say half the field was under-reporting FTP).

I wore that jersey again when the KICKR decided to ruin a perfectly good workout with constant power drops--a ride so bad I furiously jammed the brakes at 22mph and burned a hole in my rear tire.

And I wore that jersey yesterday, when I had my first ever flat on the open road.

Katelyn suggested maybe the jersey is a bit embarrassed about the mechanical doping scandal surrounding the U23 CX rider from its country-of-origin. I just think it's cursed.

And because I love a good challenge, I think that means I'll wear it more often. I'll just need to make sure to carry an extra (extra) tube.*

*Though if it continues to bedevil me, there may be a haunted jersey for sale on eBay some time soon.

The Kicker is the KICKR. Or vice versa.

Early last month I took my riding indoors. The temps were falling, the cold-weather kit had revealed a sub-30 degree gap that I didn't feel I could reasonably fill, and the early darkness threw my evening commute into serious question.

I did a *TON* of research before I bought my trainer. I investigated maximum power, maximum incline, ANT+FEC support, BLE support, online reviews, warranty support, cost, and delivery times. The search quickly narrowed down to a couple of options:

The Wahoo KICKR Snap
TACX ProForm Vortex Smart 2180

The KICKR had a couple of significant points against it, namely cost and the fact that ANT+FEC was listed as a future upgrade, but the Vortex couldn't simulate the hill out of my neighborhood, and the shipping time was a big unknown. So I watched the sales and plopped down the cash as soon as the KICKR went on Black Friday sales.

And was almost instantly disappointed. The first thing it did upon unboxing was to update its firmware and become inaccessible to anything other than ANT+ speed. No other data output, and Wahoo's support is Mon-Fri, business hours only--exactly when NOBODY has available time to troubleshoot their trainer.

Fortunately their email support came through, and after a couple of days of back & forth, I was up and running.

Then came the signal drops.

In Zwift, with my laptop INCHES from my rear wheel, I was getting constant power signal drops. No drops in heart-rate or cadence, just power, and reliably unreliable over 200W.

I spent days combing through forums, ended up building a custom stand to get things where they needed to be, removed all extraneous wireless signals, and...still had intermittent power drops. Not as bad as they had been, but they were still there.

Then I discovered that with the Wahoo Utility monitoring the KICKR over BLE, the ANT+ signal reported to Zwift became much more stable. This flies in the face of all logic, but whatever: it worked. Power drops went from being constant at 200+W to maybe one or two seconds per minute. That's enough to get full credit for workouts in Zwift, so I was happy.

The other day I was not happy. I'd found IPWatts, an app that allows you to monitor multiple power meters for comparison. This, I figured, would be a great opportunity to directly compare the reported wattage from the KICKR and my Stages Power Meter. While I was not wrong, the lack of tracing on the BLE signal was too much for the damned trainer, and power signals became so erratic that it disabled ERG mode mid-workout.

I'm desperately hoping Wahoo will address this with a firmware update, but I gave up on the whole damned ride after 12 miles of vitriolic screaming