Oooops

Over the years running Coloradogravelsroads, Iowagravelroads, and Dakotagravelsroads has been pretty low cost for me. In total, maybe $50 per year. I probably get $20 per year in donations so it’s not something I mind paying out of my own pocket for.

Recently Mapbox, the company that supplies the nice maps under the roads, changed some of their systems. I had to update the way I accessed the maps in Coloradogravelroads and Iowagravelroads. They warned that the new maps would be billed differently, but I figured it wouldn’t have much of an impact.

Last week I got this email:

Screen Shot 2020-04-25 at 11.13.13 AM

The new maps turned out to be about 100 times more expensive! The good news is that Mapbox was very understanding and refunded me the bill AND gave me two months of free billing to figure out a way to get my map costs under control.

I have an upgrade path worked out, but it’s going to take some work to completely rewrite the sites. So expect the maps to be a little weird over the next few weeks as I upgrade and troubleshoot. There is a temporary map layer from another provider in the meantime, so if you’ve noticed the maps look different, that’s why.

While I’m working on this, I’m also looking at the following changes:

Coloradogravelroads will probably get the roads updated to a 2018 data set. I’d like to get the maps more current. The only catch is that looking at the 2018 data I can see some important gravel roads missing! So I’ll have to do some more investigation and see if it’s worth manually adding them in.

Iowagravelroads is a little trickier to update because the data set I use is not formatted as nicely as Colorado’s data. Also the most recent (and maybe last) update of that data set was 2016. However, since everybody loves the county PDFs I’m looking into converting those instead.

Dakotagravelroads was built on newer map technology so it will be unaffected.

GPX Support

I just pushed an updates to coloradogravelroads.com and iowagravelroads.com that lets you draw and download GPX routes.

Our gravel pals at Gravel Bike Adventures suggested the idea to make it easier to plan routes and import them into Strava. I’ve always used paper maps for exploring so I can scribble notes on them, so I never had the need for such a “high-tech” feature. But after playing with it I think it’s pretty cool!

Screen Shot 2019-06-23 at 10.03.37 AM.png

The basics to create routes are:

  • Click the squiggly line \/\ to start drawing a route
  • Click the map to add points
  • Note: the map does not auto-route between points
  • To finish the route, double-click (or click on your last point a second time)
  • To edit your route after it’s done, click on it again
  • You can drag points around to move them
  • The light colored point rectangles will add a new point to the middle of a segment
  • Clicking on a point will delete it
  • When you’re done editing, click the line again to finish
  • To extend a route while editing, control/command click an endpoint to continue the line
  • You can also stop drawing by pressing the Escape key
  • Click the download button ⬇ to save your GPX file
  • To start over, click \/\ again.

A few other changes:

No more ads. I receive more money in “Virtual Beers” than advertising, and I’m sick of online ads.

No more tracking. I deleted the Google Analytics code I was using to monitor site traffic. I don’t need to support surveillance capitalism.

This site doesn’t cost me much money so don’t feel like you need to support it. But if you’d like to buy me a Virtual Beer, just click below:

Buy Now Button with Credit Cards

Back

This poor blog got neglected as blogs took a back seat to the endless feeds of Twitter and Instagram. They definitely sucked me in. But I’ve gotten tired of the information overload and malignant manipulation of those platforms so I’m back.

What’s been going on in gravel land?

I went back to Odin’s Revenge #4 and finished the 180 mile course. I rode the same bike as the year before, but with gears.

A year later I started Odin’s Revenge #5 but this time Odin got his revenge and I dropped out at the halfway point. That turned out to be the last running of the race, so the final score was two for me, two for Odin.

I rode the inaugural Robidoux Quick and Dirty in Scottsbluff, which started out as a dumb idea I had. “We have to throw a race called called the Robidoux Roubaix, it’s too perfect of a name” I told my friend Matt, back when I lived in Nebraska. I guess the basic idea stuck (but not the name) and Matt pulled off a great event.

I built two more frames. Both are dirt-oriented rando bikes running the Compass Rat Trap Pass 26″ tire. I’ll post some build details and comments about the setup after several years of riding. One of them, that I built for my wife, marked the end of a bike fit problem that had me stumped for years. This fit problem probably affects other women so I plan to give it a thorough writeup.

After a few years of messing around with designing 3-D prints, I bought my own 3-D printer. Expect to see posts about 3-D printed parts and CAD design popping up.

As for the rest of the gravel world, I’m glad to see fatter tires and lower gears making their way into the manufacturer’s catalogs. There’s a still a ways to go, but we’re starting to see some pretty great “everything bikes” come out.

So after all these years away from writing, it seems like I’ve got a good sized backlog of things to tell the world about.

It feels good to be back!

Dakota Gravel Roads Tech Stack

Here’s how I built Dakota Gravel Roads:

I started by getting the road data. I downloaded the shapefiles from the DOT web sites of both states. I then used QGIS to filter the roads down to only the unpaved ones, and to reproject the data to WGS84.

I wanted to build this map with vector tiles, so I loosely followed this tutorial. I used Tippecanoe to convert the shapefiles to gzippied protobuffer tiles, and live-server to serve the tiles locally for testing. I tried to use Mapbox-GL as shown in the example, but ran into a unexpected problem – my old trusty 2011 Macbook Pro wouldn’t draw WebGL.

I switched to using Leaflet instead, but found that the vector tile plugins don’t fully support overzooming. Right now they come close to working, but the zoom also affects the line weight so visually you can’t overzoom more than two levels without things looking weird. With Mapbox GL I could overzoom by seven levels, which saved a massive amount of processing and storage. The benefits were too good to ignore so I ended up switching back to Mapbox GL and used my phone for testing.

Once I was happy with the setup, I used the S3 command line tools to copy the vector tiles to S3, adding gzip headers so they would be interpreted correctly by the browser. I bought the domain name and set it up to use Route 53 for DNS. In order for the map to use geolocation (a popular feature for my map users) the site has to be served over https, so I created certificates in the AWS Certificate Manager and set up a Cloudfront distribution in front of my S3 bucket.

All in all it was a good weekend project and I’m really happy with the performance of the final product. Vector tiles blow away my old efforts with raster tiles and I’m excited to get to use them more. Of course, once I was done I figured out that my laptop is actually able to draw WebGL and the culprit was Chrome’s settings. After changing a settings flag WebGL works just fine. Oh well, mobile first I guess!

Dakota Gravel Roads

Just made Dakota Gravel Roads live. Like my other sites, this is every gravel road in both North Dakota and South Dakota, based on data from the state DOT departments.

This map runs on some new mapping technology and won’t run on older devices. If you try to open it on an older device that doesn’t support OpenGL, you’ll get a warning message instead of a map.

Like the other maps, it’s based on official data but might be out of date in places. So again the standard disclaimer:

The map may be wrong. Use at your own risk. It would be wise to check against other sources before taking on any rides based on this map.

If you have comments or questions just leave a comment in this post.

One more thing – running this and Colorado Gravel Roads does incur some expenses for servers and bandwidth. If you find them useful and would like to buy me a virtual beer ($5), just click this button:

If you’re a business that wants to sponsor the map with an ad, let me know. It’s a niche site, but if you want to reach people who ride gravel roads in the Dakotas you can’t beat it. It has really good time-on-site and clickthrough metrics. If you’re, say, a bike company launching a gravel bike and you wanted a map-related way (online or print) to promote the bike, I’d like to talk to you. If you’re a town or county that wants your own custom online maps of gravel roads, trails, rides, or whatever, I can come up with an affordable solution for any level of technical savvy.

GPS fixed on map sites

Web browsers recently changed their security settings to only allow web pages to access your GPS position if the site is being served over an encrypted (https) connection. I didn’t have https set up on coloradogravelroads or iowagravelroads, so the GPS function stopped working. I took this snowy afternoon to fix that, so GPS should be working again on the mobile versions of the map.

Iowa Gravel Roads

Update: June 2019: I added GPX route creation and download, and removed some junk. See GPX Support.

I just launched Iowa Gravels Roads. And all I can say is, wow, Iowa has a lot of unpaved roads. If anyone ever asks “Why would you want a dedicated gravel bike?”, I’d point to Iowa as an answer.

Screen shot 2014-10-22 at 1.17.07 PM

The map follows the Iowa DOT styling of red for gravel, and green for dirt or ‘B’ roads. I apologize in advance if you’re red/green colorblind. The mapping is based on the official 2013 data set. It’s pretty good, but you’ll find stuff that’s wrong. With that said, here’s the standard disclaimer:

The map may be wrong. Use at your own risk. It would be wise to check against other sources before taking on any rides based on this map.

I have a couple routes added to the map so far. Click on the purple line and the popup will show a link for more information about the route.

If you access the page on a mobile phone, I hide the routes and ads to save space. I also added a GPS button that will show your location using your phone’s GPS. If you add the page to your home screen, it should open full screen like an app.

If you have questions, comments, road updates, etc – leave a comment in this post.

One more thing – running this and Colorado Gravel Roads does incur some expenses for servers and bandwidth. If you find them useful and would like to buy me a virtual beer ($5), just click this button:

Buy Now Button with Credit Cards

If you’re a business that wants to sponsor the map with an ad, let me know. It’s a niche site, but if you want to reach people who ride gravel roads in Iowa you can’t beat it. It has really good time-on-site and clickthrough metrics. If you’re, say, a bike company launching a gravel bike and you wanted a map-related way (online or print) to promote the bike, I’d like to talk to you. If you’re a town or county that wants your own custom online maps of gravel roads, trails, rides, or whatever, I can come up with an affordable solution for any level of technical savvy.

Odins Revenge 2014

Last weekend was this year’s running of Odin’s Revenge, the 180 mile gravel race held out in Gothenburg, Nebraska. Last year I managed to finish with respectable results, but I made a lot of rookie mistakes. This year I was going to ride it smarter.

First change was to carry less water. Last year I carried two large bottles plus a big water bladder in a frame bag. With the aid stations I never really touched the bladder. So that extra weight was going to go.

Second change was better calorie management. Previously I was just eating at a set interval, but I wasn’t keeping track of calories. I also didn’t have much variety in what I had. I ended up feeling bonky in the first half, and didn’t feel better until the last 20 miles of the race when the lunch I choked down finally kicked in. This year I had a good selection of bars and treats, and I had been experimenting with a concentrated mix of maltodextrin, whey protein, and sugar. I had mapped out a schedule of eating and drinking to make sure I would get enough calories. I was shooting for about 300 calories per hour, with 100 calories coming from something solid and the rest from my liquid mix.

Third change was better pacing. I went too hard last year in the middle of the course. My solution, possibly a stupid one, was to ride the course on a single speed. This would force me not to push hard at higher speeds, though at the expense of tougher climbing. Despite being in Nebraska Odin’s is not a flat course. Years of single speed riding would hopefully make it work out.

Training this year wasn’t much better than last year. June was a busy and stressful month, but I had a couple of promising rides – an 80 miler where I pushed the last 20 miles hard and a 50 miler where I got home and didn’t feel tired at all. There was a couple of good singlespeed mountain bike rides to get the legs ready and I planned to add a little speed skating during the last weeks of July.

If you note the date, you’ll see probably my dumbest mistake in this year’s race. Mid-June my wife says to me “I can’t believe that race is only two weeks away, are you ready for it?” Doh! I forgot the organizers moved it up a month to the end of June. So much for extending the training miles. Would brains make up for brawn?

Other than that, everything else seemed to be going well. The new bike was working well for me. My nutrition experiments were agreeing with my body. We made it to Gothenberg without any major problems with time to spare. Everything under my control was going more or less to plan.

Then Odin got his revenge. Friday night had two big bands of thunderstorms dump several inches of rain onto the area. Rolling over to the start Saturday morning things looked a little damp. But the soil seemed to be soaking up the water and I figured a little bit of sun would dry it out quickly.

The race started out at a mellow pace. I think no one was in hurry to face the conditions. Turning left on to the first gravel road, we found things a little soft, but not too bad. The road base had enough sand and gravel to keep things from being sticky, but there were definitely soft spots where you could sink in a couple inches. There was also a noticeable headwind, already!

After about a mile of gravel road I started to feel some weird feedback coming my drivetrain. With a singlespeed there wasn’t really much to go wrong, so it had to be something else. Looking down I noticed my rear tire was looking soft, but it was hard to tell since we were riding on a soft surface to begin with. A few minutes later I could get my rim to bottom out, so I pulled over to add some air. Off to a good start! I had barely started and now I was in last place. At least I could ride by myself at my own pace, I guess.

Continuing on I caught a few riders, making jokes that the slower you went the more time the road ahead of you had to dry out. My tire went flat again, so I stopped to pump it up, hoping the sealant would kick in. My bike was already muddy enough that I didn’t want to have to change the tube. It would take two more stops to add air to finally get the tire to stay inflated.

Working my way up the field I passed the first of many riders pulled over with drivetrain troubles. The mud was causing rear derailleurs to eat themselves up. Riding a singlespeed seemed like a lucky decision.

The gravel roads weren’t too mucky, but the B-roads were another story. The silty soil varied from peanut butter to chocolate pudding to greased blackboard. Some of the early summer thunderstorms had created major erosion, and the steeper downhills had ruts that were more than wheel deep in places. They were super sketchy on my treadless tires, but at least they weren’t picking up much mud, plus my bike has clearance for 29er tires so I didn’t have too much difficult with the mud clogging up in the frame. I admit to feeling some shadenfreude seeing people with carbon wunderbikes with aero wheels and aerobars reduced to carrying their clogged up bikes like a pack mule.

I kept passing riders. Some were stalled out with clogged frames, some were trying to salvage destroyed derailleurs, others were walking down the slick downhills. At the top of one B-road I came upon a big group of riders, and I heard some discussion about bailing out because there was no way they expected to make the 8 hour time limit to the halfway point. I pressed on, and noticed something funny – there weren’t that many tire tracks in front of me. With them weaving back and forth, I couldn’t get an exact point but it was less than ten. Wild, not too far back I was dead last.

I didn’t see to many riders for a while, and then after passing a female rider (Sarah Cooper) on a downhill I noticed there were only four tracks of bikes ahead of me. Odin’s always has a high attrition rate, but this was crazy. I really never expected to be in 5th. There was one question that nagged me – where were the other singlespeeders? Was I actually leading the singlespeed class too? That would mean extra pressure to finish.

Conditions continued to suck. At one point the road was completely flooded. In some sections the mud was so sticky the only way to ride was to try to float on some of the vegetation on the side of the road, which was full of the little yellow blossoms I recognized as goathead thorns. In other places walking was the only option. Even the downhills were slow, and being able to go fast on the downhills was part of my strategy for singlespeed survival. The morning winds were getting stronger too.

Getting closer to the first checkpoint Sarah Cooper passed me back on a hilly section. I took a look at my food situation I noticed that while I was about on pace for time, since I was going so slow and working so hard I was going through more calories than planned for the distance. I was 3/4 of the way through my energy drink, and that was supposed to get me to the halfway point. I had a bottle of Ensure Plus in my handlebar bag so I decided I would drink that at the first checkpoint and I could always buy another one when we got to the next checkpoint in the town of Curtis.

Rolling into the first checkpoint I found the other singlespeeder and Sarah Cooper there. We were informed that the deadline to make it to the halfway point had been extended to 10 hours. Sarah left the checkpoint first, while I filled up my bottles, chugged the Ensure, and had some grapes which were mighty good at this point. I left next, and 10 minutes after leaving I realized I got distracted and forgot to fill one of my three bottles. It was a dumb mistake, but there was water available in about 20 miles so I didn’t need to turn back. The wind had picked up a little, which was good since it was helping to dry out the roads. The catch is that it seemed to be universally a headwind. It was almost a sick joke – any time you were coming up to a turn, you could figure out which direction to go by picking the direction that was more into the wind. In a fair and just world this headwind would mean a tailwind on the way back, but I had no idea what the wind patterns were out here.

The day was warming up too, which was also helping with the roads, but I seemed to be going through a lot of water. Every now and then I would get within sight of Sarah. I was almost out of water by the time I got to the water stop so I filled up and drank the can of V8 I kept for tasty electrolytes. I was really feeling the miles now after 8 hours of slogging. Somewhere around 80 miles I hit a drift of goatheads. I scraped them out with my shoe and it seemed like the tire was holding air.

After nine and a quarter hours I rolled into Curtis. Up ahead was Sarah again, pulling out of the checkpoint. I got my next set of cards and laid down in the shade for a few minutes. Then I headed to the convenience store to try to get some calories. The other fast dudes, Matt Gersib, Jim Cummings, and one other guy were there. It was strange being in such accomplished company. I drank a Pepsi hoping some sugar would kick start my appetite, but nothing there looked appealing in the least.

I took stock of the situation. I had already ridden for over nine hours and was feeling it. But was in at least the top five and was leading the singlespeed class (or at least the registered singlespeeders, since one rider in the lead group had destroyed his rear derailleur and had made an emergency conversion. Maybe with a nap my appetite would come back. The rest of the course would probably have a tailwind. But on the other hand, the rest of the course didn’t pass through any towns, and if I bailed in the middle of nowhere it might be tough to get picked up. Also doing the math, it seemed quite probable that I wouldn’t make it back until after sundown, and I wasn’t carrying a good headlight. I decided to go back to the park and lie down for a bit. But when I went back to my bike the front tire was almost totally flat. So at that point I decided maybe that was a sign. I had already done far better than expected and the smart thing to do was call it a year.

In the end, Sarah Cooper won the overall. Only six riders finished the course, the last one arriving after 21 hours on the bike. I was 9th with a DNF.

Bike and gear:

I ran a 40-18 gear. Chain was lubed with chainsaw bar oil and it survived the conditions. Though I run cantilever brakes I didn’t regret it, since the frame has good clearance and the Resist Nomad 45’s don’t have any tread to clog up. None of my other parts are worth talking about. My wired computer was running slightly ahead of the cue cards, even though I calibrated it against a GPS. The handlebar bag was great but still has some room for improvement in its mounting system. I should have thrown my mini pump in the bag to keep it cleaner.

Food and water:

On the bike I had two standard bottles of water and one large bottle with 600 calories worth of maltodextrin-based DIY energy drink. I had another baggie of drink mix for the second half of the race. Three Payday bars, six bona-fide energy bars of various brands, and a back of Clif Bloks. One bottle of Ensure Plus and one can of V8. For real food, a small peanut butter and jelly sandwich on sourdough bread.

Next year:

I’ll bring a better headlight. I also need to play around with “sticker flickers” to yank out goatheads before the dig in, though they might be a bad idea when it’s muddy. Train more if possible. Make a new bag with minor tweaks and a lower trail fork to match. And build that titanium seatpost I was planning to make in time for the race. That’s about it.

The singlespeed question:

I’ll probably try it again. My arms were getting tired from climbing out of the saddle, but I think more mountain biking would take care of that. What surprised me was how tired my hamstrings were from all the walking and pushing. The mud didn’t help. It’s hard to judge properly since the conditions were so extreme.