Graham King

Solvitas perambulum

Cal Henderson – Building Flickr

Summary
Cal Henderson's talk on building Flickr at the Future of Web Applications conference emphasized several key principles. Collaboration focuses on understanding user needs and leveraging the network effect to enhance user experiences. Aggregation suggests presenting data in diverse ways beyond user-driven groupings, such as by popularity or interestingness. He advocates for Open APIs to evolve websites into web services, enabling broader access. Clean URLs should be user-centric and stable. AJAX enhances asynchronous user interactions, while Unicode ensures global text compatibility. Integration with desktop platforms and mobile phones improves user experience, with APIs enabling desktop functionalities and custom mobile pages optimizing usability. Open data policies allow users to import/export data with metadata, providing security. Finally, open content ensures users retain ownership and licensing control of their uploads.

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.

Collaboration

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

Aggregation

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

AJAX

It’s Asynchronous. It streamlines user interactions.

Unicode

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.

http://www.flickr.com