Building Flickr

Contributors
Mark McLaughlinMark McLaughlinaim: markmkorn
email: mark@mclaughlin.me.uk

Wednesday, 8 February 2006

TITLE OF SESSION: Building Flickr
NUMBER OF SESSION: 2
PRESENTED BY: Cal Henderson

CONFERENCE: Carson Workshops - The Future of Web Apps | Summit
DATE: 08/02/2006_
LOCATION: Kensington Town Hall, London

-------------------------------------------------------------------------------
REAL-TIME NOTES:
{If you've contributed, add your name, e-mail & URL at the bottom}

INTRODUCTION

"From web site to web application"

Hello!
 Passionate users are important to Flickr. And are created by passionate developers.
 Passionate developers attract passionate users.

Love Flickr
  don't start business to make money - care about something - get passion
  make something to solve one of your problems
  build it for what users need - need to understand their problems first
  watch what users do
  Watch user behaviour to determine new features.
  
1. Collaboration
  behind it was diff app
  "game never ending" - Flickr built on same tech - had social network already
  share photo's with friends - network, create incentive to add friends, encourage
  Collaborative metadata --> tagging, add tagging to friends photo's
    usecase --> family, one member is admin, friends tag
  Predecessor was GNE - MMORPG
  Flickr was MMOPS massively multiplayer online photo sharing (!).
  Adding friends/family makes the product better for the end user.
  
2. Aggregation
  Traditionally data silo'ed by user or maybe by time.
  Slice content by tag, location.
  As many interesting aggregations as possible - tags, geolocation, interestingness
  think about all photos as one big blog - can slice and dice in various ways 
    - geographical, how interesting it is - can do any sort of slicing
  Create new views upon existing data.
  
3. Open APIs
  Web services API - REST, SOAP, XML
  Needed it for Ajax first
  RSS first (readonly stuff first) - allow others to extract
  Flickr crated API's because they needed them for themselves for AJAX interactions.
  Move on to write API - people can change the data, so provide the data storage and processing
    "Fastr" game - built on top of Flickr, utilizing API
  site > app > service
  API allows 3rd parties to put together cool stuff they didn't have time to do.
  -->"Fastr" game http://randomchaos.com/games/fastr/
  Don't provide an API: end users will scrape the data anyway.
  
4. Clean URLs
  Use them as branding - top of screen, everyone can see the URL and the name of your company
  Core principle - no need to expose the physical workings of an appllcation.
  mod_rewrite on Apache.
  Easily guessable URL's.  People will navigate by hacking URL's.
  take URL and translate it to URL resource, display file (mod_rewrite)
  have a virtual URL system over the physical folder structure - mapping
  don't change URL (unless you handle the change in httpModule/httpHandler - can redirect)
  Immutable URLs.  Must be permanent. else future scaling becomes difficult
    
5. AJAX
  Async Javascript and XML
  "remoting", "remote scripting".
  all about async - do something while the user is doing something else (no page reload)
  eliminating two-step page actions
  Saving bandwidth.  Don't lose state.
  all about user experience - build self contained app in AJAX - currently there are AJAX desktops on web
  
6. Unicode
  Store data and transactions as Unicode from the start for i18n support.
  Localisation comes later.
  store all data and receive it in UTF-8 (std)
  
7. Desktop Integration - ref. back to api
  How do we pull interactions outside of the browser - grounded in API's.
  Flickr Uploadr.  Multiple file upload is painful on the web.
  API's allow tasks that are easier on the desktop to take place on the desktop.
  integrate browser into the desktop
  bunch of desktop apps that work with Flickr - upload photo's / file upload
  desktop app plug into web API (web services)
  Could build a XUL uploader using browser chrome and UI.
  Integrate with email - important, everyone uses it, integral to way people use the internet
    allow people to interact with it - tasks become easier - allow people to use something they are familiar with
    using existing infrastructure, which people already have
  It is very difficult to transfer a mobile file - e-mail is supported on most devices.
  You can upload to Flickr via e-mail - perfect for smartphones.
  
8. Mobile
  Will become important platform... (maybe) 
  "WAP is dead".
  Most smartphones run Opera, Nokia, SEM browsers.  XHTML Mobile Profile 1.0.(XHTML-MP)
  Small apps on mobile devices.
  Building content for mobile - tiny screens, mobile phones have small screens
  Create small consumable chunks of information.  Don't replicate the full-screen web experience.
  Cut down on the metadata; repurpose it for mobile devices.
  not all data suitable to push out to mobile devices

9. Open Data
  Import and export of data from systems.
  Export - RSS feeds.
  give feeling that people can leave - gives them that comfort level - they still own the data - not the app/company
  Also ability to export not just the photos - the comments, the tags and so on.
  

10. Open Content
  Upload to Google Video - they own the content.
  Also the case with several photo sites.
  When you upload to Flickr - it still belongs to you, the user.  All rights reserved.
  End user can license the data using Creative Commons.
  founding principle - user still owns data (see above - 9)
  blog.flickr.com --> video
  slides --> http://iamcal.com/talks/
  
  
*** pause ***

Q&A


-------------------------------------------------------------------------------
REFERENCES: {as documents / sites are referenced add them below}

Fastr (online game)
http://randomchaos.com/games/fastr/

Englaze (Flickr backup to CD/DVD)
http://www.englaze.com/

Creative Commons
http://www.creativecommerce.org/

blog.flickr.com (Music video made from CC licensed photos)

Slides available at
http://iamcal.com/talks

-------------------------------------------------------------------------------
QUOTES: {collect nice quotes from this session's speaker}

-------------------------------------------------------------------------------
CONTRIBUTORS: {add your name, e-mail address and URL below}
Levent - lebreeze@gmail.com | purebreeze.com
Marcus - marcusleemitchell@gmail.com | marcusleemitchell.co.uk
Mark McLaughlin - mark@mclaughlin.me.uk | undercrank.com
Chris Stainthorpe  - chris@randomcat.co.uk | randomcat.co.uk

-------------------------------------------------------------------------------
E-MAIL BOUNCEBACK: 
{add your e-mail address separated by commas for easy mailing of this text}
sp@lonres.com
chris@randomcat.co.uk

-------------------------------------------------------------------------------
NOTES ON / KEY TO THIS TEMPLATE:
HEADLINES
    ... have to be CAPITALISED and stand alone in a line to be recognized
    This differentiates from the text that follows
A _variable_ that you can change will be surrounded by _underscores_
    Spaces in variables are also replaced with _under_scores_
    This allows people to select the whole _variable_ with a simple double-click
A {tool-tip} is lower case and surrounded by {curly brackets / parentheses}
    These supply helpful contextual information.
References should be added as [1] [2] and so forth.
An *emphasis* can be put on a word by adding *stars* around it


-------------------------------------------------------------------------------
DISCLAIMER:
Copyright shared between all the participants unless otherwise stated...
Generic conference template copyright by Tom Coates, tom@plasticbag.org
Additions and Conference.mode by Dominik Wagner, dom@codingmonkeys.de