Seattle Trip January 2016

Last week, together with my wife and dog, we made a short 3-day trip to Seattle to check out a few events there.

The drive down

Seattle is a pretty easy drive from Vancouver, Canada. It’s close enough that I often end up just making a day-trip out of it, rather than pay for a hotel room. I did that last month when I attended the December Seattle React.js meetup – but driving back the same day means I have to bail out early if I want to get back before midnight, and I can’t really hang out for beers afterwards since I need to drive.

If the traffic is good, and there are no border delays, Google Maps says it only takes about 2 12 hours. But usually there is traffic in Vancouver and/or Seattle, delays at the border, and I usually stop in Bellingham for gas and Starbucks (it’s nice to unwind after being grilled by the border agents). I have a NEXUS card, so usually I can minimize the border wait – but I can only use it if everybody in the car has one, which usually isn’t the case if I’m not traveling alone.

Last year, I bought a Karma Go Wifi hotspot to replace my old expensive Telus US Data Roaming plan. The data isn’t terribly cheap at $10US/GB (if you buy $99US at a time), but it’s ideal for the occasional trip to the USA, since the prepaid data doesn’t expire. They occasionally offer the prepaid data for sale at a discount, so it’s good to wait for the sales.

Karma Go

Karma Go

On this trip, we had two iPhones and a laptop. It’s convenient to just leave the Wifi hotspot on – I’ve got an extra battery pack I bought in Japan so it will last a full day. The drawback to using a Wifi hotspot is that all the apps on the iPhones will sync just like they are on my home wifi, and use up a lot of data. Plus I tend to take a lot of high-res photos and videos that all get synced up to the cloud.

Data Usage

Data Usage

You can see I burned through a fair amount of data. The Karma Go uses Sprint’s LTE network. I’ve found that the coverage is a bit spotty – hopefully it improves over time. Overall, it’s a decent road warrior setup.

The CAD to USD exchange rate is pretty brutal right now. I bought $200 USD at the currency exchange shop, and I had to pay $283 CAD. Ouch. On the flip side, gas is so cheap right now – I was able to fill up a tank in Bellingham for $20US!

Startup Grind Seattle with Bill Bryant

We drove down on Tuesday so I could check out the Startup Grind Seattle event featuring William Bryant from DFJ Venture Capital in Silicon Valley. It was held at Galvanize Pioneer Square . Due to brutal traffic, we arrived a bit late, missing the pre-talk networking and the introductions.

Startup Grind Seattle - Mike Grabham interviews Bill Bryant

Startup Grind Seattle - Mike Grabham interviews Bill Bryant

It was interesting hearing the perspective of a former Seattle entrepreneur who was now a VC in Silicon Valley. The event was streamed live, and you can see the recorded video on YouTube.

After the talk, I hung out a bit, and introduced my new side project to a few people. I’m calling it Cascadarama. It’s shaping up to be a guide to the entrepreneurial ecosystem in the Pacific Northwest - Seattle, Vancouver, Portland, Boise + outlying areas. There’s not much to show yet, apart from a Twitter account and some Twitter lists, but behind the scenes, I’m building up some useful datasets, and there will soon be a website and iOS and Android apps. I’ll be sure to blog about it when there’s something more to show.

After the event, we checked in to a Travelodge motel I had found online at in the North part of Seattle. It was inexpensive, and allowed dogs. But we discovered that they went overboard with the room deodorant. The room air quality was terrible and it really set off my allergies. I suspect the over-use of deodorant might have something to do with the legalization of weed in Washington state. Next trip, I think I’ll shell out a bit more cash for a nicer hotel.

Exploring Fremont

The next morning we had an excellent coffee at MiiR in Fremont. Really good.

Afterwards, we took the dog to Gas Works Park. Such a cool place.

Gas Works Park

Gas Works Park

Lake Union and the Space Needle

Lake Union and the Space Needle

Gas Works Park Panorama

Gas Works Park Panorama (click for gigantic version)

React.js Meetup

In the evening, I attended the React Office Hours Meetup which was hosted at Formidable Labs in Fremont. It’s a secondary event hosted by the Seattle React.js Meetup group, in addition to their regular monthly meetup. I understand that the plan is for it to be a regular event.

I heard about the “Office Hours” event in December, when I attended the main meetup. I really wanted to check it out because I’ve been working deeply with some of Formidable’s open source code. For one of our awesome clients at Backblend, I’ve spent the last few months building a classroom experience using React and Firebase. The key part of the experience is built with Spectacle, a presentation framework written by Ken Wheeler from Formidable. So, I was really interested in talking with some more people from the company and to show them my work. Our client’s project should be launching this spring – I’ll be sure to blog about it when that happens.

Office Hours at Formidable Labs

Office Hours at Formidable Labs

The idea behind the “Office Hours” event is that a piece of code will be be presented, and everybody will be invited to check it out and then set free to work in the office and try to do something with it. The code this time (available on GitHub) shows how to use some public Open Data (Bicycle Trips on the Fremont bridge) and visualize it using Formidable’s very cool Victory visualization component.

React Office Hours Victory Demo

React Office Hours Victory Demo

Unfortunately, GitHub had an outage at the exact moment that the Meetup was happening, so everybody was reduced to just viewing the presentation.

I spent most of the event hanging out in the back talking with some of the people from Formidable, Ryan Florence (of react-router fame), and other people from the meetup. What a great crowd. Even though I’m based in Vancouver, I found that I know a surprising number of people in common.

Lego at Formidable Labs

Lego at Formidable Labs

It was a great event. I definitely want to check it out again.

Back in Vancouver

The Seattle trip was fun and worthwhile. I think I’m going to try to get down there on a roughly monthly basis, if time permits. I also want to sneak in a Portland trip occasionally as well. I’ll be sure to blog about them (hopefully with a shorter delay next time).

At Backblend, I’m wrapping up my current client project, and I am going to have availability going forward for new clients. I’m pretty excited about the possibilities with React and React Native. If you have some work, give me a shout at or hit me up on Twitter.

Talk: VanJS January 2016

Yesterday, for the first time in a while, I went to the VanJS Meetup at UBC Robson Square. It was good catching up with some friends I haven’t spoken with for several months. This year, I’m going to try to put myself out there some more, and get out to more meetups – and blog about them too.

The first talk of the evening was by Brooklyn Zelenka of Metalab on the topic of Facebook’s Relay and GraphQL.

Brooklyn Zelenka on Relay

Brooklyn Zelenka talking about Facebook Relay

It was an excellent talk.

I’ve been following the project from a distance, since Facebook first announced it last February. They finally released the code in August, but I was a bit too buried in project work to try it out. I’m very intrigued by the potential to simplify some hairy data fetching logic, but it does seem to be quite a complex thing that with a bit of a learning curve. I’ve been surprised to have already encountered it in one potential client project that came to us as a sales lead, so I think I’m going to have to dive into a project with it at some point in order to truly understand it.

Brooklyn talked about the experience integrating it into an existing React app that was originally written using Marty.js. I was also using that framework early last year, so I could sort of understand where they were coming from.

Relay is still a really new technology. Brooklyn finished off with the following slide with some pros and cons that they discovered.

Relay Pros and Cons

Relay Pros and Cons

During the Q&A - several people had questions about how to integrate it with systems that manage client-side state, such as Redux. It should be interesting to see what the community comes up with in the next year.

The next talk was by Julia Allyce and David Luecke from Bitovi on the topic of the DoneJS.

Julia Allyce and David Luecke

Julia Allyce and David Luecke presenting DoneJS

DoneJS is a framework that evolved from the JavaScriptMVC and CanJS frameworks. It’s a more of “batteries included” framework, supporting web and app development (via Cordova), as well as desktop apps. Having built an Ionic app in the spring last year, I’d be interested in seeing how it compares.

They also had some interesting observations on trying to market an open source framework in the crowded JavaScript framework space. I think it’s really hard to get noticed when everybody spends so much time talking about React, Angular, Meteor, etc. Framework fatigue is a big deal.

They’ve posted the slides for the presentation online.

They also had some nice T-Shirts to give away. Thanks Bitovi!

We’re wrapping up some client work at Backblend, and I’m switching gears to find that next client or project that I can dedicate myself to for the next 6 to 12 months. React Native perhaps? Keep tuned to the blog to see what I’ve been up to.

Interested? Give me a shout at or hit me up on Twitter.

Talk: Human API - Scaling docker microservices w/ Mesos & Kafka

On Wednesday, I went to see a talk titled Scaling docker microservices w/ Mesos & Kafka ~ Human API. I was super excited by the topic, as I’m also using Docker and Kafka in production. You’re actually using it by reading this blog! I was also excited because I used to work with one of the presenters Rob Gulewich at Joyent.

The last time I was in an OpenDNS office was 10 years ago in San Francisco when I was picking up an old donated server from David Ulevitch for a community co-location service I was involved in. Some of the organizers were Will Doherty and David Weekly. (The site is a zombie -- the colo shut down a long time ago)

The event was hosted at the OpenDNS offices in Vancouver as part of their “OpenLate YVR“ series of tech talks. This was the first time I’d visited their offices in Vancouver, located in the historic Royal Bank Building on Hastings.

Human API’s business is to provide an API which aggregates health data from many third-party sources, and normalizes it so it can be accessed from a single API. Sort of like Apple’s HealthKit, but in the cloud. Their MVP was built to aggregate data from various fitness tracking devices (Fitbit, Jawbone, Withings, etc.), but with their Series A investment, they are now integrating things like medical records data, which is where the money is. The founders are from Vancouver, relocated to San Francisco, but they have opened an engineering office here. It’s really an exciting company.

Chris MacDonald and Rob Gulewich

Presenters: Chris MacDonald and Rob Gulewich

Chris and Rob talked about how they changed where they were running their microservices (mostly written in Node.js) from Elastic Beanstalk to Docker containers managed by Mesos. They use Jenkins to do automated deployment. The actual EC2 instances are constructed using Ansible, Terraform and Packer. Instead of using Elastic Load Balancer, which doesn’t really work well with Mesos, they wrote their own layer that uses Consul and confd to configure nginx instances.

The slides are available.


Another shot of the crowd. (I’d say the audience was 90%+ male, but I don’t think that’s anybody’s fault)

To tie everything together, all the microservices output logs to a Kafka cluster. This gives them the ability to scale and deal with large amounts of data. They can replay data if necessary. They can construct data pipelines. And they can use it to store metrics that can be fed into services such as Graphite and Grafana.

Slide: Just point it at Kafka

I love that they independently came up with a similar set of tools as what we’ve been using for our side project at Backblend. Our setup is a bit newer and simpler - I went with stock AWS CloudFormation and ECS instead of Mesos, but I built a Kafka cluster as well, with the intention of using it as the primary store for all the data we generate. I’ll be blogging more about that in the future.


Pretty awesome talk! Human API is hiring in Vancouver and Redwood City. And if you’d like to ask me more about my Kafka setup, hit me up on Twitter.