Monthly Archives: July 2019



A few years ago, I got the idea of doing a solo ride along the RAMROD (my 2013 writeup here) route but in the reverse direction, which would obviously be named “DORMAR” (RAMROD backwards). It looked like it was doable from a water perspective, and would have the advantage of putting all of the climbing in the first 75 miles of the ride, rather than putting a huge climb in at 90 miles into the ride. That would be better because it would be cooler. And you could do *all* the climbing, including the last 600’ up to the Paradise visitor’s center which the Park Service no longer lets RAMROD do.

I was excited enough to create a Facebook group and write a Rider’s Guide. Even scheduled a day for it.

And, for two years, I found excellent reasons not to do the ride. Which means that I’m thinking that I really can’t finish the thing comfortably.

This year, my lovely wife offered to drive SAG for me, which means I could ride it solo – which is really my preference – but without having to be wholly self-sufficient for the whole ride. My tentative plan was to meet her in Eatonville (115 miles in, after the majority of the climbing) to have a lunch, and then I would ride the last 40 miles.

That was the working plan, and this time I actually came up with a date – the Monday after RAMROD, July 29th this year.

Further planning commenced. And I realized that while I was really looking forward to the climbing part of the day – and the descents, I love the descents – I was unexcited about 40 miles of mostly flat riding in the heat of the afternoon after all the climbing. 3+ hours in the heat of the day after already doing all the hard work? I knew that I didn’t like the last 30 miles of RAMROD, and that at least was downhill (though with a headwind).

Hmm. What would you call such a ride? It’s a little bit shorter than the DORMAR, so let’s chop a letter off of the name and we’ll call it “DORMA”. It will be 116 miles and over 8000’ of climbing.

So, I spent a few hours creating the following in Inkscape:


I am *exceedingly* happy with how that turned out. It’s supposed to look something like this. For those of you who would prefer English, from left to right, Greenwater, Crystal Mountain Blvd, Cayuse Pass, Grove of the Patriarchs, Backbone Ridge, Inspiration Point, and Paradise (yes, it’s not really a Mont, but from the way climbs are named I think that makes the most sense).

So, there’s a 32 mile climb from Enumclaw to the park entrance at Crystal Mountain, then a climb up Cayuse (1700’ over 6.1 miles), a climb up Backbone ridge (1330’ over 5.6 miles), and a climb up to Paradise (2621’ over 12.5 miles). None of the climbs are particularly steep – last weekend I did 4000’ of climbing at 9% – but there’s certainly a lot of it.

For Kim to be SAG, she needs to have some idea of when I’m going to be at various points along the route. That is a bit of a challenge. For the main climbs, I actually have some data from last summer of the first climb, and it showed that I did that section in 50 minutes, which meant I was climbing at 34 feet per minute (at 195 watts, if you care). For the descents and easier climb at the beginning, I based it off other numbers I had or just a decent guess. That gave me the following timeline:


That’s 9:20 minutes total, 8:50 riding and :30 resting. That’s a little over 13 MPH average, and while my last run of RAMROD came in at an even 15 MPH, that included 50-60 paceline miles which bumps the average up a bit.

I put this all together in a guide for my wife, along with a map of the Eatonville end location (the Visitor’s center that RAMROD uses as the first stop).


A list of tasks done in preparation for the ride, in random order:

  • Charging of electronics
    • Headlight to deal with the early start
    • Rear blinkie (these are technically required when riding in the park but are spottily enforced)
    • Di2 shifters (very happy to remember this)
    • MP3 player
  • Downloading of podcasts
  • Inflation of tires (80 PSI for my 700×28 Conti GP4s.)
  • Lubing of chain
  • Replacement of backup rear blinkie
  • Testing of backup backup rear blinkie
  • Clothing Selection
    • My best Castelli bibs
    • A Nike Dryfit underlayer (it’s not going to be very hot)
    • My Rails to Trials Jersey (a bit too big, but bright yellow, so good for visibility and not too hot. And really big pockets)
  • Pack bike bag (I have a cloth shopping bag that holds all of my basic riding stuff; arm/leg warmers (hope to skip these), light vests and coats, shoes, helmet, gloves, etc. This is a “grab and go” bag, so all I really needed to do was make sure I had my gloves and headband, which get hung up to dry after rides.
  • Tightened the BOA retention wheel on my left shoe
  • Food and drink prep (I don’t need much food these days, so it’s a lot more than I need)
  • Three servings of hydration mix (Bio Steel), one in a bottle and two in a pack.
  • A bag each of:
    • Mixed nuts
    • Trail mix
    • Cheez-its (my traditional long-ride fuel)
  • A bag of homemade jerky thawing in the fridge that I hope not to forget
  • A serving of SuperStarch to drink before I start.
  • Put sunscreen, chamois butt’r, and MP3 player/headphones in my small bag.
  • There are only 5 or so turns on the entire route and I have them in my head, so there’s no need to bring any maps or use my GPS to navigate. If I was doing the whole ride back to Enumclaw, I’d probably have done nav for the last section.

    I got a decent but not great night of sleep two nights before, and that is the one that really matters; the night before I typically never sleep well and since I’m getting up at 4AM I’m going to be messing with my REM sleep anyway.

    We headed down to Enumclaw, checked in at the Rodeway Inn, and went out for dinner at the Rainier Bar & Grill. I had a decent burger.

    From wakefullness to ridefullness

    After a malfunctioning AC and a hot crappy night of sleep, I woke up at 4AM for my 5AM departure. I don’t need that much time to get ready, but my eyes are much happier with contacts if I’m up for a bit.

    As part of getting ready, I took a look at the current weather. I had planned my gear based on mid-50s and then warming up as the morning went on – which for me would mean a vest and maybe arm warmers. Even though I’m wearing my “Rails to Trails” jersey which has giant pockets, I have a lot of stuff and clothes take up a lot of space, so I don’t want to take too much.

    51 degrees.

    Yikes. The logical thing to do would be to add my leg warmers, but leg warmers are really bulky and not easy to carry when you take them off (you can stuff them inside your bibs but they will keep you warmer than you like. So, it’s vest & arm warmers and hope that it warms up quickly.

    I drink 3 servings of SuperStarch mixed in water. SuperStarch is modified cornstarch, so go to your kitchen, take about 1/3 of a cup of cornstarch and add it to a glass of water, and drink it down. I’ll wait.

    Nasty, wasn’t it? But I’ve had good luck with it as a time-release glucose source.

    I glance at my watch as I ride out of the hotel parking lot, and it says 5:01. Perfect

    Enumclaw => Park Entrance

    32 miles, 2146’ of up

    As I head out on highway 410 – with front and back lights as it’s still *dark* – it’s a nice and still night and 51 degrees doesn’t feel as cold as I expected. I’m cold, but not that bad. Bodes well.

    The moon is out as a waning crescent; just the smallest slice bright and the rest slightly illuminated from earthshine. Pretty.

    The first 3 miles climbs about 500’, and I warm up pretty well during this section. There’s pretty much nobody at all out on the road; a few trucks heading to the gravel plant for the first mile and then it’s almost empty. I’m listening to Radiolab podcasts on this ride to keep me occupied (yes, I can still hear cars & trucks approaching), and after the first hill section I’m spinning along at about 170 watts. I want to keep a decent pace but I don’t want to use too much energy or legginess (legity), so I’m trying to stay in the sweet spot in between.

    After about an hour, I zip my vest back up because my hands are getting a bit cold. I flip over to another screen on my GPS to see the temperature…


    Damn. I can tolerate the cold pretty well and my core temp is okay so far, but my knees do not like being this cold. Nothing to do but press on.

    The rest of this section passes slowly and it does warm up *slightly* as I keep going; the base of Crystal Mountain Blvd – where the National Park starts – is all the way up to 44 degrees.

    Cayuse Pass

    6.1 miles, 1700’ of up

    This section is a big misleading; the first two miles after you enter the park are the same gradient so you think it’s going to be easy, and then the pass begins.

    I haven’t been able to find out who designed Cayuse Pass, but he was pretty bull-headed. Starting at the top point, the route wraps around the hill contours but barely wavers from a constant 6%. That means it’s easy to find a groove and stick to it, but there’s pretty much no variety to be had. I’ve been eating a bit to keep my reserves up; a bit of trail mix and some Cheez-Its. And drinking, despite me not sweating much, as they last thing you want in the mountains is to get behind on hydration. There’s a nice view of the southeast side of the mountain at one point, but I keep climbing. The sun is up but I’m on the west side of the hills and therefore still in shadow.

    Eventually, I finally top out at the top into the sun and 47 degrees. My timeline estimate was that this would take me 3:20 and it actually took me 3:40, which I’ll note is pretty much exactly 10% slow. I was a little lower on wattage than I had expected, but it’s a long day and this is not the part of the ride to try to push.

    Cayuse Pass Descent

    11 miles, 2584’ of down

    The Cayuse descent is a bit like the climb I just finished; 8 miles of 6% and then a flatter 3 mile section. I really like mountain descents, the road is good, and the constant 6% gradient means that I can cruise along at around 31-32 MPH at about 150 watts. I rarely coast on downhills as spinning keeps my legs warm. There are two sections at the top that head eastish and are therefore in the sun, and I warm up a bit, but most of the route is once again on the west-facing side and are pretty cool. My next climbs are going to be on hills facing east, so I’ll have plenty of chance to warm up soon. A glorious 14 minutes of fast descending takes me to the runout section, and I get to the park entrance at 4:04 into the ride, or 24 minutes behind my estimate.

    A young park ranger takes my $15 – she does not offer the “Just go ahead” discount that I got when I climbed Sunrise last year – and I head to the Grove of the Patriarchs stop.

    If you are in the area, this is a great stop; the trees are truly massive and the short loop hike is worth the effort. I’m only here to use the bathroom and to refill my water bottles. My hydration state seems okay so I mix a bottle of BioSteel to replace the one I had just finished and fill my second bottle as much as possible – which is only about 50% given the water fountain stream. I drink a bit extra, refill it as much as possible, and head out after a quick 10 minute stop. 5 minutes of time made up on the stop.

    Backbone Ridge

    5.6 miles, 1330’

    This is the baby climb of the ride, but at 1330’ of up, it’s still quite a bit of vertical. I’m still trying to climb at a reasonable pace, and it seems that my pace today is a bit slow; it takes me 50 minutes to do this climb and I’m only climbing at 441 meters per hour; my usual rate is closer to 600 so this doesn’t bode particularly well. The climb isn’t very steep – only about 4% – and the temp is in the 50s and there are sections of sun. I feel decent, I’m just not riding very fast. Sometimes it happens.

    And my butt is hurting. I’ve had a saddle sore for a while, and it’s flaring up. That means I need to stand up every few minutes, which I do fairly often anyway to stretch my legs but not this much. Both of those are having an effect on my speed.

    On the way up there is a cycling group with matching jerseys that pass me going down. There are few cars.

    The descent is a fun one, and there’s a bit of flat. A miscalculation means that I’m done with RadioLab, so I switch over to music.

    My data says that I’m 22 minutes behind my timeline at this point, but other than a general sense of where I was at the top of Cayuse, I don’t know it at the time. It’s only relevant for Kim driving SAG, and there’s little I could do about it even if I knew.


    12.5 miles, 2621’

    This climb is 300’ shorter than the climb up to Sunrise that I’ve done a few times, and it’s dwarfed by the 5000’ Hurricane Ridge climb on the Olympic peninsula, but that’s still quite a bit of climbing.

    Nothing to do but HTFU and climb it. I feel decent but not strong, so I settle into a constant pace, which later data shows is a disappointing 170 watts.

    I climb, climb, and then I climb some more as I work my way up the ridge. After 46 minutes I take a quick stop to eat some jerky (on this climb I think trying to eat it on the bike will end up using it to decorate the roadway, providing an unexpected protein windfall to the local fauna). This is *not* my jerky – which I did manage to leave in the fridge at home – but a decidedly inferior substitute purchased at a gas station.

    Then it’s back on the bike to ride the rest of the way to the top. During the climb I stand up 19 times to rest my butt.

    Eventually I hit the switchbacks and reach a point where I can actually see the mountain, and then a bit more climbing and I reach Reflection Lakes where it flattens out, and then after a bit of downhill it’s just the short 600’ climb to the Paradise Visitor’s Center. Lots more traffic on that section and I’m pretty toasted, but after what feels like another 10 hours on the bike, at 11:45 I hit the top, where I get off my bike to fill my bottles, take a rest, and look at The Mountain. Despite it being a weekday, the place is packed.

    List of things on Eric that hurt:

    • Back
    • Butt
    • Feet
    • Toes
    • Knees
    • Pride

    My feet are really tender, likely from all the standing, and my knees – which pretty much never bother me even on really hilly courses – are hurting a lot. If I was smart, I’d take a couple of ibuprofen, but apparently I’m not.

    My target time for the climb is 80 minutes, and it ends up taking me 100 minutes, so about 20 minutes slow, or about 45 minutes behind in total. A little of that can be attributed to altitude; the average altitude of the climb was about 3750’, and – looking at some references on Alveolar O2 and altitude – I can calculate that I’m down about 13% on oxygen, and that goes up to 18% at the top.

    Math Pop Quiz:

    Q: It is currently 9:45. You are going to perform an activity that you expect to take 80 minutes. What will the time be when you finish? Please show your work.

    A: Well, 80 minutes is 1:20, so at means 10:65, but that’s not a real time, so normalize it to 11:05.

    Did you pass? I didn’t, as a look at my timeline will show that I ended up with 12:05 as my expected endpoint for this climb. So, rather than being 40 minutes late, I’m suddenly 20 minutes early.

    I obviously didn’t realize this at the time;I just knew that I had beat Kim to the top. I expect this will work out well, as she’s going to come up here and hang out a bit before following me down.

    I know you are wondering what my music was, so here’s the playlist I used from a number of years ago (it’s generated by my Personal DJ program):

    • My World – Avril Lavigne
    • Any Way You Want It – Journey
    • Be My Girl – The Police
    • Holiday – Scorpions
    • Silicon World – Eiffel 65
    • Roll the Bones – Rush
    • Time  – Pink Floyd
    • Sister – Creed
    • When I Come Around – Green Day
    • You Give Me All I Need – Scorpions
    • Analog Kid – Rush
    • Bastille Day – Rush
    • Crystal Baller – Third Eye Blind
    • A Praise Chorus – Jimmy Eat World
    • Tie Your Mother Down – Queen
    • I’ll Be Over You – Toto
    • Doug’s First Job – Uncle Bonsai
    • Out of the Vein – Third Eye Blind
    • Stranger in Town – Toto
    • God of Whine – Third Eye Blind
    • Questioned Apocalypse – One Fell Swoop
    • Always Somewhere – Scorpions
    • Wake Me Up When This Climb Ends – Green Day
    • Warning – Green Day
    • Summer Song – Joe Satriani
    • Cult of Personality – Living Colour
    • Sing Child – Heart
    • Suite Madame Blue – Styx
    • Trees – Tripod
    • It’s Easy (taking it pitch by pitch) – Boston
    • Going To California – Led Zeppelin

      After a bit of sitting and resting, I pick all the cashews out of the mixed nuts I brought, eat three brazil nuts, and head out for the rest of the ride.

      Descent and runout…

      43.8 miles, 5331’ down, 725’ up.

      It starts with about 11 miles of 4% grade and then gets flatter as the section goes on.

      As previously noted, several body parts are painful, but the first part of the descent is what I expect it to be; fast parts with some tight technical turns where I show that I am not the fastest descender in the peleton. As I turn off the top part, Kim passes me going up.

      The descent is just what I thought it would be, and would be fun to ride.

      Except. For. The. Headwind.

      One of the truisms of RAMROD is that the ride back to Enumclaw is always windy. I don’t know if that’s a truism here, but it’s certainly true today. It ranges from a few MPH when I’m in the forest to gusty sections that remind me of the time I rode part of the Kona Ironman course on the Big Island. On an average, it’s cutting off 5-10 MPH from my speed, which is just pissing me off. All the effort to climb up and then I get ripped off going down. When I finally get back outside the park, I text Kim so she has a time check for when I hit a certain part of the course.

      I have Elbe on my mind. On the north side of the road at the west end of town, there’s a gas station with attached store, and there’s an ice cold Coke Zero in one of their coolers, calling my name.

      The wind is doing nothing to improve my mood or reduce the pain in my body, but I can still ride and my power levels aren’t horrible. As a ride leader, I spend a lot of time out in the wind, but this one is nasty and relentless. I pass Ashland and it gets better for a couple minutes, but then comes back with a vengeance. 104 miles is my target, and I slowly watch the miles count up. At 100 miles my GPS loses the decimal point and time slows down.

      I finally get to Elbe, where I get the aforementioned Coke Zero and read the advertisements on the community bulletin board. Good price for tree grinding. I text Kim again, and then head inside to get an ice cream bar. I want something simple, but I end up with a Heath bar crunch. I haven’t eating an ice cream bar in a *long* time. It is sickeningly sweet and not very appealing, but I was raised to eat the food I took, so I finish it and feel a bit queasy.

      I’m getting ready to head out for the the last 12 miles, but I receive word that the organizers have decided to neutralize the remainder of the route, so I instead wait for my team car to show up, and we head to Eatonville to have a nice lunch at the Cottage Bakery and Cafe.

      Thoughts and other stuff

      That was a really hard ride, though if my knees/butt/feet were better, the section to Eatonville would have been simple as it was only another 12 miles.

      I tend to do my long rides solo, but at this distance companionship would have been welcome, though my climbing pace might have been problematic. Omitting the ride from Eatonville back to Enumclaw was a good decision, given my current fitness level. It was fun, for “long ride in the mountains” levels of “fun”.


      Distance: 103.36 miles
      Riding Time: 8:02:11
      Elapsed Time: 8:30:50
      Speed 12.9 MPH
      Power 146W
      Calories 4217
      Whines 3845

      My food for that day was three servings of SuperStarch before the ride, a handful of trail mix, half a package of jerky, 15 cashews, and about 50 cheez-its.

      Stava here, RideWithGPS route here.

        Sequence Controller

        I’m working on a new display for the upcoming holiday season – actually a couple of them – and I need some new controller hardware to drive them.

        Here are the basic requirements that I jotted down:

        • 8 outputs (perhaps expandable to 16)
        • Each output can drive 1 amp at 12V
        • Designed to deal with sequential animation (do this on output 1, do something else on output 2, etc.)
        • Dimming support if practical
        • Easy setup and and configuration
        • Compact & cheap (within reason)…

        With those in mind, I started thinking about components…

        My go-to microcontroller has been the ESP8266 (in NodeMcu mini d1 form) for a while, because it’s so small and cheap. But it’s a bit weak on output pins; you can get 7 pretty easily, but to get more you may have to play tricks. Supposedly you can get to 11 with those tricks which would be okay for 8 but would make 16 possible without some sort of I/O expander.

        Which brings me obviously to the ESP32. Which is honestly a ridiculously capable device; 160 Mhz, 520K of SRAM, dual core (if you need it), Wifi, bluetooth, and pretty much all the I/O support you could want. It’s a little more pricey, about $4 from China in single quantities.

        For this project, it has loads of output pins, and 16 independent PWM channels, which fits pretty well into my requirements. And I’m hoping I can adapt my existing controller software – which is optimized to drive WS2812s – to work in this new scenario.


        The switching will of course be handled by n-channel MOSFETS. My WS2812 expander uses DPAK (TO-252/TO-263) packages, which work great but take up a lot of real estate. That was okay for a small number of channels, but for 8 channels I’d like something smaller and I don’t need to be driving 10 amps per channel, which was my design goal for the expander.

        So, my requirements are:

        • 1 amp @ 12V
        • Switchable from 3.3V outputs (I could add a transistor to drive, but I’d rather avoid the complexity)
        • Low Rds at 3.3V
        • Small package
        • Enough power dissipation

        I started doing some parametric searches in DigiKey and on Octopart, narrowed things down, and came across the BSR202N from Infineon. How does it stack up?

        • 3.8 amps @ 12V (25 degrees, 3.1 at 70 degrees)
        • Specified behavior down to 2.5V.
        • Rds of 33 milliohms at 2.5 V.
        • SOT23 compatible package
        • 500 mW power dissipation

        Those specs are honestly ridiculously good, especially the Rds. If I pull 3 amps through one of the channels, that gives me 0.033 ohms * 3 = 0.1 watts. Just a tenth of a watt to switch 3 amps. If I did that with a bipolar, it would be in the range of 1.8 watts (I’d definitely need a heatsink) and I’d lose 0.6 volts in the process.

        In reality, it will likely be a little better than that since the Rds is lower at 3.3V, but I don’t know how much 3 amps will be heating it up and that will make the Rds worse. It will take some testing to see.

        My only big concern whether the ESP32 has enough drive to deal with the gate capacitance while doing PWM, as with PWM it’s switching all the time, and slow transitions mean slower switching, more heating, and therefore worse Rds and more heating. I’ll need to do some testing, but my guess is that with a PWM rate of 250 Hz it probably won’t be a significant problem in typical usage patterns.

        If it does turn out to be an issue, I’ll add a small bipolar in front of the mosfet. That will give me lots of drive for very fast switching plus a higher Vgs for a lower Rds. It will invert the PWM so I’d have to flip things in software, but that’s simple enough. I’m hoping to avoid it because it will require two resistors per channel, so it’s a nice 8 MOSFETs by themselves or with an added 8 bipolars and 16 resistors, which makes building the boards more of a pain (the cost is of the bipolars + resistors is a few cents per channel).


        My current thought is to make the boards stackable like arduino shields, and I think I have a scheme that works.

        I have the ESP32 boards in my hot hands, but I need to get my hands on some of the MOSFETS to do testing. In parallel, I’m going to start the board design.

        Fixing Bally/Williams Opto troughs

        I had a problem with my WCS serving multiple balls, and I thought I’d share the approach I used to fix it.

        I had looked at the switch tests, but the problem was somewhat intermittent so that didn’t really help.

        I pulled the whole trough unit out; that took:

        • Two screws from the bottom
        • Removing the bottom playfield cover below the flippers
        • Removing 5 (?) screws from the top

        That loosens the trough. I then took out the 4 screws that hold the solenoid to the trough, unplugged the connectors, and it was out.

        Test the LEDs

        I started by testing the LEDs. Through trial and error, I found that a 1K ohm resistor and a 5V supply resulted in a current of about 4mA, and since that’s within the spec for most LEDs, I stuck with that. Hook one end of the supply to the common and the other to the individual LED pins, and verify that they all light up.

        They’re infrared LEDs, so you can’t see them, but pretty much any digital sensor can; a camera, your phone, etc. It’s simpler to remove the board from the trough before you do this.

        All the LEDs on my board checked out.

        Test the phototransistors

        Keep your setup to turn on the LEDs as we’ll need it for this step.

        Using a ohmmeter, connect one end to the common and then connect the other end to the pin for the LED that you currently have on. You should see about 4K ohm when the LED is on and something around 1M ohm when your hand is blocking the light. If you don’t see any difference, swap the leads from the ohmmeter around. You may have to turn the lights out to get 1M on some of the phototransistors as you can get room light reflecting into them.

        Work your way down through each LED and phototransistor and verify that you are getting the right settings. If you find one that isn’t reading correctly, or consistently, it is *most likely* a connection issue.

        I would start by verifying the connections; with one lead connected to the common pin, verify that you have continuity to all of the phototransistors; one of the pins on every one should be zero ohms (or close to it) and connected to the common.

        Then repeat that from each of the LED pins on the connector to the non-common phototransistor pin. You should see zero ohms on each of those as well.

        My issue turned out to be a rework issue; the #6 phototransistor was replaced by somebody and they either messed up the through-hole or didn’t resolder it correctly, so it was only making contact on the LED side of the board sporadically. Rather than pull the board off and try to resolder the phototransistor, I added a small jumper wire from the pin to the phototransistor.

        Everything tested fine, and no more double balls.