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

Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonAnna Loughnan Colquhoun
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Drew Madelung
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodJuan lago vázquez
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native ApplicationsWSO2
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MIND CTI
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024The Digital Insurer
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CVKhem
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobeapidays
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAndrey Devyatkin
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)wesley chun
 
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...apidays
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoffsammart93
 
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
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc
 
Navi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Navi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot ModelNavi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Navi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot ModelDeepika Singh
 
Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...
Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...
Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...apidays
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
MS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsMS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsNanddeep Nachan
 
Apidays Singapore 2024 - Modernizing Securities Finance by Madhu Subbu
Apidays Singapore 2024 - Modernizing Securities Finance by Madhu SubbuApidays Singapore 2024 - Modernizing Securities Finance by Madhu Subbu
Apidays Singapore 2024 - Modernizing Securities Finance by Madhu Subbuapidays
 

Recently uploaded (20)

Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CV
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
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...
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 
Navi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Navi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot ModelNavi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Navi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot Model
 
Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...
Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...
Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
MS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsMS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectors
 
Apidays Singapore 2024 - Modernizing Securities Finance by Madhu Subbu
Apidays Singapore 2024 - Modernizing Securities Finance by Madhu SubbuApidays Singapore 2024 - Modernizing Securities Finance by Madhu Subbu
Apidays Singapore 2024 - Modernizing Securities Finance by Madhu Subbu
 

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