SlideShare a Scribd company logo
1 of 60
` Web 2.0, OpenSocial, and Design Patterns
1998 My Excite 2008 iGoogle
Mini web apps Widgets … Configurable
Re-arrangement is cumbersome Editing preferences -> new page Content refresh -> entire page refresh Monolithic - All content from excite.com
Re-arrangement is cumbersome Re-arrangement via drag-and-drop Editing preferences -> new page Editing preferences inline Content refresh -> entire page refresh Autonomous gadgets Monolithic - All content from excite.com Aggregation of distributed gadgets
Small pieces, loosely joined User participation Usability and Simplicity  Social interaction Data sharing  Agile development APIs (REST, JSON) Identity (OpenID) Delegated Trust (OAuth)  News Feeds (RSS/Atom) Microformats Tagging  Open Web Standards Mashups/Aggregation Ajax Sandboxing Video Widgets Web 2.0
Small pieces, loosely joined User participation Usability and Simplicity  Social interaction Data sharing  Agile development Principles User Interface APIs ( REST ,  JSON ) Identity (OpenID) Delegated Trust ( OAuth )  News Feeds (RSS/Atom) Microformats Tagging  Open Web Standards Mashups/Aggregation Ajax Sandboxing Video Widgets
REST
Use the Force
Transport protocols (e.g. TCP/IP) Networked API protocol (e.g. CORBA/IIOP, COM/DCOM) Web standards (HTTP, HTML, CGI) Web based API protocols (e.g. WSDL, SOAP) REST = Working with existing standards
<xs:schema targetNamespace=&quot;http://schemas.xmlsoap.org/wsdl/soap/&quot;> <xs:import namespace=&quot;http://schemas.xmlsoap.org/wsdl/&quot;/> − <xs:simpleType name=&quot;encodingStyle&quot;> − <xs:annotation> − <xs:documentation> &quot;encodingStyle&quot; indicates any canonicalization conventions followed in the contents of the containing element.  For example, the value &quot;http://schemas.xmlsoap.org/soap/encoding/&quot; indicates the pattern described in SOAP specification </xs:documentation> </xs:annotation> <xs:list itemType=&quot;xs:anyURI&quot;/> </xs:simpleType> <xs:element name=&quot;binding&quot; type=&quot;soap:tBinding&quot;/> − <xs:complexType name=&quot;tBinding&quot;> − <xs:complexContent> − <xs:extension base=&quot;wsdl:tExtensibilityElement&quot;> <xs:attribute name=&quot;transport&quot; type=&quot;xs:anyURI&quot; use=&quot;required&quot;/> <xs:attribute name=&quot;style&quot; type=&quot;soap:tStyleChoice&quot; use=&quot;optional&quot;/> </xs:extension> </xs:complexContent> </xs:complexType> − <xs:simpleType name=&quot;tStyleChoice&quot;> − <xs:restriction base=&quot;xs:string&quot;> <xs:enumeration value=&quot;rpc&quot;/> <xs:enumeration value=&quot;document&quot;/> </xs:restriction> </xs:simpleType> <xs:element name=&quot;operation&quot; type=&quot;soap:tOperation&quot;/> ……… .. ………… −
GET  - read POST - update PUT – create DELETE - delete
GET  - read http://example.com/movies/123.xml POST - update http://example.com/movies/123.xml PUT – create http://example.com/movies DELETE - delete  http://example.com/movies/123.xml
http://example.com/movies/123.xml   <match> <id>123</id> <name>Raging Bull</name> <year>1980</year> </match> http://example.com/movies/123.html <h1 id=“movie123”>Raging Bull</h1> Year: 1980 http://example.com/movies/123.json {  id: 123, name: “Raging Bull”, year: 1980 }
REST simplifies calls and facilitates mashups
JSON
<?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?> <statuses type=&quot;array&quot;> <status> <created_at>Tue Jun 17 23:41:26 +0000 2008</created_at> <id>837306935</id> <text>Click top-right &quot;X&quot; on most windows nowadays and it's just going to minimise instead of closing.If I wanted minimise, I'd hit &quot;_&quot; not &quot;X&quot;!!!</text> <source>&lt;a href=&quot;http://www.twhirl.org/&quot;&gt;twhirl&lt;/a&gt;</source> <truncated>false</truncated> <in_reply_to_status_id></in_reply_to_status_id> <in_reply_to_user_id></in_reply_to_user_id> <favorited>false</favorited> <user> <id>1112431</id> <name>Michael Mahemoff</name> <screen_name>mahemoff</screen_name> <location>London</location> <description>Choose Web</description> <profile_image_url>http://s3.amazonaws.com/twitter_production/profile_images/28010672/beedogtilly_normal.jpg</profile_image_url> <url>http://softwareas.com</url> <protected>false</protected> <followers_count>96</followers_count> </user> </status> <status> <created_at>Tue Jun 17 18:29:49 +0000 2008</created_at> <id>837085942</id> <text>@tdroza I don't know a browser extension that formats JSON.Browsers in 2008 still do a horrible job of formatting non-HTML! http://is.gd/zyi</text> <source>&lt;a href=&quot;http://www.twhirl.org/&quot;&gt;twhirl&lt;/a&gt;</source> <truncated>false</truncated> <in_reply_to_status_id>836898666</in_reply_to_status_id> <in_reply_to_user_id>1671021</in_reply_to_user_id> <favorited>false</favorited> <user> <id>1112431</id> <name>Michael Mahemoff</name> <screen_name>mahemoff</screen_name> <location>London</location> <description>Choose Web</description> <profile_image_url>http://s3.amazonaws.com/twitter_production/profile_images/28010672/beedogtilly_normal.jpg</profile_image_url> <url>http://softwareas.com</url> <protected>false</protected> <followers_count>96</followers_count> </user> </status> </statuses> http://twitter.com/statuses/user_timeline/mahemoff.xml
[ { &quot;truncated&quot;: false, &quot;in_reply_to_status_id&quot;: null, &quot;favorited&quot;: false, &quot;in_reply_to_user_id&quot;: null, &quot;source&quot;: &quot;<a href=amp;quot;http:www.twhirl.orgamp;quot;>twhirl<a>&quot;, &quot;id&quot;: 837306935, &quot;user&quot;: { &quot;name&quot;: &quot;Michael Mahemoff&quot;, &quot;screen_name&quot;: &quot;mahemoff&quot;, &quot;followers_count&quot;: 96, &quot;url&quot;: &quot;http:softwareas.com&quot;, &quot;profile_image_url&quot;: &quot;http:s3.amazonaws.comtwitter_productionprofile_images28010672beedogtilly_normal.jpg&quot;, &quot;description&quot;: &quot;Choose Web&quot;, &quot;location&quot;: &quot;London&quot;, &quot;id&quot;: 1112431, &quot;protected&quot;: false }, &quot;text&quot;: &quot;Click top-right amp;quot;Xamp;quot; on most windows nowadays and it's just going to minimise instead of closing.If I wanted minimise, I'd hit amp;quot;_amp;quot; not amp;quot;Xamp;quot;!!!&quot;, &quot;created_at&quot;: &quot;Tue Jun 17 23:41:26 +0000 2008&quot; }, { &quot;truncated&quot;: false, &quot;in_reply_to_status_id&quot;: 836898666, &quot;favorited&quot;: false, &quot;in_reply_to_user_id&quot;: 1671021, &quot;source&quot;: &quot;<a href=amp;quot;http:www.twhirl.orgamp;quot;>twhirl<a>&quot;, &quot;id&quot;: 837085942, &quot;user&quot;: { &quot;name&quot;: &quot;Michael Mahemoff&quot;, &quot;screen_name&quot;: &quot;mahemoff&quot;, &quot;followers_count&quot;: 96, &quot;url&quot;: &quot;http:softwareas.com&quot;, &quot;profile_image_url&quot;: &quot;http:s3.amazonaws.comtwitter_productionprofile_images28010672beedogtilly_normal.jpg&quot;, &quot;description&quot;: &quot;Choose Web&quot;, &quot;location&quot;: &quot;London&quot;, &quot;id&quot;: 1112431, &quot;protected&quot;: false }, &quot;text&quot;: &quot;@tdroza I don't know a browser extension that formats JSON.Browsers in 2008 still do a horrible job of formatting non-HTML! http:is.gdzyi&quot;, &quot;created_at&quot;: &quot;Tue Jun 17 18:29:49 +0000 2008&quot; } ] http://twitter.com/statuses/ user_timeline/mahemoff.json
3 rd  party 3 rd  party XML/HTML (Proxied) XML/HTML (Proxied) JSON (Direct) JSON (Direct) Website server
OAuth
http://hueniverse.com
http://hueniverse.com
Small pieces, loosely joined User participation Usability and Simplicity  Social interaction Data sharing  Agile development APIs (REST, JSON) Identity (OpenID) Delegated Trust (OAuth)  News Feeds (RSS/Atom) Microformats Tagging  Open Web Standards Mashups/Aggregation Ajax Sandboxing Video Widgets Web 2.0
Open Web Standards
HTML Javascript CSS DOM XMLHttpRequest
+ Libraries and Frameworks
Ajax
Website server 1. Initial site 2. Ongoing dialogue (no page refresh) Rich , dynamic, UI
Sandboxing
IFrames
 
Porous sandboxes
 
Inter-Frame Communication
http://is.gd/AaR
Caja
“ Using Caja, web apps can safely allow scripts in third party content.” Google-Caja
Widgets and OpenSocial
Gadgets (aka Widgets)
Mini Web Apps
Widget portals (iGoogle, NetVibes) Custom web pages (blogs, homepages) Social networks (Facebook, Bebo)
OpenSocial
A Google iGoogle Google Gadget Google Orkut Google Gadget OpenSocial API Megacorp Megacorp Widget Facebook Facebook  Application Facebook “social” API Social API Widget API Container Website Nb in most cases,  widgets can also be embedded on standalone websites Stovepiped model (2005-2007)
Google iGoogle Google Gadget Google Orkut OpenSocial API Megacorp Facebook ?????? Social API Widget API Container Website OpenSocial model (in production from 2008)
OpenSocial =  Widgets  + Social APIs
Gadgets == Widgets
An open standard
Gadget Portals
iGoogle server Gadget platform JSON API calls Proxied REST calls Proxied OAuth calls XMLHttpRequest calls Gadgets are sandboxed … …  but porous …  can talk to each other or to portal Gadget
(1) Gadget Server (2a) Platform Services (3a) Container (2b) Platform JS Gadget provider Gadget XML Spec Gadget HTML/JS/CSS Transforms gadget XML spec into embeddable web content Offers platform of browser-side and back-end  services, e.g. proxying, caching, preferences, social info Aggregrates widgets into portal. Features include: user registration, preference persistence, theming, browsing/searching of gadgets External website (3b)  Container  JS Embeds Gadget Via script tag Embeds Gadgets Via script tag Shindig
Design Patterns
Software Patterns
Using   Patterns  to  Improve   Our   Architectural Vision Norman L. Kerth and Ward Cunningham IEEE Software, Vol. 23, No. 1. Jan/Feb 1997
 
Browser-Side Cache, Submission Throttling, …. XMLHttpRequest Call, Richer Plugin, … XMLHttpRequest Call, Richer Plugin, … Live Search, Lazy Registration, … Ajax Patterns
Multiple Tabs, Popup Window, … Read-Write Element … Inter-Gadget Drag-and-Drop … Power-of-attorney call … UI Customisation … Relative Path Reference … First Move … Social Fixture … OpenSocial Patterns
OpenSocial – The Future
Caja
Cross-network social APIS
OAuth

More Related Content

What's hot

The Frameless Opac
The Frameless OpacThe Frameless Opac
The Frameless OpacBill Drew
 
WordPress Development Confoo 2010
WordPress Development Confoo 2010WordPress Development Confoo 2010
WordPress Development Confoo 2010Brendan Sera-Shriar
 
Re-using social media data
Re-using social media dataRe-using social media data
Re-using social media dataGlenn Jones
 
CIS13: Identity Tech Overview: Less Pain, More Gain
CIS13: Identity Tech Overview: Less Pain, More GainCIS13: Identity Tech Overview: Less Pain, More Gain
CIS13: Identity Tech Overview: Less Pain, More GainCloudIDSummit
 
The page and the desktop
The page and the desktopThe page and the desktop
The page and the desktopGlenn Jones
 
Try Web Components
Try Web ComponentsTry Web Components
Try Web Components拓樹 谷
 
Teri's Resume
Teri's ResumeTeri's Resume
Teri's Resumeteri louk
 
I Don't Care About Security (And Neither Should You)
I Don't Care About Security (And Neither Should You)I Don't Care About Security (And Neither Should You)
I Don't Care About Security (And Neither Should You)Joel Lord
 
Html5 structure tags
Html5 structure tagsHtml5 structure tags
Html5 structure tagsSEO SKills
 

What's hot (14)

Ajax ons2
Ajax ons2Ajax ons2
Ajax ons2
 
Apache Tapestry
Apache TapestryApache Tapestry
Apache Tapestry
 
The Frameless Opac
The Frameless OpacThe Frameless Opac
The Frameless Opac
 
WordPress Development Confoo 2010
WordPress Development Confoo 2010WordPress Development Confoo 2010
WordPress Development Confoo 2010
 
Javascript Basic
Javascript BasicJavascript Basic
Javascript Basic
 
Re-using social media data
Re-using social media dataRe-using social media data
Re-using social media data
 
CIS13: Identity Tech Overview: Less Pain, More Gain
CIS13: Identity Tech Overview: Less Pain, More GainCIS13: Identity Tech Overview: Less Pain, More Gain
CIS13: Identity Tech Overview: Less Pain, More Gain
 
The page and the desktop
The page and the desktopThe page and the desktop
The page and the desktop
 
Comic
ComicComic
Comic
 
Try Web Components
Try Web ComponentsTry Web Components
Try Web Components
 
Teri's Resume
Teri's ResumeTeri's Resume
Teri's Resume
 
A More Perfect Union with CSS
A More Perfect Union with CSSA More Perfect Union with CSS
A More Perfect Union with CSS
 
I Don't Care About Security (And Neither Should You)
I Don't Care About Security (And Neither Should You)I Don't Care About Security (And Neither Should You)
I Don't Care About Security (And Neither Should You)
 
Html5 structure tags
Html5 structure tagsHtml5 structure tags
Html5 structure tags
 

Viewers also liked

Cuando todo parece perdido
Cuando todo parece perdidoCuando todo parece perdido
Cuando todo parece perdidojoaquino
 
Bored at Work
Bored at WorkBored at Work
Bored at Workebasamoht
 
Groove Presentation Services Demo V11
Groove Presentation Services Demo V11Groove Presentation Services Demo V11
Groove Presentation Services Demo V11Groove11
 
Ideas from Supernova 2008 broadband track
Ideas from Supernova 2008 broadband trackIdeas from Supernova 2008 broadband track
Ideas from Supernova 2008 broadband trackSupernova Conference
 
Honeyshed Sales Deck
Honeyshed Sales DeckHoneyshed Sales Deck
Honeyshed Sales DeckHoneyshed
 
Russian Popular Music
Russian Popular MusicRussian Popular Music
Russian Popular Musiclonnyh
 
美体健身瑜珈教材
美体健身瑜珈教材美体健身瑜珈教材
美体健身瑜珈教材Lizhong Shen
 

Viewers also liked (8)

Cuando todo parece perdido
Cuando todo parece perdidoCuando todo parece perdido
Cuando todo parece perdido
 
Bored at Work
Bored at WorkBored at Work
Bored at Work
 
Groove Presentation Services Demo V11
Groove Presentation Services Demo V11Groove Presentation Services Demo V11
Groove Presentation Services Demo V11
 
Ideas from Supernova 2008 broadband track
Ideas from Supernova 2008 broadband trackIdeas from Supernova 2008 broadband track
Ideas from Supernova 2008 broadband track
 
Honeyshed Sales Deck
Honeyshed Sales DeckHoneyshed Sales Deck
Honeyshed Sales Deck
 
Cultura General
Cultura GeneralCultura General
Cultura General
 
Russian Popular Music
Russian Popular MusicRussian Popular Music
Russian Popular Music
 
美体健身瑜珈教材
美体健身瑜珈教材美体健身瑜珈教材
美体健身瑜珈教材
 

Similar to Widgets Tools Keynote

We9 Struts 2.0
We9 Struts 2.0We9 Struts 2.0
We9 Struts 2.0wangjiaz
 
GTAC: AtomPub, testing your server implementation
GTAC: AtomPub, testing your server implementationGTAC: AtomPub, testing your server implementation
GTAC: AtomPub, testing your server implementationDavid Calavera
 
Grddl In A Nutshell V1
Grddl In A Nutshell V1Grddl In A Nutshell V1
Grddl In A Nutshell V1Fabien Gandon
 
HTML5 Overview
HTML5 OverviewHTML5 Overview
HTML5 Overviewreybango
 
Developing and testing ajax components
Developing and testing ajax componentsDeveloping and testing ajax components
Developing and testing ajax componentsIgnacio Coloma
 
Introduction into Struts2 jQuery Grid Tags
Introduction into Struts2 jQuery Grid TagsIntroduction into Struts2 jQuery Grid Tags
Introduction into Struts2 jQuery Grid TagsJohannes Geppert
 
Neil Patel - What You Need to be Measuring and How to Do It
Neil Patel - What You Need to be Measuring and How to Do ItNeil Patel - What You Need to be Measuring and How to Do It
Neil Patel - What You Need to be Measuring and How to Do ItCarsonified Team
 
Forum Presentation
Forum PresentationForum Presentation
Forum PresentationAngus Pratt
 
Flex For Flash Developers Ff 2006 Final
Flex For Flash Developers Ff 2006 FinalFlex For Flash Developers Ff 2006 Final
Flex For Flash Developers Ff 2006 Finalematrix
 
Plone Interactivity
Plone InteractivityPlone Interactivity
Plone InteractivityEric Steele
 
KMUTNB - Internet Programming 3/7
KMUTNB - Internet Programming 3/7KMUTNB - Internet Programming 3/7
KMUTNB - Internet Programming 3/7phuphax
 
IBM Lotus Notes Domino XPages and XPages for Mobile
IBM Lotus Notes Domino XPages and XPages for MobileIBM Lotus Notes Domino XPages and XPages for Mobile
IBM Lotus Notes Domino XPages and XPages for MobileChris Toohey
 
Rails 3 And The Real Secret To High Productivity Presentation
Rails 3 And The Real Secret To High Productivity PresentationRails 3 And The Real Secret To High Productivity Presentation
Rails 3 And The Real Secret To High Productivity Presentationrailsconf
 
Real time web (Orbited) at BCNE3
Real time web (Orbited) at BCNE3Real time web (Orbited) at BCNE3
Real time web (Orbited) at BCNE3Alex Kavanagh
 

Similar to Widgets Tools Keynote (20)

We9 Struts 2.0
We9 Struts 2.0We9 Struts 2.0
We9 Struts 2.0
 
GTAC: AtomPub, testing your server implementation
GTAC: AtomPub, testing your server implementationGTAC: AtomPub, testing your server implementation
GTAC: AtomPub, testing your server implementation
 
Grddl In A Nutshell V1
Grddl In A Nutshell V1Grddl In A Nutshell V1
Grddl In A Nutshell V1
 
Lecture1 B Frames&Forms
Lecture1 B  Frames&FormsLecture1 B  Frames&Forms
Lecture1 B Frames&Forms
 
HTML5 Overview
HTML5 OverviewHTML5 Overview
HTML5 Overview
 
JSP Custom Tags
JSP Custom TagsJSP Custom Tags
JSP Custom Tags
 
Developing and testing ajax components
Developing and testing ajax componentsDeveloping and testing ajax components
Developing and testing ajax components
 
DevDays09 Internet Explorer 8
DevDays09 Internet Explorer 8DevDays09 Internet Explorer 8
DevDays09 Internet Explorer 8
 
Introduction into Struts2 jQuery Grid Tags
Introduction into Struts2 jQuery Grid TagsIntroduction into Struts2 jQuery Grid Tags
Introduction into Struts2 jQuery Grid Tags
 
Neil Patel - What You Need to be Measuring and How to Do It
Neil Patel - What You Need to be Measuring and How to Do ItNeil Patel - What You Need to be Measuring and How to Do It
Neil Patel - What You Need to be Measuring and How to Do It
 
Forum Presentation
Forum PresentationForum Presentation
Forum Presentation
 
Flex For Flash Developers Ff 2006 Final
Flex For Flash Developers Ff 2006 FinalFlex For Flash Developers Ff 2006 Final
Flex For Flash Developers Ff 2006 Final
 
Plone Interactivity
Plone InteractivityPlone Interactivity
Plone Interactivity
 
KMUTNB - Internet Programming 3/7
KMUTNB - Internet Programming 3/7KMUTNB - Internet Programming 3/7
KMUTNB - Internet Programming 3/7
 
HTML5: 5 Quick Wins
HTML5:  5 Quick WinsHTML5:  5 Quick Wins
HTML5: 5 Quick Wins
 
IBM Lotus Notes Domino XPages and XPages for Mobile
IBM Lotus Notes Domino XPages and XPages for MobileIBM Lotus Notes Domino XPages and XPages for Mobile
IBM Lotus Notes Domino XPages and XPages for Mobile
 
Rails 3 And The Real Secret To High Productivity Presentation
Rails 3 And The Real Secret To High Productivity PresentationRails 3 And The Real Secret To High Productivity Presentation
Rails 3 And The Real Secret To High Productivity Presentation
 
Licencias
LicenciasLicencias
Licencias
 
Licencias
LicenciasLicencias
Licencias
 
Real time web (Orbited) at BCNE3
Real time web (Orbited) at BCNE3Real time web (Orbited) at BCNE3
Real time web (Orbited) at BCNE3
 

Recently uploaded

Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processorsdebabhi2
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Enterprise Knowledge
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking MenDelhi Call girls
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking MenDelhi Call girls
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slidespraypatel2
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfsudhanshuwaghmare1
 
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?Antenna Manufacturer Coco
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Scriptwesley chun
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...apidays
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsJoaquim Jorge
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityPrincipled Technologies
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024Rafal Los
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxKatpro Technologies
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking MenDelhi Call girls
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024Results
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slidevu2urc
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreternaman860154
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUK Journal
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024The Digital Insurer
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfEnterprise Knowledge
 

Recently uploaded (20)

Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slides
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
 

Widgets Tools Keynote

  • 1. ` Web 2.0, OpenSocial, and Design Patterns
  • 2. 1998 My Excite 2008 iGoogle
  • 3. Mini web apps Widgets … Configurable
  • 4. Re-arrangement is cumbersome Editing preferences -> new page Content refresh -> entire page refresh Monolithic - All content from excite.com
  • 5. Re-arrangement is cumbersome Re-arrangement via drag-and-drop Editing preferences -> new page Editing preferences inline Content refresh -> entire page refresh Autonomous gadgets Monolithic - All content from excite.com Aggregation of distributed gadgets
  • 6. Small pieces, loosely joined User participation Usability and Simplicity Social interaction Data sharing Agile development APIs (REST, JSON) Identity (OpenID) Delegated Trust (OAuth) News Feeds (RSS/Atom) Microformats Tagging Open Web Standards Mashups/Aggregation Ajax Sandboxing Video Widgets Web 2.0
  • 7. Small pieces, loosely joined User participation Usability and Simplicity Social interaction Data sharing Agile development Principles User Interface APIs ( REST , JSON ) Identity (OpenID) Delegated Trust ( OAuth ) News Feeds (RSS/Atom) Microformats Tagging Open Web Standards Mashups/Aggregation Ajax Sandboxing Video Widgets
  • 10. Transport protocols (e.g. TCP/IP) Networked API protocol (e.g. CORBA/IIOP, COM/DCOM) Web standards (HTTP, HTML, CGI) Web based API protocols (e.g. WSDL, SOAP) REST = Working with existing standards
  • 11. <xs:schema targetNamespace=&quot;http://schemas.xmlsoap.org/wsdl/soap/&quot;> <xs:import namespace=&quot;http://schemas.xmlsoap.org/wsdl/&quot;/> − <xs:simpleType name=&quot;encodingStyle&quot;> − <xs:annotation> − <xs:documentation> &quot;encodingStyle&quot; indicates any canonicalization conventions followed in the contents of the containing element. For example, the value &quot;http://schemas.xmlsoap.org/soap/encoding/&quot; indicates the pattern described in SOAP specification </xs:documentation> </xs:annotation> <xs:list itemType=&quot;xs:anyURI&quot;/> </xs:simpleType> <xs:element name=&quot;binding&quot; type=&quot;soap:tBinding&quot;/> − <xs:complexType name=&quot;tBinding&quot;> − <xs:complexContent> − <xs:extension base=&quot;wsdl:tExtensibilityElement&quot;> <xs:attribute name=&quot;transport&quot; type=&quot;xs:anyURI&quot; use=&quot;required&quot;/> <xs:attribute name=&quot;style&quot; type=&quot;soap:tStyleChoice&quot; use=&quot;optional&quot;/> </xs:extension> </xs:complexContent> </xs:complexType> − <xs:simpleType name=&quot;tStyleChoice&quot;> − <xs:restriction base=&quot;xs:string&quot;> <xs:enumeration value=&quot;rpc&quot;/> <xs:enumeration value=&quot;document&quot;/> </xs:restriction> </xs:simpleType> <xs:element name=&quot;operation&quot; type=&quot;soap:tOperation&quot;/> ……… .. ………… −
  • 12. GET - read POST - update PUT – create DELETE - delete
  • 13. GET - read http://example.com/movies/123.xml POST - update http://example.com/movies/123.xml PUT – create http://example.com/movies DELETE - delete http://example.com/movies/123.xml
  • 14. http://example.com/movies/123.xml <match> <id>123</id> <name>Raging Bull</name> <year>1980</year> </match> http://example.com/movies/123.html <h1 id=“movie123”>Raging Bull</h1> Year: 1980 http://example.com/movies/123.json { id: 123, name: “Raging Bull”, year: 1980 }
  • 15. REST simplifies calls and facilitates mashups
  • 16. JSON
  • 17. <?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?> <statuses type=&quot;array&quot;> <status> <created_at>Tue Jun 17 23:41:26 +0000 2008</created_at> <id>837306935</id> <text>Click top-right &quot;X&quot; on most windows nowadays and it's just going to minimise instead of closing.If I wanted minimise, I'd hit &quot;_&quot; not &quot;X&quot;!!!</text> <source>&lt;a href=&quot;http://www.twhirl.org/&quot;&gt;twhirl&lt;/a&gt;</source> <truncated>false</truncated> <in_reply_to_status_id></in_reply_to_status_id> <in_reply_to_user_id></in_reply_to_user_id> <favorited>false</favorited> <user> <id>1112431</id> <name>Michael Mahemoff</name> <screen_name>mahemoff</screen_name> <location>London</location> <description>Choose Web</description> <profile_image_url>http://s3.amazonaws.com/twitter_production/profile_images/28010672/beedogtilly_normal.jpg</profile_image_url> <url>http://softwareas.com</url> <protected>false</protected> <followers_count>96</followers_count> </user> </status> <status> <created_at>Tue Jun 17 18:29:49 +0000 2008</created_at> <id>837085942</id> <text>@tdroza I don't know a browser extension that formats JSON.Browsers in 2008 still do a horrible job of formatting non-HTML! http://is.gd/zyi</text> <source>&lt;a href=&quot;http://www.twhirl.org/&quot;&gt;twhirl&lt;/a&gt;</source> <truncated>false</truncated> <in_reply_to_status_id>836898666</in_reply_to_status_id> <in_reply_to_user_id>1671021</in_reply_to_user_id> <favorited>false</favorited> <user> <id>1112431</id> <name>Michael Mahemoff</name> <screen_name>mahemoff</screen_name> <location>London</location> <description>Choose Web</description> <profile_image_url>http://s3.amazonaws.com/twitter_production/profile_images/28010672/beedogtilly_normal.jpg</profile_image_url> <url>http://softwareas.com</url> <protected>false</protected> <followers_count>96</followers_count> </user> </status> </statuses> http://twitter.com/statuses/user_timeline/mahemoff.xml
  • 18. [ { &quot;truncated&quot;: false, &quot;in_reply_to_status_id&quot;: null, &quot;favorited&quot;: false, &quot;in_reply_to_user_id&quot;: null, &quot;source&quot;: &quot;<a href=amp;quot;http:www.twhirl.orgamp;quot;>twhirl<a>&quot;, &quot;id&quot;: 837306935, &quot;user&quot;: { &quot;name&quot;: &quot;Michael Mahemoff&quot;, &quot;screen_name&quot;: &quot;mahemoff&quot;, &quot;followers_count&quot;: 96, &quot;url&quot;: &quot;http:softwareas.com&quot;, &quot;profile_image_url&quot;: &quot;http:s3.amazonaws.comtwitter_productionprofile_images28010672beedogtilly_normal.jpg&quot;, &quot;description&quot;: &quot;Choose Web&quot;, &quot;location&quot;: &quot;London&quot;, &quot;id&quot;: 1112431, &quot;protected&quot;: false }, &quot;text&quot;: &quot;Click top-right amp;quot;Xamp;quot; on most windows nowadays and it's just going to minimise instead of closing.If I wanted minimise, I'd hit amp;quot;_amp;quot; not amp;quot;Xamp;quot;!!!&quot;, &quot;created_at&quot;: &quot;Tue Jun 17 23:41:26 +0000 2008&quot; }, { &quot;truncated&quot;: false, &quot;in_reply_to_status_id&quot;: 836898666, &quot;favorited&quot;: false, &quot;in_reply_to_user_id&quot;: 1671021, &quot;source&quot;: &quot;<a href=amp;quot;http:www.twhirl.orgamp;quot;>twhirl<a>&quot;, &quot;id&quot;: 837085942, &quot;user&quot;: { &quot;name&quot;: &quot;Michael Mahemoff&quot;, &quot;screen_name&quot;: &quot;mahemoff&quot;, &quot;followers_count&quot;: 96, &quot;url&quot;: &quot;http:softwareas.com&quot;, &quot;profile_image_url&quot;: &quot;http:s3.amazonaws.comtwitter_productionprofile_images28010672beedogtilly_normal.jpg&quot;, &quot;description&quot;: &quot;Choose Web&quot;, &quot;location&quot;: &quot;London&quot;, &quot;id&quot;: 1112431, &quot;protected&quot;: false }, &quot;text&quot;: &quot;@tdroza I don't know a browser extension that formats JSON.Browsers in 2008 still do a horrible job of formatting non-HTML! http:is.gdzyi&quot;, &quot;created_at&quot;: &quot;Tue Jun 17 18:29:49 +0000 2008&quot; } ] http://twitter.com/statuses/ user_timeline/mahemoff.json
  • 19. 3 rd party 3 rd party XML/HTML (Proxied) XML/HTML (Proxied) JSON (Direct) JSON (Direct) Website server
  • 20. OAuth
  • 23. Small pieces, loosely joined User participation Usability and Simplicity Social interaction Data sharing Agile development APIs (REST, JSON) Identity (OpenID) Delegated Trust (OAuth) News Feeds (RSS/Atom) Microformats Tagging Open Web Standards Mashups/Aggregation Ajax Sandboxing Video Widgets Web 2.0
  • 25. HTML Javascript CSS DOM XMLHttpRequest
  • 26. + Libraries and Frameworks
  • 27. Ajax
  • 28. Website server 1. Initial site 2. Ongoing dialogue (no page refresh) Rich , dynamic, UI
  • 31.  
  • 33.  
  • 36. Caja
  • 37. “ Using Caja, web apps can safely allow scripts in third party content.” Google-Caja
  • 41. Widget portals (iGoogle, NetVibes) Custom web pages (blogs, homepages) Social networks (Facebook, Bebo)
  • 43. A Google iGoogle Google Gadget Google Orkut Google Gadget OpenSocial API Megacorp Megacorp Widget Facebook Facebook Application Facebook “social” API Social API Widget API Container Website Nb in most cases, widgets can also be embedded on standalone websites Stovepiped model (2005-2007)
  • 44. Google iGoogle Google Gadget Google Orkut OpenSocial API Megacorp Facebook ?????? Social API Widget API Container Website OpenSocial model (in production from 2008)
  • 45. OpenSocial = Widgets + Social APIs
  • 49. iGoogle server Gadget platform JSON API calls Proxied REST calls Proxied OAuth calls XMLHttpRequest calls Gadgets are sandboxed … … but porous … can talk to each other or to portal Gadget
  • 50. (1) Gadget Server (2a) Platform Services (3a) Container (2b) Platform JS Gadget provider Gadget XML Spec Gadget HTML/JS/CSS Transforms gadget XML spec into embeddable web content Offers platform of browser-side and back-end services, e.g. proxying, caching, preferences, social info Aggregrates widgets into portal. Features include: user registration, preference persistence, theming, browsing/searching of gadgets External website (3b) Container JS Embeds Gadget Via script tag Embeds Gadgets Via script tag Shindig
  • 53. Using Patterns to Improve Our Architectural Vision Norman L. Kerth and Ward Cunningham IEEE Software, Vol. 23, No. 1. Jan/Feb 1997
  • 54.  
  • 55. Browser-Side Cache, Submission Throttling, …. XMLHttpRequest Call, Richer Plugin, … XMLHttpRequest Call, Richer Plugin, … Live Search, Lazy Registration, … Ajax Patterns
  • 56. Multiple Tabs, Popup Window, … Read-Write Element … Inter-Gadget Drag-and-Drop … Power-of-attorney call … UI Customisation … Relative Path Reference … First Move … Social Fixture … OpenSocial Patterns
  • 58. Caja
  • 60. OAuth