I was heading home today. Purely out of stubbornness I had not consulted the Swartz Bay ferry schedules. In hindsight, I’m not sure what my motivation was for this.
Leg 1 Ruckle -> Fulford Harbour
I got an early start. The sun was barely up. My tent was covered with a very heavy dew. A downside to solo cycling is that it’s hard to shake dry a fly on your own.
The ride to Fulford felt like it took 10 minutes. When I got to the terminal, the recently departed ferry was chugging away, and asking me: ‘Dude, why didn’t you just check my schedule??’
But this extra time at Fulford was truly a gift. It gave me time to brave the long coffee shop queue and eat one of the yummier cinnamon buns I’ve ever come across. Holy cow it was good.
Leg 2 Tsawwassen -> Home!
Waiting at Swartz Bay, I met a couple of other cyclists. One was a nice, happy guy from Seattle travelling light (ie staying in hotels, eating in restaurants) He was aiming to get to Vancouver and then put his bike on Amtrak to get back home. It sounds like you can just wheel your bike onto the train as is. No disassembly required. Definitely worth investigating.
The three of us were getting ready to disembark at Tsawwassen, we were weighing our options. Either put your bike on the bus, to get us past the tunnel, or head way east to pedal over the Alex Fraser Bridge. Seattle guy and the other cyclist were both more pragmatic than me and opted for the bus. I guess that makes me the dogmatic one. According to Google Maps I had a route through Delta what would avoid the highways. Easy peasy, right?
It turns out the ride through Delta was a little piece of heaven. It was almost all quiet farm roads. There was a great bike tunnel under the tunnel highway. Full disclosure: there was also a delicious tailwind pointing almost due north. Ascending the Alex Fraser Bridge was way easier than the Cusheon Lake hill on Saltspring.
Once over the big bridge I was in familiar territory. Queensborough, over the bridge into New West, follow the Skytrain to Central Park, 45th Ave to Earles, pick up the Skytrain path again and then home.
Just before getting home I stopped in Side Saddle (where I’d bought my bike 2 months ago) to thank them for helping make my trip possible. Since I’d stopped, I decided I could probably also pick up a cookie from Flourist. The person working cash asked me: ‘Did you bike here?’ Many answered passed through my brain, but they all seemed complicated, long winded and unfunny, so I just smiled and said ‘Yes I did!’
Unlike my previous day off, this one didn’t include any ambitious cycling outings. I didn’t even touch my bike until well into the afternoon. Instead, I chilled in a hammock that was set up on the beach near my site. I also walked north along the shore, just to see what I’d see. I even ate oatmeal for the first time on the trip.
The highlights of the early part of the day were the hammock and seeing an otter, swimming, and then later skulking about on the beach.
Later in the day, I walked in the other direction (ie past Grandma’s Beach and the historic farmhouse) Once I came out to the road I saw another farm house off in the distance. I’d passed this farmhouse on my ride yesterday. If I recalled correctly it had a sign at the side of the road that said things like: ‘Coffee’, ‘Lamb Sausage’, ‘Treats’
I had no trouble convincing myself it would be a very good idea to further investigate the aforementioned ‘Treats.’ I walked the last stretch of road to the farm, despite having exactly $0 in cash.
Like many other stands on Saltspring, this was completely unattended and relied on customers to be honest. I saw a place where I could leave cash, but didn’t see any way of paying with my credit card. So sad! But then I noticed a sign on the wall describing how to pay with e-transfer. Nice! Last I checked, my phone was at 4%, should be enough to buy a treat or two. Hmm, actually my phone is at 2%, and when I open my bank up, it spins and spins and then times out. Try again. Black screen. Thanks for playing. No treats for you.
I start heading back to camp, keeping an eye on the power lines, seeing if there might be a public outlet where I could smooch1 some power. Most of the way back toward the campground there was a charging station for e-bikes. I thought of my e-bike Dover friend from yesterday and wondering if he’d made it this far and if he charged up here.
Despite the stern ‘E-Bike Charging Only!’ sign I tempted fate and hung there for a while, charging my phone. When I felt things were sufficiently charged I trudged back to the farm for my elusive treat. After no small amount of deliberation I picked my treat and tried to pay. Needless to say, the cell reception was still sucky, so I decided I walk back toward camp, where reception was excellent. When I got back to the charging station, I was able to login on my bank app. phew! I would be able to clear my name.
Please enter the amount you wish to transfer. $2.50 (the price of the treat)
Minimum amount: $5
Huh, I guess I have to leave a big tip. Send. Hmm, or I could go back and get a second $2.50 treat. I have to admit I was worried how it would look, as I go back to the farm and grab a treat, and walk away. ‘Hey you didn’t pay for that.’ ‘I did, I overpaid for this other thing using my phone. But I probably can’t prove it now because there’s no cell coverage here!’
As fate would have it, I arrived at the treat stand at the same time as a dozen English hikers. There was also a farm worker (farmer?) feeding a pen of goats in an entertaining way. The hikers were much more interested in the goat feeding than a self conscious treat thief. But just to make sure, I pulled out my phone and tapped on the screen a bit, to make it look like I might have been sending money to somebody. Performative Payment.
For the record, the treats were a delicious combination of Peanut Butter and chocolate.
The rest of my rest day was consumed with hanging in the hammock, cooking and eating.
I felt good, getting up early, but was wondering whether I could handle big days back to back. Would I even make it? At least I had more Powerade to keep me charged up and electrolytic.
Leg 1 Rathtrevor -> Crofton
Biking through Nanaimo was easily the worst part of the trip. There were big chunks that were off the highway, but it often felt like cycling through multiple bath tubs.
Ride down a crazy steep hill into a valley
Pass a few kilometres on an E&N rail trail
Ride back up a crazy steep hill and then do it all over again.
Also, many stretches of the paths had been under run with tree roots which had the effect of sprinkling many speed bumps (usually a foot or two apart from each other) along the way. This isn’t a big problem on an unloaded bike, but riding with panniers made these sections exciting, in a not good way.
Also, at one point I was coming up behind a woman walking her dog. I dinged my bell a couple of times to reduce the chance of scaring them. I guess neither the woman nor the dog heard the bell, because as I was riding past the dog lunged at me, knocking me over.
I was so mad/scared, but I didn’t really know what to do. I was definitely not enjoying myself in Nanaimo. The other ‘boohoo; poor me’ thing that happened is my phone died, so I had to either just stay on the highway, or run the risk of getting trapped in a dead end. (eg Transfer Beach) I also convinced myself it would be a good idea to bike into the downtown area of Ladysmith. Little did I know it was two steep uphill blocks to get there, and that it was mostly closed.
From there, I just stayed on the highway until I was through Chemainus. I then asked the nice lady selling Powerade if I could get to the Crofton ferry off the highway. She assured me I could and that mostly I needed to just follow my nose and head to the pulp mill smell. This turned out to be excellent advice.
As an added bonus, I arrived at the Crofton ferry with about an hour to hang out in a bakery/café that had yummy cookies and power outlets.
Also, while waiting in Crofton I met an interesting (chatty) dude who was heading over to Saltspring on his e-bike. He told me quite a bit about how he’d spec’d all the components, built the bike himself, all the trade-offs between having the motor in the hub vs in the BB, efficiency, etc. He also told me he’d lived quite a while in Dover, and in ‘different parts of Asia.’ (he mentioned Korea and China)
He was hoping to bomb around Saltspring, see the sights, and have enough juice in his battery to get back home.
One last point I think bears mentioning: On the map above there is a light blue route that would have bypassed all of Nanaimo. The previous evening, I was intending to take this route. It would have had me on logging roads, rather than JinglePot road. I ended up taking the route through the city, for the following reasons:
The bypass route had a lot of turns, and I’d need to have my navigational wits about me (not my strong suit)
I was pretty sure my phone battery was probably going to get to 0 sometime during the day.
Since I was travelling on my own, if I ran into bike or injury problems, I could be quite stuck in the middle of now where
Jim and Melissa very diplomatically (mostly Melissa) pointed these things out to me. When I was falling asleep, I was pretty certain I’d be taking the remote route. By the time I got up, I’d changed my mind, and opted to take the road more travelled. I wonder if I’ll ever get to go back and try the remote route…
Leg 2 Vesuvius -> Ruckle
Before arriving at Crofton, I’d assumed it would be a hop, skip and a jump to get from Vesuvius to Ruckle. Which was good because getting from Nanaimo had definitely emptied my tank. When I did a bit of research, I realized it was going to be more than 20 km. Not exactly what I’d had in mind.
I noticed the route was composed of legs that were mostly 3-4 km. In order to push through these legs I ‘invented’ a technique to pass the tine. If I was travelling at ~20km per hour, 3-4 km would be about 10 minutes (aka 600 seconds). So when I started on the first road I started counting to 600.
The first leg, along Vesuvius Road, ended shortly after I’d counted to 600. For the next two sections counting to 600 also ended up being a good approximation of my travel time. Then shortly before I got to Cusheon Lake, my Dover friend zoomed up behind me. He was surprised I’d got ahead of him, but I suggested he’d probably had a quality stop in Ganges, while I’d only stopped long enough to buy cheese and bananas. He zoomed off ahead of me toward Cusheon Lake. The next/last time I saw him he was on the public dock at Cusheon Lake and it looked like he was chatting with the dozen or so other people on the dock. I was happy for him.
Sadly my time passing technique didn’t work so well on the Cusheon Lake Road leg. Partly I’d lost count when I met my Dover friend. But even worse this road included the most ridiculous uphill section I think I’ve ever seen. By the time I summited this hill I was still pedalling but didn’t feel like I had much left in reserve. I was pretty well out of gas.
Once I hit Beaver Point Road, the last leg, I was very relieved. There was more up and down, and this was going to be longer than 4km, but I knew I’d get there. And once I arrived what a joyful sight. The Ruckle campground is so beautiful, and it was 80% empty.
I picked a spot by the ocean, set up my tent, and just lay down in the warm grass. it was such a lovely spot. I managed a very timid swim under challenging conditions (barnacles and waves) and then went back up to lay in the warm grass beside my tent. The sun eventually dropped behind the trees. My site was now in the shade, but the ground was still warm from the day. Utter bliss.
At one point the park ranger popped by to register me.
ranger: How’s it going?
me (smiling): Eleven out of ten.
I registered for two nights. Tomorrow I would rest.
At the start of this day I was a bit nervous for a couple of reasons:
the crazy cramps I got the last time I rode this distance
wondering if Rathtrevor would be able to squeeze me in
Due to my concerns I was antsy to get an early start. I also felt more inclined to keep my route simple. ie stay on the highway, rather than finding good side road routes. Of course I made sure to catch the Headquarters Road turnoff, cuz it was so straight, quiet, smooth and lovely..
I think my first pit stop was at the gas station store at Buckley Bay. (where one catches the ferry to Denman Island) This stop was a bit like a visit to the Room of Requirement. I’d realized that I should get some pain meds for my sore back. (“But stoicism feels good!”) I also bought a Powerade, hoping it would help me avoid my end of day leg cramps.
Joy o joy, the Powerade worked! I finished the ride with no cramps. As an added bonus, I made it to Rathtrevor in time to get a walk-in site (there we two left when I arrived) I felt quite good rolling up to my tent spot.
I’d only been there a couple of minutes when a 3 yr old girl and dad came over to my camp spot. Given there weren’t any other people around it seemed like they were seeking me out for something. I soon realized they were not seeking me out, but instead were seeking out the rabbits hiding in the bushes at the edge of my site.
Kate, the kid, was attempting to feed carrots and snap peas to them, and dad was giving her a lot of ‘don’t be so nervous’ type advice. Fairly quickly I was chatting up a storm with Kate, and enjoying our conversation. Meanwhile her dad had drifted back to their campsite on the opposite corner of the walk-in area.
me: How come bunny and rabbit are different words for the same thing? Other animals only have one possible word, like ‘dog.’
Kate: what about ‘puppy’.
me: hmmm, good point.
This carried on for quite a while, until her dad came by and told her it was time to go to the beach. (I’m pretty sure he still hadn’t said a word to me.) Kate calmly and firmly let dad know she had zero interest in going to the beach. dad: ‘I’ll give you a treat.’ Kate; ‘not interested.’
At this point, I kind of felt bad for dad and he appeared to be some combination of frazzled, frustrated and angry. I’m pretty sure Kate spent weekdays with mom and only saw dad on weekends. Dad gave up and went back to his tent. I could have done more to push Kate away from me, but for some reason I decided not to do that. Anytime dad was attempting to entice Kate away, I’d say nothing, and let her assert what she wanted to do.
I was looking to go for a swim. Also, seeing Kate’s carrots and snap peas made me realize I was hungry for some yummy vegetables. So I told Kate I need to go have a bath. She looked at me like this was a peculiar thing to say, but I was worried if I told her I was going swimming she’d want to go with me. I felt bad, in that she’d recently brought a book over to my camp site with the idea of reading it together, but I had to tell her it’d have to wait until after my ‘bath.’
I ended up going for a very long tootle, first to the beach/bath and then I found a wonderful farm store back at the highway. Kale, carrots, grapes, garlic, all of it so good.
When I got back to camp with my produce, I got started making dinner. No sign of Kate and dad. Dinner with the veggies was truly delish! While I was cooking/eating the Victoria couple that said they were heading to Hornby (Melissa and Jim?) rolled into camp.
Through the evening, I saw a bit of Kate, but did my best to be as uninterested/uninteresting as possible. While it worked in that she didn’t linger in my camp site it felt unfortunate to be giving her the cold shoulder.
This was a day off, in that I was riding with an unloaded bike. But I still seemed to have a fairly ambitious distance goal. I had a couple of reasons to see Quadra Island. The tangible reason was to pop in to visit a friend, who I normally only see in Vancouver. It was great to see her place, which faces west and is right on Quathiaski Cove.
I also wanted to get a feel for Quathiaski cove as my grandmother lived there for an unknown length of time. The only detail I knew about this time was that she rowed her younger brother across the cove to get to school. I since learned from my mom that neither Janet nor Dave (the rower and the rowee) knew how to swim at the time. Yikes.
Before leaving Quadra, I opted to explore a bit. Specifically I wanted to see Rebecca Spit, where Steph and Ollie had recently put in on a 5 day kayaking trip. As an added bonus this ride could be done as a loop that would bring me past Aroma, a yummy bakery on my way back to the ferry.
I convinced myself I really should support the local economy. So not only did I get a yummy treat at Aroma, but I also got an order of fish and chips while waiting for the ferry.. Needless to say, I was well fuelled for my ride back to Miracle Beach.
Most of the way back to Miracle Beach I passed a farm selling mushrooms. I hummed and hawed for quite a while and then decided it was worth backtracking a few hundred metre to get what turned out to be amazing oyster mushrooms.
Once back at the beach I continued my tradition of ending my day with an ocean swim. I noticed the sandy ocean floor was peppered with mysterious black objects. It turned out there were sand dollars. Who knew they lived here?
I decided it was time to start heading back south. To be honest, at this point in the trip, I was not sure I’d be able to find a place to sleep on Saturday night. I worried I’d have to sleep in a ditch by the side of the road. Can you get arrested for that? Not sure. But plan A was going to be to try to get back to Rathtrevor…
Day 2 was set to be a bigger day, over 100km. Fortunately, I was able to get an early start, thanks to turning down the Whiskey offer the previous evening..
I made the executive decision to hit the road right away, without eating breakfast. Mostly I felt like I had a big distance to cover, and I wanted to ‘earn’ my breakfast with a big, early push. That plan was scuttled early on, when I came across an apple tree offering me its delicious crop.
So with first breakfast out of the way, I continued winding my way northwest. I was able to avoid the highway for most of the way through Qualicum beach on some great back roads and bike paths (sorry, no photos)
Getting through Courtenay included lots of short bike paths. By the end of it, I was wishing I didn’t need to spend so much time with my nose in my phone/map. Also, it was dawning on me, that I really don’t have a great sense of direction, when there is somewhere specific I’m trying to get to. Fortunately, on the far side of Courtenay there was a wonderful back road (Old Headquarters Road) that not only had more apples, but also some yummy late season blackberries. Bliss!
As I was getting close to Miracle Beach, I was experiencing much cramping in my legs (thighs and calfs) I was able find a way to ride that wasn’t too painful. I was very happy to see the registration area, but there was trouble ahead…
When I got to the campground, there was a long slow moving line to register. Before this moment, I had mentally scoffed at the idea of planning mundane details like camp site reservations. When it was my turn, I learned all the ‘First come, first served’ sites had been taken. I was also getting mixed messages from two park employees (who I later learned were mother and daughter.) Daughter was telling me the only way I could reserve a reservable site was to either call BC Parks or go to the web site. But then mom told me, she could register me, but all the reservable sites were booked. Eeek. (and this was a Thursday, I was getting worried how things would go when the weekend arrived.) But then daughter told mom the three walk in sites were still available and I could have the single walk-in site. At this point, I thought I’d see if I could also reserve it for the following night, just so I wouldn’t have to sleep in a ditch.
Turns out the site I was in was reserved by somebody else for the following night. Fortunately I was able to book one of the other walk-in sites for Friday night. Double phew!
Now that I had Thursday and Friday nights booked at Miracle Beach, I decided I would do a Friday day trip up to Quadra Island. I was hoping to meet up with a friend who lived there (Marnie) and also, just see/experience a place where my grandmother lived for a few years in the 1920’s
Leg 1 took me from home to the Horseshoe Bay ferry terminal. It felt so weird to be biking through Stanley Park, and over the bridge with such a heavily laden bike. The last part of this leg included a lot of semi-punishing up and down along Marine Drive. The up was made a bit more challenging when I discovered that my derailleur cable was a bit out of adjustment, and wasn’t playing nicely in the lower/bigger/easier gears.
I thought about how best to deal with this. After careful consideration of all my options, I decided to make a single arbitrary turn to the barrel adjuster at the shifter while I was riding. In my defence, I’d forgot to pack my repair stand on this trip.
As fate would have it my low/big/easy gears were now stable. As an added bonus, the high/small/difficult gears also worked. Sadly the top two shifter slots both put the chain in the highest gear. I’m only slightly embarrassed to admit I still haven’t fixed this. Shifter barrel adjustments hurt my brain now.
I hadn’t checked the ferry schedule, but apparently I got to Horseshoe Bay a few minutes before the 11:25 was due to depart. I made it on, but had to load after all the cars. This meant I either needed to park my bike at the back (and get off last) or wind my way past all the parked cars to get my bike up to the front, to facilitate rapid debarkation.
After yet more careful consideration, I decided to work my way to the front. The good news is I didn’t scrape any car or ferry paint along the way. The bad news is I tweaked my back, I think lifting my (loaded) front wheel up over somebody’s rear view mirror. The pain of this tweak stayed with me for the rest of the trip, but (and this sounds too good to be true) it felt fine while I was riding.
Leg 2: Departure Bay -> Rathtrevor Provincial Park
The first part of leg 2 was yucky riding through northern Nanaimo. Lots of traffic and malls and traffic lights. At times it felt like an unending stream of right turn lanes that needed to be navigated, worrying about right turners coming barrelling up behind me. Once out of the city the riding got simpler. For the final third I was able to travel on a (very hilly!) back road.
To say it felt good to arrive at Rathtrevor would definitely be an understatement. My bike had behaved wonderfully, my legs didn’t hurt, I hadn’t forgot any stove or tent parts. I celebrated with a quick dip in the ocean, an early dinner, and then I wandered around the walk in area and met some of my fellow campers.
There was
a Dutch couple who had been living in the UK (mostly Scotland) for the past 20 years
a Victoria couple on bikes that were heading up to Hornby tomorrow
a French couple who had taken 3 years off to cycle ‘around the world.’ For North America, they landed in Whitehorse and are working their way to Argentina. When I saw them they were doing a side ‘loop’ on Vancouver Island and planning on getting to Courtney tomorrow.
If I had it to do over again, I regret not accepting the offer of a Scotch Whiskey night cap from the Dutch/Scottish couple.
For my flash cards app, I’m currently working on the issue of language selection. This app is going to provide users with a list of many words in many languages. Its goal is to give people a tool to use flash cards for learning and maintaining multiple languages.
Consider a person that doesn’t have this app. Let’s assume their native tongue is French, and they want to practice their English and Japanese. The obvious approach would be to spend one chunk of time working between French and English and another chunk of time working between French and Japanese.
But what if they could work between all three languages? Or maybe just between their non-native languages? (English and Japanese in this case) This is the app for that. Maybe they also want to get to level 1 of Norwegian? Just add it to the mix.
To give credit where it is due, I got this idea from a recent episode of The Tim Ferriss Show.
Tim: If you’re getting too much traffic due to this link, my apologies. I’d be happy to remove it, just let me know.
I confess, Tim Ferriss is definitely a celebrity crush of mine, but back to the topic at hand, enums…
This flash cards app is going to start with approximately ten languages, and I want to give users flexibility in choosing what languages/words get shown, and also what languages they will be expected to use for their answers.
I started by defining a list of askLanguages, and a list of answerLanguages. I envisioned two columns of buttons. The column on the left would let users pick the askLanguages and the column on the right would let users pick the answerLanguages.
But there are some invalid combinations.
If a user selects zero answerLanguages, that is obviously not going to work
But if a user selects all the languages for askLanguages, and selects one answerLanguages, that’s not cool either. If you pick Japanese as your only answerLanguage, it doesn’t make sense to also use Japanese as an askLanguage. But if you add Haida as a second answerLanguage, then Japanese is a valid askLanguage. (eg “What is the Haida word for サーモン?” Trick question, Haida has *many* words for salmon.)
If a user selects two askLanguages, their list of answerLanguages needs to include either both the askLanguages, or at least one other language not in the askLanguages list.
When a user has selected values that can’t actually be used, it could be complicated/messy/challenging for the app to convey why their choice won’t work and what they need to change to make it workable.
So instead of giving users this hyper-flexible way to choose, I assumed users’ selection preferences are going to fall into one of a few categories:
use all the languages, for both asking and answering
use a subset of languages, for both asking and answering
use one language for asking (native language perhaps) and all other languages for answering
use one language for answering and all other languages for asking
use one language for asking and one language for answering (old school!)
So I defined an enum that captures these specific cases:
enum LanguageChoice: Equatable, Codable {
case all
case oneToOne(Language, Language)
case oneToAll(Language)
case allToOne(Language)
case symmetricSubset(Set<Language>)
}
And now all those obscure invalid corner cases go away. The UI to select a language choice starts with a picker with the five possibilities. For most of the picker choices there will a simple second step for users. Typically either:
pick one item from a list -or-
pick N items from a list
There are still some invalid cases (eg symmetricSubset requires users to pick at least one language) These cases (so far) are self-evident, and easy to convey to users in the picking UI. The logic to determine validity can be handled via a simple computed property on the enum.
var isValid: Bool {
switch self {
case .oneToOne(let ask, let answer):
return ask != answer
case .symmetricSubset(let languages):
return languages.count > 1
default:
return true
}
}
And thanks to the great team of people working on the Swift language, encoding and decoding enums with associated values is now built in. This means persisting a users preferred configuration is easy peasy.
If it turns out some users want to specify more complex language choices (eg “I want one askLanguage, and five answerLanguages“) these can be handled with new or modified enum cases. Even if it turns out there is a group of users who want the ‘totally wide open control’ option, it can be handled as a case in the enum. These users will need to navigate the invalid cases described above, but all the users that select less problematic options can remain blissfully unaware of this complexity.