SlideShare a Scribd company logo
Building an interactive timeline
     from facebook photos


    Rakesh Rajan & Pranav Bhasin

           July 25, 2009
Agenda
1.   Intro and Demo
2.   Evolution
3.   Challenges
4.   Best Practices
Intro   

    lifeblob ...where memories come alive! 
       Tell your story on a timeline
       Connect with stories of your friends
       Navigate through relations
 
    lifeblob facebook app
       Discover photos through relations
       http://apps.facebook.com/lifeblob
DEMO!
Evolution
Facebook: Connect v/s App
Facebook: Connect v/s App
   Canvas/Iframe Application ( a.k.a FB apps )
   Connect Application (External sites with FB elements)
 
   Comparison:
     1. FBML: Canvas
     2. XFBML: Connect
          Similar to FBML tags
          fb: serverfbml
     3. FQL: Both
     4. FBJS
Facebook: IFrame v/s Canvas
    Speed
 
    Appearance
 
    URLs 
 
    Authentication
Step 1: Facebook Connect
    Facebook largest photo sharing site on the internet.
 
    Users can register for your site with just two clicks!
 
    FBConnect is easy to implement.
        <html xmlns="http://www.w3.org/1999/xhtml xmlns:fb="http://www.facebook.com/2008/fbml">
       Include FB javascript in BODY section.
       <fb:login-button></fb:login-button>
       FB.init("APIKEY", <path to xd_receiver.htm);
 
    User permission and caching
 
    Privacy
FBConnect: Registration
    lifeblob - user timelines and anonymous timelines
 
    If a user is already member of lifeblob and later links
    up facebook, don't create multiple timelines!
 
    connect.registerUsers 
       publish email hashes
       FB returns the email hash upon login - helpful for
       merging accounts
 
    Issues: multiple emails
FBConnect: Sync Data
    Cache Cache Cache!
       Facebook allows to store certain data upto a day. Have
       cron jobs to sync up data like user's name, pic etc
       everyday.


    Get offline access from users - only a few grant it.
 
Facebook Application
    Uses the same infrastructure and code (mostly) that
    of the main site
 
    IFrame based fb app / connect based site have same
    amount of strength.  
 
    Registration required - no anonymous browsing.
 
    IFrame application - backend using java api
 
Architecture
Issues
IFrame URLs
    Urls do not change
       Back button breaks
       Sharing breaks

    Solution: http://wiki.developers.facebook.com/index.
    php/IFrame_Url
       FB.CanvasClient.syncUrl()
       syncUrl will report any inner URL to the outer frame and
       append it to the URL hash
       Can override the browser's back and forward buttons.
 
IFrame App - Authentication
    First hit to Iframe - Various session parameters as
    request parameters
 
    2 ways to continue:
       Pass parameters to all the internal links
       Dummy page to save cookie using javascript
 
    We started with passing parameters - Issues with using
    the app and site at the same time.
       Cookie mismatch - only subset of request parameters in
       cookies.
 
 
Good Practices
FQL - Enhancements
    batch.run - Combines multiple seperate API calls into a
    single request
        Max limit: 20
 
    fql.multiquery - Runs multiple queries in one call and return
    the data at one time
       We reduced 5 queries into 1!
       "query1":"select uid from event_member where eid=<>"
       "query2":"select name from profile where uid in (select uid from
       #query1)"
 
    Preload FQL - Let FB "eagerly" send you data upfront.

 
More ...
    Track everything. - GA provides event tracking
       how many people accepted the app
       conversion of people from newsfeed, notifications and
       invites.
       viral coefficient
 
    Notifications/Invites - limit per user
       track number of notifications and invites sent
       track hideall/spam reports
    When building a node using xfbml, prefer
    parseDomElement over parseDomTree
 
 
Web Optimizations
    JS optimizations
       Event delegation
       Optimize queries
          dojo.query("[attr='xyz']") == bad bad
 
    CSS optimizations
       avoid inefficient key selectors.
 
    STOP IE6 SUPPORT!
       http://www.stopie6.com/
 
 
Questions?

More Related Content

What's hot

How to install joomla 2.5
How to install joomla 2.5How to install joomla 2.5
How to install joomla 2.5
Kamis Kalees
 
Webinar: PHP and MySQL - Server-side Scripting Language for Web Development
Webinar: PHP and MySQL - Server-side Scripting Language for Web Development  Webinar: PHP and MySQL - Server-side Scripting Language for Web Development
Webinar: PHP and MySQL - Server-side Scripting Language for Web Development
Edureka!
 
Modules and Components Introduction in Joomla! 2.5
Modules and Components Introduction in Joomla! 2.5Modules and Components Introduction in Joomla! 2.5
Modules and Components Introduction in Joomla! 2.5
Vishwash Gaur
 
Getting Started with the Joomla! Framework
Getting Started with the Joomla! FrameworkGetting Started with the Joomla! Framework
Getting Started with the Joomla! Framework
Michael Babker
 
Overview of CMS and Joomla!
Overview of CMS and Joomla!Overview of CMS and Joomla!
Overview of CMS and Joomla!
Vishwash Gaur
 
FAQ's in Joomla 2.5
FAQ's in Joomla 2.5FAQ's in Joomla 2.5
FAQ's in Joomla 2.5
Vishwash Gaur
 
Joomla 2019 Roadmap, Joomla 4 & Beyond by Robert Fairhead
Joomla 2019 Roadmap, Joomla 4 & Beyond by Robert FairheadJoomla 2019 Roadmap, Joomla 4 & Beyond by Robert Fairhead
Joomla 2019 Roadmap, Joomla 4 & Beyond by Robert Fairhead
Robert Fairhead
 
Facebook Connect Integration
Facebook Connect IntegrationFacebook Connect Integration
Facebook Connect Integration
mujahidslideshare
 
Responsive WEB APP using cakePHP
Responsive WEB APP using cakePHPResponsive WEB APP using cakePHP
Responsive WEB APP using cakePHP
Edureka!
 
The Power of HTML5 Offline: Mobile and More!
The Power of HTML5 Offline: Mobile and More!The Power of HTML5 Offline: Mobile and More!
The Power of HTML5 Offline: Mobile and More!
FITC
 
CMS and Joomla
CMS and JoomlaCMS and Joomla
CMS and Joomla
Manish Pharswan
 
Introduction to Joomla
Introduction to JoomlaIntroduction to Joomla
Introduction to Joomla
Asif Islam
 
Joomla - CMS
Joomla - CMSJoomla - CMS
Joomla - CMS
Dasun Hegoda
 
Rapid Development With CakePHP
Rapid Development With CakePHPRapid Development With CakePHP
Rapid Development With CakePHP
Edureka!
 
Installing Extensions in Joomla! 2.5
Installing Extensions in Joomla! 2.5Installing Extensions in Joomla! 2.5
Installing Extensions in Joomla! 2.5
Vishwash Gaur
 
Best And Worst Practices Building Ria with Adobe and Microsoft
Best And Worst Practices Building Ria with Adobe and MicrosoftBest And Worst Practices Building Ria with Adobe and Microsoft
Best And Worst Practices Building Ria with Adobe and Microsoft
Josh Holmes
 
Joomla CMS SEMINAR PPT
Joomla CMS SEMINAR PPTJoomla CMS SEMINAR PPT
Joomla CMS SEMINAR PPT
Pinky Mondal
 
Introduction to WordPress Class 2
Introduction to WordPress Class 2Introduction to WordPress Class 2
Introduction to WordPress Class 2
Adrian Mikeliunas
 
Joomla Tutorial: Joomla 2.5 a first look
Joomla Tutorial: Joomla 2.5 a first lookJoomla Tutorial: Joomla 2.5 a first look
Joomla Tutorial: Joomla 2.5 a first look
Tim Plummer
 
Joomla Introduction & Installation Tutorial
Joomla Introduction & Installation TutorialJoomla Introduction & Installation Tutorial
Joomla Introduction & Installation Tutorial
Singsys Pte Ltd
 

What's hot (20)

How to install joomla 2.5
How to install joomla 2.5How to install joomla 2.5
How to install joomla 2.5
 
Webinar: PHP and MySQL - Server-side Scripting Language for Web Development
Webinar: PHP and MySQL - Server-side Scripting Language for Web Development  Webinar: PHP and MySQL - Server-side Scripting Language for Web Development
Webinar: PHP and MySQL - Server-side Scripting Language for Web Development
 
Modules and Components Introduction in Joomla! 2.5
Modules and Components Introduction in Joomla! 2.5Modules and Components Introduction in Joomla! 2.5
Modules and Components Introduction in Joomla! 2.5
 
Getting Started with the Joomla! Framework
Getting Started with the Joomla! FrameworkGetting Started with the Joomla! Framework
Getting Started with the Joomla! Framework
 
Overview of CMS and Joomla!
Overview of CMS and Joomla!Overview of CMS and Joomla!
Overview of CMS and Joomla!
 
FAQ's in Joomla 2.5
FAQ's in Joomla 2.5FAQ's in Joomla 2.5
FAQ's in Joomla 2.5
 
Joomla 2019 Roadmap, Joomla 4 & Beyond by Robert Fairhead
Joomla 2019 Roadmap, Joomla 4 & Beyond by Robert FairheadJoomla 2019 Roadmap, Joomla 4 & Beyond by Robert Fairhead
Joomla 2019 Roadmap, Joomla 4 & Beyond by Robert Fairhead
 
Facebook Connect Integration
Facebook Connect IntegrationFacebook Connect Integration
Facebook Connect Integration
 
Responsive WEB APP using cakePHP
Responsive WEB APP using cakePHPResponsive WEB APP using cakePHP
Responsive WEB APP using cakePHP
 
The Power of HTML5 Offline: Mobile and More!
The Power of HTML5 Offline: Mobile and More!The Power of HTML5 Offline: Mobile and More!
The Power of HTML5 Offline: Mobile and More!
 
CMS and Joomla
CMS and JoomlaCMS and Joomla
CMS and Joomla
 
Introduction to Joomla
Introduction to JoomlaIntroduction to Joomla
Introduction to Joomla
 
Joomla - CMS
Joomla - CMSJoomla - CMS
Joomla - CMS
 
Rapid Development With CakePHP
Rapid Development With CakePHPRapid Development With CakePHP
Rapid Development With CakePHP
 
Installing Extensions in Joomla! 2.5
Installing Extensions in Joomla! 2.5Installing Extensions in Joomla! 2.5
Installing Extensions in Joomla! 2.5
 
Best And Worst Practices Building Ria with Adobe and Microsoft
Best And Worst Practices Building Ria with Adobe and MicrosoftBest And Worst Practices Building Ria with Adobe and Microsoft
Best And Worst Practices Building Ria with Adobe and Microsoft
 
Joomla CMS SEMINAR PPT
Joomla CMS SEMINAR PPTJoomla CMS SEMINAR PPT
Joomla CMS SEMINAR PPT
 
Introduction to WordPress Class 2
Introduction to WordPress Class 2Introduction to WordPress Class 2
Introduction to WordPress Class 2
 
Joomla Tutorial: Joomla 2.5 a first look
Joomla Tutorial: Joomla 2.5 a first lookJoomla Tutorial: Joomla 2.5 a first look
Joomla Tutorial: Joomla 2.5 a first look
 
Joomla Introduction & Installation Tutorial
Joomla Introduction & Installation TutorialJoomla Introduction & Installation Tutorial
Joomla Introduction & Installation Tutorial
 

Similar to Building an interactive timeline from facebook photos

Introduction to facebook platform
Introduction to facebook platformIntroduction to facebook platform
Introduction to facebook platform
Venkatesh Narayanan
 
Facebook Connect
Facebook ConnectFacebook Connect
Facebook Connect
Pitra Satvika
 
Facebook plateform architecture presentation
Facebook plateform architecture   presentationFacebook plateform architecture   presentation
Facebook plateform architecture presentation
Inam Soomro
 
Creating a Facebook App
Creating a Facebook AppCreating a Facebook App
Creating a Facebook App
Mindgrub Technologies
 
BrownSites: Building and Managing a CMS Infrastructure for Higher Ed
BrownSites: Building and Managing a CMS Infrastructure for Higher EdBrownSites: Building and Managing a CMS Infrastructure for Higher Ed
BrownSites: Building and Managing a CMS Infrastructure for Higher Ed
Alozie Nwosu
 
Connect with Facebook to Rails Application By Nyros Developer
Connect with Facebook to Rails Application By Nyros DeveloperConnect with Facebook to Rails Application By Nyros Developer
Connect with Facebook to Rails Application By Nyros Developer
Nyros Technologies
 
Facebook Connect Tutorial
Facebook Connect TutorialFacebook Connect Tutorial
Facebook Connect Tutorial
Prateek Dayal
 
Facebook Connect Presentation 08 10 2008
Facebook Connect Presentation 08 10 2008Facebook Connect Presentation 08 10 2008
Facebook Connect Presentation 08 10 2008
Karl Bunyan
 
Facebook on Rails
Facebook on RailsFacebook on Rails
Facebook on Rails
mc77
 
Google App Engine and Social Apps
Google App Engine and Social AppsGoogle App Engine and Social Apps
Google App Engine and Social Apps
Chris Schalk
 
Alphageeks meetup - facebook api
Alphageeks meetup - facebook apiAlphageeks meetup - facebook api
Alphageeks meetup - facebook api
Alphageeks
 
Facebook 3rd Party Api
Facebook 3rd Party ApiFacebook 3rd Party Api
Facebook 3rd Party Api
Yoss Cohen
 
Microsoft tech talk march 28 2014
Microsoft tech talk march 28 2014Microsoft tech talk march 28 2014
Microsoft tech talk march 28 2014
Cory Forsyth
 
Progressive Web Apps - Overview & Getting Started
Progressive Web Apps - Overview & Getting StartedProgressive Web Apps - Overview & Getting Started
Progressive Web Apps - Overview & Getting Started
Gaurav Behere
 
Facebook api
Facebook api Facebook api
Facebook api
snipermkd
 
Facebook API
Facebook APIFacebook API
Facebook API
snipermkd
 
Peepcode facebook-2-rails on facebook
Peepcode facebook-2-rails on facebookPeepcode facebook-2-rails on facebook
Peepcode facebook-2-rails on facebook
sushilprajapati
 
Widgets Tools and Doodads for Webmasters - CIL 2008
Widgets Tools and Doodads for Webmasters - CIL 2008Widgets Tools and Doodads for Webmasters - CIL 2008
Widgets Tools and Doodads for Webmasters - CIL 2008
Darlene Fichter
 
PoP - “Platform of Platforms”: Framework for building Single-Page Application...
PoP - “Platform of Platforms”: Framework for building Single-Page Application...PoP - “Platform of Platforms”: Framework for building Single-Page Application...
PoP - “Platform of Platforms”: Framework for building Single-Page Application...
Leonardo Losoviz
 
Don't worry be API with Slim framework and Joomla
Don't worry be API with Slim framework and JoomlaDon't worry be API with Slim framework and Joomla
Don't worry be API with Slim framework and Joomla
Pierre-André Vullioud
 

Similar to Building an interactive timeline from facebook photos (20)

Introduction to facebook platform
Introduction to facebook platformIntroduction to facebook platform
Introduction to facebook platform
 
Facebook Connect
Facebook ConnectFacebook Connect
Facebook Connect
 
Facebook plateform architecture presentation
Facebook plateform architecture   presentationFacebook plateform architecture   presentation
Facebook plateform architecture presentation
 
Creating a Facebook App
Creating a Facebook AppCreating a Facebook App
Creating a Facebook App
 
BrownSites: Building and Managing a CMS Infrastructure for Higher Ed
BrownSites: Building and Managing a CMS Infrastructure for Higher EdBrownSites: Building and Managing a CMS Infrastructure for Higher Ed
BrownSites: Building and Managing a CMS Infrastructure for Higher Ed
 
Connect with Facebook to Rails Application By Nyros Developer
Connect with Facebook to Rails Application By Nyros DeveloperConnect with Facebook to Rails Application By Nyros Developer
Connect with Facebook to Rails Application By Nyros Developer
 
Facebook Connect Tutorial
Facebook Connect TutorialFacebook Connect Tutorial
Facebook Connect Tutorial
 
Facebook Connect Presentation 08 10 2008
Facebook Connect Presentation 08 10 2008Facebook Connect Presentation 08 10 2008
Facebook Connect Presentation 08 10 2008
 
Facebook on Rails
Facebook on RailsFacebook on Rails
Facebook on Rails
 
Google App Engine and Social Apps
Google App Engine and Social AppsGoogle App Engine and Social Apps
Google App Engine and Social Apps
 
Alphageeks meetup - facebook api
Alphageeks meetup - facebook apiAlphageeks meetup - facebook api
Alphageeks meetup - facebook api
 
Facebook 3rd Party Api
Facebook 3rd Party ApiFacebook 3rd Party Api
Facebook 3rd Party Api
 
Microsoft tech talk march 28 2014
Microsoft tech talk march 28 2014Microsoft tech talk march 28 2014
Microsoft tech talk march 28 2014
 
Progressive Web Apps - Overview & Getting Started
Progressive Web Apps - Overview & Getting StartedProgressive Web Apps - Overview & Getting Started
Progressive Web Apps - Overview & Getting Started
 
Facebook api
Facebook api Facebook api
Facebook api
 
Facebook API
Facebook APIFacebook API
Facebook API
 
Peepcode facebook-2-rails on facebook
Peepcode facebook-2-rails on facebookPeepcode facebook-2-rails on facebook
Peepcode facebook-2-rails on facebook
 
Widgets Tools and Doodads for Webmasters - CIL 2008
Widgets Tools and Doodads for Webmasters - CIL 2008Widgets Tools and Doodads for Webmasters - CIL 2008
Widgets Tools and Doodads for Webmasters - CIL 2008
 
PoP - “Platform of Platforms”: Framework for building Single-Page Application...
PoP - “Platform of Platforms”: Framework for building Single-Page Application...PoP - “Platform of Platforms”: Framework for building Single-Page Application...
PoP - “Platform of Platforms”: Framework for building Single-Page Application...
 
Don't worry be API with Slim framework and Joomla
Don't worry be API with Slim framework and JoomlaDon't worry be API with Slim framework and Joomla
Don't worry be API with Slim framework and Joomla
 

Building an interactive timeline from facebook photos

  • 1. Building an interactive timeline from facebook photos Rakesh Rajan & Pranav Bhasin July 25, 2009
  • 2. Agenda 1. Intro and Demo 2. Evolution 3. Challenges 4. Best Practices
  • 3. Intro    lifeblob ...where memories come alive!  Tell your story on a timeline Connect with stories of your friends Navigate through relations   lifeblob facebook app Discover photos through relations http://apps.facebook.com/lifeblob
  • 7. Facebook: Connect v/s App Canvas/Iframe Application ( a.k.a FB apps ) Connect Application (External sites with FB elements)      Comparison: 1. FBML: Canvas 2. XFBML: Connect Similar to FBML tags fb: serverfbml 3. FQL: Both 4. FBJS
  • 8. Facebook: IFrame v/s Canvas Speed   Appearance   URLs    Authentication
  • 9. Step 1: Facebook Connect Facebook largest photo sharing site on the internet.   Users can register for your site with just two clicks!   FBConnect is easy to implement.  <html xmlns="http://www.w3.org/1999/xhtml xmlns:fb="http://www.facebook.com/2008/fbml"> Include FB javascript in BODY section. <fb:login-button></fb:login-button> FB.init("APIKEY", <path to xd_receiver.htm);   User permission and caching   Privacy
  • 10. FBConnect: Registration lifeblob - user timelines and anonymous timelines   If a user is already member of lifeblob and later links up facebook, don't create multiple timelines!   connect.registerUsers  publish email hashes FB returns the email hash upon login - helpful for merging accounts   Issues: multiple emails
  • 11. FBConnect: Sync Data Cache Cache Cache! Facebook allows to store certain data upto a day. Have cron jobs to sync up data like user's name, pic etc everyday. Get offline access from users - only a few grant it.  
  • 12. Facebook Application Uses the same infrastructure and code (mostly) that of the main site   IFrame based fb app / connect based site have same amount of strength.     Registration required - no anonymous browsing.   IFrame application - backend using java api  
  • 15. IFrame URLs Urls do not change Back button breaks Sharing breaks Solution: http://wiki.developers.facebook.com/index. php/IFrame_Url FB.CanvasClient.syncUrl() syncUrl will report any inner URL to the outer frame and append it to the URL hash Can override the browser's back and forward buttons.  
  • 16. IFrame App - Authentication First hit to Iframe - Various session parameters as request parameters   2 ways to continue: Pass parameters to all the internal links Dummy page to save cookie using javascript   We started with passing parameters - Issues with using the app and site at the same time. Cookie mismatch - only subset of request parameters in cookies.    
  • 18. FQL - Enhancements batch.run - Combines multiple seperate API calls into a single request Max limit: 20   fql.multiquery - Runs multiple queries in one call and return the data at one time We reduced 5 queries into 1! "query1":"select uid from event_member where eid=<>" "query2":"select name from profile where uid in (select uid from #query1)"   Preload FQL - Let FB "eagerly" send you data upfront.  
  • 19. More ... Track everything. - GA provides event tracking how many people accepted the app conversion of people from newsfeed, notifications and invites. viral coefficient   Notifications/Invites - limit per user track number of notifications and invites sent track hideall/spam reports When building a node using xfbml, prefer parseDomElement over parseDomTree    
  • 20. Web Optimizations JS optimizations Event delegation Optimize queries dojo.query("[attr='xyz']") == bad bad   CSS optimizations avoid inefficient key selectors.   STOP IE6 SUPPORT! http://www.stopie6.com/