Creative Commons

Screenshot of

At Affinity Bridge, we worked on a major redesign of I was able to contribute a small but meaningful piece: an interactive stream of Creative Commons-licensed work which appears at the bottom of some pages. We designed this component to be lightweight, ready to show hundreds of different items.

It uses modern hardware accelerated animations, and it is carefully optimized to minimize resource overhead. The client is able to add additional tiles using WordPress’s admin dashboard.

I enjoyed the process of iterating through different design choices, and I was really happy with the end result. I look forward to more content being added in the future.

The Simons Foundation

Screenshot of

Affinity Bridge was hired to migrate to Drupal 8, along with a light redesign. I implemented the new site’s front-end as a custom-built Drupal 8 theme. I enjoyed the opportunity to learn more about Drupal 8, and to take a leading role building the front-end for a large website with many years of content.

The site’s theme includes many carefully designed features that change based on device width. I was particularly pleased with how the site’s various slideshows and featured content blocks turned out, with images and titles that look beautiful in several different configurations.

North Light Images website

Screenshot of
  • Personal project

Stuart McCall needed a new website for North Light Images, his photography business. And, later, for his art portfolio. I designed both sites to be responsive for different kinds of devices, touch-friendly, and delightful to interact with.

I created an image gallery with a carefully tuned single-page design, focusing on performance and simplicity. The images and videos are always front and centre, but relevant information remains a glance away.  I am in the process of migrating both sites to a shared codebase with a Django backend.

Ubuntu installer slideshow

Screenshot of Ubuntu's installer slideshow
  • Personal project

Ubiquity Slideshow is a simple presentation that appears while users install the Ubuntu operating system. The project aims to encourage and inspire people so they are more comfortable using the system. I created it with the help of some talented designers in the Ubuntu community.

The slideshow has been included since Ubuntu 9.10, shipping to millions of users. It is implemented as HTML and JavaScript, embedded in the installer using WebkitGTK.

The project has seen many contributors through its life and it also includes slideshows for different Ubuntu flavours such as Xubuntu and Kubuntu. The project’s build system uses po4a, so it is easy for translators to localize the slideshow through Launchpad’s web interface for translations. The slideshow currently supports over 50 languages.

At this point, the design and copy is contributed by Canonical’s design team. I implemented those designs and I wrote code to fit the pieces together — always making sure slideshows are easy to create. Since I wandered off to other places, I have enjoyed watching this project from the sidelines. I am glad that it is generally running fine: people know how to continue maintaining it so Ubuntu makes a good first impression, and it appears to be relatively trouble-free.

Working on the slideshow gave me a wonderful opportunity to interact with different people in the Ubuntu community, and I greatly enjoyed it.

Attack of the Crimson Plumber

  • Personal project

If I’m going to put a 48 hour game jam entry in my portfolio, it has to be this one. I really enjoyed making this game for Ludum Dare. It’s written with Dart, using HTML Canvas. It was a good opportunity to learn both of those under pressure.

The end result was not a great game, but I enjoy the intensity of building something under a ridiculous deadline: it is very satisfying to turn a project into something salvageable at the 11th hour, and it is interesting how a small detail – like a ghosting effect – can have a transformative effect on the final outcome.

Where Will Santa Live?

Where Will Santa Live? was the David Suzuki Foundation’s Christmas fundraising campaign in 2011. It was a simple, whimsical website that inspired talk about climate change and invited people to donate to the foundation by purchasing e-cards as symbolic gifts.

Working with Public Inc, Erika Rathje and some other very excellent people at DSF, I implemented the site’s layout and I wrote a heap of JavaScript to wire it together (along with a functioning non-JavaScript fallback). We used Google Analytics to make detailed measurements about people’s interactions with the site so we could improve it throughout the campaign.

In the end, we raised some money and we attracted an interesting flurry of attention from all sorts of people. Rex Murphy really didn’t like it, and Carin Bondar called it “one of the cleverest Christmas campaigns she’d seen.”


  • Google Summer of Code 2010

Harvest was a web service intended to guide people who wish to contribute to Ubuntu. It aggregated small bug reports and other quick tasks which could use attention. For Google Summer of Code 2010, I worked with Daniel Holbach to design and implement its new web front-end.

Part of my project was to make Harvest fast. It maintained a large database with very similar data, so it was up to Harvest’s interface to make that data particularly useful. I added filters to quickly narrow down results, though my implementation was unusual: searching happened in real time. As the user selects filters, results immediately start to appear. This improved perceived performance and encouraged exploration. The system was carefully tuned to keep the number of unnecessary database hits to a minimum. Whenever something is pulled from the database, there is some expectation it will be useful to the end user.

I made many changes to Harvest’s Django backend, while the frontend was augmented with jQuery’s Ajax utilities to streamline interaction. I had a lot to write about the project, so, I went ahead and wrote a short retrospective. In May 2011, I updated the design to match Ubuntu’s official branding guidelines.