i. Title

Flickr Slide Show Lite (because my grandmother has dial up)

ii. Author(s)

Paul Russell russelldad+harvard@gmail.com ( no collaboration planned )

iii. Abstract

Flickr is a great tool for sharing pictures over the Internet, but their flash based slide shows don't work over dial up. This project is to build a lightweight bookmark-able JavaScript/DHTML based slide show that uses Flickr's REST XML API to get picture information and display it over a dial up connection.

iv. What

Slide Show Selection: Users will navigate to a web page (in my Harvard public directory) and have the ability to choose parameters for a Flickr slide show. On this page they will be able to:

    1. Provide a username and choose from a list of available picture sets for that user.

    2. Choose to view the Interesting pictures from a specific date.

    3. Submit their selection which will bring them to their slide show of choice.

Slide Show Display: Users can navigate to this page via the slide show selection page, or from a bookmarked URL. The page will use the parameters in the URL (these were constructed by the selection page) to make a request to Flickr for the XML containing the picture list and locations. It will then load the pictures into a slide show and allow users to do the following:

    1. Manually navigate forward and backward through the slide show.

    2. Have the slide show play with a configurable delay of 1 to 5 seconds between pictures.

    3. Optionally display the thumbnails of all the pictures in the slide show.

    4. Allow for “Mail this slide show to a friend”.

    5. Provide a link to bookmark the slide show.

The most important feature is the ability to store all of the request parameters in the URL and then to be able to translate that URL into a request to Flickr and the results into a light weight slide show. Pictures will be downloaded to the browser one or two at a time to save on bandwidth.

v. Why

My wife does most of the picture management in our house. With two kids we take a lot of pictures, and we have a lot of relatives that demand frequent picture updates... We also have a problem of backing up pictures. A while back we lost a lot of pictures in a hard drive meets Hindenburg reenactment. Flickr allows us to upload all the pictures and retrieve them in their original size.

Until recently my wife uploaded pictures to Shutterfly which is a free service where they allow people to view low quality copies of your pictures through a light weight slide show. When we realized that Flickr has backup, slide shows, and the ability to link to pictures from other locations, it seemed like a slam dunk. My wife immediately started uploading pictures to Flickr and sending our relatives a link to the slide show..

A Dark Time in the Republic

Everything was going happily along until my grandmother (a shockingly tech savvy elder) announced that she could not see the pictures using the Flickr slide show. My wife promptly announced a plague on Flickr. To her credit she went back to Shutterfly but kept using Flickr as well. So we still have backups and slide shows, but we also have duplication of effort. With 2 kids, who needs duplication off effort?!!

I did exhaustive Google searches for a light weight Flickr viewer and found a lot of people with my "Relative proclaims a plague on Flickr due to its bloated slide show" problem. Unfortunately, no one had proposed any solution other then to beg Flickr to get rid of the flash slide show. This begging appears to have been going on for at least 2 years, so I'm not hopeful of a rapid resolution.

vi. How

A New Hope

Flickr provides a REST API for getting at picture meta data. The resulting meta data is returned in XML format. My plan is to write a simple JavaScript/DHTML slide show viewer. The page will take the arguments provided in the URL and with them construct an AJAX request to Flickr’s API for the desired pictures information. It will then take the resulting XML and use it to populate images into the slide show. The solution will also require a webpage that allows users to provide picture preferences and then construct the slide show URL. This page will likely also use the API to collect information such as the list of available picture sets for any given user.

The two pieces of infrastructure needed are a web server and a CGI. The majority of the functionality exists in the JavaScript and DHTML when run in the users browser. The CGI is needed as an AJAX request Proxy. Modern browser security does not allow AJAX requests across domains. This means that a page hosted on the Harvard website cannot make an AJAX request to the Flickr API as a result of the browser security model. A commonly accepted workaround that does not violate the spirit of this security measure is to implement a proxy CGI on the local server that marshals requests from your page to Flickr and back.

The XML coming back from Flickr will need to be parsed. There are existing open source XML parsers available that can be used to accomplish this parsing.

JavaScript and DHTML are the primary languages/formats. I'll need to do some research into the AJAX proxy. On the surface it looks simple, but I'll need to determine Harvard’s support for CGI, PHP and servlets in order to determine if this should be written in Perl, PHP or Java. I'll also need to get more familiar with AJAX. I've already done some of the research which exposed the domain security issue. There may be other issues lurking. I'm planning to work alone on this project.

vii. Questions

What do you think? Can I meet the requirements for a final project, save my wife from duplicating effort, and lift the "Plague on Flickr" all in one project?