Google Wave and the Internet ID

Google Wave may be the nail in the coffin of what to use as/for your “Internet Identifier” - your JID (aka your GMail ID or email address)

Why? How?

Because now wave does what the folks over at OMB and Identi.ca have been debating over for months - what identifier to use when an OMB post crosses out of the server it’s created on and used/referenced by another.

Various methods have been suggested - most variations on email or JID and others - but now since every ID on an Identi.ca server can have either an email id or a JID and the domain part of that is already unique, the problem has been solved using the 800 lb gorilla implementation rule.

Google Wave - another thought

I think i’m going to just start posting the one-off things I would post to identica/twitter here, and then work out a way of getting them to identica/twitter :)

Google Wave also appears to be angling to be an aggregator.  In the TechCrunch interview they mention being able to send/receive twitter posts.

This  tells me that if you are running your own Wave server (well, they did say it’s open source) then you could have waveid/domains that are for outside info sources.

hmmmm

Google Wave previewed at Google IO today

Looks like Google is landing on the real-time messaging terrain in a big way with Google Wave.  The cool thing is that it is based on XMPP !

From what I can tell it looks very much like XMPP messaging an added layer of conversation IDs added - i’m wondering if it’s PubSub or MUC based or have they written their own custom component layer.  Won’t know until they release more info.

Lots of chatter about it on Twitter, jdev@conferences.jabber.org and other places

v0.8.7 of parsedatetime is now live

Thanks to a great bug-fix patch by Michael Lim, Issue 26 has been fixed.

This bug was preventing parsing of 25 August 2009 - which seems like a silly bug to have except when you realize that it came about from adding more robust locale support for short month/week names.

Anywho, patch applied, some other minor fixes worked in and a new release!

Technorati Tags: ,

XMPP PubSub + XSLT

One of the niftier configuration items for a XMPP PubSub node (see Configuring a Node) is the ability to define an XSL template to allow the PubSub component to generate a message body to go along with the message payload - basically a human readable version of the payload.

This is great because it allows you to have a single node service both bots and people. Without this you would have to define proxy bots that are subscribed to nodes and then they would send out chat messages for each incoming PubSub event for people in their roster.

Not exactly a friendly model IMO.

So to prepare for this I started working on a XSLT file to transform an Atom payload to HTML - but first I needed to either learn XSLT real fast or “borrow” from someone :)…

After about an hour of googling I finally found one that a) worked and b) targeted the 1.0 version of Atom at the OpenSearch site - wow was that a gold-plated, kitchen-sink-included version! It handles Atom, RSS (all of them), RDF and some others - and after a rather great question from @metajack (aka Jack Moffitt):

Why bother with RSS at all?

I started pulling out all of the non-Atom bits. He also helped me grok a template scope problem that was leading me to curse XPath royally - thanks Jack!

So after many, many rounds of edit/test/curse I boiled it down to a basic template (tho I did keep some of their snazzy person and url templates - *very* nice!) and then proceeded to tweak the HTML it generates.

So if you pass in this Atom payload:

<entry xmlns=“http://www.w3.org/2005/Atom”>
    <title type=“html”>Test Atom</title>
    <link href=“http://seesmic.com/videos/FOO”/>
    <id>http://seesmic.com/videos/FOO</id>
    <author>
        <uri>http://seesmic.com/foobarbaz</uri>
    </author>
    <published>2009-01-03T20:46:19+00:00</published>
    <updated>2009-01-03T20:46:19+00:00</updated>
    <link href=“http://t.seesmic.com/thumbnail/FOO_th1.jpg” type=“image/jpeg” rel=“enclosure” title=“Test Atom”/>
    <link href=“http://v.seesmic.com/flv/FOO.flv” type=“video/x-flv” rel=“enclosure” title=“Test Atom”/>
    <source>
        <generator>SeesmicBot</generator>
        <id>http://feeds.seesmic.com/user.foobarbaz.atom</id>
        <updated>2009-01-03T20:46:19+00:00</updated>
        <title type=“html”>Test Atom</title>
        <rights>Creative Commons Attribution</rights>
    </source>
    <in-reply-to xmlns=“http://purl.org/syndication/thread/1.0” type=“application/xhtml+xml” href=“http://seesmic.com/video/FOO” ref=“FOO”/>
    <category term=“en”/>
    <rights>Creative Commons Attribution</rights>
    <link href=“http://creativecommons.org/licenses/by/3.0//us/rdf” type=“application/rdf+xml” rel=“license”/>
</entry>

You will get this:

<html xmlns=“http://www.w3.org/1999/xhtml” xmlns:xhtml=“http://www.w3.org/1999/xhtml”>
<body>
    <div>
        <a href=“http://seesmic.com/videos/FOO”><div class=“x-escape”>Test Atom</div></a> by
        <a href=“http://seesmic.com/foobarbaz”>http://seesmic.com/foobarbaz</a>;
        <p>categories: en; </p>
        <p><a href=“http://t.seesmic.com/thumbnail/FOO_th1.jpg”>Test Atom</a> (image/jpeg)</p>
        <p><a href=“http://v.seesmic.com/flv/FOO.flv”>Test Atom</a> (video/x-flv)</p>
        <p><a href=“http://creativecommons.org/licenses/by/3.0//us/rdf”>Creative Commons Attribution</a>
        </p>
    </div>
</body>
</html>

Right now we think there is a bug in how Tigase handles this (well, actually since it’s not generating the body there is a bug *somewhere*), so I can’t show you a live example :( but as soon as the dev guys fix it, or tell me what I did wrong, I’ll make another post.

You can find the XSL template I’m using here

Update: sure enough, Bart demostrated it working on his test server so I dug deeper and discovered that the Java XSLT processor is *much* more pickier than xsltproc about errors. One of the helper templates was missing but it was never called so xsltproc just gleefully went on it’s merry way where as Java’s tossed an error and just refused to do anything more. So now Tigase is generating <body></body> *and* <event><event> payload data!

Technorati Tags: ,