Signing bonuses are bullshit

Signing bonuses are bullshit. They masquerade as an incentive to join, but in actuality they are a guaranteed pay cut at best, and at worst a way to lock you in to staying at a job, or put you in a really bad financial spot if you need to leave earlier than expected.


You’ve just finished the interview process for a new employer and they’ve given you an offer! Awesome! Congratulations! I knew you could do it!

Here’s the details of the offer:

  • Salary: $100000
  • Equity: 5000 options at $.50 strike price 4yr/1yr cliff
  • Signing Bonus: $5000

You think to yourself: “Wow! $5000 just to get started? I can pay off that bill I have laying around!”

But I’m here to tell you that you shouldn’t pay off that bill just yet, and that the signing bonus is not as great as it seems on the surface.

Why not?

Most signing bonuses aren’t just cash in your hand. If they were, people would start jobs, work for a day, and collect their signing bonus on their way out the door. Over and over and over again. So it makes sense that businesses will want to try to prevent that from happening.

A typical signing bonus has a 1 year vesting schedule, vesting daily. If you leave on day 36 of your employment, you need to return 329 days worth of your signing bonus to the company. Seems reasonable.

Except you just used that signing bonus to pay a bill. Oops. Guess you’re stuck at that job for 329 more days. Or now you have to take out a loan to pay your signing bonus back. Or … something. Not a situation I’d want to be in.

Additionally, depending on the wording of the signing bonus agreement, you might have to pay back the pre-tax amount, which means now you’re out the taxes that were withheld until April comes around again…

But what about…

If you’ve got a decent handle on your financial situation, one thing you could do is set that money aside, and only taking out / using the money that is “yours”. That’s a reasonable approach, to be sure. That’s what I do. And that’s what you should do, if you want to make sure you don’t get stuck in a bad situation regarding the signing bonus.

But let’s think about that for a minute. Say you give yourself 14 days worth of your signing bonus every 2 weeks, just to make the accounting easier. Maybe even on payday.

How is this any different from making $105000 instead of $100000 + $5000 signing bonus?

It’s not, really. And, if you want to be safe with your money, this is exactly how you should look at it.

But let’s think about that for a minute. Are you going to get another $5000 bonus at the end of your first year? The second? The third? The fourth? Is that going to be in addition to any sort of raise you might be eligible for? Probably not on all counts. And your raise will almost certainly be based on that $100000 base salary.

What a signing bonus actually is, is a guaranteed pay cut after your first year.

So, what do I do?

If your offer contains a signing bonus, try to negotiate it away. If they won’t, then maybe ask for a higher base salary anyways. Or just think of it as a pay cut. It’s not great, but it could be worse. Also, make sure to discuss this as part of raise negotiations in the future.

Do not be fooled into thinking that you asked for $105000 and they gave you $100000 + $5000 and it’s the same thing. It’s not. Your salary is $100000. That $5000 is not factored into anyone’s numbers but the IRS.

Don’t be fooled into thinking that you can go off and spend that money right out of the gate, unless you have a strong enough handle on your finances to be able to pay it back out of other places if you need to leave. Even then I would say don’t, because leaving the company costs you money. Maybe money that you had when you spent the signing bonus, but Shit Happened™ and now you don’t. If you pretend that money isn’t yours to begin with, you’ll be fine.

But mine is different!

Sure! I would love to hear about other signing bonus structures that people have encountered. Assuming they’re not just differences in the vesting schedule and term, unless the vesting is somehow non-linear over time. RSUs and other such equity things are also separate from this discussion, as you can’t sell those before you have vested them, meaning you can’t spend the proceeds until the money is really yours.

Preparing my navigation tools for Te Araroa

As I mentioned in my previous post, I’m using Google Maps’ My Maps feature to create a map of the route, accomodations (read: huts) along the way, things to be on the look out for, etc. This has been immensely useful.

However, there’s no way to get this information in the Google Maps app when you are offline. Google Maps does have an offline download feature, but it doesn’t work for the “my places” part of the app. Additionally, the only base maps available are ones that Google provides, which are good, to be sure, but they aren’t NZ Topo Maps good. Between these two faults, using Google Maps as my primary on-the-trail navigation aid was not possible. I did it in Japan, but I also had cell reception probably 95% of the time I was on the trail in Japan. I won’t have that luxury in NZ. I’d be surprised if I had cell reception 20% of the time. This isn’t to say anything bad about NZ, more that I’m going to be in some pretty remote areas, and NZ is really sparsely populated as it is.

So I went searching for mapping apps I could use on my phone. Ideal candidates had to support importing KML, which is what My Maps exports, they had to support custom base maps so I could add the NZ Topo Maps, and they had to be able to be usable with airplane mode enabled. They did not need to have any points of interest or anything already in them, available for offline use, but if they did, bonus. Other available map layers would also be very useful, but not necessary.

There are a lot of mapping apps on iOS, but in almost all cases they fell flat. ArcGIS Explorer seemed at first like a very plausible app. It even allows for freehand drawing on the map itself, which could be handy for on the fly handwritten notes or freehand plotting of a diversion course. Sadly, this does not seem to be usable offline, at least not without a costly subscription to ArcGIS online services, and even then I’m not entirely certain about it.

Another app I came across, with strong recommendations (sorry, I don’t have a source for those) was iHikeGPS-NZ. At first this seemed really reasonable. And the price was pretty good. But after trying and failing to get it to show me any maps for several days, I started looking elsewhere. I did eventually manage to get it to show me maps, though. I had set it to download maps for me which was great, but I couldn’t figure out how to get the map display to actually show me New Zealand at all. Eventually I decided to try importing a KML file anyways, which worked! I could pull up a way point that I’d loaded in from the KML and have it show me on the map! From there I could slide the map around and look at surrounding areas, zoom in and out, everything I needed. There were 2 problems though: first, it was incredibly slow. In fairness, this probably has more to do with the fact that I told it to download the maps for the entire South Island, which are probably very large, and it was probably decompressing them on the fly. This told me, though, that it was probably consuming a large amount of CPU to do this, which would eat my battery life. The second problem was the KML file I imported, none of the custom icons made it over. The UI was also really strange, and overall the app didn’t really do it for me.

I spent a lot of time looking through the app store, searching the internet, and didn’t really find anything I felt confident plunking down the money for. Side note: please please please, Apple, won’t you give us the ability to have a trial period for apps? I don’t mind spending $50 for a quality app if it’s what I need, but I do not want to do that not knowing at all what I’m getting. Screenshots don’t tell me enough, I need to actually use it. Anywho, eventually I discovered Galileo Offline Maps. I wish I could tell you how I found it, but I can’t, so I’ll just have to recommend it! They have 2 versions, a free, in-app-purchases version, which appears to have all of the functionality of the “pro” version, but unlockable via in-app purchases, and the paid “pro” version which has everything already unlocked. Either way it was $3, so I went with the one without in-app purchases! This app is nearly exactly what I’ve been looking for!

First of all, it has support for importing KML. Many of the apps I looked at only supported GPX imports, which wasn’t all that useful to me. It even preserves the “folders” that KML supports, and allows you to organize your tracks and “bookmarks” as they call them, all within the app. There’s a flaw with the out-of-the-box usage of the app with importing KML, and that’s that custom marker icons (“categories” in the app) are lost upon importing KML. I mentioned this as a fatal flaw with one of the other apps I tried. The difference was, in this app, I could still add my own custom icons after the import, which lead to believe that I could probably figure out a way to get custom icons imported. Spoiler alert: I can. I am working on some tooling which will convert the output from Google Maps to the correct inputs to Galileo. Once I have this going, I’ll write up a post documenting that.

It does do offline maps, as per the name, but I think it has had some of that functionality disabled since the review I read (sorry, no link, don’t remember it) had been written, and now the app only supports downloading a limited selection of vector maps for offline consumption. I have a feeling this is in large part due to space concerns, and of course impact on the tile provider while it downloads everything. There’s probably also some copyright / licensing issues (despite the fact that NZ Topo Maps are CC licensed). However, there are 2 ways you can get custom raster tiles into the app. It supports a mapsource file which has some metadata about upstream map tile providers. It also has support for bulk importing custom map databases that you provide, built using third party tools. The mapsource file doesn’t make it so you can download the tiles for the whole country at once, but the app does cache any tiles it downloads, and in the limited experience I’ve had using the app, this functionality is enough to give me what I need in an offline experience. I just have to make sure before I leave the internet that I’ve seen the entire map of the section I need, at both resolutions supported by the NZ Topo Maps, and the cache will take care of making them available offline for me. Fortunately, I have plenty of time to play around with this feature before I get too deep into the sticks, and I can always fall back to the vector maps if necessary. Also, if I have some extra time, I’ll look into creating a custom map database that I can import into the app with the tiles I’ll want for the trip, to then worry less about the faux offline mode. The cache settings seem to only care about the size of the cache, not the age of the items in the cache, so I feel pretty confident I’ll be able to rely upon that functionality while on the trail.

It should go without saying that I am not, however, going to rely on this as my sole navigational aid for the trail.

A friend of mine is letting me borrow her Garmin InReach Explorer, which is a handheld GPS device. I’ll load some maps that I can find, along with at the very least the GPX version of the route map, if not my full KML version from Google Maps. This will be a backup navigation aid, however, as it also doubles as my emergency help summoning tool. It is connected to the Iridium satellite communications network which will allow me to summon assistance as well as do some basic (but very expensive) communication while off the grid, so long as I have battery and a view of the sky. I’ll use this also for on demand weather reports for sections of the trail that are particularly weather sensitive. In sections where I’m at risk of losing my pack (river crossings, in particular), I’ll be sure to carry the Garmin attached to me, and not to my pack, and if possible, do the same with my phone. While my phone is water resistant, it’s also my primary navigation tool, among other things, so I’ll probably keep it in a small dry bag (read: ziplock) during river crossings, just in case.

I’ll also be bringing paper maps of the longer, more remote stretches of the trail. Ones where running out of battery is a real possibility, or where a broken navigation device could leave me lost without much of a clue as to where to go. For shorter legs I won’t bother with the paper maps, as I am not going to be very far from a road, and there’s really only one route to follow, so getting lost would be much harder to do. Another thing I want the paper maps for is if I need to divert around an impassible section of the route (weather, landslide, improper gear, etc), I’ll be able to look at them and see what other tracks are in my vicinity, to either route around the obstacle, or at the very least get me to the nearest road where I can attempt to hitch a ride back to a safe place. I’ll of course be carrying a compass as well!

With Galileo Offline Maps, the Garmin, and paper maps / compass, I am confident I’ll be able to find my way along the trail, no matter what happens along the way.

I would like to call out something I wish I had seen sooner, but in hindsight am actually happy I didn’t see sooner, and that is Guthook (via reddit). This seems to have nearly everything I’d want. Offline access to NZ Topo maps. The route itself. Huts and other important places along the way. It even does cool things like telling you how far to the next hut, next water, notes from other users of the app, elevation profiles, etc. It seems very cool, and I may actually pick it up, but I’m glad I did the work of creating my own map anyways, since it has significantly increased my familiarity with the trail, and increased my confidence in being able to do this. I know where my food is coming from, at the very least!

Te Araroa planning

I’ve spent the last week or so obsessing over trail notes, maps, and brochures relevant to Te Araroa. I’ve been doing other things related to being out of the country for 3 months, but primarily I’ve been working on the notes and map for the actual route.

I’m really glad I did this. This is only the third backpacking trip I’ve done. About a year ago I was in New Zealand on vacation and spent 4 days on the Banks Peninsula Track. It was incredibly lovely, I had a really great time, and it made me want to pursue backpacking more. Earlier this year, I spent 9 trail days walking on the Tokai Nature Trail in Japan. But this trip is significantly harder than either of those, and significantly longer.

When I was on the Banks Track, the only thing I really needed to worry about was food. Accommodation (including hot showers and electricity), the trail, transport to the start of the trail, all was taken care of. I just needed to walk between huts. And the days weren’t long.

When I was in Japan, I was much more on my own. There is very little in the way of English language information about the trail, other than the copious amounts of signage along the route (at least on the section I walked). I had a map and some basic information, but I was mostly relying on Google Maps to tell me about resources along the trail like food sources, etc. I learned very quickly that wasn’t much to go by, and I learned very quickly that Google Maps in Japan is not at all reliable. Unless you’re talking about using it for most transit directions, then it’s 100% spot on, but I feel like that says more about Japanese transit systems than Google Maps. However, I still successfully didn’t starve or die of thirst, and I never got lost anywhere. It turned out just fine!

When I started looking into Te Araroa, I was running under the assumption that there would be copious amounts of services along the trail. It’s New Zealand, after all. Tramping is what they do. So I loaded up the trail route in Google Maps and said “this is fine”. Fast forward a few months when I’m actually starting to plan for it, I pull up the trail notes and very quickly notice that this is a very different ball game.

For instance: on Google Maps there are a lot of names along the trail. I was running under the assumption that these were towns. Small towns, sure, but towns. And in those towns I could find food, maybe a restaurant, and a refill of my water.


Most of those are “stations”. As far as I can tell, “station” is the Kiwi word for “big-ass[1] sheep farm”. So, no shops. No restaurants. And probably no water, at least not publicly accessible.

Then I noticed that there were sections of the notes talking about “5-7 days”. I looked more into it and noticed that, yes, they mean 5-7 days from when you leave a school camp in the middle of nowhere until you get to the next town. Oh, and that town is super tiny and the local shop is probably not going to have what you need for the next stretch which is 10 (!!) days! And along the way there are no services. Your water sources are all going to be wild (read: rivers, streams, lakes), or rain tanks at the various huts along the trail. You have to carry in all of your food. All of it. For 7 days. There’s no electricity. There’s zero cell service. No wifi. No vending machines. Nothing. Just you, the trail, and whatever weather conditions your dice roll got you. Sounds amazing. However, that’s not what I was expecting to be dealing with.

So I dove head first into figuring out as much as I could about the route. Where was I going to get water? Where were my overnight stops? Do I really need 10 days worth of food on that one section? Where am I going to get my food?

The end result of this is a map I’ve created using Google’s My Maps feature. On it is nearly every accomodation along the route, huts, “official” campsites, places where I’ll be staying in towns (and therefore a hotel, hostel, B&B, something). I went through and made notes for, at the start, every single day, and near the end, just the long sections, with estimated overnight stops, places I might have trouble finding water, where I was going to get food, etc.

I’m incredibly happy I did this. When it first hit me just how monumental an undertaking this trip is going to be, I was really scared. Now I’m only slightly terrified, but not that I’m going to starve, die of thirst, head down paths I’m literally not equipped to handle, etc. I feel like I already know the trail, just by poring over the topo maps (which are seriously fantastic), the satellite maps on Google Maps, and writing up all of my notes about the various sections. I’m even fairly confident I can handle the really hard sections, or if I can’t, I know when I’ll be deciding if I’m going forward or going back, and not walking blindly into the unknown. The only thing I’m really worried about at this point is “did I forget something?” or getting injured, burning out early on, whatever. Fortunately, those are things I won’t know until I hit the trail, and they’re all things I will deal with if they arise.

And yes, I really do have to carry 10 days worth of food in one section. Fortunately, by the time I get there I’ll probably have lost more weight than the total weight of the food I’ll be carrying, so it’ll be like I’m carrying less than nothing 😉 And I am actually pretty worried about carrying that much food. When I was in Japan I tried to at one point carry 2 days worth of food (and 5L of water, I’ll write up that day one of these days) and it was unbearable. But I was not carrying the right food, because I wasn’t prepared. I feel confident now that I am going to land in New Zealand armed with the information I need to make this a successful trip, and this map and the notes that go along with it are an excellent first step in that direction.

I’ve got some more work to do on the map (I may be done with it by the time I actually publish this post), but once that’s done it’s on to the next challenge: get it onto my phone so I can have it offline on the trail. I am making significant progress on that front, too, and I’ll have some things to share about that when I am happy with the state I’ve gotten it to (which should be in the next couple of days).

I’ll also be publishing the notes at some point, but because I’m using Dropbox Paper to put them together (they have nice WYSIWYG markdown-ish formatting and offline support), I don’t think I can share them publicly without exporting them somehow, so I’ll do that when I’m good and done modifying them, which may be after I get home!

I plan to write a bit about the tools I’m using to help plan this trip and the tools I’ll be using on the trail. Yes, including gear. So stay tuned!

I’m getting really excited about this trip!

1: relevant XKCD

Farewell, Stripe. Kia ora, Te Araroa

Wednesday was my last day working at Stripe. It’s definitely a sadness that I’m no longer there. But I think it is for the better, in many ways, so there’s that silver lining, at least!

One of the things I’ve been wanting to do for a very long time is a cross country bike trip. It started as me and a coworker planning a 6 week tour for 2012, and ended with neither of us being in a situation to be able to do it. I have had 2 gaps in employment since I left DreamHost in 2011, one of 5 months and one of 3. Both of these gaps I had plenty of excuses as to why I couldn’t, or why it wouldn’t work or what about my animals, etc. This time is different. I have a lot less “local commitments” than I have previously. I am in a better financial situation. I have a strong want to do something. So I’m going to take advantage of this opportunity and do something!

Last November, almost a year ago to this day, I went on my first backpacking trip ever. I traveled to New Zealand for a vacation, and one of the things I did was to walk the Banks Peninsula Track outside of Christchurch. I had an extremely good time. The trip itself was pretty pampered. Well marked trails, huts with hot showers, comfortable beds, cooking equipment for every night, and if one wanted, pack haulage between overnight spots. Also the days were very short, the longest day being about 12 miles and that was with lots of extra credit, the shortest being 6 miles. Still, it infected me. I loved most every minute of the trip, and at the time I was describing it as the best 4 days of my life to that point. Even in spite of the fact that it coincided with Election Day…

I got back home and immediately started researching where I was going next. After much searching around, I settled on Japan, where I would hike part of the Tokai Nature Trail that stretches between Tokyo and Osaka. That trip, too, was an amazing experience. It was significantly more difficult in nearly every way than the trip I had done in New Zealand, but the experiences and the memories made it all well worth it, and I look very much forward to the day I finish the rest of that trail, and perhaps a thru-hike of the entire country!

Now, I’m facing another gap in employment. I could go find work immediately, and I do intend to do some job searching before I venture off into the unknown, but I feel like the time is ripe for me to take on some of the longer term adventuring I’ve been so desperately wanting to do for the last 6+ years. So I’m going to.

Te Araroa, The Long Pathway, is a 3000km route that traverses the entire lengths of both of New Zealand’s main islands. It’s too late in the year to start and attempt a full thru-hike, but it’s not too late to get started on a partial trip. I’ve spent the last several days poring over any information I can find about the trail, like where resupply points are, difficulties of sections, what gear and skills I’ll need to bring or develop, etc.

Since I’m only going to have limited time on the trail, I have decided that I’ll be starting from the southern terminus of the route, Bluff, and traveling northbound until I stop or run out of time. I’m going to shoot for 3 months in country, with probably a week on the front end doing some sight seeing, exploration, and preparation in Wellington and Auckland prior to hitting the trail. Start date is still tbd but shooting for the first or second week of January, coming back to the states in time to determine what I’m doing with my apartment. My lease is up at the end of March but I’m going to try to extend it by a month.

I’ve been a bit hesitant to do any part of the trail because I feel like I want to do the full thing in one shot to experience it all with fresh eyes, which has had me searching all over both New Zealand and other countries (Argentina, Chile, Australia, and Taiwan, primarily) for other hikes I could do with that amount of time. New Zealand has a LOT of trails, but many are rather disjointed and some that I’ve seen that people have done are less trails and more “I managed to figure out how to get through here”, which feels like is a bit above my skill set to try to take on. The disjointedness is fine, as well, but it makes planning a lot harder and I’d probably end up spending more miles walking roads or hitching than on the trail.

But I’ve mostly gotten over that. After reading some notes from other hikers, it seems that starting from the south end of the South Island and going north offers the best gradient of difficulty, and given that much of the trail is pretty difficult, with several stretches of 7+ days without resupply, it’s probably best for me to start a bit easier, given that I basically only have 12 days on the trail worth of experience, and much of that was fairly easy and plenty within reach of towns and resupply points and such.

In the mean time, I’m going to first spend some time taking a load off. I’m also going to look for work, of course, and try to find something that will line up with a mid April or June start date (I have a 3 week trip planned for May-June), but not stress too much about finding work. And finally, I’m going to work on this website, so I can do the fun mapping stuff I’ve been wanting, where I can lay a gpx track on a map, along with blog posts, photos, and other stuff to roll up into daily, weekly, or full trip write ups. As part of this, I’ll also be finally getting my cat map online. I have all of the data gathered, I just need to get the site up and running and get the data imported in. Since it’s effectively a blog with a map and photos and “encounter” write ups, most of the work I do on it should be able to be integrated into this site for the mapping functionality I want here!

I feel like this is a possible turning point in the journey of my life, which is both exciting and terrifying. I feel incredibly fortunate that I’ve had the opportunities so far in my life that have led me to this point. The friends who have helped me. The companies I’ve worked for. My family for laying the foundation.

Tokai Nature Trail Quick Summary!

If you follow me on twitter you probably know that I spent a couple of weeks in Japan recently, and as part of that trip I hiked part of the Tokai Nature Trail [official? Japanese site, wikipedia]


In doing my research for this trip, I discovered the trail itself and got lots of great information from Nomadic Tom’s blog about the trail, including GPX tracks of his walk, links to GPX tracks from someone else who had hiked the trail, etc.

On the third day on the trail, I discovered that in Shizuoka Prefecture there was a bypass course option, which, according to the sign board talking about it, included ropeways, ocean views, and other things. Since I hadn’t seen anything online about it (including on what I think is the official website for the trail), I thought I’d check it out, as it sounded pretty fun, and hopefully cut out the huge climbs I had been dreading looking forward to for a couple of days. It would also give me an opportunity to document the bypass course for others to be able to use later!

So I did. And I ran into some problems. I aim to have a more thorough writeup of the trip, especially the bypass course, but I thought I’d try to get the route information I have online sooner rather than later so others can benefit from it.

I spent a total of 9 days hiking, but the third day is split into 2 sections, mostly because I had almost given up and gone home that day, so I stopped Strava, but when I gave up further and decided to go back to the trail, I started it back up.


After I switched into “must document the route for others” mode, I tried to be as true to the trail as possible, and I intend to fix some of the mistakes later and publish a more accurate version of the routes, but this is what I walked, and it’s pretty close most of the time. The bypass course starts around mile 4 on the Day 3, part 1 segment, on the eastern end of Lake Tanuki, and continues until the end of day 9, when I meet up again with the main trail in Kurata, Fujieda City.

I recorded these with Strava on my iPhone, but have downloaded the GPX files and am hosting them locally if you don’t have a Strava account or Strava disappears or whatever.

Notable departures from the official route are mostly on day 8. I got off the train at Mochimune and there was no indication as to where the trail was. There were a couple of signboards outside the station with maps on them, but they didn’t look like the official trail signboards I’d been seeing for days, and they were in Japanese, so I couldn’t read them, and I knew where the route was further down, so I just kinda wandered toward it. The official route either goes straight to the coast from the train station, or *starts* there, as you can see what looks to be an official route sign on street view. Additionally, later in that day, when approaching Gyokuro-no-sato, the signage just disappears. Earlier in that day the signage changed slightly to fit in with the local trail network, but it had changed back to normal signage prior to disappearing. Fortunately, it was all along roads, so I was able to blaze my own trail fairly easily, but I feel like I missed out a bit! This is something I hope to call out explicitly in my detailed write-up, and hopefully adjust things to make it match the ‘official’ route at some point!

There are also a couple of options on the Day 5 track which take you down to stations on the Tokaido Main Line, which could easily be done without missing much of the “main” bypass course, or turned into a long day hike or a nice overnight trip starting from one station and walking to the other. In my more thorough writeup I’ll call out where these are and post photos I took of the signboards that mentioned them. I didn’t hike them, in large part because as of the split for the first option there had been no mention at all of any way to return to the main bypass course other than hiking down to the station and back up. Heading westbound on the trail here I often “ran out of map”, which was frustrating for planning as I only had a vague idea of where the trail was headed. Hopefully this information will help others who are on this section so they can enjoy their trip as much as I did!

If you use the information here, I’d really love to hear about it! If you have any information about course corrections or whatever, I’d also love very much to hear about it. I hope to start compiling information about not only the bypass course but the entire route to have a resource for English speakers about the trail.

Quick license note: everything published on my site including these GPX tracks are copyright me, and licensed as CC-BY-SA unless otherwise noted, and I’d *really* love to hear if you use any of this to assist with planning or execution of your own hike!

Over a year!

Oops, it’s been over a year since my last post! Oh, well!

Some things I’ve done since the last post:

  • Bike camping trip to Nestucca River Road and Willamette Mission State Park [days: 1, 2, 3]
  • Volunteering for Cycle Oregon’s Joy Ride and Weekend Ride
  • Volunteering for PDX World Naked Bike Ride
  • I climbed Mount Tabor on a big, heavy, orange bike.
  • Volunteering for Bridge Pedal
  • I bought a new bike!
  • Bike camping trip Salem -> Breitenbush -> Milo McIver State Park [days: 1, 2, 3]
  • Rode Cycle Oregon’s Week Ride
  • Spent 2 weeks in New Zealand, including a 4 day backpacking trip on Banks Peninsula [days: 1, 2, 3, 4]
  • Participated in the Portland Women’s March
  • I moved. Partially by bike. During the week we had 10 inches of snow on the ground. Studded tires are awesome.
  • Volunteering for the Worst Day of the Year ride
  • Bike camping (probably illegal camping, oops!) out at Molalla River Recreation Area [days: 1, 2]
  • Aborted bike camping trip to Gaston, OR and beyond.
  • Spent 2.5 weeks in Japan, including 10 days of backpacking (9 days on the trail and a rest day) [quick summary post coming soon]

Despite how I feel, it’s been a busy year!

Current status is that I’m trying to get psyched to work on a WordPress plugin to layer posts on a map. So something like post which embeds a map which embeds other posts (photos, videos, text entries, and, importantly, gpx/kml/whatever tracks), which is something I want for ride reports. I recently heard an episode of the Sprocket Podcast talking about RideWithGPS’s new ride report feature which sounds very much like what I want, but I want to own the data and everything, so I may take inspiration from that feature, but would prefer to host it myself.

Probably see you again in a year! But hopefully before then!

DreamHost, rvm, capistrano, fun!

I recently started setting up as a url shortener for my blog. I decided to make it a little Sinatra app, which meant I got to play with my standard box of tools for deploying Ruby applications: rvm, capistrano, and passenger. Since things weren’t super straightforward, I figured I’d write up this post to share what I ended up with, things I ran into, and things I’m hoping to improve upon.

The Setup


I use rvm, if for no other reason than it’s what I’m familiar with. It makes it really easy to install and manage multiple rubies, manage gems with bundler, it’s well maintained, and I can do it locally on my laptop as well as remotely on my deployment targets.


Capistrano is an ssh-based deployment tool, useful for deploying applications to remote servers. I like it because, while it has great integrations for ruby projects, it can also be used to deploy pretty much any software. I’ve used it for PHP as well as golang projects, rails and non-rails ruby projects, whatever. I’ve also used its sshkit library for automating tasks via ssh.


DreamHost supports running ruby applications using Phusion Passenger. The details of how this all works are outside of the scope of this post, but it’s similar to running an application using FCGI. You point passenger at the ‘public’ directory of your application, and it goes looking for your file, which is the interface defined by rack, which Passenger is an implementation of, fires up the app, and starts sending HTTP requests to it.


After installing rvm locally, I drop a .ruby-version file in my project root, and a .ruby-gemset file as well. This makes my zsh shell integration do the thing it needs to do to select the correct ruby version and gemset. Note that since I’m using Bundler to manage my gem dependencies, I don’t really need to specify a different gemset, but it’s nice to have so I don’t have to constantly re-run bundle install every time I switch between projects.

Since I’m deploying using capistrano, and want to use rvm on the remote side to manage my ruby install, I need to add a couple of gems to my Gemfile: capistrano  rvm1-capistrano3

Then I run cap installto “capify” (that actually used to be the command to run to do this) my project. This installs the following files:

  • Capfile
  • config/deploy.rb
  • config/deploy/production.rb
  • config/deploy/staging.rb

The main purpose of the Capfile is to load in gem-based plugins for capistrano. The config/deploy.rb file is for global configuration of capistrano, such as declaring new tasks, configuring the source control repository, and other things. Overrides or stage-specific settings go into the config/deploy/*.rb files, with each file declaring a different stage capistrano can deploy.


Since I’m using the rvm1-capistrano3 gem, I need to load it by adding a line to the Capfile:

This loads up all of the tasks in the plugin, sets some of them up to be executed, and defines others to be used by the user of the plugin. I’ll be using some of those later.

Note: the gem is called rvm1-capistrano3, but you need to require rvm1/capistrano3, this is because gem names can’t contain slashes, but require is working with filesystem paths and the file being loaded is lib/rvm1/capistrano3.rb. Fun!


In config/deploy.rb I set the name of the application, which is really pretty arbitrary, but should be unique, as this is used in temporary directories and such.

I also need to set the path to the git repo where the code to be deployed is stored.

Capistrano supports several different source control systems, but git is the default, and it’s where my application’s code is stored.

For various historical reasons, I like my application’s tmp directory to be shared amongst all deployments. This also seems to play a little easier with the tmp/restart.txt functionality passenger provides to allow the user to restart the application on demand (such as when new code is deployed).

Two things to note here:

  1. The linked directory will be created by capistrano in the deploy path and symlinked into the release path.
  2. The reason to use fetch() here is to not stomp on :linked_dirs settings declared elsewhere in the capistrano configuration (e.g., a deploy stage configuration file, or by a plugin)

Since ideally I’m installing onto a clean slate, and want to have capistrano managing the entirety of the installation, I set up some of the tasks from rvm1-capistrano3 to be run during deployments automatically:

Here’s where I ran into some trouble. Previously, I was using the capistrano-bundler gem, which will run bundle install to install your gems, among other things. The problem here is that bundler is no longer installed by default alongside ruby, so when the plugin goes to run bundle install, it does so using the system’s /usr/bin/bundle, which on DreamHost (at least my server, a VPS, at time of writing) is running against ruby version 1.8.7. My Gemfile apparently isn’t loved by that version of bundler, so what happened is the bundle install command took a long time, ended up consuming all of the memory on my instance, and caused it to get rebooted by DreamHost. Oops.

The fix here appears to be to not use bundler for deployment and instead use the deploy task provided by rvm1-capistrano3 to install the required gems:

The reason I can’t just gem install bundler is because the capistrano-bundler gem wraps any gem command with bundle exec so there’s a bit of a chicken and egg problem. This approach seems to work, however, so I’m going to stick with it for now.

In the DreamHost control panel, I ticked the boxes next to Passenger and RVM and supplied the path to rvm:

Screen Shot 2016-05-14 at 11.20.56 PM

The ‘ktchn’ in that path is an rvm alias set up for me in capistrano. I do this so I don’t have to hardcode the ruby version and gemset name into the path in DreamHost’s configuration.

Sadly, there appears to be a bug in the rvm1-capistrano3 gem, or perhaps rvm itself, that makes it not alias the version of ruby in the specified path when setting up an alias, so I also had to explicitly set the ruby version here, which I don’t like, as it’s redundant, and buried in a config file.

Since I’m running on a managed DreamHost VPS, I don’t have root, and rvm install fails because it tries to use sudo to check for and install library dependencies. Fortunately, they seem to have installed them already, so I just disable the autolibs functionality:

And finally, to tell Passenger to restart the app after deployment, I touch tmp/restart.txt:


Finally, the deploy stage. Capistrano does a great job of making this pretty straightforward.

The fun part here was the :tmp_dir thing. DreamHost’s VPS product mounts /tmp (which is the default tmp dir in capistrano) as noexec, which capistrano doesn’t like, as it uses that directory for a couple of things and needs to execute at least one of them!


There are 2 major unresolved issues I have with this setup.

First is not being able to use bundler for managing my gems on the remote server. I am not certain if the correct versions are being installed by the rvm1:install:gems task. I feel like this is not an insurmountable task, I just need to poke around a bit in capistrano to see how I can do it!

The other is having to hardcode the ruby version into my config/deploy.rb file for the rvm1:alias:create command to work. The default for :rvm1_ruby_version is ., which is causing it to run rvm alias create ktchn . which rvm isn’t very happy about. I’m sure this is also something fairly easy to fix!

Taking the weekend off

I’ve been trying pretty hard to get out of the house, especially on nice days, and especially on weekends. For the past several weekends, I’ve done a pretty good job of doing it. Two weeks ago I went bike camping with Ted, last weekend I was out at Filmed By Bike and getting my new wheels and a bunch of other stuff.

However, all of this “leaving the house” stuff has left my house in a pretty rough state. I’ve been trying really hard lately to keep up with some basic housekeeping tasks and my busy weekends have been making it difficult to do.

So this weekend I’m taking the weekend off. I am giving myself permission to do absolutely nothing. I have a few small things at home I want to do (and, I do *really* want to do them) but if I stay in all weekend and read, then I’ve accomplished what I set out to do.

This all ties in with some stuff I’m working on around “intent”, and I hope to have some more to say about that soon. This weekend I’m giving myself permission to stay inside. It certainly doesn’t hurt that it’s supposed to rain all weekend!

Kickoff Entries

A thing I’ve been doing in my journal is what I call a “kickoff entry”. If I take on a new thing, or add something to my routine, I’ll write a little blurb about what, why, goals, and some thoughts about what conditions I may decide to end the experiment.

These really help to solidify the intent around the action, and help me be realistic about what I want to get out of it. Also, as someone who frequently jumps from one new thing to the next, it helps me pace myself a bit. If I sit down and write an entry, I get an opportunity to ask “do I really want this?” And “what am I sacrificing to make this happen.

I have a tendency to be very “oh this is going to be awesome!” And 3 weeks later have totally forgotten about things. This has been helping with that, some. It’s definitely fun, at the very least!

Ride Report: Stub Stewart State Park

With the forecast calling for a lovely weekend, Ted and I set out on our bikes toward Stub Stewart State Park, along the Banks-Vernonia State Trail.

(Update: Ted posted his own report!)

We started things off proper with some hills. Heading up NW Thurman to Leif Erikson trail through Forest Park to climb our way up to Skyline.


IMG_4935.jpgFrom there we meandered across some back roads over to Helvetia Tavern, apparently well known for their giant burgers. I was oblivious to this fact (despite it being on our waitress’ shirts) and got the fish and chips. Worth it.

We also bumped into a group of 4 cyclists who were also out and about from Portland. One guy on a fixie, one on a hybrid commuter, and the other 2 on some fancy carbon machines. They made pretty great lunch companions!


Fueled and rested, we plowed on. After many miles of fairly pleasant road, a bit more gravel, and a quick restroom stop, we found ourselves at the Banks end of the Banks-Vernonia State Trail.

Now, I’m not going to lie. I thought we were basically done at this point. “Just a few miles up the path here”. And yea, that’s right. Except those few miles were 10, and were uphill the entire way. Normally, this would be fine, I love hills, but when you’re 40 miles and 2000 feet into a ride already, and pulling 40 pounds of trailer, the last thing you want is a mountain finish!

After a good long while, we made it to the park, and got some proof:

IMG_4945 (1).jpg


There was a little bit of confusion as both Ted and I were operating under the assumption that there was a hiker-biker site that we could just plop down at like so many other campgrounds. There were some “walk-in” sites, which were just sites that didn’t have a dedicated parking space at the site, you had to walk about 50 feet to a shared lot along the road. These were all, unfortunately, reserved.

Ted went off in search of the camp host to see if there was any way we could camp, and they said to check the hike-in sites down by the visitor center. The “hike” in this case was not quite the hike I was expecting, it was a pretty well groomed single lane gravel road leading into a group of campsites.

Sadly, all of the sites there were reserved as well. However, it was starting to get late, and we were definitely well into IDGAF territory, so we picked one of the reserved, but vacant sites and started getting settled. After eating dinner, about 7pm, we decided that the people who had the site reserved were not going to arrive, and set up tents, claiming the site as our own. There will still 2 other sites, so odds were pretty good we could just move to one of the others if our hosts arrived!


After pitching tent and such, I sat down to read for a bit. That lasted about 15 minutes before I decided I was going to bed. It was about 8pm and still very light outside. I was utterly exhausted. I figured I could read in my tent for a bit and be a bit more comfortable than in my camp chair. I think I was out cold by about 8:30.

Woke up Sunday morning, made some coffee, made some eggs, rehydrated one of Ted’s food pouches and broke camp. On the road by 11am.

We continued up the Banks-Vernonia trail until we got to Vernonia, where we met up with some fellow bikers and had lunch.


On the way out of Vernonia, we found that Google Maps was lying to us. The road it wanted us to take was gated off and looked like it hadn’t been traveled in years. So we headed back to the highway and took the long way around.

15 miles and a lot more climbing later, we ended up in the tiny community of Chapman, where we rolled up to a random house where someone was mowing their lawn and asked if we could refill our empty water bottles. He asked us if we were taking the trail, and we had only found it briefly on our way back into town after passing it. I asked where it went east of there and he said it went all the way to Highway 30! He also seemed amazed that we had been on the highway the entire time, as opposed to taking the trail!

We thanked him for the water and the advice, hopped back on our bikes and headed for the trail. It was definitely not well paved, most places it was simply gravel. A couple of places it was extremely loose gravel and impassible, one of those places was on a descent to what looked like a fairly new bridge. These places were pretty easy to pick out as their gravel was very different from the normal gravel, so it was at least manageable.

We came across a landslide which had taken out the trail, but there was a little path off to the side we were able to sneak around.


There were a few additional patches of the extremely loose gravel further down, in areas which also looked like they had been taken out by landslides. They apparently get a lot of landslides up here!

Finally, we made it into Scappoose and onto dreaded Highway 30. We were both in desperate need of ice cream, so we stopped off at a DQ for a couple of blizzards and some AC. The sign on the bank next door read 83F, and there wasn’t a lot of shade to be had.

From there we cruised down Highway 30, dodging glass, rocks, silverware, even a propane tank! Upon reaching the St. John’s Bridge, Ted and I split up, me heading across the bridge and him heading into northwest Portland.


Up and over the bridge and into the worst headwinds I’d experienced the entire ride. All the way east on St. John’s bridge, all the way east on Rosa Parks, all the way east on Broadway, all the way east on Irving, and finally I rounded the corner to home and didn’t care anymore.

All in all, I had a blast. I’m destroyed, and ordering delivery right now. I was a bit worried at the campground, what might happen if there wasn’t anywhere for us to stay, but was feeling pretty YOLO and figured the worst that could happen was we’d have to roll back down hill to Banks and grab a hotel room or call for a ride or something.

I also have to give mad props to Ted for choosing a pretty awesome route. Other than Highway 30, which honestly wasn’t that bad, just loud and lots of debris, the route was pretty low traffic, and extremely lovely.