Blog

I Missed Tom Hawthorne’s Book Launch

Book launches are loud parties where I don’t know anybody. Except the author, through their work and their social media. So I still like attending them, if only to get a signed copy of their book, and maybe say a word or to to someone who will probably forget it later.

Tom Hawthorne, author of The Year Canadians Lost Their Minds and Found Their Country, rolled through Toronto last night, and I didn’t find out about it until afterwards. That happens fairly often since I moved to Toronto. On the bright side, I attend way more events than when I lived in Vancouver.

Ben McNally Books is a nice bookstore, with a generous area for seating when authors visit for presentations.

Since I buy Kindle editions of books now, I would have bought both the Kindle edition and a physical copy of his book, signed without having it addressed to me, and thought of a friend to give it to as a gift. I also print out the cover, tape it to my Kindle, and get the author to sign that, then tape it to the back of my Kindle when I’m reading it. It’s a thing I do.

(Did I ever tell you the story of how I met my favourite author Zadie Smith and got her to sign my copy of The Autograph Man and I was the only one who brought that book of hers to sign?)

How to Get a Free Printer from Best Buy

Here's how I got a free printer from Best Buy:

  1. Spend thousands of dollars on your credit card.
  2. Forget that you can use credit card points to make a payment.
  3. Instead use the points to get a $100 gift card at Best Buy.
  4. Look up on The Wirecutter what the best all-in-one printer is.
  5. Buy said printer on Amazon for about $125 and use the 30-day free trial of Prime you just signed up to get free shipping.
  6. Wait until the day it arrives at your doorstep. (Literally. Whoever delivered it just left it at my doorstep.)
  7. See a promoted tweet advertising a blowout sale for laptops at Best Buy.
  8. Forget that's what you clicked and spend 10 minutes retracing your steps to figure out what link you got there from.
  9. See that there are no Chromebooks on sale, but notice the printer you just bought—or, rather, one that's almost the same but a slightly different model—is on sale at $80 off, for a price of $50 (plus tax, plus recycling fee).
  10. Decide to buy that printer, and almost press “Submit order” before remembering you have the $100 gift card.
  11. Notice that the printer is on sale for just today.
  12. Rush home from work and find the gift card and submit the order and apply the gift card to the entire cost of the printer.
  13. Let the printer you bought on Amazon sit unopened until you're sure you get the free one in the mail.
  14. Wait for the email you'll get from Canada Post Flex Delivery that the printer has arrived for you at the post office.
  15. Pick up the printer. This is not the last step of getting a free printer, since you have another printer to sell.
  16. Return the printer you bought on Amazon. If that's not possible, this should be easy enough on Craigslist.

I'm currently at step #14.

No Longer Playing Ingress

Heading north on a Toronto streetcar, my heart sank as I realized something which initially felt awful but almost immediately felt like a relief: 24 hours had passed since I last hacked an Ingress portal. That meant that my streak of 561 days had come to an end on a Friday where I worked from home and didn’t think to hack the portal that was in range of my apartment. That being the only reason for playing Ingress, having been superseded this summer by Pokémon Go (from the same company as Ingress and modeled closely on it), I decided this was a project I could drop.

I’ll miss the software I built for it, though the ideas are valid for other projects I have in mind. One such project was to notify me of nearby farms, crowdsourced by the Vancouver Enlightened community. The software they built was impressive, not to mention the other add-ons, many not sanctioned by Niantic, built by Ingress communities around the world. The fact that I had API access to a player-generated database was staggering enough. There are other data sets, official and unofficial, that the code I wrote would be useful for.

I’ve written extensively about Ingress, though not publicly, only privately in my journal. That‘s because a lot of it involved information that would be useful to the enemy. The game took me on an early-morning car ride to Hope, B.C. to make a BAF (Big Ass Field) so I and a few others could get a high level badge. I played the role of comms operator during the ground game that leads up to a BAF. I’ve participated in “anomalies” (Niantic-sponsored day-long battles between the factions) in Vancouver and Boston, travelled to Oshawa on a GO Train for the purpose of participating in a First Saturday (events organized by local communities that have global implications for the game), and attended events in Toronto, and even showed someone the ropes of Ingress while interest in it waned more generally. I read with interest as bloggers Tim Bray and Alex Gustafson documented their adventures. I completed over a hundred missions, and took photos as I played. I would get the hardest badge to achieve, the Guardian medal for owning a portal longer than 150 days, by holding on to the Penticton airport portal from the summer of 2015 until someone returned home for the holidays. An extra dimension of difficulty was that I would be out of range to re-charge it, but I had the presence of mind to get multiple keys for the portal, so fellow ENL agents re-charged as I toured Europe for a couple of weeks.

Ingress made me look up more often, appreciate how many historical and notable buildings and structures and art were in cities. I met interesting people and went to interesting places and, overall, had fun playing it.

Gravenhurst, Ontario

In university, I studied a mix of Canadian foreign policy and Chinese politics. A few years had passed and the interest waned. During the 2015 Canadian federal election, as a way to keep engaged, I read all of the books written by the leaders of the major political parties. Stephen Harper had not written one, not about himself, at least, so I relied on Stephen Harper by John Ibbitson, and that book mentioned Engaging China: Myth, Aspiration, and Strategy in Canadian Policy from Trudeau to Harper by Paul Evans. I read both books, and in the latter, Evans noted the Canadian government's reliance on citing Canadian Communist Party Member and hero of the Chinese Communist Revolution Norman Bethune. Almost as an aside, Evans mentioned that there was a museum and historical house dedicated to Bethune in Gravenhurst, Ontario. “Hey,” I thought, “wasn’t I moving to Toronto? Maybe I should look that up when I’m there and take a trip out there one day.” I had found the time to make a plan for the trip, consulting bus schedules, opening hours of the museum, but had yet to pick a day to go.

Every year, my brother, father and nephew and I make a trip to America to watch the Blue Jays play on the road somewhere. Usually we had gone to Seattle, except this year, since I had to move away from Vancouver, this year we chose Oakland, California. Before that, a trip to Europe, a move to a new city, starting a new job with two weeks of onboarding in Boston and a final trip back to Vancouver before starting a new life in Toronto, combined with apartment hunting and an impending breakup with my longtime girlfriend, a minor detail slipped my mind: my passport expired in May. I found this out at the airport, so I had to cancel my trip to the Golden State. What better time to go to Muskoka country?!

I set out on the Ontario Northland coach from Toronto, a 3-hour journey, with a single stop through Barrie on th poole express route. I arrived at noon at the “train station,” now serving as a coffee shop and rail museum. I ate a ham & cheese sandwich outside next to the railcar, hoping a train would pass by. A train would not pass by.

Gravenhurst

Ontario Northland Bus in Gravenhurst, Ontario

Having a ham & Swiss cheese sandwich, with a view of the train tracks.

While visiting the museum was my singular purpose for the trip, I had hoped to run into something pleasant and usual, something only a small town could offer. I had lots of time before the museum closed, so I walked down what I believed was the main drag, of course named Bethune Drive, and came across a bear unveiling. A bear unveiling? A group home long had a wooden bear statue in front of their building. Because it was built into the ground, roots had gotten their way in, and the statue eventually split and fell over. The community raised money for a new statue, and as luck would have it, Friday afternoon at 1 PM, they would unveil the newly carved statue. I had gotten there at 12:40, so I killed 20 minutes by walking to Gravenhurst’s gate. Returning just in time for the actual unveiling, I overheard the carver being interviewed for the Muskioka regional newspaper, and posed with my arm around the statue.

Bear unveiling

Bear unveiled

I made my way to the museum and was impressed with its size. Inside were tributes to Bethune, in both English and Chinese.

Norman Bethune Museum

Norman Bethune

Norman Bethune Instructs Chinese Medic

The reason for my day trip to Gravenhurst.

While in the memorial house, the tour guide told me that while the items in the house may not have belonged to the Bethunes, they were of the time he was born. The tour guide and I bonded over being white men who knew a little bit of Chinese and who had visited China. I made my way up to the second floor, where I got to see a 10-minute video on Bethune and his trunk from the Spanish Civil War.

After the museum, I walked to Muskoka Lake. If I had known earlier that there were lake cruises on Lake Muskoka, I would have aimed for that. Maybe for the next trip! I then walked across town to Gull Lake, where I sat and admired the Cinema Under the Stars stage.

Cinema Under The Stars

There weren’t a lot of people in town, and the evening bus came after 6 PM, and there wasn't much to do to kill time besides play Ingress around the station. Still, I congratulated myself for a day trip well done. I can say I’ve been to the Muskoka region, and that everything more or less went according to plan.

No Bell and the Brakes Were Hilariously Loud

Today was my first Bike Share Toronto commute, and I made as many blunders as possible. I added a few extra minutes by figuring out how to take a bike out, walking (not biking) from King to Adelaide, dodging trucks parked in the bike lane while properly crossing old streetcar tracks, turning into a one-way street, and getting turned around at least once, maybe twice. Next time I'm just going to turn right onto Church.

The actual cycling time of 15 minutes is about half the amount of time it takes to walk to work and about a third the time it takes by transit (the streetcar is sooooo slooooww, but at least I can read or zone out). The bike I rode has no bell and the brakes were hilariously loud. At least now I know what's involved, and the actual time door-to-door next time will be a lot shorter.

Thanks to Average Joe Cyclist for the timely post about using Strava, which noted that today was Strava's Global Bike to Work Day. That's right, I did it for the badge.

Free Comic Book Day, May 2016

Comics collected during Free Comic Book Day in Toronto

My excellent haul from Free Comic Book Day, from Hairy Tarantula and Silver Snail Comics (both on Yonge), plus a cameo by the ad for the photo gallery opening I attended later in the day. I saw Captain America: Civil War the other day, and have a lot of blanks to fill in as a result of that. I'm not a big comics guy, but I did read Understanding Comics: The Invisible Art by Scott McCloud just recently, so I'm determined to get a glimpse of the medium. This'll be a start.

I overheard a guy say "Most of what's in comic book stores isn't comic books," and he had a point. Both stores had the majority of their floors dedicated to games and collectibles, not the books themselves, though really, there's a lot of crossover. I have my eye on a small card game that would fit my interest, and shared with Karen a card game that might interest her. I've found enjoyment in the collaborative card games, and in whichever one involves not knowing which character everybody else is.

When I went to Comicon earlier this year, I wanted to get a photo of me with Captain Canuck, but couldn't screw up enough courage to do it. I'm giving myself a second chance by getting a Captain Canuck comic with a blank cover. Maybe I can pay someone to draw him and me with our arms around each other's shoulder, as if we were good pals. Wouldn't that be hilarious?

3D Me

I met Douglas Coupland! I had known for a while about his project to 3D scan and print each and every Canadian (minus those who couldn't make it to their local branch of a Quebec-based fashion retailer) for an installation he will later make. I was finally able to do it this weekend. I know one of his collaborators, John Biehler, so it occurred to them to scan me both wearing the Blue Jays cap I showed up in and one without. Everybody who gets scanned will get a copy of themselves, and, lucky me, I get two. It'll be weird seeing a 3-dimensional version of me without my glasses, but like Doug (I'm allowed to call him Doug) said, maybe I'm a different person without my glasses anyway.

I didn't get a selfie with him, same as with Drake. That makes it two Canadian celebrities I decided not to get a selfie with in the same week.

It was a pretty slick operation, with demo units of 3D printers and waiver forms to sign. I saw one tweet snarkily ask "Are people getting paid in 'exposure'?" not reading the part where you get a totally cool 3D printed bust of yourself. (And a t-shirt. That part I didn't know.) Totally worth spending two hours on transit to go to Mississauga and back. Would go again! In fact, to pick up my busts, I will, won't I?

Later: John sent me a photo of the two copies of me. I love 'em both!

Two 3D printed copies of me, one with a ballcap, one without

Euphoria

At 5:06 PM I saw a tweet by Drake (the rapper) that he was doing…something at 5 PM at 567 Queen St. West.

"It started already, it'll over by the time I get there," I thought. Still, it was a few short blocks away from where I live. I walked there, and the line was long but sure, why not? The line's this long, it's got to be good!

While in line, I pieced together that it was a pop-up shop, and that people were getting t-shirts promoting his new album. OK, free t-shirt, cool. Four guys ahead of me didn't want to wait an hour for a t-shirt (or something?) and didn't know what would have been in store for them. I hung out, trying not to eavesdrop on the conversations in front of me. One woman was told by someone she knew that they had run out of t-shirts, and was almost convinced to leave the line. She stuck with it, and I ended up in the alley with a bunch of people, listening to some Drake tracks, when all of a sudden someone said, into a microphone, "What's up?" Euphoria as Drake, the man himself, stepped out the door, smiling and winking at everybody. This was a dream come true for a lot of people! Since I'm tall, I offered to take photos for the family behind me, who couldn't see over everybody. I also let them go ahead of me. It was a bigger deal for them than it was for me.

Drake

Lots of people gave dap to Drake and some got selfies with him. The guy is the master at the well-timed flash of the "six" and smile just as people clicked their selfie. No selfie for me, though. I just shook Drake's hand. I think he wanted to lock thumbs with me but I am definitely not at all cool enough for that. At least he looked into my soul, oh so briefly.

Did the people ahead of us not get to meet Drake? Are they now thinking "All I got was a t-shirt?" For me, it was another thing that happened that was only possible because I moved to Toronto.

My 2015 in Books

Learning my lesson from last year, I cut down my book reading goal to 20 books from 25. Thanks to several flights during my trip to Europe, and an inspired purchase of a Kindle during Amazon’s Prime Day (which I hilariously almost lost at the airport), I was able to surpass my goal.

The books I read in 2015.

I read Common Ground by Justin Trudeau, Who We Are by Elizabeth May, Strength of Conviction by Tom Mulcair, and Stephen Harper by John Ibbitson all just before the 2015 Canadian federal election. The then-prime minister had not written an autobiography before dropping the writ, and Ibbitson’s biography seemed the best replacement. I was not disappointed. There are overly-sympathetic stretches where progressive readers can justifiably roll their eyes, but it’s an otherwise engaging analysis of how Stephen Harper came to power and used it. I disagree with those who say we progressives let his prime ministership happen, and agree with those who argue that it happened because the forces that led to his ascension (including Harper himself) were stronger than ours. It’s a playbook for how to strong-arm a party and an electoral system and a political culture into getting what you want. It was my co-favourite book of 2015.

Between the World and Me by Ta-Nehisi Coates was my other co-favourite. I still remember, a year later, how I felt after hearing the announcement that the St. Louis County grand jury would not indict the officer who killed Mike Brown (all the air in my lungs left in extreme disappointment), but I could never put into words why that decision hurt so much. Coates drives home the point (again and again and again) not only that the American Dream destroys black bodies but how in such a stark way that I, a person who believes he is white, couldn’t fathom before. This is a book tips over what I might have previously believed about the black experience in America and revealed large gaps in my understanding. An important book.

Thanks to Amy and Diana for again providing inspiration to write about what I read over the course of the year.

A Year of Races

The Couch-to-5k program got me started running, which carved out time to listen to podcasts, and inspired by the runners in my Twitter timeline I ran my first 5k race, the 2014 Scotiabank a year ago this weekend. For the 2015 event, I set two goals for the same race: run a personal best 1 kilometre over the course of the race, and run a best overall for a 5k. I achieved both, and would have done even better if it weren't for a heatwave. (The last kilometre would have been my fastest, though at the last second I decided to go the same speed as the rest of the race, already overheating.) Races are fun because there are hundreds of other people doing it, so there's a lot more watching out for everybody and a lot less paying attention to what's coming through my earphones.

This year I've run 4 races, with possibly another one in the fall to go. The BMO Marathon has added a 5k race for next year, ending where the marathoners end. That should be exhilarating! The Fall Classic added a 5k to their list of races, and it wore me out), so that race became interesting again. I enjoyed the 8k distance the most, having energy leftover after 5k and being worn out by 10k.

I track my races using Strava, which tells me segment times and compares my previous runs. I try to give 'kudos' to everybody who ran the same race. Who doesn't love getting kudos?

Some challenges remain, like getting the motivation to run 3 times a week rather than the 2 times it ended up being. I do hope to run in a half-marathon, but not for at least a year while I still get the hang on running in general and races in particular. There are no plans yet to travel to run, with the possible exception of Vancouver Island, where family could let me stay over. Starting small has worked out really well, and small increases in challenges has kept me engaged in the activity without burning out.

Customer Care Experiences from the Other Side: Company A

In this series on customer care as seen through the eyes of someone who’s done support but is a frequent consumer of support as well, I’m leaving out the names of the service providers discussed. It shouldn’t be hard to figure out who I’m talking about in some cases.


When an app-hosting service recently changed their pricing model, as a way to get customers acclimatized, they started sending out notifications about the usage on the formerly-free tier. I noticed that the way I was using the service (an always-on Node.js app that wasn’t web-accessible) wasn't covered, so I sent in a note about it. It was not a complaint, but rather a suggestion to account for my not-uncommon way of using the service. Their replies were staggeringly quick, and they decided right away to accept my suggestion, and they wrote a paragraph on the spot, ran it by me, and included it that day in future notifications. It might have been just that it was a slow day on a Friday afternoon, but you can still colour me impressed.

They use a ticketing system, with a web interface, and replies are possible via email. As a customer, I had the ability to close a ticket myself, and re-open it myself. They didn't close the ticket immediately when they felt the issue was resolved, waiting for me to confirm.

Relatedly, But Not About Company A

I’ve had a cloud service close a ticket on me unannounced after they assumed something was resolved (as far as I was concerned). It was resolved, but a service provider cannot assume a support ticket is closed until they are 100% sure the customer considers the issue closed. If enough time passes (a week, or maybe a couple of days, is probably enough time in fast-moving environments), you can say “We haven't heard from you, so we’ll close this, but please reply or re-open if this is still an issue.” You absolutely cannot just close a ticket without mentioning why you're closing the ticket like they did.

Lessons for technical support teams:

  • Quick response times. Even if it’s a “We’re looking into it” response from a person, not a robot, that goes a long way towards easing anxiety on the customer end.
  • It was nice to think that the support agent had some decision-making authority (on this, a small concern).
  • They used a ticketing system, so if I as a customer had to pass a URL to someone (a client, or as a cross-reference in my own ticketing system), I could paste that in (rather than copy & paste an email thread).
  • Sometimes it makes sense to run a small change by the person requesting it.
  • Close tickets only after you're 100% certain the issue is closed (or enough time passes). Say why you’re closing the ticket.

In the next episode of Customer Care Experiences From the Other Side, I will write about hands-on support I’ve received, the good and the bad. Spoiler: ask first!


Originally posted on LinkedIn Pulse.

Series Introduction: Customer Care Experiences from the Other Side

My desire as a power user to get what I want from software is always tempered by my days in the early 2000s as an Internet trainer, the mid-2000s doing customer support at Bryght (the Drupal-powered hosted service, not the online furniture retailer), and, maybe to a lesser extent doing client work in the early 2010s at OpenRoad and Chapter Three. Those experiences gave me insight into the possibilities and limitations software companies face in delivering customer and client happiness.

As part of an effort to get back in the game of directly supporting an open source project, I've been reviewing the good and not-so-good support experiences I've had as a consumer of web-based software to see what lessons the project can apply. After that review, I came to the conclusion that in the last year or so, the online software industry, technical support as a profession seems to have leveled-up, as it were, with room for improvement.

Over the course of this week and next, I'll post my experiences as a consumer of technical support, the good and not-as-good, with the names of the innocent and guilty removed. I'll post lessons that support agents and customer care managers can learn from both the good and not-as-good experiences from the other side.


Originally published on LinkedIn Pulse.

I Can't Wait to Eat That VR Headset!

[

VR headset with smartphone hold

](https://www.tilt.com/campaigns/experimental-phone-vr-headset-from-china)

I'm still in the "rolling my eyes" phase about virtual reality, but what do I know? While visiting Human at their Gastown office, I got to try out some of the gear they had, and the coolest experiences were playing a video game (an emulated version of Super Mario Brothers) and watching a movie, both projected on a 'drive-in' theatre that I walked up to inside the virtual world. There was talk of doing a group-buy for a VR headset, and here we are, mere hours after the Tilt for the very headset you see above ended, and I can almost taste it.

Despite being skeptical about consumer uses of VR (inside-the-organization use, like for training, that I'm not skeptical about), I'll give this a shot. There are evidently quite a few apps for the iPhone that work with this kind of thing. I'm particularly interested in doing virtual tours of far-off places, like in the View-Master demo video (the more mundane the better) and figuring out zany ways to jam the various web APIs out there directly into my eye-sockets.

Osoyoos

Landed

North Cariboo Air

We did fly in on this North Cariboo Air airplane, but it looked so lonely! I asked if I could take its photo, and it obliged.

On the way to Osoyoos

The drive from Penticton to Osoyoos, by way of Oliver, features this striking view from the car, barrier included.

Three trains passing

Osoyoos Desert Model Railroad

Port

I didn't know what to expect from the Osoyoos Desert Model Railroad. I certainly didn't expect a slice of Europe, build in painstaking detail by a German couple who moved to the town because it was the hottest place in Canada.

Smart

They even built a Smart Car dealership!

The view from the hotel room balcony

The hotel room we stayed in looks upon the northern view of Osoyoos Lake.

Looking at Osoyoos.

Haynes Point Provincial Park wetlands

On Sunday morning, I went for a run from the hotel to Haynes Point Provincial Park, where I saw this view (and ate many bugs). On my way back I walked through the wetlands...

Drive-thru mailboxes

...saw some drive-thru mailboxes...

Banged up race car

...and a banged-up race car.

Thunderstorm rolling in

My brother read about Spotted Lake, a saline endorheic alkali lake.

The Okanagan Valley from the lookout

We took a minute to view the Okanagan Valley from a lookout point before a storm cloud rolled in.

Double rainbow!

After the thunderstorm passed, a double rainbow greeted us at the hotel.

Okanagan view

We dropped my aunt off at her house, and beheld another view of the Okanagan.

Using Siftlinks and IFTTT to Aggregate Links From Your Twitter Timeline Into a Slack Channel

Ever wonder if there was an easy way to get the links people post to a Twitter timeline fed into a Slack channel? Wonder no more!

For this Rube Goldberg machine to work, you’ll need 3 components:

  • A Twitter account.
  • A Siftlinks account tied to your Twitter account. Siftlinks is a paid service that makes an RSS feed out of the links posted to your timeline (as well as an RSS feed of links from your Twitter favorites) and offers a 30-day free trial. After that it’s $10 a year. That’s 83.3 cents a month. Cheap cheap!
  • An IFTTT account.
  • A Slack team and a channel to post links to.

After following the instructions below, you get something looking like this screenshot my #links channel from a few minutes ago:

Screenshot of my #links channel in Slack.

Instructions

  1. Login to Siftlinks with your Twitter account.
  2. If you haven’t already, activate the Slack channel in IFTTT.
  3. Create a channel in Slack just for links incoming from Twitter. It might make sense to use an existing channel, but the large amount of links in my timeline doesn’t justify it, so I post to a separate #links channel that I dip my toes in every couple of hours.
  4. Create a new recipe in IFTTT.
  5. Select Feed as the trigger channel.
  6. Select “New feed item” as the trigger.
  7. Title the recipe “Filtered Siftlinks to Slack”
  8. Siftlinks provides the RSS feed for you to paste in at this point. It’s the URL in “Here’s the latest links in your Twitter feed. You access them via RSS by adding [your secret URL here to your RSS Reader.” message at the top of the screen in Siftlinks.
  9. For the Action, select the channel you want to post in.
  10. As the Message, use just {{EntryUrl}}.
  11. Leave the Title, Title URL, and Thumbnail URL fields blank. Slack will gather the title and some information about the link on its own.

At some point, Siftlinks promised to add a feature to filter out image links (pic.twitter.com, Instagram, etc.) and other URLs like Foursquare/Swarm and Untappd checkins. I couldn’t wait, so I use Yahoo! Pipes to filter out URLs that start with certain domains and used the RSS feed it produces in place of step #8. (That list is up to 16 domains, by the way.)

What this won’t show is who posted the link. That means you can evaluate whether you should click through based on its content, not who shared it.

Why not use Slack’s built-in RSS integration? That integration pulls in the metadata (like title and description) from the RSS feed itself. The metadata-gathering Slack does itself when presented with just a URL is much prettier.

I pull in a few other RSS feeds this way—i.e. using IFTTT—and have them post URLs to Slack channels, like a Talkwalker alerts feed for news about the game Ingress and an RSS feed I made out of Belong.io using XPath (I wasn’t the only one who did that). Slack is my second-favourite RSS aggregator these days1, a fun way to see what links get posted to my Twitter timeline without having to visit Twitter at all.

Previously:


Also published on Medium on May 14th, 2015.


  1. Reeder for both the Mac and iOS is my #1 fave at the moment. ↩︎

Pages