SlideShare una empresa de Scribd logo
1 de 33
Descargar para leer sin conexión
Getting Started With
  Google Wave Development




James E. Robinson, III     NC State University
james.robinson@extension.org      NETC 2010
Google Wave v/s Google wave


Wave - the Wave protocol

wave - The Google wave web app
Wave Anatomy
Wavelet Anatomy
Wavelet Anatomy (cont.)

 Blips
 Participants
 Tags
 Data Documents
 metadata
    creator
    creation_time
    last_modified_time
    robot
    title
Blip Anatomy
Blip Anatomy (cont.)

  Document
  Annotations
  Children
  Parent (if not already)
  metadata
    creator
    contributors
    last_modified
    version
Gadgets: n, dynamic web content that
can be placed on any page on the web.
Gadgets can be games, mini
applications, news feeds, maps or any
content.

See also: JavaScript on steroids.
<?xml version="1.0" encoding="UTF-8" ?>
<Module>
 <ModulePrefs title="Hello, World">
  <Require feature="wave" />
 </ModulePrefs>
 <Content type="html">
    Hello, World!
 </Content>
</Module>
Wave Gadget API

 setStateCallback
 getState
 setPrivateStateCallback
 getPrivateState
 submitDelta
 setParticipantCallback
Gadget API Example

<?xml version="1.0" encoding="UTF-8" ?>

<Module>

<ModulePrefs title="Counter/State Example"
           height="120">
 <Require feature="wave" />
</ModulePrefs>
<Content type="html">
<![CDATA[

<div id="content_div"
     style="height: 50px;"></div>

<input type=button value="Click Me!"
id="butCount" onClick="buttonClicked()"
>

<input type=button value="Reset" id="
butReset" onClick="resetCounter()">
<script type="text/javascript">

 var div = $('content_div');

 function init() {
   if (wave &&
       wave.isInWaveContainer()) {
    wave.setStateCallback(stateUpdated);
   }
 }

gadgets.util.registerOnLoadHandler(init);
function buttonClicked() {
  var val = wave.getState().get('count', '0');
  wave.getState().submitDelta(
                     {'count': val + 1});
}

function stateUpdated() {
  if (!wave.getState().get('count')) {
      div.innerHTML = "The count is 0."
  } else {
      div.innerHTML = "The count is " +
                wave.getState().get('count');
  }
}
// Reset value of "count" to 0
 function resetCounter(){
   wave.getState().submitDelta({'count': '0'});
 }

</script>

 ]]>
 </Content>
</Module>
Gadget Hosting?
What To Do?
if __name__ == '__main__':

 myRobot = robot.Robot('robot name',
image_url='http://path.to/icon.png')

 myRobot.register_handler(
   events.WaveletSelfAdded,
   OnSelfAdded)

 myRobot.Run()
Add us a Gadget...

def OnSelfAdded(event, wavelet):
 blip = event.blip
 gadget = element.Gadget(GADGET_URL)
 blip.append(gadget)
Wave Happenings

 wavelet_blip_created
 wavelet_blip_removed
 wavelet_participants_change
 wavelet_self_added
 wavelet_self_removed
 wavelet_title_changed
 wavelet_timestamp_changed
 wavelet_version_changed
Blip Happenings

 blip_contributors_changed
 blip_deleted
 blip_submitted - only fires once
 blip_timestamp_changed
 blip_version_changed
 document_changed - various intervals
 form_button_clicked
code.google.com/appengine/
downloads.html
Register your new application...
Complex mapping structure

AppName: jerobins-test

Application URL: jerobins-test.appspot.com

Wave Address: jerobins-test@appspot.com
Now What?

def OnBlipSubmitted(event, wavelet):
 blip = event.blip
 gadget = blip.first(element.Gadget, 
                     url=GADGET_URL)
 if gadget:
   count = gadget.get('count', '0')
   gadget.update_element({'count', '0'})
   blip.append("nCount before blip" + 
                " changed: " + count)
Danger, Will Robinson!

Your robot or gadget may not be
the only gadget or robot on the
wave.
Annotations
Robot Annotations

def OnWaveletSelfAdded(event, wavelet):
 blip = event.blip
 blip.Annotation("my-robot/tag")

def OnButtonClicked(event, wavelet):
 blip = event.blip
 annots = blip.annotations
 if annots.include("my-robot/tag"):
   """ do MY robot stuff """
Active Robot API

 Performing scheduled tasks (e.g. cron
 jobs) at specified intervals
 Creating new waves within Google Wave
 in response to actions within Google Wave
 itself
 Responding to outside events or services
 by updating waves or creating new ones
Keep on Wavin' ...

Más contenido relacionado

La actualidad más candente

Asynchronous Programming with JavaScript
Asynchronous Programming with JavaScriptAsynchronous Programming with JavaScript
Asynchronous Programming with JavaScriptWebF
 
Backbone intro
Backbone introBackbone intro
Backbone introIan Yang
 
Javascript dom event
Javascript dom eventJavascript dom event
Javascript dom eventBunlong Van
 
JavaScript - Chapter 11 - Events
 JavaScript - Chapter 11 - Events  JavaScript - Chapter 11 - Events
JavaScript - Chapter 11 - Events WebStackAcademy
 
Event In JavaScript
Event In JavaScriptEvent In JavaScript
Event In JavaScriptShahDhruv21
 
The Open Web and what it means
The Open Web and what it meansThe Open Web and what it means
The Open Web and what it meansRobert Nyman
 
Introduction to modern front-end with Vue.js
Introduction to modern front-end with Vue.jsIntroduction to modern front-end with Vue.js
Introduction to modern front-end with Vue.jsmonterail
 
Web apps without internet
Web apps without internetWeb apps without internet
Web apps without internetMSDEVMTL
 
Grails Launchpad - From Ground Zero to Orbit
Grails Launchpad - From Ground Zero to OrbitGrails Launchpad - From Ground Zero to Orbit
Grails Launchpad - From Ground Zero to OrbitZachary Klein
 
BarCamp CR 2013 - Angularjs - Brian Salazar
BarCamp CR 2013 - Angularjs - Brian SalazarBarCamp CR 2013 - Angularjs - Brian Salazar
BarCamp CR 2013 - Angularjs - Brian Salazarbarcampcr
 
The Null Object Pattern
The Null Object PatternThe Null Object Pattern
The Null Object Patternmodern_legend
 

La actualidad más candente (13)

Asynchronous Programming with JavaScript
Asynchronous Programming with JavaScriptAsynchronous Programming with JavaScript
Asynchronous Programming with JavaScript
 
Backbone intro
Backbone introBackbone intro
Backbone intro
 
Javascript dom event
Javascript dom eventJavascript dom event
Javascript dom event
 
JavaScript - Chapter 11 - Events
 JavaScript - Chapter 11 - Events  JavaScript - Chapter 11 - Events
JavaScript - Chapter 11 - Events
 
Javascript event handler
Javascript event handlerJavascript event handler
Javascript event handler
 
Event In JavaScript
Event In JavaScriptEvent In JavaScript
Event In JavaScript
 
Client Web
Client WebClient Web
Client Web
 
The Open Web and what it means
The Open Web and what it meansThe Open Web and what it means
The Open Web and what it means
 
Introduction to modern front-end with Vue.js
Introduction to modern front-end with Vue.jsIntroduction to modern front-end with Vue.js
Introduction to modern front-end with Vue.js
 
Web apps without internet
Web apps without internetWeb apps without internet
Web apps without internet
 
Grails Launchpad - From Ground Zero to Orbit
Grails Launchpad - From Ground Zero to OrbitGrails Launchpad - From Ground Zero to Orbit
Grails Launchpad - From Ground Zero to Orbit
 
BarCamp CR 2013 - Angularjs - Brian Salazar
BarCamp CR 2013 - Angularjs - Brian SalazarBarCamp CR 2013 - Angularjs - Brian Salazar
BarCamp CR 2013 - Angularjs - Brian Salazar
 
The Null Object Pattern
The Null Object PatternThe Null Object Pattern
The Null Object Pattern
 

Destacado

Η ΠΡΑΓΑ ΤΗ ΝΥΧΤΑ
Η ΠΡΑΓΑ ΤΗ ΝΥΧΤΑΗ ΠΡΑΓΑ ΤΗ ΝΥΧΤΑ
Η ΠΡΑΓΑ ΤΗ ΝΥΧΤΑmilonitsa
 
I Can Haz Lite Box
I Can Haz Lite BoxI Can Haz Lite Box
I Can Haz Lite Boxjerobins
 
FriendFeed
FriendFeedFriendFeed
FriendFeedjerobins
 
Essential things that should always be in your car
Essential things that should always be in your carEssential things that should always be in your car
Essential things that should always be in your carEason Chan
 
Activism x Technology
Activism x TechnologyActivism x Technology
Activism x TechnologyWebVisions
 
How to Battle Bad Reviews
How to Battle Bad ReviewsHow to Battle Bad Reviews
How to Battle Bad ReviewsGlassdoor
 

Destacado (6)

Η ΠΡΑΓΑ ΤΗ ΝΥΧΤΑ
Η ΠΡΑΓΑ ΤΗ ΝΥΧΤΑΗ ΠΡΑΓΑ ΤΗ ΝΥΧΤΑ
Η ΠΡΑΓΑ ΤΗ ΝΥΧΤΑ
 
I Can Haz Lite Box
I Can Haz Lite BoxI Can Haz Lite Box
I Can Haz Lite Box
 
FriendFeed
FriendFeedFriendFeed
FriendFeed
 
Essential things that should always be in your car
Essential things that should always be in your carEssential things that should always be in your car
Essential things that should always be in your car
 
Activism x Technology
Activism x TechnologyActivism x Technology
Activism x Technology
 
How to Battle Bad Reviews
How to Battle Bad ReviewsHow to Battle Bad Reviews
How to Battle Bad Reviews
 

Similar a Getting Started With Google Wave Developlement

Programming For Google Wave
Programming For Google WaveProgramming For Google Wave
Programming For Google WaveRodrigo Borges
 
After max+phonegap
After max+phonegapAfter max+phonegap
After max+phonegapyangdj
 
混搭移动开发:PhoneGap+JQurey+Dreamweaver
混搭移动开发:PhoneGap+JQurey+Dreamweaver混搭移动开发:PhoneGap+JQurey+Dreamweaver
混搭移动开发:PhoneGap+JQurey+Dreamweaveryangdj
 
Google Wave API: Now and Beyond
Google Wave API: Now and BeyondGoogle Wave API: Now and Beyond
Google Wave API: Now and BeyondMarakana Inc.
 
Firefox OS, HTML5 to the next level - Python Montreal - 2014-05-12
Firefox OS, HTML5 to the next level - Python Montreal - 2014-05-12Firefox OS, HTML5 to the next level - Python Montreal - 2014-05-12
Firefox OS, HTML5 to the next level - Python Montreal - 2014-05-12Frédéric Harper
 
HTML pour le web mobile, Firefox OS - Devfest Nantes - 2014-11-07
HTML pour le web mobile, Firefox OS - Devfest Nantes - 2014-11-07HTML pour le web mobile, Firefox OS - Devfest Nantes - 2014-11-07
HTML pour le web mobile, Firefox OS - Devfest Nantes - 2014-11-07Frédéric Harper
 
Jarv.us Showcase — SenchaCon 2011
Jarv.us Showcase — SenchaCon 2011Jarv.us Showcase — SenchaCon 2011
Jarv.us Showcase — SenchaCon 2011Chris Alfano
 
HTML5 & The Open Web - at Nackademin
HTML5 & The Open Web -  at NackademinHTML5 & The Open Web -  at Nackademin
HTML5 & The Open Web - at NackademinRobert Nyman
 
WordPress Realtime - WordCamp São Paulo 2015
WordPress Realtime - WordCamp São Paulo 2015WordPress Realtime - WordCamp São Paulo 2015
WordPress Realtime - WordCamp São Paulo 2015Fernando Daciuk
 
Mobile Software Engineering Crash Course - C06 WindowsPhone
Mobile Software Engineering Crash Course - C06 WindowsPhoneMobile Software Engineering Crash Course - C06 WindowsPhone
Mobile Software Engineering Crash Course - C06 WindowsPhoneMohammad Shaker
 
Java Web Programming on Google Cloud Platform [3/3] : Google Web Toolkit
Java Web Programming on Google Cloud Platform [3/3] : Google Web ToolkitJava Web Programming on Google Cloud Platform [3/3] : Google Web Toolkit
Java Web Programming on Google Cloud Platform [3/3] : Google Web ToolkitIMC Institute
 
Building iPhone Web Apps using "classic" Domino
Building iPhone Web Apps using "classic" DominoBuilding iPhone Web Apps using "classic" Domino
Building iPhone Web Apps using "classic" DominoRob Bontekoe
 
Windows Store app using XAML and C#: Enterprise Product Development
Windows Store app using XAML and C#: Enterprise Product Development Windows Store app using XAML and C#: Enterprise Product Development
Windows Store app using XAML and C#: Enterprise Product Development Mahmoud Hamed Mahmoud
 
Tools and Projects Dec 2018 Edition
Tools and Projects Dec 2018 EditionTools and Projects Dec 2018 Edition
Tools and Projects Dec 2018 EditionJesus Manuel Olivas
 
Firefox OS: HTML5 sur les stéroïdes - HTML5mtl - 2014-04-22
Firefox OS: HTML5 sur les stéroïdes - HTML5mtl - 2014-04-22Firefox OS: HTML5 sur les stéroïdes - HTML5mtl - 2014-04-22
Firefox OS: HTML5 sur les stéroïdes - HTML5mtl - 2014-04-22Frédéric Harper
 
Backbone.js — Introduction to client-side JavaScript MVC
Backbone.js — Introduction to client-side JavaScript MVCBackbone.js — Introduction to client-side JavaScript MVC
Backbone.js — Introduction to client-side JavaScript MVCpootsbook
 
Big Data for each one of us
Big Data for each one of usBig Data for each one of us
Big Data for each one of usOSCON Byrum
 

Similar a Getting Started With Google Wave Developlement (20)

Wave Workshop
Wave WorkshopWave Workshop
Wave Workshop
 
Programming For Google Wave
Programming For Google WaveProgramming For Google Wave
Programming For Google Wave
 
After max+phonegap
After max+phonegapAfter max+phonegap
After max+phonegap
 
混搭移动开发:PhoneGap+JQurey+Dreamweaver
混搭移动开发:PhoneGap+JQurey+Dreamweaver混搭移动开发:PhoneGap+JQurey+Dreamweaver
混搭移动开发:PhoneGap+JQurey+Dreamweaver
 
Google Wave API: Now and Beyond
Google Wave API: Now and BeyondGoogle Wave API: Now and Beyond
Google Wave API: Now and Beyond
 
Firefox OS, HTML5 to the next level - Python Montreal - 2014-05-12
Firefox OS, HTML5 to the next level - Python Montreal - 2014-05-12Firefox OS, HTML5 to the next level - Python Montreal - 2014-05-12
Firefox OS, HTML5 to the next level - Python Montreal - 2014-05-12
 
HTML pour le web mobile, Firefox OS - Devfest Nantes - 2014-11-07
HTML pour le web mobile, Firefox OS - Devfest Nantes - 2014-11-07HTML pour le web mobile, Firefox OS - Devfest Nantes - 2014-11-07
HTML pour le web mobile, Firefox OS - Devfest Nantes - 2014-11-07
 
Jarv.us Showcase — SenchaCon 2011
Jarv.us Showcase — SenchaCon 2011Jarv.us Showcase — SenchaCon 2011
Jarv.us Showcase — SenchaCon 2011
 
HTML5 & The Open Web - at Nackademin
HTML5 & The Open Web -  at NackademinHTML5 & The Open Web -  at Nackademin
HTML5 & The Open Web - at Nackademin
 
WordPress Realtime - WordCamp São Paulo 2015
WordPress Realtime - WordCamp São Paulo 2015WordPress Realtime - WordCamp São Paulo 2015
WordPress Realtime - WordCamp São Paulo 2015
 
Mobile Software Engineering Crash Course - C06 WindowsPhone
Mobile Software Engineering Crash Course - C06 WindowsPhoneMobile Software Engineering Crash Course - C06 WindowsPhone
Mobile Software Engineering Crash Course - C06 WindowsPhone
 
Java Web Programming on Google Cloud Platform [3/3] : Google Web Toolkit
Java Web Programming on Google Cloud Platform [3/3] : Google Web ToolkitJava Web Programming on Google Cloud Platform [3/3] : Google Web Toolkit
Java Web Programming on Google Cloud Platform [3/3] : Google Web Toolkit
 
Google Web Toolkit
Google Web ToolkitGoogle Web Toolkit
Google Web Toolkit
 
Building iPhone Web Apps using "classic" Domino
Building iPhone Web Apps using "classic" DominoBuilding iPhone Web Apps using "classic" Domino
Building iPhone Web Apps using "classic" Domino
 
Backbone.js
Backbone.jsBackbone.js
Backbone.js
 
Windows Store app using XAML and C#: Enterprise Product Development
Windows Store app using XAML and C#: Enterprise Product Development Windows Store app using XAML and C#: Enterprise Product Development
Windows Store app using XAML and C#: Enterprise Product Development
 
Tools and Projects Dec 2018 Edition
Tools and Projects Dec 2018 EditionTools and Projects Dec 2018 Edition
Tools and Projects Dec 2018 Edition
 
Firefox OS: HTML5 sur les stéroïdes - HTML5mtl - 2014-04-22
Firefox OS: HTML5 sur les stéroïdes - HTML5mtl - 2014-04-22Firefox OS: HTML5 sur les stéroïdes - HTML5mtl - 2014-04-22
Firefox OS: HTML5 sur les stéroïdes - HTML5mtl - 2014-04-22
 
Backbone.js — Introduction to client-side JavaScript MVC
Backbone.js — Introduction to client-side JavaScript MVCBackbone.js — Introduction to client-side JavaScript MVC
Backbone.js — Introduction to client-side JavaScript MVC
 
Big Data for each one of us
Big Data for each one of usBig Data for each one of us
Big Data for each one of us
 

Último

WSO2's API Vision: Unifying Control, Empowering Developers
WSO2's API Vision: Unifying Control, Empowering DevelopersWSO2's API Vision: Unifying Control, Empowering Developers
WSO2's API Vision: Unifying Control, Empowering DevelopersWSO2
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherRemote DBA Services
 
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
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century educationjfdjdjcjdnsjd
 
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
 
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...apidays
 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyKhushali Kathiriya
 
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
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProduct Anonymous
 
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot ModelMcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot ModelDeepika Singh
 
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...apidays
 
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...apidays
 
Vector Search -An Introduction in Oracle Database 23ai.pptx
Vector Search -An Introduction in Oracle Database 23ai.pptxVector Search -An Introduction in Oracle Database 23ai.pptx
Vector Search -An Introduction in Oracle Database 23ai.pptxRemote DBA Services
 
Exploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with MilvusExploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with MilvusZilliz
 
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...Orbitshub
 
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Victor Rentea
 
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
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FMESafe Software
 

Último (20)

WSO2's API Vision: Unifying Control, Empowering Developers
WSO2's API Vision: Unifying Control, Empowering DevelopersWSO2's API Vision: Unifying Control, Empowering Developers
WSO2's API Vision: Unifying Control, Empowering Developers
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
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...
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
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
 
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : Uncertainty
 
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
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot ModelMcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
 
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
 
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
 
Understanding the FAA Part 107 License ..
Understanding the FAA Part 107 License ..Understanding the FAA Part 107 License ..
Understanding the FAA Part 107 License ..
 
Vector Search -An Introduction in Oracle Database 23ai.pptx
Vector Search -An Introduction in Oracle Database 23ai.pptxVector Search -An Introduction in Oracle Database 23ai.pptx
Vector Search -An Introduction in Oracle Database 23ai.pptx
 
Exploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with MilvusExploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with Milvus
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
 
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
 
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
 
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
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 

Getting Started With Google Wave Developlement

  • 1. Getting Started With Google Wave Development James E. Robinson, III NC State University james.robinson@extension.org NETC 2010
  • 2. Google Wave v/s Google wave Wave - the Wave protocol wave - The Google wave web app
  • 5. Wavelet Anatomy (cont.) Blips Participants Tags Data Documents metadata creator creation_time last_modified_time robot title
  • 7. Blip Anatomy (cont.) Document Annotations Children Parent (if not already) metadata creator contributors last_modified version
  • 8.
  • 9. Gadgets: n, dynamic web content that can be placed on any page on the web. Gadgets can be games, mini applications, news feeds, maps or any content. See also: JavaScript on steroids.
  • 10. <?xml version="1.0" encoding="UTF-8" ?> <Module> <ModulePrefs title="Hello, World"> <Require feature="wave" /> </ModulePrefs> <Content type="html"> Hello, World! </Content> </Module>
  • 11. Wave Gadget API setStateCallback getState setPrivateStateCallback getPrivateState submitDelta setParticipantCallback
  • 12. Gadget API Example <?xml version="1.0" encoding="UTF-8" ?> <Module> <ModulePrefs title="Counter/State Example" height="120"> <Require feature="wave" /> </ModulePrefs>
  • 13. <Content type="html"> <![CDATA[ <div id="content_div" style="height: 50px;"></div> <input type=button value="Click Me!" id="butCount" onClick="buttonClicked()" > <input type=button value="Reset" id=" butReset" onClick="resetCounter()">
  • 14. <script type="text/javascript"> var div = $('content_div'); function init() { if (wave && wave.isInWaveContainer()) { wave.setStateCallback(stateUpdated); } } gadgets.util.registerOnLoadHandler(init);
  • 15. function buttonClicked() { var val = wave.getState().get('count', '0'); wave.getState().submitDelta( {'count': val + 1}); } function stateUpdated() { if (!wave.getState().get('count')) { div.innerHTML = "The count is 0." } else { div.innerHTML = "The count is " + wave.getState().get('count'); } }
  • 16. // Reset value of "count" to 0 function resetCounter(){ wave.getState().submitDelta({'count': '0'}); } </script> ]]> </Content> </Module>
  • 18.
  • 19. What To Do? if __name__ == '__main__': myRobot = robot.Robot('robot name', image_url='http://path.to/icon.png') myRobot.register_handler( events.WaveletSelfAdded, OnSelfAdded) myRobot.Run()
  • 20. Add us a Gadget... def OnSelfAdded(event, wavelet): blip = event.blip gadget = element.Gadget(GADGET_URL) blip.append(gadget)
  • 21. Wave Happenings wavelet_blip_created wavelet_blip_removed wavelet_participants_change wavelet_self_added wavelet_self_removed wavelet_title_changed wavelet_timestamp_changed wavelet_version_changed
  • 22. Blip Happenings blip_contributors_changed blip_deleted blip_submitted - only fires once blip_timestamp_changed blip_version_changed document_changed - various intervals form_button_clicked
  • 23.
  • 25. Register your new application...
  • 26.
  • 27. Complex mapping structure AppName: jerobins-test Application URL: jerobins-test.appspot.com Wave Address: jerobins-test@appspot.com
  • 28. Now What? def OnBlipSubmitted(event, wavelet): blip = event.blip gadget = blip.first(element.Gadget, url=GADGET_URL) if gadget: count = gadget.get('count', '0') gadget.update_element({'count', '0'}) blip.append("nCount before blip" + " changed: " + count)
  • 29. Danger, Will Robinson! Your robot or gadget may not be the only gadget or robot on the wave.
  • 31. Robot Annotations def OnWaveletSelfAdded(event, wavelet): blip = event.blip blip.Annotation("my-robot/tag") def OnButtonClicked(event, wavelet): blip = event.blip annots = blip.annotations if annots.include("my-robot/tag"): """ do MY robot stuff """
  • 32. Active Robot API Performing scheduled tasks (e.g. cron jobs) at specified intervals Creating new waves within Google Wave in response to actions within Google Wave itself Responding to outside events or services by updating waves or creating new ones