Philip Guo (Phil Guo, Philip J. Guo, Philip Jia Guo, pgbovine)

Random Browser: An innovative hierarchical photo browsing application

Motivation: The limitations of existing photo browsing applications

While it's easy to look through a few dozen photos using most existing photo browsing applications, I have never been able to use them to quickly and enjoyably browse through a large collection of tens of thousands of photos.

This is because either the application forces me to view a few dozens photos in one folder at a time, or presents me with an overwhelming amount of thumbnails at once and forces me to sequentially browse through all of my photos (as seen in the above screenshot from Apple's iPhoto). Of course, I could always view fewer thumbnails by making each of them larger, but then I would need to do even more scrolling to browse around my collection. I can easily look through all photos taken on one particular day, but cannot get an overview of all photos taken over the course of a few months or years.

Introducing Random Browser: Hierarchical browsing ... with a touch of randomness

In April 2006, I set out to create a new photo browser that could overcome some of the limitations of existing browser applications. I aimed to provide a minimalist user interface, a hierarchical (rather than linear) method to efficiently and effective browse through large collections of tens of thousands or more photos, and most importantly, an enjoyable user experience—something that I would actually have fun using to look through my own photos. The result was Random Browser!

Here's a walkthrough of how it works:

When I launch Random Browser, it shows 15 thumbnails of photos semi-randomly selected from throughout my entire timeline of photos (I've imported 14,000 photos taken between the years of 2000 and 2006). Click on the screenshot below to see a full-sized version:

Just like using a normal photo browser, I can left-click on any of the thumbnails to see a photo at full size. Now, here is the hierarchical part: Let's say I want to zoom in to view 15 photos around a certain time period. By right-clicking on a thumbnail, the browser will move that thumbnail to the center position and populate the 14 spots around it with photos semi-randomly selected from a time period around when that photo was taken (the original 15 thumbnails move down to the dock at the bottom of the screen). If I right-click on the second to last photo (row 3, column 4) in the above screenshot, it will move to the center position, resulting in the screenshot below:

Click on the above screenshot to view it at full size, and you'll notice that the date range of the 15 thumbnails is now a few months (May 2006 to August 2006) instead of the original 6 years (2000 to 2006). I've 'zoomed in' to view photos spanning a few months rather than my entire timeline. I can repeat the same 'zooming in' process by right-clicking on any thumbnail and seeing photos that are grouped closer and closer in time until I get to the bottom-most layer where I'm viewing 15 photos taken consecutively on the same day.

At any time, I can click on any thumbnail and view a full-sized version of it. All the thumbnails move into the dock, and I can select them to view at full size as well:

The user experience

Random Browser considers your photo collection as a hierarchy with 15 elements (photos) at each level. You can use the keyboard and mouse to move down, up, and across levels in the hierarchy, viewing both thumbnails and full-sized photos along the way. This is a very efficient way to browse through a large photo collection because the number of levels in your hierarchy is only logarithm base 15 of the total of number of photos in your collection. For my 14,000 photos, the hierarchy is only 4 levels deep, so that means I will have to right-click on thumbnails at most 4 times before reaching a detailed view of photos taken sequentially in time.

If you're familiar with your photo collection, it's very fast to find a particular photo or a group of photos taken at a particular event. Because I start in the most general view of the entire timeline spanning several years, for my first click, all I need to do is remember what year the desired event occurred. Then I look for the thumbnail (and date label underneath it) that reminds me of approximately which month or week the event occurred and click on that one to zoom in again. The thumbnails provide powerful visual context, reminding me of what events are nearby in time to my target, thereby speeding up my search. I then repeat the same process at most a handful of times (bounded by the number of levels in my hierarchy) before I find my desired photos.

The most amazing emotional effect of browsing through my photo collection using Random Browser is that, as I browse, it really evokes memories of what I did at certain points in my life over the past few years, much more strongly than when I was using a traditional photo browser. That's because I am no longer restricted to a myopic linear view of photos in time. The ability to zoom in and out freely to various time scales allows me to connect with my photos in interesting ways while browsing: For example, when I am viewing several months' worth of photos at once, it often reminds me of a particular semester at college or summer break; when I am viewing several weeks' worth, it reminds me of a particular vacation I took; when I am viewing several days' worth, it reminds me of a particularly fun weekend; and when I am viewing one days' worth, it reminds me of one particular fun event. With traditional photo browsers, I only get one of those views, the most myopic one—I often only see a few dozen images all taken at around the same time, then scroll to another few dozen images all taken at around some other time, but I never get to see a sampling of photos taken at different times, so that I never get to step back and see the photos in a broader context.

It's hard to describe the exact emotional effects of browsing through my photo collection using Random Browser, but I just have lots of fun using it. I think a big part of the enjoyment comes from the fact that I use Random Browser to view my own personal photo collection—it's not nearly as fun to use it to browse through, say, stock photographs downloaded from the web. That's because, to elicit those nostalgic feelings and fond memories, I really need to be personally connected with the photos so that I can get a feel for the differing scales of the timeline and what they mean for me personally. I hope that you will soon be able to try out Random Browser so that you can see what I mean. :)

Ok, enough hype ... can I try it out now?

Download the source code (last updated in July 2007, so no guarantees whether it will still work!)

[Update: On 2012-07-15, a user was able to get Random Browser to work with Python 2.6, PIL 1.1.7 and pygame 1.9.1.]

I will write its user manual at some indefinite time in the near future (whenever I feel like procrastinating from work). The more requests I receive, the more motivated I will be to write some documentation.

The good news is that Random Browser is truly cross-platform (written in Python using the Pygame and PIL libraries), so it will probably run fine on your computer—I've successfully run it on Windows XP, Apple Mac OS X, and Linux. But be forewarned: the bad news is that Random Browser is not a well-polished shrink-wrapped piece of software that your grandma would know how to install and set-up. It will take a moderate amount of know-how with the command line to be able to successfully install it and to import your photos into a collection that it can recognize.

Created: 2007-03-03
Last modified: 2007-03-22
Related pages tagged as software: