<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" 
  xmlns:dc="http://purl.org/dc/elements/1.1/"
  xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
  xmlns:content="http://purl.org/rss/1.0/modules/content/"
  xmlns:admin="http://webns.net/mvcb/"
  xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
  xmlns:atom="http://www.w3.org/2005/Atom">

<channel>
<title>Notes</title>
<link>http://www.simplicidade.org/notes/</link>
<atom:link href="http://www.simplicidade.org/notes/42.xml" rel="self" type="application/rss+xml" />
<description>Building simplicidade.org: notes, projects, and ocasional rants</description>
<dc:language>en-us</dc:language>
<dc:creator>melo@simplicidade.org</dc:creator>
<dc:date>2009-05-28T22:32:08+00:00</dc:date>
<admin:generatorAgent rdf:resource="http://www.movabletype.org/?v=3.2" />
<sy:updatePeriod>hourly</sy:updatePeriod>
<sy:updateFrequency>1</sy:updateFrequency>
<sy:updateBase>2000-01-01T12:00+00:00</sy:updateBase>

<item>
<title>XMPP Waves</title>
<link>http://www.simplicidade.org/notes/archives/2009/05/xmpp_waves.html</link>

<description>Google kettle let go a cloud of vapor and named it Wave. Of course we cannot know how it works and how similar it is to Drop.io. Until we do know more about it, we can look through the Wave protocol draft spec, and notice that its built on top of XMPP. At the same event, the new XMPP-powered mini applications where also announced. Each one is a XML file with all the HTML, CSS, and JS files packed together. Time to see how long it will take a XMPP desktop client with access to a WebKit view to implement...</description>

<content:encoded><![CDATA[
<p>Google kettle let go a cloud of vapor and named it <a href="http://wave.google.com/">Wave</a>. Of course we cannot know how it works and how similar it is to <a href="http://drop.io/">Drop.io</a>.</p>

<p>Until we do know more about it, we can look through <a href="http://www.waveprotocol.org/draft-protocol-spec">the Wave protocol draft spec</a>, and notice that its built on top of <a href="http://xmpp.org/">XMPP</a>.</p>

<p>At the same event, the new <a href="http://googletalk.blogspot.com/2009/05/attention-nerds-new-gadgets-api-for.html">XMPP-powered mini applications</a> where also announced. Each one is a XML file with all the HTML, CSS, and JS files packed together. Time to see how long it will take a XMPP desktop client with access to a WebKit view to implement this extension. It reminds me all the discussions about embedded applications we had in the API mailing list last year.</p>

]]></content:encoded>

<guid isPermaLink="false">970@http://www.simplicidade.org/notes/</guid>
<dc:subject>XMPP</dc:subject>
<dc:date>2009-05-28T22:32:08+00:00</dc:date>


</item>
<item>
<title>Psi with voice calls</title>
<link>http://www.simplicidade.org/notes/archives/2009/05/psi_with_voice.html</link>

<description>The first release candidate of the 0.13 version of Psi was released just now, and it includes voice calls using Jingle RTP. I&apos;ll keep it running in case you need a guinea pig for tests. Very good news....</description>

<content:encoded><![CDATA[
<p>The <a href="http://delta.affinix.com/2009/05/23/psi-013-rc1-released/">first release candidate of the 0.13 version of Psi was released just now</a>, and it includes voice calls using <a href="http://xmpp.org/extensions/xep-0167.html">Jingle RTP</a>.</p>

<p>I'll keep it running in case you need a guinea pig for tests.</p>

<p>Very good news.</p>

]]></content:encoded>

<guid isPermaLink="false">967@http://www.simplicidade.org/notes/</guid>
<dc:subject>XMPP</dc:subject>
<dc:date>2009-05-24T06:33:48+00:00</dc:date>


</item>
<item>
<title>Fast DNS queries with Perl</title>
<link>http://www.simplicidade.org/notes/archives/2009/05/fast_dns_querie.html</link>

<description>For some jobs, you need to quickly resolve large amounts of DNS queries. The AnyEvent::DNS module allows you to resolve DNS queries fast and in parallel. To test this, I wrote a simple command line tool to check XMPP SRV records of a list of domains. Both server-to-server and client-to-server records will be checked and results printed out. All queries will be made in parallel. The code is at my Ironman repository. Click the &quot;Raw&quot; link to download (sorry, no direct link, GitHub lacks permalinks to the latest raw version of a file)....</description>

<content:encoded><![CDATA[
<p>For some jobs, you need to quickly resolve large amounts of DNS queries.</p>

<p>The <a href="http://search.cpan.org/dist/AnyEvent/lib/AnyEvent/DNS.pm"><code>AnyEvent::DNS</code></a> module allows you to resolve DNS queries fast and in parallel.</p>

<p>To test this, I wrote a simple command line tool to check XMPP SRV records of a list of domains. Both server-to-server and client-to-server records will be checked and results printed out. All queries will be made in parallel.</p>

<p>The code is at <a href="http://github.com/melo/Ironman/">my Ironman repository</a>. Click the "Raw" link to download (sorry, no direct link, <a href="http://github.com/">GitHub</a> <a href="http://support.github.com/discussions/repos/735-add-permalink-for-files">lacks permalinks to the latest raw version of a file</a>).</p>

]]></content:encoded>

<guid isPermaLink="false">956@http://www.simplicidade.org/notes/</guid>
<dc:subject>Iron Man</dc:subject>
<dc:date>2009-05-06T16:35:03+00:00</dc:date>


</item>
<item>
<title>Swift dreams</title>
<link>http://www.simplicidade.org/notes/archives/2009/03/swift_dreams.html</link>

<description>One of my favorite XMPP clients is under a new^H^H^Hold management. Kevin is stepping down, and Justin is back to the driver seat. I&apos;ve been lurking in the Delta mailing list, so I&apos;m very excited with the developments there and the possibilities that they open up for Psi. But Kevin is not out of the XMPP client world. He and Remko announced a new cross-platform client called Swift. Not much is known for now about Swift but I expect a bit more news over the weekend. While we wait, I&apos;ll leave here my wish list for my next client. I...</description>

<content:encoded><![CDATA[
<p>One of my <a href="http://psi-im.org/">favorite XMPP clients</a> is <a href="http://www.kismith.co.uk/wordpress/index.php/2009/03/05/psi-under-old-management/">under a new^H^H^Hold management</a>. <a href="http://www.kismith.co.uk/">Kevin</a> is stepping down, and <a href="http://delta.affinix.com/">Justin</a> is back to the driver seat. I've been lurking in the <a href="http://lists.affinix.com/listinfo.cgi/delta-affinix.com">Delta mailing list</a>, so I'm very excited with the developments there and the possibilities that they open up for <a href="http://psi-im.org/">Psi</a>.</p>

<p>But Kevin is not out of the XMPP client world. He and <a href="http://el-tramo.be/">Remko</a> <a href="http://blog.swift.im/">announced a new cross-platform client called Swift</a>.</p>

<p>Not much is known for now about <a href="http://swift.im/">Swift</a> but I expect a <a href="http://identi.ca/notice/2622495">bit more news over the weekend</a>.</p>

<p>While we wait, I'll leave here my wish list for my next client. I don't know if Swift is going in this direction or not, this is just me thinking out loud:</p>

<ul>
<li>C/C++ minimal core: the core is responsible for XMPP connections and stanza parsing;</li>
<li>HTML-based UI: all windows are HTML-based. If they choose to use Qt, they would be WebKit views. The DOM of those views would be extended with XMPP-oriented objects;</li>
<li>JavaScript-based application: the IM logic is written with JavaScript, manipulating the XMPP DOM objects and the HTML-based UI;</li>
<li>Plugins: all features should be written as plugins. I should be able to drop a directory with HTML, CSS, images and JavaScript files and hook that into the XMPP dispatcher. It should be possible to hook using XPath expressions, so that I can build new protocols with ease.</li>
</ul>

<p>We can dream, right?</p>

]]></content:encoded>

<guid isPermaLink="false">939@http://www.simplicidade.org/notes/</guid>
<dc:subject>XMPP</dc:subject>
<dc:date>2009-03-07T11:35:43+00:00</dc:date>


</item>
<item>
<title>XMPP for begginers</title>
<link>http://www.simplicidade.org/notes/archives/2009/03/xmpp_for_beggin.html</link>

<description>While we wait for the new O&apos;Reilly book, XMPP: The Definitive Guide, Peter and Remko published their latest slides from FOSDEM. Good intro, solid presentation. Go, read....</description>

<content:encoded><![CDATA[
<p>While we wait for the new O'Reilly book, <a href="http://oreilly.com/catalog/9780596157197/index.html">XMPP: The Definitive Guide</a>, <a href="http://stpeter.im/">Peter</a> and <a href="http://el-tramo.be/">Remko</a> <a href="http://www.slideshare.net/remko.troncon/xmpp-101">published their latest slides</a> from <a href="http://fosdem.org/2009/">FOSDEM</a>.</p>

<p>Good intro, solid presentation. <a href="http://www.slideshare.net/remko.troncon/xmpp-101">Go, read</a>.</p>

]]></content:encoded>

<guid isPermaLink="false">937@http://www.simplicidade.org/notes/</guid>
<dc:subject>XMPP</dc:subject>
<dc:date>2009-03-05T10:59:43+00:00</dc:date>


</item>
<item>
<title>Codebits 2008 XMPP presentation</title>
<link>http://www.simplicidade.org/notes/archives/2008/11/codebits_2008_x.html</link>

<description>My &quot;XMPP - Hands on&quot; presentation at Codebits 2008 is online. You can find it at GitHub and download the tarball (the big Download button). Its in Portuguese so most of you can ignore the PDF and dig straight through to the code. I didn&apos;t have Keynote.app on the laptop where I wrote it so I decided to try S5 to write my slides. The HTML version is great, and with a bit of syntax highlighter even the XML examples look good. But the PDF version is very basic. I searched around for a better CSS to print S5 slides,...</description>

<content:encoded><![CDATA[
<p>My <a href="http://github.com/melo/codebits/">"XMPP - Hands on" presentation at Codebits 2008 is online</a>. You can find it at GitHub and download the tarball (the big Download button). Its in Portuguese so most of you can ignore the <a href="http://www.simplicidade.org/share/xmpp-mao_na_coisa.pdf">PDF</a> and <a href="http://github.com/melo/codebits/tree/master/2008%2Fxmpp-hands-on%2Fbots">dig straight through to the code</a>.</p>

<p>I didn't have Keynote.app on the laptop where I wrote it so I decided to try <a href="http://meyerweb.com/eric/tools/s5/">S5</a> to write my slides.</p>

<p>The HTML version is great, and with a bit of <a href="http://code.google.com/p/syntaxhighlighter/">syntax highlighter</a> even the XML examples look good.</p>

<p>But the PDF version is very basic. I searched around for a better CSS to print S5 slides, but could not find anything. Maybe CSS is just too limited for decent printing control.</p>

<p>I don't know if I'm going to use it again. The lack of a decent PDF output is a big minus. On the plus side, I really like having the full power of HTML/CSS/JS inside my presentations.</p>

<p>As for the code examples, I wrote two:</p>

<ul>
<li>a <a href="http://github.com/melo/codebits/tree/master/2008%2Fxmpp-hands-on%2Fbots%2Fhttp2xmpp">basic HTTP-to-XMPP gateway</a>: post stuff and send it via XMPP to someone;</li>
<li><a href="http://github.com/melo/codebits/tree/master/2008%2Fxmpp-hands-on%2Fbots%2Fprocess_sync">synchronize several processes to execute in a sequence</a> (for example, restart a web farm, one web server at a time) using a chat room. Includes an auction (very simple, assumes everybody plays fair) to determine the final sequence.</li>
</ul>

<p>All examples are written in Perl using the <a href="http://search.cpan.org/dist/Net-XMPP2/"><code>Net::XMPP2</code></a> framework. I made a few fixes to some of the <code>Net::XMPP2</code> modules, you can <a href="http://github.com/melo/codebits/tree/master/2008%2Fxmpp-hands-on%2Flib">find them inside the repository</a> to make running the bots easier. I'm going to send <a href="http://www.ta-sa.org/">Robin Redeker</a> (<code>Net::XMPP2</code> author) those fixes, so they should appear in a future version.</p>

]]></content:encoded>

<guid isPermaLink="false">917@http://www.simplicidade.org/notes/</guid>
<dc:subject>Meta</dc:subject>
<dc:date>2008-11-19T12:33:00+00:00</dc:date>


</item>
<item>
<title>GTalk Videochat</title>
<link>http://www.simplicidade.org/notes/archives/2008/11/gtalk_videochat.html</link>

<description>By now, you have probably read that GMail has added video-chat to its web interface. The blog post mentions the usual suspects: XMPP for signaling, RTP for transport and a H264/SVC codec. The implementation uses a browser plugin. Time will tell if this plugin will be bundled with Chrome (most likely) or bundled with Gears (would make sense for Google). The Mac installer includes a meta-package with two packages: Keystone.pkg and the GoogleVoiceandVideo.pkg. The Keystone.pkg includes the GoogleSoftwareUpdate.bundle that is installed at /Library/Google. Inside it has a GoogleSoftwareUpdateDaemon but so far I don&apos;t have it running on my system. The...</description>

<content:encoded><![CDATA[
<p>By now, you have probably read that <a href="http://gmailblog.blogspot.com/2008/11/say-hello-to-gmail-voice-and-video-chat.html">GMail has added video-chat to its web interface</a>.</p>

<p>The blog post mentions the usual suspects: <a href="http://xmpp.org/">XMPP</a> for signaling, RTP for transport and a H264/SVC codec. The implementation uses a browser plugin. Time will tell if this plugin will be bundled with <a href="http://www.google.com/chrome">Chrome</a> (most likely) or bundled with <a href="http://gears.google.com/">Gears</a> (would make sense for Google).</p>

<p>The Mac installer includes a meta-package with two packages: <code>Keystone.pkg</code> and the <code>GoogleVoiceandVideo.pkg</code>.</p>

<p>The <code>Keystone.pkg</code> includes the <code>GoogleSoftwareUpdate.bundle</code> that is installed at <code>/Library/Google</code>. Inside it has a <code>GoogleSoftwareUpdateDaemon</code> but so far I don't have it running on my system.</p>

<p>The <code>GoogleVoiceandVideo.pkg</code> is the real deal. It installs several things:</p>

<ul>
<li>two QuickTime components, <code>Google Camera Adapter 0</code> and <code>Google Camera Adapter 1</code>;</li>
<li>an Internet plug-in, <code>googletalkbrowserplugin.plugin</code>;</li>
<li>an <code>GoogleTalkPlugin.app</code> support application.</li>
</ul>

<p>After installation, it opened my GMail account and detected my iSight camera. I wasn't able to find someone to use it with so far, so I'll report back on the quality of the image. I expect a decent quality given the chosen codec.</p>

<p>I'm focusing on Codebits right now, so not much time to check out the XMPP part of this, but it seems to me that then reused the same signaling already used by the Google Talk client, nothing new there.</p>

<p>The big question for me is this: will other sites be able to use this plugin for their own video-chat features? I need to read the license more carefully.</p>

<p>As for Skype, it still has one advantage: I can use it without opening a browser on my Mac. But if I where them, I would start thinking about XMPP support and interoperability with Jingle, but thats just me.</p>

<p>Skype window of opportunity to be the leading XMPP client is shortening every day.</p>

]]></content:encoded>

<guid isPermaLink="false">915@http://www.simplicidade.org/notes/</guid>
<dc:subject>Rants</dc:subject>
<dc:date>2008-11-12T13:03:15+00:00</dc:date>


</item>
<item>
<title>Codebits 2008 counting down</title>
<link>http://www.simplicidade.org/notes/archives/2008/11/codebits_2008_c.html</link>

<description>Codebits 2008 is this week, and although I have received a couple of ideas already for my presentation, I still need more. So get of your collective chair-interface-parts and send your ideas. Thanks!...</description>

<content:encoded><![CDATA[
<p><a href="http://codebits.sapo.pt/">Codebits 2008</a> is this week, and although <a href="http://www.simplicidade.org/notes/archives/2008/11/codebits_2008.html">I have received a couple of ideas already for my presentation</a>, I still need more.</p>

<p>So get of your collective chair-interface-parts and send your ideas.</p>

<p>Thanks!</p>

]]></content:encoded>

<guid isPermaLink="false">914@http://www.simplicidade.org/notes/</guid>
<dc:subject>XMPP</dc:subject>
<dc:date>2008-11-10T16:29:07+00:00</dc:date>


</item>
<item>
<title>Codebits 2008</title>
<link>http://www.simplicidade.org/notes/archives/2008/11/codebits_2008.html</link>

<description>Next week I&apos;ll be attending the 2008 edition of Codebits. I also have a slot to talk about XMPP and this is where you can help. I don&apos;t want to do another abstract talk about XMPP, but instead I want to write code that you would like to see. So if there is some XMPP-based functionality that you want to see how you can get it done, ping me or email me with the high-level details. I&apos;ll take all the projects I can cover in an hour and present my skeleton or even complete solution at the conference and discuss...</description>

<content:encoded><![CDATA[
<p>Next week I'll be attending the <a href="http://codebits.sapo.pt/">2008 edition of Codebits</a>.</p>

<p>I also have a <a href="http://codebits.sapo.pt/intra/s/speaker/31">slot to talk about XMPP</a> and this is where you can help.</p>

<p>I don't want to do another abstract talk about XMPP, but instead I want to write code that you would like to see.</p>

<p>So if there is some XMPP-based functionality that you want to see how you can get it done, <a href="xmpp:melo@simplicidade.org?roster">ping me</a> or  <a href="mailto:melo@simpicidade.org?subject=XMPP%20idea">email me</a> with the high-level details.</p>

<p>I'll take all the projects I can cover in an hour and present my skeleton or even complete solution at the conference and discuss why it was done that way.</p>

<p>All the code will be available before the presentation so you can also follow along.</p>

]]></content:encoded>

<guid isPermaLink="false">903@http://www.simplicidade.org/notes/</guid>
<dc:subject>XMPP</dc:subject>
<dc:date>2008-11-03T16:25:45+00:00</dc:date>


</item>
<item>
<title>Rasputine</title>
<link>http://www.simplicidade.org/notes/archives/2008/11/rasputine.html</link>

<description>Apparently some things never die. In January 1994, a friend of mine, Paulo Ferreira, created an online community around a Lambda Moo server. Its called Moosaico and it still kicking. I spent an enormous amount of time there and I still have fond memories of that time, of the people, the stories, everything. But access to Moosaico (and other MUD&apos;s or Talkers) is usually done with Telnet or using a client like TinyFugue or Atlantis. Keeping one of those open to be connected somehow never entered my normal workflow, so I drifted away. Its amazing that something that I was...</description>

<content:encoded><![CDATA[
<p>Apparently some things never die. In January 1994, a friend of mine, Paulo Ferreira, created an online community around a Lambda Moo server. Its called <a href="http://moosaico.com/">Moosaico</a> and it still kicking.</p>

<p>I spent an enormous amount of time there and I still have fond memories of that time, of the people, the stories, everything.</p>

<p>But access to Moosaico (and other MUD's or Talkers) is usually done with Telnet or using a client like <a href="http://tinyfugue.sourceforge.net/">TinyFugue</a> or <a href="http://www.riverdark.net/atlantis/">Atlantis</a>. Keeping one of those open to be connected somehow never entered my normal workflow, so I drifted away.</p>

<p>Its amazing that something that I was hooked on 14 years ago is still alive in me.</p>

<p>The friday something happened that will pull me back in.</p>

<p>Another friend, <a href="http://mindboosternoori.blogspot.com/">Marcos Marado</a>, commented that he was looking for a XMPP interface to his talker, Selva. I had an headache and didn't feel like working on what I was supposed to, so I took the challenge.</p>

<p>Later that afternoon, <a href="http://github.com/melo/rasputine/">Rasputine</a> was born.</p>

<p>Rasputine (or Ras, as Corto Maltese called him) is a generic Moo/MUD/Talker-to-XMPP gateway. You add a buddy to your roster and then you can use it to connect to that world.</p>

<p>For example, to log in to Moosaico, add <a href="xmpp:moosaico@rasputine.simplicidade.org?roster"><code>moosaico@rasputine.simplicidade.org</code></a> and then type <code>//connect</code>. Presto, the login window of Moosaico should be readily available. The Selva talker is available at <a href="xmpp:selva@rasputine.simplicidade.org?roster"><code>selva@rasputine.simplicidade.org</code></a>.</p>

<p>The code is still very young and feature-less. The copy that I run on my staging server already has per-user status messages and avatars, and next I plan to implement auto-connect (probably even <a href="http://xmpp.org/extensions/xep-0100.html">XEP-0100</a> support).</p>

<p>For now, I'm just enjoying getting back to Moosaico.</p>

<p><em>Update:</em> by the way, if you want to connect your own talker/MUD/Moo, ping me via XMPP or email and I can set you up. At least to try it out.</p>

]]></content:encoded>

<guid isPermaLink="false">899@http://www.simplicidade.org/notes/</guid>
<dc:subject>XMPP</dc:subject>
<dc:date>2008-11-02T18:13:17+00:00</dc:date>


</item>
<item>
<title>Cisco to acquire Jabber Inc.</title>
<link>http://www.simplicidade.org/notes/archives/2008/09/cisco_to_acquir.html</link>

<description>Wow... Cisco will own the Jabber trademark. (via IMtrends)...</description>

<content:encoded><![CDATA[
<p>Wow... <a href="http://newsroom.cisco.com/dlls/2008/corp_091908.html">Cisco will own the Jabber trademark</a>.</p>

<p>(via <a href="http://www.process-one.net/en/imtrends/article/xmpp_getting_high_profile_cisco_announces_definitive_agreement_to_acquire_j/">IMtrends</a>)</p>

]]></content:encoded>

<guid isPermaLink="false">875@http://www.simplicidade.org/notes/</guid>
<dc:subject>XMPP</dc:subject>
<dc:date>2008-09-19T14:49:22+00:00</dc:date>


</item>
<item>
<title>XMPP presentation at Barcamp</title>
<link>http://www.simplicidade.org/notes/archives/2008/09/xmpp_presentati.html</link>

<description>The first weekend of September, I went to Barcamp in Coimbra. I was only there for the first day, but I got to know and talk to a lot of people that I usually only read online, which was pretty cool. I gave a presentation entitled WTF is XMPP? mostly centered around non-instant messaging applications of XMPP. I think it went well, the room was pretty full and I talked a lot with people after the event which plan to use XMPP in the short term. The organizers did a wonderful job, and I want to thanks Alcides to push...</description>

<content:encoded><![CDATA[
<p>The first weekend of September, I went to <a href="http://barcamp.webreakstuff.com/">Barcamp</a> in Coimbra. I was only there for the first day, but I got to know and talk to a lot of people that I usually only read online, which was pretty cool.</p>

<p>I gave a <a href="http://www.slideshare.net/melopt/wtf-is-xmpp-presentation">presentation entitled <em>WTF is XMPP?</em></a> mostly centered around non-instant messaging applications of XMPP. I think it went well, the room was pretty full and I talked a lot with people after the event which plan to use XMPP in the short term.</p>

<p>The organizers did a wonderful job, and I want to thanks <a href="http://alcidesfonseca.com/">Alcides</a> to push me to write the presentation.</p>

<p><em>Update:</em> cool, the <a href="http://www.slideshare.net/featured">presentation was featured</a> on <a href="http://www.slideshare.net">SlideShare</a> homepage.</p>

]]></content:encoded>

<guid isPermaLink="false">866@http://www.simplicidade.org/notes/</guid>
<dc:subject>XMPP</dc:subject>
<dc:date>2008-09-16T15:52:49+00:00</dc:date>


</item>
<item>
<title>XMPP for carbon lovers</title>
<link>http://www.simplicidade.org/notes/archives/2008/08/xmpp_for_carbon.html</link>

<description>If you happen to be a dead-tree-addict, and interested in XMPP like me, then I&apos;m happy to tell you that you will have a present next year. Kevin, Peter and Remko are hard at work for O&apos;Reilly to brings us the XMPP missing book. Entitled &quot;XMPP: The Definitive Guide&quot;, it should hit the shelfs in 2009. Shameless offer: if you need technical reviewers, you know my JID :)....</description>

<content:encoded><![CDATA[
<p>If you happen to be a dead-tree-addict, and interested in XMPP like me, then I'm happy to tell you that you will have a present next year.</p>

<p><a href="http://www.kismith.co.uk/wordpress/index.php/2008/08/21/xmpp-the-almost-definitive-guide-to-be/">Kevin</a>, <a href="https://stpeter.im/?p=2249">Peter</a> and <a href="http://el-tramo.be/blog/xmppbook-intro">Remko</a> are hard at work for <a href="http://oreilly.com/">O'Reilly</a> to brings us the <a href="http://www.xmpp.org/">XMPP</a> missing book.</p>

<p>Entitled "XMPP: The Definitive Guide", it should hit the shelfs in 2009.</p>

<p>Shameless offer: if you need technical reviewers, you know my JID :).</p>

]]></content:encoded>

<guid isPermaLink="false">852@http://www.simplicidade.org/notes/</guid>
<dc:subject>XMPP</dc:subject>
<dc:date>2008-08-22T11:17:07+00:00</dc:date>


</item>
<item>
<title>RabbitMQ added support for XMPP</title>
<link>http://www.simplicidade.org/notes/archives/2008/07/rabbitmq_added.html</link>

<description>This is interesting news. RabbitMQ, an open source implementation of APMQ in Erlang, now has support for XMPP using Ejabberd and mod_rabbitmq. It seems to be MUC-based, not PubSub. I hope to see a future version with PubSub in the future....</description>

<content:encoded><![CDATA[
<p>This is interesting news. <a href="http://www.rabbitmq.com/">RabbitMQ</a>, an open source implementation of <a href="http://www.rabbitmq.com/faq.html#what-is-amqp">APMQ</a> in <a href="http://www.erlang.org/">Erlang</a>, now has support for <a href="http://www.xmpp.org/">XMPP</a> using <a href="http://www.process-one.net/en/ejabberd/">Ejabberd</a> and <a href="http://hg.rabbitmq.com/rabbitmq-xmpp/raw-file/tip/doc/index.html">mod_rabbitmq</a>.</p>

<p>It seems to be <a href="http://www.xmpp.org/extensions/xep-0045.html">MUC</a>-based, not <a href="http://www.xmpp.org/extensions/xep-0060.html">PubSub</a>. I hope to see a future version with PubSub in the future.</p>

]]></content:encoded>

<guid isPermaLink="false">821@http://www.simplicidade.org/notes/</guid>
<dc:subject>XMPP</dc:subject>
<dc:date>2008-07-02T08:48:20+00:00</dc:date>


</item>
<item>
<title>Behind the scenes of Tarpipe XMPP</title>
<link>http://www.simplicidade.org/notes/archives/2008/06/behind_the_scen.html</link>

<description>Alex and Adam asked me to elaborate on the tools I used to implement the Tarpipe XMPP gateway. I used the Net::XMPP2 Perl module, in particular the Net::XMPP2::Component class. It uses the AnyEvent async framework, which in turn support the EV library , giving you all the love of kernel polling. Until the Net::XMPP2 author releases a new version, you should use my own copy if you plan on doing external component work (check the component-reply-with-from branch). Net::XMPP2 is widely used for bots, but not that many components, and some methods need some love to work properly in a component...</description>

<content:encoded><![CDATA[
<p><a href="http://webcracy.org/">Alex</a> and <a href="http://jabbermania.blogspot.com/">Adam</a> <a href="http://www.haloscan.com/comments/melopt/817/">asked me to elaborate on the tools I used</a> to implement the <a href="http://www.simplicidade.org/notes/archives/2008/06/using_tarpipe_v.html">Tarpipe XMPP gateway</a>.</p>

<p>I used the <a href="http://search.cpan.org/dist/Net-XMPP2/"><code>Net::XMPP2</code></a> Perl module, in particular the <a href="http://search.cpan.org/dist/Net-XMPP2/lib/Net/XMPP2/Component.pm"><code>Net::XMPP2::Component</code></a> class. It uses the <a href="http://search.cpan.org/dist/AnyEvent/"><code>AnyEvent</code></a> async framework, which in turn <a href="http://search.cpan.org/dist/AnyEvent/lib/AnyEvent/Impl/EV.pm">support the <code>EV</code> library</a> , <a href="http://software.schmorp.de/pkg/libev.html">giving you all the love of kernel polling</a>.</p>

<p>Until the <a href="http://search.cpan.org/~elmex/"><code>Net::XMPP2</code> author</a> releases a new version, you should <a href="http://github.com/melo/net--xmpp2/">use my own copy if you plan on doing external component work</a> (<a href="http://github.com/melo/net--xmpp2/commits/component-reply-with-from">check the component-reply-with-from branch</a>). <code>Net::XMPP2</code> is widely used for bots, but not that many components, and some methods need some love to work properly in a component environment.</p>

<p>The HTTP part was done using the excellent <a href="http://search.cpan.org/dist/AnyEvent-HTTP/"><code>AnyEvent::HTTP</code></a> class. I'm using <a href="http://github.com/melo/anyevent--http/">my own version</a>, which <a href="http://github.com/melo/anyevent--http/commit/988fb03b2eb1b03ec8b5720daaccb584a0ffa12d">includes a bug fix to the <code>http_post</code> function</a> (on its way to release 1.03 of <code>AnyEvent::HTTP</code>) and <a href="http://search.cpan.org/dist/libwww-perl/lib/HTTP/Request.pm">adds support for <code>HTTP::Request</code></a> to <code>http_request</code>. I hope to see this included in the main <code>AnyEvent::HTTP</code> distribution but I still need to update the documentation.</p>

<p>The rest is just glue code.</p>

]]></content:encoded>

<guid isPermaLink="false">818@http://www.simplicidade.org/notes/</guid>
<dc:subject>Perl</dc:subject>
<dc:date>2008-06-30T14:44:32+00:00</dc:date>


</item>
<item>
<title>Making better use of the XMPP presence in Bots</title>
<link>http://www.simplicidade.org/notes/archives/2008/05/making_better_u.html</link>

<description>The current crop of the XMPP-based bots is pretty basic. They provide an online presence in the XMPP network, and you interact with them by a command-line-style interface. These are some suggestions that bot authors can use to increase your XMPP presence easily. I&apos;m going to stick to easy stuff only, most of it widely deployed. The first thing that you need to understand is that you can have different per-contact presence information. You can switch the status message and the avatar for each of your contacts. Its called directed presence (basically include the contact JID in the to attribute,...</description>

<content:encoded><![CDATA[
<p>The current crop of the <a href="http://www.xmpp.org/">XMPP</a>-based bots is pretty basic. They provide an online presence in the XMPP network, and you interact with them by a command-line-style interface.</p>

<p>These are some suggestions that bot authors can use to increase your XMPP presence easily. I'm going to stick to easy stuff only, most of it widely deployed.</p>

<p>The first thing that you need to understand is that you can have different per-contact presence information. You can switch the status message and the avatar for each of your contacts. Its called directed presence (basically include the contact JID in the <code>to</code> attribute, but you can always check the <a href="http://www.xmpp.org/rfcs/rfc3921.html#rfc.section.5.1.4">spec for directed presence</a>).</p>

<p>You can use this to provide a personalized status message for each person on your roster. If your service has a notion of context, you can use the status bar to show the current context. For example, imagine that you have a ticketing system bot. You type "working on TICKET<em>ID", and your bot can change the status message to "Working on: TICKET</em>ID - TICKET_TITLE (URL of ticket)".</p>

<p>Optionally you could update the status each five minute with the elapsed time since you started working on it.</p>

<p>You can also switch the avatar. Maybe switch to a red background, meaning that you are busy doing something, or putting it in another way, the bot is telling you that he thinks you are working on something.</p>

<p>Other stuff you should do is to provide an alternative representation of the information you send textually. <a href="http://twitter.com/">Twitter</a> (when it used to work...) was a great example of this: every tweet you received by IM, included an Atom entry with the most important information of the tweet. This allows client to improve their interaction with such services, by using a more appealing interface.</p>

<p>But Atom entries are not yet standardized by the XMPP Foundation (there is some effort on <a href="http://www.xmpp.org/internet-drafts/draft-saintandre-atompub-notify-07.html">Atom over pubsub</a> that could be used as an example though). On the other hand, <a href="http://www.xmpp.org/extensions/xep-0004.html">Data Forms</a> are a standard, and more, they provide interaction possibilities.</p>

<p>You could send a "New ticket" notification, including a data form with the structured information, and a select-box with the possible next steps. The user would see the form, and submit back their decision.</p>

<p>Still in the subject of messages, you should know that there are <a href="http://www.xmpp.org/rfcs/rfc3921.html#stanzas-message-type">several types of messages</a>. You have <code>chat</code>, <code>headline</code> and <code>normal</code> (strangely enough the default). There are two more but not important in this context. You should use the correct one depending on the type of message you are sending.</p>

<p>If your system is just sending notification, please use the <code>headline</code> type. It makes it clear to clients that they are not chatting with you, just notifying of something that happened. For example, a smart client can react to those messages differently based on your status: in <code>away</code>, <code>xa</code> (extended away) or <code>dnd</code>, a client can keep a log of new headlines and show it like a email client when you return, without interrupting your workflow, probably using a badge with "You have X pending headlines".</p>

<p>The final recommendation: respect the user status. If the user is <code>dnd</code>, are you sure you should send him anything? Why not change the status message to "You have 5 messages pending. Send 'pending' or go to URL to see them"? Maybe even change the avatar color. You <em>should not</em> disturb someone in <code>dnd</code>. I would also say that <code>away</code> and <code>xa</code> are off limits but that's just me.</p>

<p>On the other hand, you should send "Hey there, welcome back! You have 5 pending messages. Send 'pending' to see them or hop on to 'URL'." when the presence changes to <code>chat</code> or available (not a real <code>&lt;show&gt;</code> value, just lack of <code>&lt;show&gt;</code> value. See the <a href="http://www.xmpp.org/rfcs/rfc3921.html#rfc.section.2.2.2.1">valid values of <code>&lt;show&gt;</code> and their meanings in the spec</a>).</p>

<p>Have fun implementing your bots.</p>

]]></content:encoded>

<guid isPermaLink="false">791@http://www.simplicidade.org/notes/</guid>
<dc:subject>XMPP</dc:subject>
<dc:date>2008-05-30T15:16:43+00:00</dc:date>


</item>
<item>
<title>Facebook gone XMPP?</title>
<link>http://www.simplicidade.org/notes/archives/2008/05/facebook_gone_x.html</link>

<description>Came across this just now: Using Facebook Chat via Jabber Thats a lot of new victim^H^H^H^H^H^Husers to the XMPP network. This, and the fact that my Google Alerts on XMPP is now showing about 10 hits per day (from less than 10 per week just 18 months ago), and I would say that XMPP is turning out to be one hot technology at the moment. Update: given that the news came up via the official Facebook developers site, some people have IM&apos;ed me asking why the question mark in the subject. Well, I&apos;m waiting to see if they will open...</description>

<content:encoded><![CDATA[
<p>Came across this just now: <a href="http://developers.facebook.com/news.php?blog=1&amp;story=110">Using Facebook Chat via Jabber</a></p>

<p>Thats a lot of new victim^H^H^H^H^H^Husers to the XMPP network.</p>

<p>This, and the fact that my Google Alerts on XMPP is now showing about 10 hits per day (from less than 10 per week just 18 months ago), and I would say that XMPP is turning out to be one hot technology at the moment.</p>

<p><em>Update:</em> given that the news came up via the <a href="http://developers.facebook.com">official Facebook developers site</a>, some people have IM'ed me asking why the question mark in the subject. Well, I'm waiting to see if they will <a href="http://www.xmpp.net/">open federation</a> or not. Using XMPP is more than allowing Facebook users to use their favorite XMPP client to chat with the other Facebook users. Without open federation, this is just another private IM network and I think we have enough of those.</p>

<p>So the question mark is there until a answer is found for "Will Facebook enable open-federation over XMPP?"</p>

]]></content:encoded>

<guid isPermaLink="false">782@http://www.simplicidade.org/notes/</guid>
<dc:subject>XMPP</dc:subject>
<dc:date>2008-05-14T10:35:59+00:00</dc:date>


</item>
<item>
<title>Increasing supply of PIP/PEP nodes</title>
<link>http://www.simplicidade.org/notes/archives/2008/04/increasing_supp.html</link>

<description>My favorite XEPs of last year where PIP (XEP-0223) and PEP (XEP-0163). These two made Publish-Subscribe (XEP-0060) trivial to implement on XMPP clients, and pave the way for rich-presence clients. One problem was that open-source servers did not implement PIP/PEP. Recently this has changed, with both Openfire and ejabberd having decent implementations. Other servers, though, are still MIA. Also of note, GTalk does not supported it yet. This is a bit of a problem due to his visibility in the XMPP community. So if you do implement it in your client (and I think you should, really), it seems that...</description>

<content:encoded><![CDATA[
<p>My favorite <a href="http://www.xmpp.org/extensions/">XEPs</a> of last year where <a href="http://www.xmpp.org/extensions/xep-0223.html">PIP (XEP-0223)</a> and <a href="http://www.xmpp.org/extensions/xep-0163.html">PEP (XEP-0163)</a>. These two made <a href="http://www.xmpp.org/extensions/xep-0060.html">Publish-Subscribe (XEP-0060)</a> trivial to implement on XMPP clients, and pave the way for rich-presence clients.</p>

<p>One problem was that open-source servers did not implement PIP/PEP. Recently this has changed, with both <a href="http://www.igniterealtime.org/projects/openfire/index.jsp">Openfire</a> and <a href="http://www.process-one.net/en/ejabberd/">ejabberd</a> having decent implementations. Other servers, though, are still MIA.</p>

<p>Also of note, GTalk does not supported it yet. This is a bit of a problem due to his visibility in the XMPP community.</p>

<p>So if you do implement it in your client (and I think you should, really), it seems that you have to keep using the current protocols for avatar (for better or worse <a href="http://www.xmpp.org/extensions/xep-0054.html">XEP-0054</a> plus <a href="http://www.xmpp.org/extensions/xep-0153.html">XEP-0153</a>) and server-side storage (<a href="http://www.xmpp.org/extensions/xep-0049.html">XEP-0049</a>).</p>

<p>There is something that servers could do to improve this situation though. There is a small change that would give client authors even more good reasons to implement PIP/PEP today.</p>

<p>If private storage and vCards are implemented on top of PIP and PEP, we could have the best of both worlds.</p>

<p>From the point-of-view of current clients, nothing will change: they will still use XEP-0049 to set and get their private storage nodes, and they will still use XEP-0054 to publish and retrieve their vCard. But at the same time, each private storage item would also be available in a PIP node, and the user vCard would be available in a PEP node.</p>

<p>This would allow PIP/PEP-capable clients to announce support for <code>vcard-temp+nofity</code> namespace in their disco response, and get instant notifications of vCard changes. Also, announce <code>storage:bookmarks+notify</code> and clients that only support version 1.0 of <a href="http://www.xmpp.org/extensions/xep-0048.html">XEP-0048</a> will immediately support version 1.1.</p>

<p>This could be a easy way to increase supply of nodes, to see if we can reach critical mass sooner, in the move to a pubsub-world.</p>

]]></content:encoded>

<guid isPermaLink="false">773@http://www.simplicidade.org/notes/</guid>
<dc:subject>XMPP</dc:subject>
<dc:date>2008-04-23T11:41:18+00:00</dc:date>


</item>
<item>
<title>Binary XMPP</title>
<link>http://www.simplicidade.org/notes/archives/2008/04/binary_xmpp.html</link>

<description>Last February, Google&apos;s Android Team shocked the XMPP world by having the gall of saying that they where moving to a Binary encoding of their GTalk API in the M5 release. Of course this sent shock waves through the XMPP community, not because they where totally wrong, but because they didn&apos;t have the vision to solve it. We of course understand that they have their hands full (of vapor, some bad mouths would say...) getting the platform in shape for the late 2008 release, and the XMPP.. err, sorry, GTalk protocol is not a top priority. Well, today Android users...</description>

<content:encoded><![CDATA[
<p><a href="http://www.simplicidade.org/notes/archives/2008/02/android_xmpp_an.html">Last February</a>, Google's <a href="http://code.google.com/android/migrating/m3-to-m5/m5-api-changes.html#gtalk">Android Team shocked the XMPP world by having the gall of saying that they where moving to a Binary encoding of their GTalk API</a> in the M5 release.</p>

<p>Of course this sent <a href="http://blog.dave.cridland.net/?p=45">shock waves through the XMPP community</a>, not because they where totally wrong, but because they didn't have the vision to solve it.</p>

<p>We of course understand that they have their hands full (of vapor, some bad mouths would say...) getting the platform in shape for the late 2008 release, and the XMPP.. err, sorry, GTalk protocol is not a top priority.</p>

<p>Well, today Android users around the world can rejoice because once again, the <a href="http://www.xmpp.org/xsf/">XMPP Standards Foundation</a> has risen to the challenge and unveils to the world the solution to the "verboseness" problem, by introducing the breakthrough <a href="http://www.xmpp.org/extensions/xep-0239.html">Binary XMPP</a> protocol.</p>

<p>This has been in development for quite some time, taking long hours of (sometimes) heated discussion. The goal is to have something that nobody could ever accuse of being verbose (the symbol count is extremely low, and the meaning is clear from the start), but at the same time  remain compressible for those extreme cases where bandwidth is at a premium (we tested, and <a href="http://code.google.com/p/bxmpp/">we have code to prove it</a>: a Binary XMPP stream can be compressed to 2% of its original size). We know of clients that live in five-sides-shaped-buildings that, with their hard 9600 baud limits, will be the first to use this.</p>

<p>Its been a great ride, and it feels me with immense joy to be able to put my small signature as a co-author of this spec. Of course, my part is extremely small when you have the documentation genius of <a href="http://stpeter.im/">Peter Saint-Andre</a>, and <a href="http://blog.bluendo.com/ff">Fabio Forno</a> strict guidelines and requirements, as co-authors. Its been a pleasure to work with both on this. And I should also thanks the important Kevin Smith contributions.</p>

<p>And now time to rest. <code>SRV</code> records are up at <code>simplicidade.org</code> domain, and Fabio's CM is running also.</p>

<p>PS: and yes, now you know why the prolonged silence around here. <br />
PPS: for those who have moved on, <a href="http://github.com/melo/bxmpp/">the code is also available on GitHub</a>.</p>

]]></content:encoded>

<guid isPermaLink="false">757@http://www.simplicidade.org/notes/</guid>
<dc:subject>Projects</dc:subject>
<dc:date>2008-04-01T00:44:33+00:00</dc:date>


</item>
<item>
<title>Bye, Bye, MSN</title>
<link>http://www.simplicidade.org/notes/archives/2008/03/bye_bye_msn.html</link>

<description>When I worked at SAPO, I started using a MSN account to keep an eye on the pyMSNt transport that we have there. Eating your own dog food and all that. So now is the time to stop using it. I&apos;ll unsubscribe the MSN account from the Gateway, and I&apos;ll no longer be available on the MSN network. You can add my XMPP address as a buddy: melo@simplicidade.org. Right now, you have a lot of open and decent XMPP servers out there: SAPO Messenger, Google Talk, Jabber.org and a lot of others. So there&apos;s really no excuse not to have...</description>

<content:encoded><![CDATA[
<p>When I worked at <a href="http://www.sapo.pt/">SAPO</a>, I started using a MSN account to keep an eye on the pyMSNt transport that we have there. Eating your own dog food and all that.</p>

<p>So now is the time to stop using it. I'll unsubscribe the MSN account from the Gateway, and I'll no longer be available on the MSN network. You can add my XMPP address as a buddy: <a href="xmpp:melo@simplicidade.org?subscribe" title="Subscribe melo@simplicidade.org as a buddy">melo@simplicidade.org</a>.</p>

<p>Right now, you have a lot of open and decent XMPP servers out there: <a href="http://messenger.sapo.pt/">SAPO Messenger</a>, <a href="http://talk.google.com/">Google Talk</a>, <a href="http://jabber.org/">Jabber.org</a> and a <a href="http://www.jabber.org/im-services">lot of others</a>. So there's really no excuse not to have an account on one of them.</p>

<p>So hop on to the <a href="http://www.jabber.org/clients">clients list</a> and join the fun side.</p>

]]></content:encoded>

<guid isPermaLink="false">745@http://www.simplicidade.org/notes/</guid>
<dc:subject>XMPP</dc:subject>
<dc:date>2008-03-12T14:18:48+00:00</dc:date>


</item>


</channel>
</rss>