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 Software Updater

Screenshot of Ubuntu's software updater
  • Personal project

Ubuntu’s software updater originally presented updates as a long list of Debian package names, which was a source of confusion for some users. After a conversation at the Ubuntu Developer Summit, I participated in a rewrite of its UI code following a set of wireframes designed by Matthew Paul Thomas.

Michael Terry worked on a major refactor to support Python 3, while I focused on updating dialogs with new layouts, and improving the flow between those dialogs. I changed the list of packages to use a tree structure, grouped by applications. The list of applications is drawn from application metadata and package metadata, while the grouping itself is based on a set of rules involving package dependencies.

I enjoyed working on a real GTK+ application that is seen by millions of users. I certainly needed to pay extra attention to performance, as well as being careful that the changes I made were simple and understandable so the application would be easy to maintain in the future.


  • 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.