February 2016

Personal | Play | Canvas | Emergent Behavior | Flocking

Go library for building Dropbox backed photo sites.


June 2015

Personal | Go | Photos | Dropbox

Go library for building Dropbox backed photo sites.

Lyra Today

January 2015

Personal | Photos | Dropbox

Dropbox powered website that makes it really easy for me to post a single photo of Lyra.


December 2014

Personal | Go | Feed | PubSubHubbub | Web Sockets

A Go library that forwards feed updates to Web Sockets.


June 2014

Personal | HTML5 | Video | Canvas

Experimenting with HTML5 Video APIs and canvas manipulations.


January 2014

Personal | Go | Feed | PubSubHubbub

A PubSubHubbub subscriber client library for Go (golang).


July 2013

Work | AWS | SQS

A little program for stashing messages that are queued up in Amazon's SQS. Use it as a disaster recovery mechanism to drain a queue, or use it to guarantee delivery of transaction logs to persistent storage.


March 2013

Protobufs | JavaScript | Node

A JavaScript protocol buffer schema parser and template based code generator.

GitHub ReviewLog

January 2013

Tools | GitHub | Chrome | Extension

A Chrome extension aimed at making it easier to keep track of open Pull Requests across all your GitHub projects.

Image Entropy

December 2012

Play | Eye-Candy

Learning about, and experimenting with, the entropy of images.


November 2012

Personal | Google+ | Feed | IFTTT | Heroku

Small node server for generating RSS feeds for your public Google+ posts. The project is not intended to be a public service. I have it running on Heroku and a handful of people using it to power IFTTT recipes.


October 2012

Work | Obvious | Node | Testing

Nodeunit compatible library for writing HTTP level functional tests.


August 2012

Work | Obvious | Medium

Initial preview release of a new publishing platform for the web.


May 2012

Work | Obvious | Node | Closure | Templates

Utility for working with Closure Templates, aka Soy, from with a node.js application.

Matrix Coloring

February 2012

Play | Eye-Candy

A quick JS solution to the matrix coloring problem.

Online Exposure Calculator

November 2011

Personal | Photography | Tools

Online exposure calculator. Plug in your camera settings, lock the exposure, and tweak. Then go take some pictures.


November 2011

Open Source | Closure | JavaScript | History

Closure based JavaScript library for managing screens/views in a Single-Page Application.


November 2011

Personal | Flickr | HTML5

A web app for downloading sets of Flickr photos as a single zip file.

Tone Generator

October 2011

Demo | Example | HTML5 | Audio | JavaScript

Really minimal example of using the Web Audio APIs to generate a tone.


June 2011

Work | Google | Google+

Led the "Frontend Infrastructure" team from the start of project until the end of 2011. We worked on the client-side framework, release process, performance, productivity, and dev team on-boarding.


March 2010

Play | Inspiration | Tool

Simply shows a random english turn-of-phrase or idiom along with its meaning. Written to help get inspiration for a photography project.


February 2010

JavaScript | PHP | Closure Compiler

A PHP class that makes it easy to serve optimized JavaScript sources, using Google's Closure Compiler web service.

Closure Library

November 2009

Work | Google | Closure | JavaScript | 20%

Co-founded the Closure Library as a 20% project in 2006 as part of the Gmail rewrite, it received gradual uptake across Google and was open-sourced in 2009.

Fittr Flickr

October 2009

Personal | Chrome | Extension | Flickr

A Chrome Extension that adds functionality to the photo sharing site Flickr. Features include keyboard shortcuts, nice replies, access to in-line EXIF, and convenient links to services such as Big Huge Labs and Twitter.


October 2008

Play | l10n

A little toy for psuedo-localizing text, Śօʍêեիîդǥ ɭїқҽ էћїś

Gadgets in Gmail

October 2008

Work | Google | Gmail | Gadgets

Led team that brought gadget support to Gmail.

Gmail Frontend Rewrite

October 2007

Work | Google | Gmail

Member of the team that pioneered a rewrite of the Gmail client side codebase.


May 2007

Personal | Facebook | Personal data logging

I attended the Facebook hackathon in May 2007 and put together a simple "Where am I?" app based on their new platform. It allowed you to track your and your friend's locations as you travel around the world on holidays.

As Facebook updated their platform I couldn't keep it up to date, so I pulled the app.


May 2007

Play | Traceroute | Google Maps

Visualizing traceroutes on Google Maps.


March 2007

JavaScript | Internet Explorer | Performance | Browser Quirks

Code for benchmarking Internet Explorer's Garbage Collection routines.

Gmail Chat

February 2006

Work | Google | Gmail

Gmail Chat was the first project I worked on at Google. I worked on the FE, on things such as the rotating emoticons, chat formatting, and general UI work.


May 2005

Play | JavaScript | DHTML | History

iBrowser is an incomplete interface experiment inspired by the iPod menu.


April 2005

Play | Images | Search | Scrapping | Randomness

Random images from across the interweb.

Floys 1, Floys 2

November 2003

Play | Eye-Candy | Java | Applet | Emergent Behavior | Flocking

Two visualizations of an experiment into flocking behavior. Many entities following a few simple rules produce emergent interactions that appear more complex than their component parts.



Play | JavaScript | 3D

Experiments from 2001 into creating a 3D particle system with DHTML.

« Go to my main site »