Rock 666 alleycat

Last saturday, Chris Bock (awesome guy that I barely know) organized an alleycat for the 5th anniversary of Rock (other great guy I don’t know) working at Flash courier.

The race’s manifest looked something like this:

Start: Hallwylplatz

Pickup Delivery
Schmelzbergstrasse 12 Toblerstrasse 51
Zeltweg 5 Engelstrasse 49
Steinstrasse 50 Rötelstrasse 69
Geroldstrasse 17 Werdstrasse 126

End: Helsinki


After my first alleycat, I promised myself that I would not start riding before reading the whole manifest and preparing a clear route. So I took out my iPhone and started looking for all the streets. Some of them sounded familiar: Steinstrasse is were the Zurich office of my previous employer ELCA is located; I suspected Geroldstrasse would be the street of Frau Gerold’s Garten; Werdstrasse is where my current employer Doodle is located; Engelstrasse is a street in my neighborhood. But I searched for all of them anyway. You never know. I thought I might try Google Maps’ handy feature to save places:

How to save places in Google Maps

After entering all the checkpoints, I ended up with a map with 8 stars, one for each saved place (I wouldn’t mind Google making them stars a bit more visible):

Saved places in Google Maps
Saved places in Google Maps

The next thing I had to do was take into consideration that obviously a pickup has to occur before its corresponding delivery. With only 4 pickup-delivery pairs on the race’s manifest, this is easy enough. Were there more, it would be a NP-hard problem[1].

The pickups and deliveries, visualized on a map
The pickups and deliveries, visualized on a map

In this case, my chosen order would be as follows:

Visualized on a map, that abstract list looks like so:

The planned route
The planned route

Throw in the stress, the lack of knowledge of the city and the fading capability to think clearly after a while’s effort, and you end up with this:

The actual route
The actual route

As you can see on the GPS tracking, even after having carefully prepared my ride, I still took some questionable decisions. The small hook at SechseLäutenplatz is an obvious example. I fucked up because of the construction work going on there. The ride down from Rötelstrasse to Geroldstrasse was a bit random as well. And then finding the nº126 of Werdstrasse was even more random. Werdstrasse makes no sense! Overall you can see that I don’t yet know the city well enough, because I mostly took large main roads. I’m pretty sure a Züri messenger’s route looks way different.

Here’s a short list of what went down at each checkpoint:

At the end of the alleycat, Chris told me that the idea behind the checkpoints was to bring us to places related to Rock (the Schauspielhaus, the tattoo shop, the Freitag store) or to the some standard deliveries that happen during shifts at Flash (Viollier, Uni Spital). Pretty neat!

I had a great, fun time. Kudos to Chris!

  1. Well, actually, vehicle routing problems (VRP) are said to be NP-hard. With vehicle as in cars. They seem to assume a common starting and ending point (the vehicle depot), and there are no pickups, just deliveries. Basically it’s for services such as UPS, DPD and DHL. Bike messengers don’t go back to the depot, they move around the city the whole time and get assigned pickups and deliveries along the way. Which makes the problem even more complex I guess. Probably the most fitting of the VRP variations on that wikipedia page is the “capacitated vehicle routing problem with time windows” (CVRPTW). Capacitated because a bike messenger can only carry that much. With time windows, because some clients have very tight opening hours which might impact the delivery order. ↩︎