SlideShare a Scribd company logo
Pascal Alberty 
@zorrobiwan 
CTO Managing Partner
History
RueDuWeb 
More than 50 web specialists 
About 20 companies or independent people
Where ?
Demo
Main Architecture 
● Front (Akimedia) 
○ Public Website 
○ Private Website 
○ Flash Animations 
○ Sessions configuration management 
● Back (Tesial) 
○ Sessions content management
Front - Key components (Akimedia) 
● CMS Akiwi (PHP) & 
MySQL database (MyISAM) 
○ Pubic Website 
○ Private Website (users, eCommerce 
● Flash animations 
○ Displaying messages and other features 
● “Manager” in PHP 
○ Communication between Animations/Front/Back
Back - Key Components (Tesial) 
● Engine 
○ Java web application 
○ API used by Front for data management 
■ sessions, tweets, moderation, tweetos,... 
● Batch 
○ Java web application 
○ Formerly grabbing Tweets 
○ Grabbing pictures (avatars & medias)
Technical Infrastructure 
● Front/Back Server 
● DB Servers 
○ Front / Back 
○ Replication (fail over) 
● Dev Server 
○ dev (front / back) 
○ pré-prod (front / back)
SVN 
● KISS 
● dev = trunk 
● pre-prod = branch 
● prod = tag on branch or trunk 
● front = release by switch 
● back = release by packaging
Back Software Architecture 
Maven 2 
Spring 3.1 
Hibernate 3.2 
ehcache 1.5 
Twitter4J 3 
Maya 0.2 
...
Back Software Architecture 
● DTO & DAO 
○ Data Structure & persistence 
■ session, tweet, tweetos, hashtags, ... 
● Services 
○ Business functionalities 
○ Transaction management 
● Clients 
○ Engine 
○ Batches
Engine 
● Java Web Application 
● API REST 
○ CRUD operations 
● Used by Front for data management 
● Call Services layer
Batches 
● Java Web Application 
● Quartz Jobs 
○ Formerly Tweets Grabbing 
○ Avatars Grabbing 
○ Pictures Grabbing 
● Call Services Layer
Challenges 
● Scalability 
○ SaaS and Agency are growing 
● Twitter 
○ New technical and business constraints 
● Product 
○ Must evolve by integrating other social networks
Twitter API 
● Let’s talk about Twitter API
Twitter APIs 
● APIs 
○ Search API 
○ REST API 
○ Streaming API 
○ https://dev.twitter.com/docs/history-rest-search-api 
● Versions 
○ API version 1 (deprecated) 
○ API version 1.1
Rate limiting 
● Rate limit window duration 
○ 15 minutes 
● Requests allotted 
○ per user 
○ via application-only auth 
● Example 
○ GET statuses/user_timeline 
○ per user: 150 requests per 15 minutes 
○ via app: 300 requests per 15 minutes 
https://dev.twitter.com/docs/rate-limiting/1.1/limits
Other technical limits 
● Direct messages 
○ 250 per day 
● Tweets 
○ 1,000 per day 
○ Retweets are counted as Tweets. 
● Changes to account email 
○ Four per hour 
● Following 
○ 1,000 per day 
● Following (account-based) 
○ up to following 2,000 other users
Platform objects 
● Tweets can be found alone, within user objects, but 
most often within timelines 
● Users can be found tweeting, following, and 
favoriting on Twitter 
● Entities are most often found within Tweets 
● Places can be found throughout the natural universe, 
but typically only appear attached to Tweets on Twitter
Objects type 
● JSON ! 
● XML output will be dropped soon 
○ Only JSON output with API 1.1 
● Be careful with ids (64 bits) 
○ use String version (especially if using Javascript) 
○ Twitpocalypse 
■ https://dev.twitter.com/docs/twitter-ids-json-and-snowflake 
○ Idpocalypse 
■ https://dev.twitter.com/blog/64-bit-twitter-user-idpocalypse
Tweet Example 
https://api.twitter.com/1/statuses/show.json?id=341545927401680897&include_entities=true
User example 
https://api.twitter.com/1/users/show.json?screen_name=zorrobiwan&include_entities=true
Entities / Entity Example 
● Hashtags, Medias, URLs, User mentions, 
Symbols 
● No need to parse 
● Data used for display also (ex: display_url)
Place example 
https://api.twitter.com/1/geo/id/247f43d441defc03.json
Libraries 
● PHP 
○ Twitter-async (https://github.com/jmathai/twitter-async) 
○ tmhOAuth (https://github. 
com/themattharris/tmhOAuth) 
○ Zend Framework (http://framework.zend. 
com/manual/1.12/en/zend.service.twitter.html) 
● Java 
○ Twitter4J (http://twitter4j.org/) 
https://dev.twitter.com/docs/twitter-libraries
Twitter4J 
● Unofficial Java library for the Twitter API 
● 100% Pure Java (5+) 
● Android platform and Google App Engine 
ready 
● Zero dependency : No additional jars 
required 
● Built-in OAuth support 
● Out-of-the-box gzip support 
● 100% Twitter API 1.1 compatible
Tools 
● Twurl 
○ https://github.com/marcel/twurl 
○ "curl" for Twitter API 
○ Manage access tokens (authentication) 
● Apigee Console 
○ https://apigee.com/console 
○ Free console to execute APIs
Search API 
● Similar to http://search.twitter.com 
● Criteria 
○ terms 
○ geocode 
○ language ("Language detection is best-effort") 
○ count, until, since-id, max-id 
○ result type: mixed, recent, popular 
○ include entities 
● Paginated ! 
○ you have to manage this by yourself
REST API 
● Timelines 
● Tweets 
● Direct Messages 
● Friends & Followers 
● Users 
● Suggested Users 
● Favorites 
● Lists 
● Saved Searches 
● Places & Geo 
● Trends 
● Spam Reporting 
● OAuth 
● Help
Streaming API 
● Persistent HTTP connection 
○ until you decide to close it 
● Could be reeeeaaaaaaally huge ! 
○ Think about you architecture (hard and soft) ! 
○ Separate storage and consumption 
● Only one stream opened at a time 
● Could be tricky to managed 
○ Use a library
Streaming API endpoints groups 
● Public Streams 
○ GET statuses/sample 
○ POST statuses/filter 
○ GET statuses/firehose (limited access) 
● User Streams 
○ Data and events for a specific user 
● Site Streams (beta and limited access) 
○ Real time update for large number of users
About the challenges 
● Scalability 
● Twitter constraints 
● Product evolution 
=> Use of Twitter Stream API 
=> Other Social Networks integration 
=> Maya
Maya 
Abstraction layer for feed and 
post 
Used in TWP as the input source 
for media
Maya - General architecture 
Listener 
Listener 
Session 
Session
Maya - concepts 
● Post: content emitted on a (social) network 
by a user 
● Feed: a collection of posts matching a set of 
filters (PostFilter) 
● FeedOperator: the service to register, 
manage stop and restart feeds
Maya twitter plugin 
● Backed by Twitter4J 
● Rely on the live stream twitter API 
● Challenges 
○ Adding new feeds on the fly without losing any 
history 
○ Single channel for all feeds, need to identify to which 
feed(s) a tweet belongs to 
● Demo!
Front Evolutions 
● From Pull to Push 
○ NodeJS 
● Manager from PHP to JS 
○ NodeJS 
● HTML5 Animations
Next Improvements 
● Queuing traitement with SI 
○ Message traitement 
○ Medias grabbing and/or treatment 
● Adding other social networks 
● Better scalability - reliability - performance 
○ load balancing 
○ replication 
○ nginx 
○ ...
Q/A

More Related Content

Viewers also liked

"At The Ends Of My Comfort Zone" Rahim Blak - Męskie Gadanie.
"At The Ends Of My Comfort Zone" Rahim Blak - Męskie Gadanie."At The Ends Of My Comfort Zone" Rahim Blak - Męskie Gadanie.
"At The Ends Of My Comfort Zone" Rahim Blak - Męskie Gadanie.
Rahim Blak
 

Viewers also liked (17)

Insight & Inspiration Snapshot
Insight & Inspiration SnapshotInsight & Inspiration Snapshot
Insight & Inspiration Snapshot
 
Catalogo #YvesRocher Camp 7/2015 Venta Anual
Catalogo #YvesRocher Camp 7/2015 Venta AnualCatalogo #YvesRocher Camp 7/2015 Venta Anual
Catalogo #YvesRocher Camp 7/2015 Venta Anual
 
Fire Response - products catalogue
Fire Response - products catalogueFire Response - products catalogue
Fire Response - products catalogue
 
Uma década da lei americana sarbanes oxley
Uma década da lei americana sarbanes oxleyUma década da lei americana sarbanes oxley
Uma década da lei americana sarbanes oxley
 
El combustible del futuro , adios al Grifo por Diesel
El combustible del futuro , adios al Grifo por DieselEl combustible del futuro , adios al Grifo por Diesel
El combustible del futuro , adios al Grifo por Diesel
 
Repositorios de tesis: Capacidad del sistema académico NEA para la generación...
Repositorios de tesis: Capacidad del sistema académico NEA para la generación...Repositorios de tesis: Capacidad del sistema académico NEA para la generación...
Repositorios de tesis: Capacidad del sistema académico NEA para la generación...
 
10 manuales en la red sobre insercion laboral 1
10 manuales en la red sobre insercion laboral 110 manuales en la red sobre insercion laboral 1
10 manuales en la red sobre insercion laboral 1
 
W
WW
W
 
Vuelve La Vida A su Caminito Del Rey
Vuelve La Vida A su Caminito Del Rey
Vuelve La Vida A su Caminito Del Rey
Vuelve La Vida A su Caminito Del Rey
 
Intecnor
IntecnorIntecnor
Intecnor
 
Recomendaciones de lectura para el verano 2013
Recomendaciones de lectura para el verano 2013Recomendaciones de lectura para el verano 2013
Recomendaciones de lectura para el verano 2013
 
Revista Españoles, número 41 Octubre 2009
Revista Españoles, número 41 Octubre 2009Revista Españoles, número 41 Octubre 2009
Revista Españoles, número 41 Octubre 2009
 
"At The Ends Of My Comfort Zone" Rahim Blak - Męskie Gadanie.
"At The Ends Of My Comfort Zone" Rahim Blak - Męskie Gadanie."At The Ends Of My Comfort Zone" Rahim Blak - Męskie Gadanie.
"At The Ends Of My Comfort Zone" Rahim Blak - Męskie Gadanie.
 
Clean Energy from Sweden - Introducing InnoVentum
Clean Energy from Sweden - Introducing InnoVentum Clean Energy from Sweden - Introducing InnoVentum
Clean Energy from Sweden - Introducing InnoVentum
 
Preview: The NEW 4-Hour Workweek
Preview: The NEW 4-Hour WorkweekPreview: The NEW 4-Hour Workweek
Preview: The NEW 4-Hour Workweek
 
Manual de agencias_iata
Manual de agencias_iataManual de agencias_iata
Manual de agencias_iata
 
Inventos s xxi
Inventos s xxiInventos s xxi
Inventos s xxi
 

Similar to 20131008 - Wajug - TweetWall Pro

20130504 - FeWeb - Twitter API
20130504  - FeWeb - Twitter API20130504  - FeWeb - Twitter API
20130504 - FeWeb - Twitter API
Pascal Alberty
 
Procella: A fast versatile SQL query engine powering data at Youtube
Procella: A fast versatile SQL query engine powering data at YoutubeProcella: A fast versatile SQL query engine powering data at Youtube
Procella: A fast versatile SQL query engine powering data at Youtube
DataWorks Summit
 
Big data @ uber vu (1)
Big data @ uber vu (1)Big data @ uber vu (1)
Big data @ uber vu (1)
Mihnea Giurgea
 

Similar to 20131008 - Wajug - TweetWall Pro (20)

20130504 - FeWeb - Twitter API
20130504  - FeWeb - Twitter API20130504  - FeWeb - Twitter API
20130504 - FeWeb - Twitter API
 
Machine learning and big data @ uber a tale of two systems
Machine learning and big data @ uber a tale of two systemsMachine learning and big data @ uber a tale of two systems
Machine learning and big data @ uber a tale of two systems
 
Procella: A fast versatile SQL query engine powering data at Youtube
Procella: A fast versatile SQL query engine powering data at YoutubeProcella: A fast versatile SQL query engine powering data at Youtube
Procella: A fast versatile SQL query engine powering data at Youtube
 
CON6423: Scalable JavaScript applications with Project Nashorn
CON6423: Scalable JavaScript applications with Project NashornCON6423: Scalable JavaScript applications with Project Nashorn
CON6423: Scalable JavaScript applications with Project Nashorn
 
Visual, scalable, and manageable data loading to and from Neo4j with Apache Hop
Visual, scalable, and manageable data loading to and from Neo4j with Apache Hop Visual, scalable, and manageable data loading to and from Neo4j with Apache Hop
Visual, scalable, and manageable data loading to and from Neo4j with Apache Hop
 
How QCLean Works? Introduction to Browser Extensions
How QCLean Works? Introduction to Browser ExtensionsHow QCLean Works? Introduction to Browser Extensions
How QCLean Works? Introduction to Browser Extensions
 
Moving Beyond WordPress At Tech in Asia
Moving Beyond WordPress At Tech in AsiaMoving Beyond WordPress At Tech in Asia
Moving Beyond WordPress At Tech in Asia
 
Extracting Insights from Data at Twitter
Extracting Insights from Data at TwitterExtracting Insights from Data at Twitter
Extracting Insights from Data at Twitter
 
The New York Times: Sustainable Systems, Powered by Python
The New York Times: Sustainable Systems, Powered by PythonThe New York Times: Sustainable Systems, Powered by Python
The New York Times: Sustainable Systems, Powered by Python
 
Load testing in Zonky with Gatling
Load testing in Zonky with GatlingLoad testing in Zonky with Gatling
Load testing in Zonky with Gatling
 
REST API for Joomla
REST API for JoomlaREST API for Joomla
REST API for Joomla
 
Node.js Web Apps @ ebay scale
Node.js Web Apps @ ebay scaleNode.js Web Apps @ ebay scale
Node.js Web Apps @ ebay scale
 
Spring 21 Salesforce Release Webinar
Spring 21 Salesforce Release WebinarSpring 21 Salesforce Release Webinar
Spring 21 Salesforce Release Webinar
 
#RADC4L16: An API-First Archives Approach at NPR
#RADC4L16: An API-First Archives Approach at NPR#RADC4L16: An API-First Archives Approach at NPR
#RADC4L16: An API-First Archives Approach at NPR
 
Tensor flow 2.0 what's new
Tensor flow 2.0  what's newTensor flow 2.0  what's new
Tensor flow 2.0 what's new
 
淺談 Startup 公司的軟體開發流程 v2
淺談 Startup 公司的軟體開發流程 v2淺談 Startup 公司的軟體開發流程 v2
淺談 Startup 公司的軟體開發流程 v2
 
Agile startup company management and operation
Agile startup company management and operationAgile startup company management and operation
Agile startup company management and operation
 
Sprint 53
Sprint 53Sprint 53
Sprint 53
 
Big data @ uber vu (1)
Big data @ uber vu (1)Big data @ uber vu (1)
Big data @ uber vu (1)
 
Seminario eMadrid 2015 09 10 sobre Serious Games (UCM) Manuel Freire - RAGE:...
Seminario eMadrid 2015 09 10 sobre Serious Games (UCM) Manuel Freire -  RAGE:...Seminario eMadrid 2015 09 10 sobre Serious Games (UCM) Manuel Freire -  RAGE:...
Seminario eMadrid 2015 09 10 sobre Serious Games (UCM) Manuel Freire - RAGE:...
 

Recently uploaded

Essentials of Automations: Optimizing FME Workflows with Parameters
Essentials of Automations: Optimizing FME Workflows with ParametersEssentials of Automations: Optimizing FME Workflows with Parameters
Essentials of Automations: Optimizing FME Workflows with Parameters
Safe Software
 

Recently uploaded (20)

PHP Frameworks: I want to break free (IPC Berlin 2024)
PHP Frameworks: I want to break free (IPC Berlin 2024)PHP Frameworks: I want to break free (IPC Berlin 2024)
PHP Frameworks: I want to break free (IPC Berlin 2024)
 
Accelerate your Kubernetes clusters with Varnish Caching
Accelerate your Kubernetes clusters with Varnish CachingAccelerate your Kubernetes clusters with Varnish Caching
Accelerate your Kubernetes clusters with Varnish Caching
 
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdfFIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
 
To Graph or Not to Graph Knowledge Graph Architectures and LLMs
To Graph or Not to Graph Knowledge Graph Architectures and LLMsTo Graph or Not to Graph Knowledge Graph Architectures and LLMs
To Graph or Not to Graph Knowledge Graph Architectures and LLMs
 
Exploring UiPath Orchestrator API: updates and limits in 2024 🚀
Exploring UiPath Orchestrator API: updates and limits in 2024 🚀Exploring UiPath Orchestrator API: updates and limits in 2024 🚀
Exploring UiPath Orchestrator API: updates and limits in 2024 🚀
 
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdfSmart TV Buyer Insights Survey 2024 by 91mobiles.pdf
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf
 
AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...
AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...
AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...
 
FIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance Osaka Seminar: Overview.pdfFIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance Osaka Seminar: Overview.pdf
 
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
 
Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...
Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...
Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...
 
In-Depth Performance Testing Guide for IT Professionals
In-Depth Performance Testing Guide for IT ProfessionalsIn-Depth Performance Testing Guide for IT Professionals
In-Depth Performance Testing Guide for IT Professionals
 
IoT Analytics Company Presentation May 2024
IoT Analytics Company Presentation May 2024IoT Analytics Company Presentation May 2024
IoT Analytics Company Presentation May 2024
 
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
 
From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...
From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...
From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...
 
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
 
Neuro-symbolic is not enough, we need neuro-*semantic*
Neuro-symbolic is not enough, we need neuro-*semantic*Neuro-symbolic is not enough, we need neuro-*semantic*
Neuro-symbolic is not enough, we need neuro-*semantic*
 
Assuring Contact Center Experiences for Your Customers With ThousandEyes
Assuring Contact Center Experiences for Your Customers With ThousandEyesAssuring Contact Center Experiences for Your Customers With ThousandEyes
Assuring Contact Center Experiences for Your Customers With ThousandEyes
 
Essentials of Automations: Optimizing FME Workflows with Parameters
Essentials of Automations: Optimizing FME Workflows with ParametersEssentials of Automations: Optimizing FME Workflows with Parameters
Essentials of Automations: Optimizing FME Workflows with Parameters
 
Key Trends Shaping the Future of Infrastructure.pdf
Key Trends Shaping the Future of Infrastructure.pdfKey Trends Shaping the Future of Infrastructure.pdf
Key Trends Shaping the Future of Infrastructure.pdf
 
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
 

20131008 - Wajug - TweetWall Pro

  • 1.
  • 2. Pascal Alberty @zorrobiwan CTO Managing Partner
  • 4. RueDuWeb More than 50 web specialists About 20 companies or independent people
  • 7. Main Architecture ● Front (Akimedia) ○ Public Website ○ Private Website ○ Flash Animations ○ Sessions configuration management ● Back (Tesial) ○ Sessions content management
  • 8. Front - Key components (Akimedia) ● CMS Akiwi (PHP) & MySQL database (MyISAM) ○ Pubic Website ○ Private Website (users, eCommerce ● Flash animations ○ Displaying messages and other features ● “Manager” in PHP ○ Communication between Animations/Front/Back
  • 9. Back - Key Components (Tesial) ● Engine ○ Java web application ○ API used by Front for data management ■ sessions, tweets, moderation, tweetos,... ● Batch ○ Java web application ○ Formerly grabbing Tweets ○ Grabbing pictures (avatars & medias)
  • 10. Technical Infrastructure ● Front/Back Server ● DB Servers ○ Front / Back ○ Replication (fail over) ● Dev Server ○ dev (front / back) ○ pré-prod (front / back)
  • 11. SVN ● KISS ● dev = trunk ● pre-prod = branch ● prod = tag on branch or trunk ● front = release by switch ● back = release by packaging
  • 12. Back Software Architecture Maven 2 Spring 3.1 Hibernate 3.2 ehcache 1.5 Twitter4J 3 Maya 0.2 ...
  • 13. Back Software Architecture ● DTO & DAO ○ Data Structure & persistence ■ session, tweet, tweetos, hashtags, ... ● Services ○ Business functionalities ○ Transaction management ● Clients ○ Engine ○ Batches
  • 14. Engine ● Java Web Application ● API REST ○ CRUD operations ● Used by Front for data management ● Call Services layer
  • 15. Batches ● Java Web Application ● Quartz Jobs ○ Formerly Tweets Grabbing ○ Avatars Grabbing ○ Pictures Grabbing ● Call Services Layer
  • 16. Challenges ● Scalability ○ SaaS and Agency are growing ● Twitter ○ New technical and business constraints ● Product ○ Must evolve by integrating other social networks
  • 17. Twitter API ● Let’s talk about Twitter API
  • 18. Twitter APIs ● APIs ○ Search API ○ REST API ○ Streaming API ○ https://dev.twitter.com/docs/history-rest-search-api ● Versions ○ API version 1 (deprecated) ○ API version 1.1
  • 19. Rate limiting ● Rate limit window duration ○ 15 minutes ● Requests allotted ○ per user ○ via application-only auth ● Example ○ GET statuses/user_timeline ○ per user: 150 requests per 15 minutes ○ via app: 300 requests per 15 minutes https://dev.twitter.com/docs/rate-limiting/1.1/limits
  • 20. Other technical limits ● Direct messages ○ 250 per day ● Tweets ○ 1,000 per day ○ Retweets are counted as Tweets. ● Changes to account email ○ Four per hour ● Following ○ 1,000 per day ● Following (account-based) ○ up to following 2,000 other users
  • 21. Platform objects ● Tweets can be found alone, within user objects, but most often within timelines ● Users can be found tweeting, following, and favoriting on Twitter ● Entities are most often found within Tweets ● Places can be found throughout the natural universe, but typically only appear attached to Tweets on Twitter
  • 22. Objects type ● JSON ! ● XML output will be dropped soon ○ Only JSON output with API 1.1 ● Be careful with ids (64 bits) ○ use String version (especially if using Javascript) ○ Twitpocalypse ■ https://dev.twitter.com/docs/twitter-ids-json-and-snowflake ○ Idpocalypse ■ https://dev.twitter.com/blog/64-bit-twitter-user-idpocalypse
  • 25. Entities / Entity Example ● Hashtags, Medias, URLs, User mentions, Symbols ● No need to parse ● Data used for display also (ex: display_url)
  • 27. Libraries ● PHP ○ Twitter-async (https://github.com/jmathai/twitter-async) ○ tmhOAuth (https://github. com/themattharris/tmhOAuth) ○ Zend Framework (http://framework.zend. com/manual/1.12/en/zend.service.twitter.html) ● Java ○ Twitter4J (http://twitter4j.org/) https://dev.twitter.com/docs/twitter-libraries
  • 28. Twitter4J ● Unofficial Java library for the Twitter API ● 100% Pure Java (5+) ● Android platform and Google App Engine ready ● Zero dependency : No additional jars required ● Built-in OAuth support ● Out-of-the-box gzip support ● 100% Twitter API 1.1 compatible
  • 29. Tools ● Twurl ○ https://github.com/marcel/twurl ○ "curl" for Twitter API ○ Manage access tokens (authentication) ● Apigee Console ○ https://apigee.com/console ○ Free console to execute APIs
  • 30. Search API ● Similar to http://search.twitter.com ● Criteria ○ terms ○ geocode ○ language ("Language detection is best-effort") ○ count, until, since-id, max-id ○ result type: mixed, recent, popular ○ include entities ● Paginated ! ○ you have to manage this by yourself
  • 31. REST API ● Timelines ● Tweets ● Direct Messages ● Friends & Followers ● Users ● Suggested Users ● Favorites ● Lists ● Saved Searches ● Places & Geo ● Trends ● Spam Reporting ● OAuth ● Help
  • 32. Streaming API ● Persistent HTTP connection ○ until you decide to close it ● Could be reeeeaaaaaaally huge ! ○ Think about you architecture (hard and soft) ! ○ Separate storage and consumption ● Only one stream opened at a time ● Could be tricky to managed ○ Use a library
  • 33. Streaming API endpoints groups ● Public Streams ○ GET statuses/sample ○ POST statuses/filter ○ GET statuses/firehose (limited access) ● User Streams ○ Data and events for a specific user ● Site Streams (beta and limited access) ○ Real time update for large number of users
  • 34. About the challenges ● Scalability ● Twitter constraints ● Product evolution => Use of Twitter Stream API => Other Social Networks integration => Maya
  • 35. Maya Abstraction layer for feed and post Used in TWP as the input source for media
  • 36. Maya - General architecture Listener Listener Session Session
  • 37. Maya - concepts ● Post: content emitted on a (social) network by a user ● Feed: a collection of posts matching a set of filters (PostFilter) ● FeedOperator: the service to register, manage stop and restart feeds
  • 38. Maya twitter plugin ● Backed by Twitter4J ● Rely on the live stream twitter API ● Challenges ○ Adding new feeds on the fly without losing any history ○ Single channel for all feeds, need to identify to which feed(s) a tweet belongs to ● Demo!
  • 39. Front Evolutions ● From Pull to Push ○ NodeJS ● Manager from PHP to JS ○ NodeJS ● HTML5 Animations
  • 40. Next Improvements ● Queuing traitement with SI ○ Message traitement ○ Medias grabbing and/or treatment ● Adding other social networks ● Better scalability - reliability - performance ○ load balancing ○ replication ○ nginx ○ ...
  • 41. Q/A