Updates Instagram Photography Projects About Contact

The three axes of engineering leadership

1 September 2013

Within the tech industry, managers are oft lamented.

Continue reading on Medium »

Mauna Kea, HI

1 September 2013

Continue reading on Medium »

Summer Adventuring

1 September 2013

One second a dayBiergarten SF Riding through downtown SF after dropping Ada with Tessa Driving under the freeway after seeing Jeff in the…

Continue reading on Medium »

Ciro-Flex Rapax

28 August 2013

I have a bit of a camera problem. This is one of my favorites. It’s a medium format twin-lens reflex.

Continue reading on Medium »

Folding Brownie

28 August 2013

This is my great-grandfather’s folding brownie. It lasted a surprisingly long time, used first to photograph my mother as a child and then…

Continue reading on Medium »

Howard and Mary, San Francisco, CA

28 August 2013

Continue reading on Medium »

Dear Mobile Phone Manufacturers,

28 August 2013

Your industrial designers and product engineers produce masterpieces.

Continue reading on Medium »

Fast upload previews aka. yak shave #645

28 August 2013

So you have a cool web app that allows people to upload photos.

Continue reading on Medium »

Beyond pushState — building single page applications

28 August 2013

Single page applications are on the rise, and in many cases they make the web faster, richer, and more interactive.

Continue reading on Medium »

Old Dry Dock

28 August 2013

Continue reading on Medium »

Gmail and the GC

28 August 2013

Back in 2006 I was working on the Gmail team and we were undertaking a complete rewrite of the frontend code.

Continue reading on Medium »

Rise of the SPA

28 August 2013

Numerous studies have shown that even modest improvements in latency can have measurable impact on usage.

Continue reading on Medium »

json ⊄ js

28 August 2013

Conventional wisdom says that JSON is a subset of JavaScript.

Continue reading on Medium »

Zion National Park, Utah

28 August 2013

Continue reading on Medium »

Whiteboarding

28 August 2013

If you are interviewing for a programming job it is almost inevitable that you will be asked to do some coding on a whiteboard.

Continue reading on Medium »

In the clear

28 August 2013

Continue reading on Medium »

At some stage…

28 August 2013

… I would like to: * Complete an iron man. * Become a qualified EMT.

Continue reading on Medium »

Three up

28 August 2013

Continue reading on Medium »

Enlightened

28 August 2013

Continue reading on Medium »

Stairwell

28 August 2013

Continue reading on Medium »

Eye in the sky

28 August 2013

Continue reading on Medium »

In the shadows

28 August 2013

Continue reading on Medium »

Why are the levels of a building called storeys?

28 August 2013

Storey (or story in US English) is derived from historia meaning narrative.

Continue reading on Medium »

Velocity vs. Quality

28 August 2013

At some point in every software development project the question of velocity vs.

Continue reading on Medium »

Ada Havanese

28 August 2013

Continue reading on Medium »

On the sofa

28 August 2013

I’d just got back from Borneo, having come home sooner than intended.

Continue reading on Medium »

Lugupeetud mobiiltelefonide tootjad

28 August 2013

Teie tööstus disainerid ja toote insenerid toota meistriteoseid.

Continue reading on Medium »

Brazilian Post

28 August 2013

Começo explicando que não ia postar este texto na internet.

Continue reading on Medium »

By the collection owner

28 August 2013

One

Continue reading on Medium »

My Post

28 August 2013

In a collection

Continue reading on Medium »

The three axes of engineering leadership

17 August 2013

Thoughts on the roles played by engineering managers, and some common pitfalls.

Continue reading on Medium »

Mauna Kea, HI

16 July 2013

Continue reading on Medium »

Tubing

16 July 2013

Summer is not San Francisco’s best time of year. The heat of the Central Valley sucks in air from the Pacific, cooled by the California Current coming down from the Arctic, and we end off stuck in a bank of fog. So when Tessa read an article in 7×7 Magazine about a place to go t…

Continue reading on Medium »

Ciro-Flex Rapax

16 July 2013

I have a bit of a camera problem. This is one of my favorites. It’s a medium format twin-lens reflex.

Continue reading on Medium »

Folding Brownie

16 July 2013

This is my great-grandfather’s folding brownie. It lasted a surprisingly long time, used first to photograph my mother as a child and then being used, herself, when at university.

Continue reading on Medium »

Howard and Mary, San Francisco, CA

16 July 2013

Continue reading on Medium »

Cheetah in the heat haze; Serengeti, Tanzania

16 July 2013

Continue reading on Medium »

We raced with eggs and spoons.

16 July 2013

Continue reading on Medium »

Taman Nasional Tanjung Puting, Kalimantan, Indonesia

16 July 2013

Continue reading on Medium »

Alyeska, AK

16 July 2013

Continue reading on Medium »

Old Dry Dock

16 July 2013

Continue reading on Medium »

Dear Mobile Phone Manufacturers,

4 June 2013

Your industrial designers and product engineers produce masterpieces. Beautifully constructed artifacts of shaped glass, brushed metal, and electrical wizardry. The tactile and visual sensations you deliver create a lust that drives people to stand in line for hours and pay hund…

Continue reading on Medium »

Fast upload previews aka. yak shave #645

4 June 2013

So you have a cool web app that allows people to upload photos. Your backend engineers have built a service that resizes, crops, and optimizes the photos so that you can fit it nicely into the UI. You already know about the benefits of XMLHttpRequest2 and are using it to upload…

Continue reading on Medium »

Beyond pushState — building single page applications

4 June 2013

Single page applications are on the rise, and in many cases they make the web faster, richer, and more interactive. The HTML5 history APIs have allowed us take advantage of the benefits of SPAs while still allowing pages to be deep linkable, server renderable, and easily shareabl…

Continue reading on Medium »

Gmail and the GC

4 June 2013

Back in 2006 I was working on the Gmail team and we were undertaking a complete rewrite of the frontend code. Gmail’s original web client had strokes of genius in it but was getting really hard to maintain and was limiting new feature development. The new version had a bunch of …

Continue reading on Medium »

Rise of the SPA

4 June 2013

Numerous studies have shown that even modest improvements in latency can have measurable impact on usage. As such, sites should have aggressive goals for both actual and user perceived latency. The most obvious metric is load time: how long does it take for a page to appear infr…

Continue reading on Medium »

json ⊄ js

4 June 2013

Conventional wisdom says that JSON is a subset of JavaScript. The thing is it isn’t. According to the spec JSON strings can contain any unicode character except " or / or control character. This means that the following string is perfectly valid JSON: {"str": "own
ed"} Try c…

Continue reading on Medium »

Zion National Park, Utah

4 June 2013

Continue reading on Medium »

Whiteboarding

4 June 2013

If you are interviewing for a programming job it is almost inevitable that you will be asked to do some coding on a whiteboard. While there has been some criticism of the practice, it is widely employed by the tech giants—Google, Facebook, Microsoft, Amazon—and startups alike. I…

Continue reading on Medium »

In the clear

4 June 2013

Continue reading on Medium »

Snoopy

4 June 2013

Multi-light set up with white seamless. No trampoline.

Continue reading on Medium »

At some stage…

4 June 2013

… I would like to: * Complete an iron man. * Become a qualified EMT. * See the aurora. * Qualify as a PADI Rescue Diver. * Write a book. * Travel on the Trans-Siberian Railway. * Step foot on every continent. * Kayak with killer whales. * Go into space. * Survive the zo…

Continue reading on Medium »

Three up

4 June 2013

Continue reading on Medium »

Enlightened

4 June 2013

Continue reading on Medium »

Stairwell

4 June 2013

Continue reading on Medium »

Eye in the sky

4 June 2013

Continue reading on Medium »

In the shadows

4 June 2013

Continue reading on Medium »

Ledson Castle; Sonoma, CA

4 June 2013

Continue reading on Medium »

Blue Angels; San Francisco, CA

4 June 2013

Continue reading on Medium »

Horse riding; Kenwood, CA

4 June 2013

Continue reading on Medium »

Why are the levels of a building called storeys?

4 June 2013

Storey (or story in US English) is derived from historia meaning narrative. Medieval buildings had carvings depicting myths and legends. The higher the building, the more stories they had. The rest is history. (via 99% Invisible)

Continue reading on Medium »

Velocity vs. Quality

4 June 2013

At some point in every software development project the question of velocity vs. quality inevitably comes up. The idea being that cutting some corners will allow you to move faster and get to your goal sooner. This is a topic I have wrestled with over the years and have come to …

Continue reading on Medium »

Ada Havanese

4 June 2013

Continue reading on Medium »

On the sofa

4 June 2013

I’d just got back from Borneo, having come home sooner than intended. In those days airlines were much more flexible and I’d travelled overland from Pontianak to Kuching to see if I could initiate the 2nd leg of my flight a few days early. After a month of hiking in the jungle an…

Continue reading on Medium »

Climbing Information Center at Paradise; Mount Rainier, WA

4 June 2013

Continue reading on Medium »

Squaw in the summertime

4 June 2013

Continue reading on Medium »

“Dear Mobile Phone Manufacturers,” in Dear (blank),

18 May 2013

Your industrial designers and product engineers produce masterpieces. Beautifully constructed artifacts of shaped glass, brushed metal, and electrical wizardry. The tactile and visual sensations you deliver create a lust that drives people to stand in line for hours and pay hund…

Continue reading on Medium »

“Fast upload previews aka. yak shave #645” in Joys of JavaScript

11 April 2013

So you have a cool web app that allows people to upload photos. Your backend engineers have built a service that resizes, crops, and optimizes the photos so that you can fit it nicely into the UI. You already know about the benefits of XMLHttpRequest2 and are using it to upload…

Continue reading on Medium »

“Beyond pushState — building single page applications” in Joys of JavaScript

14 March 2013

Single page applications are on the rise, and in many cases they make the web faster, richer, and more interactive. The HTML5 history APIs have allowed us take advantage of the benefits of SPAs while still allowing pages to be deep linkable, server renderable, and easily shareabl…

Continue reading on Medium »

“Gmail and the GC” in Joys of JavaScript

10 January 2013

Back in 2006 I was working on the Gmail team and we were undertaking a complete rewrite of the frontend code. Gmail’s original web client had strokes of genius in it but was getting really hard to maintain and was limiting new feature development.

The new version had a bunch of enhancements: including a robust request service, using both XHRs and Iframes (for incremental responses); there was an event driven store that abstracted the UI’s data access; we were now using templates that compiled to JS functions; and we were employing many other techniques that are now considered best practice, but at the time were in their infancy.

Things were going great, then a few months into development we started to notice that the app was performing really badly in Internet Explorer 6. Given that one …

Continue reading on Medium »

“Rise of the SPA” in Tech Talk

7 January 2013

Numerous studies have shown that even modest improvements in latency can have measurable impact on usage. As such, sites should have aggressive goals for both actual and user perceived latency.

The most obvious metric is load time: how long does it take for a page to appear infront of the user. This is influenced by many factors, including DNS lookup, network speed, and how many resources need to be loaded before the page is visible (stylesheets, javascript, images, fonts), etc.

Sites will often optimize and minify stylesheets, combine images into a single sprite, defer loading of javascript, and serve static files from a CDN. All in order to speed up load time. This is great. And once all the resources are cached by the browser can lead to pretty snappy feeling sites.

However, even wit…

Continue reading on Medium »

“json ⊄ js” in Joys of JavaScript

27 December 2012

Conventional wisdom says that JSON is a subset of JavaScript. The thing is it isn’t.

Continue reading on Medium »

“Zion National Park, Utah” in Been There. Loved That.

30 November 2012

Continue reading on Medium »

Whiteboading

20 November 2012

If you are interviewing for a programming job it is almost inevitable that you will be asked to do some coding on a whiteboard. While there has been some criticism of the practice, it is widely employed by the tech giants—Google, Facebook, Microsoft, Amazon—and startups alike.

In this post I’m not commenting on the validity of this style of interview (though I do personally find whiteboard coding a useful way to see how candidates work through problems) but instead pointing out some common pitfalls that can be avoided, given that this is how tech companies interview.

Continue reading on Medium »

Velocity vs. Quality

11 November 2012

At some point in every software development project the question of velocity vs. quality inevitably comes up. The idea being that cutting some corners will allow you to move faster and get to your goal sooner.

This is a topic I have wrestled with over the years and have come to believe that the argument itself is a dangerous false dichotomy, and that reframing the discussion can lead to both a better product and a faster moving team.

Continue reading on Medium »