The document provides an overview of XMPP (eXtensible Messaging and Presence Protocol), formerly known as Jabber. It discusses that XMPP is an open standard for real-time messaging that routes small snippets of XML between servers to allow users like Alice and Sister to exchange messages and presence information in real-time. The document also covers the history and development of XMPP, its architecture and decentralized federated model, encryption and security features, common uses like instant messaging and voice/video calling, and extensible capabilities through extensions.
XMPP Intro that also involves more advanced topics like pub/sub, using components and plugins on the XMPP server side.
The Last section covers recommendations of servers and how to install a full XMPP setup for a web scenario (using pure HTML and Strophe.js for client side).
XMPP Intro that also involves more advanced topics like pub/sub, using components and plugins on the XMPP server side.
The Last section covers recommendations of servers and how to install a full XMPP setup for a web scenario (using pure HTML and Strophe.js for client side).
Turbot - A Next Generation Botnet presentation as given in Hackito Ergo Sum 2010 in Paris, France. Turbot is a proof-of-concept implementation of a Botnet without a single point of failure over HTTP. Turbot communicates solely via message exchanging on a
mutual writable resources such as Websites with User
Generated Content features.
My take on what a do it yourself voice assistant platform might look like. Code is at https://github.com/kai5263499/diy-jarvis
Slides with speaker notes that include relevant URLs:
https://docs.google.com/presentation/d/1JhNkwAlWU2X9HycxYToPLg52kMDlxhpxCS_kQsZrI6w/edit?usp=sharing
Massive emailing with Linux, Postfix and Ruby on Railsibelmonte
A little presentation with some tips on how to send massive email from a Ruby on Rails application and not to be treated as a spammer by the most common free email providers.
Update presented at LINX in November 2013 ( the London Internet Exchange ) regarding ExaBGP, The BGP swiss army knife of networking.
It includes information about the latest developments, and features, including RFC support, for ISP and IXP.
Users of BIRD and Quagga may find some information about features not yet present in other Open Source BGP implementation.
A new real time Web is emerging, backed by the eXtensible Messaging and Presence Protocol (XMPP). This protocol is designed for low latency, real time communication, publish-subscribe, and social networking. You will learn how XMPP and HTTP can be combined to make new applications possible and how to harness XMPP from JavaScript. We will use the Strophe library to create a few simple XMPP applications.
Code used in this presentation is at http://metajack.im/code/realtimeweb_jsconf2009.zip
Turbot - A Next Generation Botnet presentation as given in Hackito Ergo Sum 2010 in Paris, France. Turbot is a proof-of-concept implementation of a Botnet without a single point of failure over HTTP. Turbot communicates solely via message exchanging on a
mutual writable resources such as Websites with User
Generated Content features.
My take on what a do it yourself voice assistant platform might look like. Code is at https://github.com/kai5263499/diy-jarvis
Slides with speaker notes that include relevant URLs:
https://docs.google.com/presentation/d/1JhNkwAlWU2X9HycxYToPLg52kMDlxhpxCS_kQsZrI6w/edit?usp=sharing
Massive emailing with Linux, Postfix and Ruby on Railsibelmonte
A little presentation with some tips on how to send massive email from a Ruby on Rails application and not to be treated as a spammer by the most common free email providers.
Update presented at LINX in November 2013 ( the London Internet Exchange ) regarding ExaBGP, The BGP swiss army knife of networking.
It includes information about the latest developments, and features, including RFC support, for ISP and IXP.
Users of BIRD and Quagga may find some information about features not yet present in other Open Source BGP implementation.
A new real time Web is emerging, backed by the eXtensible Messaging and Presence Protocol (XMPP). This protocol is designed for low latency, real time communication, publish-subscribe, and social networking. You will learn how XMPP and HTTP can be combined to make new applications possible and how to harness XMPP from JavaScript. We will use the Strophe library to create a few simple XMPP applications.
Code used in this presentation is at http://metajack.im/code/realtimeweb_jsconf2009.zip
M2M, IOT, Device Managment: COAP/LWM2M to rule them all?Julien Vermillard
M2M is rapidly growing and since its early days different “standard” protocols have emerged (e.g. OMA-DM, TR-069, MQTT, …) or are emerging (e.g. CoAP or Lightweight M2M).
Understanding which protocol to use for which application can be intimidating, therefore we propose to give an overview of these protocols to help you understand their goals and characteristics.
We’ll present common M2M use cases and why they usually require more than just one protocol ; we will also see whether CoAP associated with Lightweight M2M allows to forge “one protocol to rule them all”.
Scaling the Web to Billions of Nodes: Towards the IPv6 “Internet of Things” b...gogo6
gogo6 IPv6 Video Series. Event, presentation and speaker details below:
EVENT
gogoNET LIVE! 4: IPv6 & The Internet of Things. http://gogonetlive.com
November 12 – 14, 201, Silicon Valley, California
Agenda: http://gogonetlive.com/gogonetlive4-agenda.asp
PRESENTATION
Scaling the Web to Billions of Nodes: Towards the IPv6 “Internet of Things”
Abstract: http://www.gogo6.com/profiles/blogs/scaling-the-web-to-billions-of-nodes-towards-the-ipv6-internet-of
Presentation video: http://www.gogo6.com/video/scaling-the-web-to-billions-of-nodes-by-carsten-bormann-at-gogone
Interview video: http://www.gogo6.com/video/interview-with-carsten-bormann-at-gogonet-live-4-ipv6-iot-confere
SPEAKER
Carsten Bormann - Universität Bremen TZI & IETF WG Chair
Bio/Profile: http://www.gogo6.com/profile/CarstenBormann
MORE
Learn more about IPv6 on the gogoNET social network and our online training courses
http://www.gogo6.com/main
Get free IPv6 connectivity with Freenet6
http://www.gogo6.com/Freenet6
Subscribe to the gogo6 IPv6 Channel on YouTube
http://www.youtube.com/subscription_center?add_user=gogo6videos
Follow gogo6 on Twitter
http://twitter.com/gogo6inc
Like gogo6 on Facebook
http://www.facebook.com/pages/IPv6-products-community-and-services-gogo6/161626696777
IPSN 2009 tutorial: http://ipsn.acm.org/2009/tutorials.htm
Title: IP-based Sensor Networks: a Hands-on Tutorial (uIP)
Speakers: Adam Dunkels, Fredrik Osterlind, Nicolas Tsiftes (SICS)
Time: April 16,2009 Thursday 3:00PM~5:00PM
IP-based sensor networks are a rapidly emerging hot topic in both academia and the industry.
The open source uIP stack from the Contiki operating system, first released in 2001, is used in IP-enabled products and systems from hundreds of companies, ranging from pico-satellites, airplanes, and car engines, to worldwide freighter container tracking systems, ship control systems, and oil boring and pipeline monitoring systems. In October 2008 Cisco Systems released uIPv6, the world's smallest fully compliant IPv6 stack, for Contiki.
During this tutorial, participants will get started with building IP-based sensor networks with Contiki and uIP, and get hands-on experience with developing, compiling, and running IP-based software on sensornet hardware, setting up IP networking to the sensor network, and getting performance metrics (power, throughput, latency) from a running network.
We use a combination of Tmote Sky and Sentilla JCreate motes as the hardware platform. We provide Tmote Skys and JCreates for participants to borrow during the tutorial.
To avoid installation of compilers and tools, participants will use the Instant Contiki development environment, a complete development environment in a single-file download consisting of a VMWare virtual machine with all Contiki software development tools installed: http://www.sics.se/contiki/instant-contiki.html
gogonetlive 4 conference keynote on Internet of ThingsJoachim Lindborg
In this keynote session I talk about IP as a driver for internet of things and that Internet of things will drive the IPv6 usage forward. presentation held at http://gogonetlive.com/gogonetlive-speakers.asp
Presentation about XSF & how to create an XMPP Standard Track Protocol Extension for the ISO/IEC/IEEE Smart Transducer Interface Standard working group, for sensors, actuators and network devices (XMPP protocol)
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...UiPathCommunity
💥 Speed, accuracy, and scaling – discover the superpowers of GenAI in action with UiPath Document Understanding and Communications Mining™:
See how to accelerate model training and optimize model performance with active learning
Learn about the latest enhancements to out-of-the-box document processing – with little to no training required
Get an exclusive demo of the new family of UiPath LLMs – GenAI models specialized for processing different types of documents and messages
This is a hands-on session specifically designed for automation developers and AI enthusiasts seeking to enhance their knowledge in leveraging the latest intelligent document processing capabilities offered by UiPath.
Speakers:
👨🏫 Andras Palfi, Senior Product Manager, UiPath
👩🏫 Lenka Dulovicova, Product Program Manager, UiPath
The Art of the Pitch: WordPress Relationships and SalesLaura Byrne
Clients don’t know what they don’t know. What web solutions are right for them? How does WordPress come into the picture? How do you make sure you understand scope and timeline? What do you do if sometime changes?
All these questions and more will be explored as we talk about matching clients’ needs with what your agency offers without pulling teeth or pulling your hair out. Practical tips, and strategies for successful relationship building that leads to closing the deal.
GraphRAG is All You need? LLM & Knowledge GraphGuy Korland
Guy Korland, CEO and Co-founder of FalkorDB, will review two articles on the integration of language models with knowledge graphs.
1. Unifying Large Language Models and Knowledge Graphs: A Roadmap.
https://arxiv.org/abs/2306.08302
2. Microsoft Research's GraphRAG paper and a review paper on various uses of knowledge graphs:
https://www.microsoft.com/en-us/research/blog/graphrag-unlocking-llm-discovery-on-narrative-private-data/
JMeter webinar - integration with InfluxDB and GrafanaRTTS
Watch this recorded webinar about real-time monitoring of application performance. See how to integrate Apache JMeter, the open-source leader in performance testing, with InfluxDB, the open-source time-series database, and Grafana, the open-source analytics and visualization application.
In this webinar, we will review the benefits of leveraging InfluxDB and Grafana when executing load tests and demonstrate how these tools are used to visualize performance metrics.
Length: 30 minutes
Session Overview
-------------------------------------------
During this webinar, we will cover the following topics while demonstrating the integrations of JMeter, InfluxDB and Grafana:
- What out-of-the-box solutions are available for real-time monitoring JMeter tests?
- What are the benefits of integrating InfluxDB and Grafana into the load testing stack?
- Which features are provided by Grafana?
- Demonstration of InfluxDB and Grafana using a practice web application
To view the webinar recording, go to:
https://www.rttsweb.com/jmeter-integration-webinar
Accelerate your Kubernetes clusters with Varnish CachingThijs Feryn
A presentation about the usage and availability of Varnish on Kubernetes. This talk explores the capabilities of Varnish caching and shows how to use the Varnish Helm chart to deploy it to Kubernetes.
This presentation was delivered at K8SUG Singapore. See https://feryn.eu/presentations/accelerate-your-kubernetes-clusters-with-varnish-caching-k8sug-singapore-28-2024 for more details.
Securing your Kubernetes cluster_ a step-by-step guide to success !KatiaHIMEUR1
Today, after several years of existence, an extremely active community and an ultra-dynamic ecosystem, Kubernetes has established itself as the de facto standard in container orchestration. Thanks to a wide range of managed services, it has never been so easy to set up a ready-to-use Kubernetes cluster.
However, this ease of use means that the subject of security in Kubernetes is often left for later, or even neglected. This exposes companies to significant risks.
In this talk, I'll show you step-by-step how to secure your Kubernetes cluster for greater peace of mind and reliability.
Generating a custom Ruby SDK for your web service or Rails API using Smithyg2nightmarescribd
Have you ever wanted a Ruby client API to communicate with your web service? Smithy is a protocol-agnostic language for defining services and SDKs. Smithy Ruby is an implementation of Smithy that generates a Ruby SDK using a Smithy model. In this talk, we will explore Smithy and Smithy Ruby to learn how to generate custom feature-rich SDKs that can communicate with any web service, such as a Rails JSON API.
Epistemic Interaction - tuning interfaces to provide information for AI supportAlan Dix
Paper presented at SYNERGY workshop at AVI 2024, Genoa, Italy. 3rd June 2024
https://alandix.com/academic/papers/synergy2024-epistemic/
As machine learning integrates deeper into human-computer interactions, the concept of epistemic interaction emerges, aiming to refine these interactions to enhance system adaptability. This approach encourages minor, intentional adjustments in user behaviour to enrich the data available for system learning. This paper introduces epistemic interaction within the context of human-system communication, illustrating how deliberate interaction design can improve system understanding and adaptation. Through concrete examples, we demonstrate the potential of epistemic interaction to significantly advance human-computer interaction by leveraging intuitive human communication strategies to inform system design and functionality, offering a novel pathway for enriching user-system engagements.
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...DanBrown980551
Do you want to learn how to model and simulate an electrical network from scratch in under an hour?
Then welcome to this PowSyBl workshop, hosted by Rte, the French Transmission System Operator (TSO)!
During the webinar, you will discover the PowSyBl ecosystem as well as handle and study an electrical network through an interactive Python notebook.
PowSyBl is an open source project hosted by LF Energy, which offers a comprehensive set of features for electrical grid modelling and simulation. Among other advanced features, PowSyBl provides:
- A fully editable and extendable library for grid component modelling;
- Visualization tools to display your network;
- Grid simulation tools, such as power flows, security analyses (with or without remedial actions) and sensitivity analyses;
The framework is mostly written in Java, with a Python binding so that Python developers can access PowSyBl functionalities as well.
What you will learn during the webinar:
- For beginners: discover PowSyBl's functionalities through a quick general presentation and the notebook, without needing any expert coding skills;
- For advanced developers: master the skills to efficiently apply PowSyBl functionalities to your real-world scenarios.
5. About Us
Peter: Documentation guy and specification author
4
Tuesday, March 3, 2009
6. About Us
Peter: Documentation guy and specification author
Remko: Developer for Psi client and other projects
4
Tuesday, March 3, 2009
7. About Us
Peter: Documentation guy and specification author
Remko: Developer for Psi client and other projects
Co-authors (with Kevin Smith) of XMPP: The
Definitive Guide (O'Reilly, 2009)
4
Tuesday, March 3, 2009
13. What is XMPP?
eXtensible Messaging and Presence Protocol
6
Tuesday, March 3, 2009
14. What is XMPP?
eXtensible Messaging and Presence Protocol
Jabber
6
Tuesday, March 3, 2009
15. What is XMPP?
eXtensible Messaging and Presence Protocol
Jabber
Real time messaging system
6
Tuesday, March 3, 2009
16. What is XMPP?
eXtensible Messaging and Presence Protocol
Jabber
Real time messaging system
Routes small snippets of XML
6
Tuesday, March 3, 2009
17. What is XMPP?
eXtensible Messaging and Presence Protocol
Jabber
Real time messaging system
Routes small snippets of XML
Alice Sister
alice@wdland.lit sister@rlworld.lit
6
Tuesday, March 3, 2009
18. What is XMPP?
eXtensible Messaging and Presence Protocol
Jabber
Real time messaging system
Routes small snippets of XML
wdland.lit rlworld.lit
server server
Alice Sister
alice@wdland.lit sister@rlworld.lit
6
Tuesday, March 3, 2009
19. What is XMPP?
eXtensible Messaging and Presence Protocol
Jabber
Real time messaging system
Routes small snippets of XML
wdland.lit rlworld.lit
server server
Alice Sister
alice@wdland.lit sister@rlworld.lit
6
Tuesday, March 3, 2009
20. What is XMPP?
eXtensible Messaging and Presence Protocol
Jabber
Real time messaging system
Routes small snippets of XML
wdland.lit rlworld.lit
server server
<message to=’sister@rlworld.lit’>
<body>Hi there!</body>
</message>
Alice Sister
alice@wdland.lit sister@rlworld.lit
6
Tuesday, March 3, 2009
21. What is XMPP?
eXtensible Messaging and Presence Protocol
Jabber
Real time messaging system
Routes small snippets of XML
wdland.lit rlworld.lit
server server
<message to=’sister@rlworld.lit’>
<body>Hi there!</body>
</message>
Alice Sister
alice@wdland.lit sister@rlworld.lit
6
Tuesday, March 3, 2009
22. What is XMPP?
eXtensible Messaging and Presence Protocol
Jabber
Real time messaging system
Routes small snippets of XML
wdland.lit rlworld.lit
...
server server
<message to=’sister@rlworld.lit’>
<body>Hi there!</body>
</message>
Alice Sister
alice@wdland.lit sister@rlworld.lit
6
Tuesday, March 3, 2009
23. What is XMPP?
eXtensible Messaging and Presence Protocol
Jabber
Real time messaging system
Routes small snippets of XML
wdland.lit rlworld.lit
...
server server
<message to=’sister@rlworld.lit’> <message from=’alice@wland.lit’>
<body>Hi there!</body> <body>Hi there!</body>
</message> </message>
Alice Sister
alice@wdland.lit sister@rlworld.lit
6
Tuesday, March 3, 2009
24. What can you do with XMPP?
7
Tuesday, March 3, 2009
25. What can you do with XMPP?
Instant Messaging
7
Tuesday, March 3, 2009
26. What can you do with XMPP?
Real-time Social Networking
8
Tuesday, March 3, 2009
27. What can you do with XMPP?
Gaming
9
Tuesday, March 3, 2009
28. What can you do with XMPP?
Voice & Video
10
Tuesday, March 3, 2009
29. What can you do with XMPP?
Mobile apps / Geolocation
11
Tuesday, March 3, 2009
30. What can you do with XMPP?
<insert your idea here>
12
Tuesday, March 3, 2009
32. XMPP ...
... is an open standard (RFC 3920 + 3921, XSF
Extensions)
13
Tuesday, March 3, 2009
33. XMPP ...
... is an open standard (RFC 3920 + 3921, XSF
Extensions)
... is decentralized (federated)
13
Tuesday, March 3, 2009
34. XMPP ...
... is an open standard (RFC 3920 + 3921, XSF
Extensions)
... is decentralized (federated)
... has strong security (TLS)
13
Tuesday, March 3, 2009
35. XMPP ...
... is an open standard (RFC 3920 + 3921, XSF
Extensions)
... is decentralized (federated)
... has strong security (TLS)
... has lots of open-source projects (but other
licensing allowed)
13
Tuesday, March 3, 2009
36. XMPP ...
... is an open standard (RFC 3920 + 3921, XSF
Extensions)
... is decentralized (federated)
... has strong security (TLS)
... has lots of open-source projects (but other
licensing allowed)
... has an active, open community
13
Tuesday, March 3, 2009
38. What does XMPP provide?
Channel encryption and authentication
14
Tuesday, March 3, 2009
39. What does XMPP provide?
Channel encryption and authentication
Presence and contact lists
14
Tuesday, March 3, 2009
40. What does XMPP provide?
Channel encryption and authentication
Presence and contact lists
One-to-one and multi-party messaging
14
Tuesday, March 3, 2009
41. What does XMPP provide?
Channel encryption and authentication
Presence and contact lists
One-to-one and multi-party messaging
Alerts and notifications (PubSub)
14
Tuesday, March 3, 2009
42. What does XMPP provide?
Channel encryption and authentication
Presence and contact lists
One-to-one and multi-party messaging
Alerts and notifications (PubSub)
Service discovery and device capabilities
14
Tuesday, March 3, 2009
43. What does XMPP provide?
Channel encryption and authentication
Presence and contact lists
One-to-one and multi-party messaging
Alerts and notifications (PubSub)
Service discovery and device capabilities
Peer-to-peer media sessions (Jingle)
14
Tuesday, March 3, 2009
44. What does XMPP provide?
Channel encryption and authentication
Presence and contact lists
One-to-one and multi-party messaging
Alerts and notifications (PubSub)
Service discovery and device capabilities
Peer-to-peer media sessions (Jingle)
Data forms and remote commands
14
Tuesday, March 3, 2009
45. What does XMPP provide?
Channel encryption and authentication
Presence and contact lists
One-to-one and multi-party messaging
Alerts and notifications (PubSub)
Service discovery and device capabilities
Peer-to-peer media sessions (Jingle)
Data forms and remote commands
And more (lots of extensions)
14
Tuesday, March 3, 2009
47. History
Invented by Jeremie Miller as Jabber (1998)
15
Tuesday, March 3, 2009
48. History
Invented by Jeremie Miller as Jabber (1998)
First server + clients + libraries (1999-2000)
15
Tuesday, March 3, 2009
49. History
Invented by Jeremie Miller as Jabber (1998)
First server + clients + libraries (1999-2000)
More open source + commercial codebases
(2000+)
15
Tuesday, March 3, 2009
50. History
Invented by Jeremie Miller as Jabber (1998)
First server + clients + libraries (1999-2000)
More open source + commercial codebases
(2000+)
Core standardization in IETF as XMPP (2002-2004)
15
Tuesday, March 3, 2009
51. History
Invented by Jeremie Miller as Jabber (1998)
First server + clients + libraries (1999-2000)
More open source + commercial codebases
(2000+)
Core standardization in IETF as XMPP (2002-2004)
Development of extensions (2002+)
15
Tuesday, March 3, 2009
52. History
Invented by Jeremie Miller as Jabber (1998)
First server + clients + libraries (1999-2000)
More open source + commercial codebases
(2000+)
Core standardization in IETF as XMPP (2002-2004)
Development of extensions (2002+)
Serious adoption by Apple, Google, LiveJournal,
Nokia, Cisco, etc. (2005+)
15
Tuesday, March 3, 2009
53. History
Invented by Jeremie Miller as Jabber (1998)
First server + clients + libraries (1999-2000)
More open source + commercial codebases
(2000+)
Core standardization in IETF as XMPP (2002-2004)
Development of extensions (2002+)
Serious adoption by Apple, Google, LiveJournal,
Nokia, Cisco, etc. (2005+)
Continuing work on improved security and more
application types
15
Tuesday, March 3, 2009
74. Architecture
Client-server
20
Tuesday, March 3, 2009
75. Architecture
Client-server
Client developers can focus on user experience
20
Tuesday, March 3, 2009
76. Architecture
Client-server
Client developers can focus on user experience
Server developers can focus on relaibility & scalability
20
Tuesday, March 3, 2009
77. Architecture
Client-server
Client developers can focus on user experience
Server developers can focus on relaibility & scalability
Decentralized
20
Tuesday, March 3, 2009
78. Architecture
Client-server
Client developers can focus on user experience
Server developers can focus on relaibility & scalability
Decentralized
Robust (no single point of failure)
20
Tuesday, March 3, 2009
79. Architecture
Client-server
Client developers can focus on user experience
Server developers can focus on relaibility & scalability
Decentralized
Robust (no single point of failure)
Easier to manage
20
Tuesday, March 3, 2009
80. Architecture
Client-server
Client developers can focus on user experience
Server developers can focus on relaibility & scalability
Decentralized
Robust (no single point of failure)
Easier to manage
No multiple hops
20
Tuesday, March 3, 2009
81. Architecture
Client-server
Client developers can focus on user experience
Server developers can focus on relaibility & scalability
Decentralized
Robust (no single point of failure)
Easier to manage
No multiple hops
Harder to spoof
20
Tuesday, March 3, 2009
82. Addresses
Jabber ID (JID)
21
Tuesday, March 3, 2009
83. Addresses
Jabber ID (JID)
Domain
wonderland.lit
21
Tuesday, March 3, 2009
84. Addresses
Jabber ID (JID)
User Domain
alice@ wonderland.lit
21
Tuesday, March 3, 2009
85. Addresses
Jabber ID (JID)
User Domain
alice@ wonderland.lit
Bare JID
21
Tuesday, March 3, 2009
86. Addresses
Jabber ID (JID)
User Domain
alice@ wonderland.lit
21
Tuesday, March 3, 2009
87. Addresses
Jabber ID (JID)
User Domain Resource
alice@ wonderland.lit /TeaParty
21
Tuesday, March 3, 2009
88. Addresses
Jabber ID (JID)
User Domain Resource
alice@ wonderland.lit /TeaParty
Full JID
21
Tuesday, March 3, 2009
108. Presence Stanzas
<presence from=quot;alice@wonderland.lit/pdaquot;>
<show>xa</show>
<status>down the rabbit hole!</status>
</presence>
25
Tuesday, March 3, 2009
109. Presence Stanzas
<presence from=quot;alice@wonderland.lit/pdaquot;>
<show>xa</show>
<status>down the rabbit hole!</status>
</presence>
Advertise network availability (online/offline)
25
Tuesday, March 3, 2009
110. Presence Stanzas
<presence from=quot;alice@wonderland.lit/pdaquot;>
<show>xa</show>
<status>down the rabbit hole!</status>
</presence>
Advertise network availability (online/offline)
‘Show’ Statuses: Away, Do Not Disturb,
Extended Away, Free for chat
25
Tuesday, March 3, 2009
111. Presence Stanzas
<presence from=quot;alice@wonderland.lit/pdaquot;>
<show>xa</show>
<status>down the rabbit hole!</status>
</presence>
Advertise network availability (online/offline)
‘Show’ Statuses: Away, Do Not Disturb,
Extended Away, Free for chat
Status messages
25
Tuesday, March 3, 2009
112. Presence Stanzas
<presence from=quot;alice@wonderland.lit/pdaquot;>
<show>xa</show>
<status>down the rabbit hole!</status>
</presence>
Advertise network availability (online/offline)
‘Show’ Statuses: Away, Do Not Disturb,
Extended Away, Free for chat
Status messages
Typically used for contact lists/rosters
25
Tuesday, March 3, 2009
113. Presence Stanzas
<presence from=quot;alice@wonderland.lit/pdaquot;>
<show>xa</show>
<status>down the rabbit hole!</status>
</presence>
Advertise network availability (online/offline)
‘Show’ Statuses: Away, Do Not Disturb,
Extended Away, Free for chat
Status messages
Typically used for contact lists/rosters
25
Tuesday, March 3, 2009
114. Presence Stanzas
<presence from=quot;alice@wonderland.lit/pdaquot;>
<show>xa</show>
<status>down the rabbit hole!</status>
</presence>
Advertise network availability (online/offline)
‘Show’ Statuses: Away, Do Not Disturb,
Extended Away, Free for chat
Status messages
Typically used for contact lists/rosters
Presence subscriptions
25
Tuesday, March 3, 2009
129. IQ Stanzas
<iq type=quot;getquot;>
<query xmlns=quot;jabber:iq:rosterquot;/>
</iq>
28
Tuesday, March 3, 2009
130. IQ Stanzas
<iq type=quot;getquot;>
<query xmlns=quot;jabber:iq:rosterquot;/>
</iq>
Types:
28
Tuesday, March 3, 2009
131. IQ Stanzas
<iq type=quot;getquot;>
<query xmlns=quot;jabber:iq:rosterquot;/>
</iq>
Types:
get: Ask for information (HTTP GET)
28
Tuesday, March 3, 2009
132. IQ Stanzas
<iq type=quot;getquot;>
<query xmlns=quot;jabber:iq:rosterquot;/>
</iq>
Types:
get: Ask for information (HTTP GET)
set: Provide information (HTTP POST/PUT)
28
Tuesday, March 3, 2009
133. IQ Stanzas
<iq type=quot;getquot;>
<query xmlns=quot;jabber:iq:rosterquot;/>
</iq>
Types:
get: Ask for information (HTTP GET)
set: Provide information (HTTP POST/PUT)
result: Returns requested information / acknowledge set
28
Tuesday, March 3, 2009
134. IQ Stanzas
<iq type=quot;getquot;>
<query xmlns=quot;jabber:iq:rosterquot;/>
</iq>
Types:
get: Ask for information (HTTP GET)
set: Provide information (HTTP POST/PUT)
result: Returns requested information / acknowledge set
error
28
Tuesday, March 3, 2009
136. Extensibility
Any XML child element can be used as a payload
29
Tuesday, March 3, 2009
137. Extensibility
Any XML child element can be used as a payload
e.g. XHTML bodies, Atom feeds, XML-RPC, ...
29
Tuesday, March 3, 2009
138. Extensibility
Any XML child element can be used as a payload
e.g. XHTML bodies, Atom feeds, XML-RPC, ...
Namespaces to scope payloads
<iq type=quot;getquot;>
<query xmlns=quot;jabber:iq:rosterquot;/>
</iq>
29
Tuesday, March 3, 2009
139. Extensibility
Any XML child element can be used as a payload
e.g. XHTML bodies, Atom feeds, XML-RPC, ...
Namespaces to scope payloads
<iq type=quot;getquot;>
<query xmlns=quot;jabber:iq:rosterquot;/>
</iq>
Extensions typically developed @ XMPP Standards
Foundation's
29
Tuesday, March 3, 2009
140. Extensibility
Any XML child element can be used as a payload
e.g. XHTML bodies, Atom feeds, XML-RPC, ...
Namespaces to scope payloads
<iq type=quot;getquot;>
<query xmlns=quot;jabber:iq:rosterquot;/>
</iq>
Extensions typically developed @ XMPP Standards
Foundation's
Open, developer-friendly standards process
29
Tuesday, March 3, 2009
141. Extensibility
Any XML child element can be used as a payload
e.g. XHTML bodies, Atom feeds, XML-RPC, ...
Namespaces to scope payloads
<iq type=quot;getquot;>
<query xmlns=quot;jabber:iq:rosterquot;/>
</iq>
Extensions typically developed @ XMPP Standards
Foundation's
Open, developer-friendly standards process
Can write your own quot;privatequot; extensions for custom
functionality
29
Tuesday, March 3, 2009
144. Asynchronicity
Web
Send request to server
30
Tuesday, March 3, 2009
145. Asynchronicity
Web
Send request to server
Wait for response
30
Tuesday, March 3, 2009
146. Asynchronicity
Web
Send request to server
Wait for response
Short-lived connections
30
Tuesday, March 3, 2009
147. Asynchronicity
Web
Send request to server
Wait for response
Short-lived connections
Jabber
30
Tuesday, March 3, 2009
148. Asynchronicity
Web
Send request to server
Wait for response
Short-lived connections
Jabber
Long lived connection
30
Tuesday, March 3, 2009
149. Asynchronicity
Web
Send request to server
Wait for response
Short-lived connections
Jabber
Long lived connection
Events are sent out / come in asynchronously
30
Tuesday, March 3, 2009
150. Asynchronicity
Web
Send request to server
Wait for response
Short-lived connections
Jabber
Long lived connection
Events are sent out / come in asynchronously
Different mindsets!
30
Tuesday, March 3, 2009
155. Echo bot
Bots
Unmanned clients
Connect to an XMPP server, and wait for commands / send
events
32
Tuesday, March 3, 2009
156. Echo bot
Bots
Unmanned clients
Connect to an XMPP server, and wait for commands / send
events
Echo bot
32
Tuesday, March 3, 2009
157. Echo bot
Bots
Unmanned clients
Connect to an XMPP server, and wait for commands / send
events
Echo bot
Echoes back every message that it receives
32
Tuesday, March 3, 2009
160. Writing the Echo Bot
Select a language to work in
34
Tuesday, March 3, 2009
161. Writing the Echo Bot
Select a language to work in
e.g. Python
34
Tuesday, March 3, 2009
162. Writing the Echo Bot
Select a language to work in
e.g. Python
Select an XMPP library to do the low-level XMPP
work
34
Tuesday, March 3, 2009
163. Writing the Echo Bot
Select a language to work in
e.g. Python
Select an XMPP library to do the low-level XMPP
work
e.g. SleekXMPP
34
Tuesday, March 3, 2009
164. Writing the Echo Bot
Select a language to work in
e.g. Python
Select an XMPP library to do the low-level XMPP
work
e.g. SleekXMPP
Start coding
34
Tuesday, March 3, 2009
175. Multi-User Chat
Conversation with multiple users
38
Tuesday, March 3, 2009
176. Multi-User Chat
Conversation with multiple users
Shared roster (with presence from all participating
users)
38
Tuesday, March 3, 2009
177. Multi-User Chat
Conversation with multiple users
Shared roster (with presence from all participating
users)
Crowd control
38
Tuesday, March 3, 2009
178. Multi-User Chat
Conversation with multiple users
Shared roster (with presence from all participating
users)
Crowd control
Privacy
38
Tuesday, March 3, 2009
179. Multi-User Chat
Conversation with multiple users
Shared roster (with presence from all participating
users)
Crowd control
Privacy
Configurable
38
Tuesday, March 3, 2009
196. PubSub
Protocol to subscribe and publish any kind of
information
41
Tuesday, March 3, 2009
197. PubSub
Protocol to subscribe and publish any kind of
information
Avoids needless polling for new information
41
Tuesday, March 3, 2009
198. PubSub
Protocol to subscribe and publish any kind of
information
Avoids needless polling for new information
Doesn’t scale with the number of users / requests
41
Tuesday, March 3, 2009
199. PubSub
Protocol to subscribe and publish any kind of
information
Avoids needless polling for new information
Doesn’t scale with the number of users / requests
Extensible: Payload can be any type
41
Tuesday, March 3, 2009
200. PubSub
Protocol to subscribe and publish any kind of
information
Avoids needless polling for new information
Doesn’t scale with the number of users / requests
Extensible: Payload can be any type
Configurable
41
Tuesday, March 3, 2009
205. Extended Presence
Publish extra information about yourself
45
Tuesday, March 3, 2009
206. Extended Presence
Publish extra information about yourself
What music are you currently listening to?
45
Tuesday, March 3, 2009
207. Extended Presence
Publish extra information about yourself
What music are you currently listening to?
Where are you right now?
45
Tuesday, March 3, 2009
208. Extended Presence
Publish extra information about yourself
What music are you currently listening to?
Where are you right now?
What are you doing?
45
Tuesday, March 3, 2009
209. Extended Presence
Publish extra information about yourself
What music are you currently listening to?
Where are you right now?
What are you doing?
Used to be added to regular presence
45
Tuesday, March 3, 2009
210. Extended Presence
Publish extra information about yourself
What music are you currently listening to?
Where are you right now?
What are you doing?
Used to be added to regular presence
Doesn’t scale
45
Tuesday, March 3, 2009
211. Extended Presence
Publish extra information about yourself
What music are you currently listening to?
Where are you right now?
What are you doing?
Used to be added to regular presence
Doesn’t scale
‘Spams’ people with unwanted information
45
Tuesday, March 3, 2009
212. Extended Presence
Publish extra information about yourself
What music are you currently listening to?
Where are you right now?
What are you doing?
Used to be added to regular presence
Doesn’t scale
‘Spams’ people with unwanted information
Implemented on top of PubSub
45
Tuesday, March 3, 2009
217. Jingle
Voice, Video, Multimedia, P2P
XMPP is not optimized to send data streams
48
Tuesday, March 3, 2009
218. Jingle
Voice, Video, Multimedia, P2P
XMPP is not optimized to send data streams
Use XMPP (Jingle) to set up a direct connection
between points
48
Tuesday, March 3, 2009
219. Jingle
Voice, Video, Multimedia, P2P
XMPP is not optimized to send data streams
Use XMPP (Jingle) to set up a direct connection
between points
Negotiate what (Audio/Video) and how (UDP, TCP) you are
going to send it
48
Tuesday, March 3, 2009
220. Jingle
Voice, Video, Multimedia, P2P
XMPP is not optimized to send data streams
Use XMPP (Jingle) to set up a direct connection
between points
Negotiate what (Audio/Video) and how (UDP, TCP) you are
going to send it
Use streaming protocols (RTP,...) to stream the data
over the negotiated direct connection
48
Tuesday, March 3, 2009
221. Jingle
Voice, Video, Multimedia, P2P
XMPP is not optimized to send data streams
Use XMPP (Jingle) to set up a direct connection
between points
Negotiate what (Audio/Video) and how (UDP, TCP) you are
going to send it
Use streaming protocols (RTP,...) to stream the data
over the negotiated direct connection
(Renegotiation during data session)
48
Tuesday, March 3, 2009
222. Jingle
Voice, Video, Multimedia, P2P
XMPP is not optimized to send data streams
Use XMPP (Jingle) to set up a direct connection
between points
Negotiate what (Audio/Video) and how (UDP, TCP) you are
going to send it
Use streaming protocols (RTP,...) to stream the data
over the negotiated direct connection
(Renegotiation during data session)
NAT traversal using standard technologies
48
Tuesday, March 3, 2009
223. Jingle
Voice, Video, Multimedia, P2P
XMPP is not optimized to send data streams
Use XMPP (Jingle) to set up a direct connection
between points
Negotiate what (Audio/Video) and how (UDP, TCP) you are
going to send it
Use streaming protocols (RTP,...) to stream the data
over the negotiated direct connection
(Renegotiation during data session)
NAT traversal using standard technologies
TURN, STUN, ICE 48
Tuesday, March 3, 2009
225. File Transfer
Various ways of transferring files
49
Tuesday, March 3, 2009
226. File Transfer
Various ways of transferring files
Tiny pieces of data are sent in one stanza
49
Tuesday, March 3, 2009
227. File Transfer
Various ways of transferring files
Tiny pieces of data are sent in one stanza
Small pieces of data are sent in a set of consequent <iq/>
stanzas
49
Tuesday, March 3, 2009
228. File Transfer
Various ways of transferring files
Tiny pieces of data are sent in one stanza
Small pieces of data are sent in a set of consequent <iq/>
stanzas
Larger pieces of data are sent out of band
49
Tuesday, March 3, 2009
229. File Transfer
Various ways of transferring files
Tiny pieces of data are sent in one stanza
Small pieces of data are sent in a set of consequent <iq/>
stanzas
Larger pieces of data are sent out of band
Using SOCKS5
49
Tuesday, March 3, 2009
230. File Transfer
Various ways of transferring files
Tiny pieces of data are sent in one stanza
Small pieces of data are sent in a set of consequent <iq/>
stanzas
Larger pieces of data are sent out of band
Using SOCKS5
Using older Jingle-like protocol
49
Tuesday, March 3, 2009
231. File Transfer
Various ways of transferring files
Tiny pieces of data are sent in one stanza
Small pieces of data are sent in a set of consequent <iq/>
stanzas
Larger pieces of data are sent out of band
Using SOCKS5
Using older Jingle-like protocol
Being extended to use Jingle
49
Tuesday, March 3, 2009
233. BOSH
Regular XMPP opens one long-lived TCP
connection, and keeps it up
50
Tuesday, March 3, 2009
234. BOSH
Regular XMPP opens one long-lived TCP
connection, and keeps it up
Not always convenient
50
Tuesday, March 3, 2009
235. BOSH
Regular XMPP opens one long-lived TCP
connection, and keeps it up
Not always convenient
Long connections drain batteries on mobile phones
50
Tuesday, March 3, 2009
236. BOSH
Regular XMPP opens one long-lived TCP
connection, and keeps it up
Not always convenient
Long connections drain batteries on mobile phones
Web clients cannot keep state (open connections)
50
Tuesday, March 3, 2009
237. BOSH
Regular XMPP opens one long-lived TCP
connection, and keeps it up
Not always convenient
Long connections drain batteries on mobile phones
Web clients cannot keep state (open connections)
Bad network connectivity
50
Tuesday, March 3, 2009
238. BOSH
Regular XMPP opens one long-lived TCP
connection, and keeps it up
Not always convenient
Long connections drain batteries on mobile phones
Web clients cannot keep state (open connections)
Bad network connectivity
Bidirectional streams Over Synchronous HTTP
50
Tuesday, March 3, 2009
239. BOSH
Regular XMPP opens one long-lived TCP
connection, and keeps it up
Not always convenient
Long connections drain batteries on mobile phones
Web clients cannot keep state (open connections)
Bad network connectivity
Bidirectional streams Over Synchronous HTTP
XMPP over HTTP
50
Tuesday, March 3, 2009
240. BOSH
Regular XMPP opens one long-lived TCP
connection, and keeps it up
Not always convenient
Long connections drain batteries on mobile phones
Web clients cannot keep state (open connections)
Bad network connectivity
Bidirectional streams Over Synchronous HTTP
XMPP over HTTP
Cunning mechanism of not having to poll for new
messages
50
Tuesday, March 3, 2009
241. BOSH
Regular XMPP opens one long-lived TCP
connection, and keeps it up
Not always convenient
Long connections drain batteries on mobile phones
Web clients cannot keep state (open connections)
Bad network connectivity
Bidirectional streams Over Synchronous HTTP
XMPP over HTTP
Cunning mechanism of not having to poll for new
messages
Piggyback incoming messages on HTTP response
50
Tuesday, March 3, 2009
242. BOSH
POST /webclient HTTP/1.1
Host: bosh.wonderland.lit
Content-Type: text/xml; charset=utf-8
Content-Length: 205
<body rid=quot;90029205quot; sid=quot;3m1ts1htd1squot;
xmlns=quot;http://jabber.org/protocol/httpbindquot;>
<message to=quot;sister@realworld.litquot; xmlns=quot;jabber:clientquot;>
<body>Help, I fell down the rabbit hole!</body>
</message>
</body>
51
Tuesday, March 3, 2009
244. Serverless Messaging
Sometimes, a server is not available
52
Tuesday, March 3, 2009
245. Serverless Messaging
Sometimes, a server is not available
Remote location without internet
52
Tuesday, March 3, 2009
246. Serverless Messaging
Sometimes, a server is not available
Remote location without internet
Conference location with many unknown people you want to
communicate wit
52
Tuesday, March 3, 2009
247. Serverless Messaging
Sometimes, a server is not available
Remote location without internet
Conference location with many unknown people you want to
communicate wit
Serverless messaging
52
Tuesday, March 3, 2009
248. Serverless Messaging
Sometimes, a server is not available
Remote location without internet
Conference location with many unknown people you want to
communicate wit
Serverless messaging
Uses zero-configuration (Apple) to discover entities
on the local network
52
Tuesday, March 3, 2009
249. Serverless Messaging
Sometimes, a server is not available
Remote location without internet
Conference location with many unknown people you want to
communicate wit
Serverless messaging
Uses zero-configuration (Apple) to discover entities
on the local network
mDNS, DNS-SD
52
Tuesday, March 3, 2009
250. Serverless Messaging
Sometimes, a server is not available
Remote location without internet
Conference location with many unknown people you want to
communicate wit
Serverless messaging
Uses zero-configuration (Apple) to discover entities
on the local network
mDNS, DNS-SD
Open connection directly to other connection, and
send XMPP over that connection
52
Tuesday, March 3, 2009
251. Serverless Messaging
Sometimes, a server is not available
Remote location without internet
Conference location with many unknown people you want to
communicate wit
Serverless messaging
Uses zero-configuration (Apple) to discover entities
on the local network
mDNS, DNS-SD
Open connection directly to other connection, and
send XMPP over that connection
iChat’s Rendez-vous/Bonjour 52
Tuesday, March 3, 2009
261. Conclusion
The real-time Internet is coming
57
Tuesday, March 3, 2009
262. Conclusion
The real-time Internet is coming
Build competitive advantage using open
technologies
57
Tuesday, March 3, 2009
263. Conclusion
The real-time Internet is coming
Build competitive advantage using open
technologies
What problems can you solve with XMPP?
57
Tuesday, March 3, 2009
264. Conclusion
The real-time Internet is coming
Build competitive advantage using open
technologies
What problems can you solve with XMPP?
Join the conversation
57
Tuesday, March 3, 2009
265. Conclusion
The real-time Internet is coming
Build competitive advantage using open
technologies
What problems can you solve with XMPP?
Join the conversation
Happy Jabbering!
57
Tuesday, March 3, 2009
266. Conclusion
The real-time Internet is coming
Build competitive advantage using open
technologies
What problems can you solve with XMPP?
Join the conversation
Happy Jabbering!
More info inside
57
Tuesday, March 3, 2009