Wildflower 2012

6 May 2012

Today was my 3rd time doing the Olympic Course at Wildflower. It wasn’t entirely unexpected that I’d be slower than last year; having been plagued by a hamstring strain through the winter and only recently getting back up to distance, and from suffering horrible hay-fever the last few weeks.

My swim was 2 minutes faster than last year, but my bike was 6 minutes slower–even though it felt like I was hauling ass–and my run was 2 minutes slower–though it felt much slower because of a really bad stitch/side-ache that came on after about a mile.

Still, it was a fun weekend and a good race.

Swim: 00:23:02
Transition 1: 00:04:18
Bike: 01:17:21 (19:20 mph avg.)
Transition 2: 00:01:02
Run: 00:48:03 (7:44 min/mile avg.)
Total: 02:33:46

(T1 wasn’t particularly fast either, I had some problems getting my wetsuit off and then putting socks on)

Almost Obvious

14 March 2012

After six and a half years I’ve decided to leave Google. I’ve had a great time, met a tonne of amazing people, and learned a lot. But I have decided it’s time to move on, try something a bit different, and expose myself to different challenges.

Over the years I worked on features such as Gmail Chat, helped start the massive undertaking that was the Gmail frontend rewrite, and integrated gadgets into Gmail. Most of my work, though, could be classed as “infrastructural”; helping to keep Gmail development ticking and making the battle-hardened components available to other teams at Google.

In parallel, I co-founded The Closure Library with Erik and saw it grow from a small 20% project to become the de facto JS library at Google, receiving contributions from hundreds of engineers across dozens of projects. It was eventually open sourced in 2009 and now has an awesome team working on it fulltime.

My work on infrastructure meant moving onto Google+ was a logical progression, where I have worked for the last 18-months as tech-lead of the excellent group of guys who make up the Frontend Infrastructure Team.

But, what’s next?

I’m still interested in what can be achieved by throwing together some computer-codez and by the possibilities afforded by the web. I think we’re living in really interesting times and there are many companies doing amazing things.

Ultimately I was most excited at the opportunity to work somewhere that was still small, has a great team, and has lofty goals. The choice then was Obvious.

Alaska

22 February 2012

I’m in Alaska this week, heliskiing with a group of friends. We’ve got up in the heli for two days so far, and done a day of cat skiing. While it is cloudy and a bit foggy the snow is great. We’re hoping for a blue-bird day before our time is up.

I’m posting photos to Google+ as the week progresses.

First Camera

10 February 2012

On a recent visit to my parents in England I found my very first point-and-shoot, a gift from my Grandma for my 5th birthday. It was all crusted up with battery acid, but still had a film in. I of course had it processed and was surprised to find six photos from our 1990 family trip to Venice.

The photos are bleached out, burnt, or double-exposed, but seem rather apropos in this era of Instagram and the burgeoning cult of lo-fi.

There are a few more photos on Picasa.

Mauna Kea

11 January 2012

Photos from one of my favorite places on the planet:

Redesign

21 December 2011

I recently redesigned this site with the primary goal of improving my photography portfolio. If you don’t care about web dev you can stop reading now and just go take a look at the photos. Let me know what you think.

Ok, so here are some tech notes on the implementation, though this is all pretty standard these days.

For the photos page I wanted to make use of the HTML5 History APIs. But rather than make the photo page standalone I decided to “Ajaxify” the whole site. The site dynamically loads content, avoiding full page loads, using similar patterns to the ones we employed in Gmail and Google+.

If you navigate directly to a certain page it will be rendered on the server. Once the page has loaded, the JavaScript will listen for clicks, intercept any links that can be handled client side, request the page contents via an XMLHttpRequest, update the UI, and change the browser location using history.pushState. For all pages except the photos page, the XHR simply requests the page with ?mode=body which tells the sever not to render the chrome.

This was made simpler by the fact that I’d already written a small library (Surface) that does all the heavy lifting and simplifies the management of single-page applications. The trickiest part was getting WordPress to work properly and unfortunately meant changes that will need to be reintegrated after every WordPress update.

The photos page is all rendered client-side and simply requests the photo data from the server. The photos are stored on Flickr and I actually use the Flickr API to get the list of photos for each album rather than hard coding them.

The top navigation uses Raleway from the Google Web Fonts archive.

The site works best in the latest Chrome and Firefox builds, but IE degrades to using full page navigations, though the photos page only works in IE9+.