Graham King

Solvitas perambulum

Cal Henderson – Building Flickr

These are the notes I took during Cal Henderson’s talk on Building Flickr at the Future of Web Applications conference in London on Wednesday 8th February.

Lars Ploughman posted a great mind map of the talk.


  • Try and figure out what people need; this is not always what they say they need.
  • Network effect: When people get their friends to sign up, it makes their experience better.


  • Instead of always grouping data by user, we can slice it in other interesting ways:
    • Most recently uploaded
    • Most popular
    • By tag
    • By weighted ‘interestingness’ algorithm

Open APIs

By API the Web 2.0 people mean a web service API: REST, SOAP, XML RPC, etc. You need an API to for your web client anyway, so clean it up and make it public.

The evolution is: web site -> web application -> web service

Clean URLs

Don’t expose internals or physical structure on the URL. They should reflect a consistent, logical structure, the way the user thinks about it. mod_rewrite enables this. URLs should never change, otherwise you break links.


It’s Asynchronous. It streamlines user interactions.


Internationalisation and Localisation. Store, present and receive all textual data as UTF-8.

Desktop / Platform integration

Backed by the API. With an API for your app, you can write desktop apps. Some interactions on the web are difficult and/or slow (such as uploading lots of pictures). Desktop apps can have drag and drop for example.

It doesn’t have to be a full fledged desktop app – use Bookmarklets, Firefox plugins, etc.

Integrate with e-mail; every user has it and uses it daily. It’s often difficult to get data off mobile phones, but they can do e-mail, so provide an e-mail uploader. Send e-mail notifications.

Mobile phones

They mostly support XHTML-Mobile, a cut down version of XHTML. Build custom pages for mobiles because the screens are so small. Re-think what is on the page. Cut down as much as possible.

Open data

Allow users to import / export their data. Include the meta-data as well. This makes people feel safer about using your service.

Open content

When a user uploads something, they still own it. They still control the licensing.