<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.backdrifter.com/~d/styles/itemcontent.css"?><rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>Backdrifter</title>
	
	<link>http://www.backdrifter.com</link>
	<description>The personal site of Jared Hanson</description>
	<lastBuildDate>Sat, 13 Mar 2010 22:03:34 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.backdrifter.com/backdrifter" /><feedburner:info uri="backdrifter" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><item>
		<title>Solving XRDS’ Host Problem with XRD and host-meta</title>
		<link>http://feeds.backdrifter.com/~r/backdrifter/~3/rOHvKHzQILw/</link>
		<comments>http://www.backdrifter.com/2010/03/13/solving-xrds-host-problem-with-xrd-and-host-meta/#comments</comments>
		<pubDate>Sat, 13 Mar 2010 22:03:34 +0000</pubDate>
		<dc:creator>Jared Hanson</dc:creator>
				<category><![CDATA[Unknown]]></category>
		<category><![CDATA[eaut]]></category>
		<category><![CDATA[poco]]></category>
		<category><![CDATA[portablecontacts]]></category>
		<category><![CDATA[webfinger]]></category>
		<category><![CDATA[xrd]]></category>
		<category><![CDATA[xrds]]></category>
		<category><![CDATA[yadis]]></category>

		<guid isPermaLink="false">http://www.backdrifter.com/?p=190</guid>
		<description><![CDATA[The ongoing efforts to define standard protocols for common web services have resulted in a wide variety of specifications.  If you&#8217;re interested in the Internet&#8217;s plumbing, as I am, these are truly exciting times.  One of the common pieces of functionality needed by all these specifications is discovery.
The most recent, and recommended, format [...]]]></description>
			<content:encoded><![CDATA[<p>The ongoing efforts to define standard protocols for common web services have resulted in a wide variety of specifications.  If you&#8217;re interested in the Internet&#8217;s plumbing, as I am, these are truly exciting times.  One of the common pieces of functionality needed by all these specifications is discovery.</p>
<p>The most recent, and recommended, format for discovery is <a href="http://hueniverse.com/xrd/">XRD</a> (currently at <a href="http://www.oasis-open.org/committees/download.php/36542/xrd-1.0-wd15.html">Working Draft 15</a>).  XRD supersedes the older <a href="http://en.wikipedia.org/wiki/XRDS">XRDS</a> format, which has a convoluted evolution that can be traced in twists and turns through <a href="http://docs.oasis-open.org/xri/xri-resolution/2.0/specs/cs01/xri-resolution-V2.0-cs-01.html">XRI Resolution</a>, <a href="http://yadis.org/">Yadis</a>, and <a href="http://xrds-simple.net/">XRDS-Simple</a>.</p>
<p>These older specifications define both a data format and a resolution protocol.  The resolution protocol suffers a problem, however: it can&#8217;t distinguish between a host and a root-level resource.  A succinct technical statement is provided in <a href="http://hueniverse.com/">Eran Hammer-Lahav</a>&#8217;s <a href="http://tools.ietf.org/html/draft-hammer-hostmeta-05">host-meta</a> draft:</p>
<p><span id="more-190"></span></p>
<blockquote><p>Because there is no URI or a resource available to describe a host,<br />
many of the methods used for associating per-resource metadata (such<br />
as HTTP headers) are not available. This often leads to the<br />
overloading of the root HTTP resource (e.g. &#8216;http://example.com/&#8217;)<br />
with host metadata that is not specific to the root resource (e.g. a<br />
home page or web application), and which often has nothing to do it.</p></blockquote>
<p>Take, for example, <a href="http://jaredhanson.net/">http://jaredhanson.net/</a>, the URL I use to identify myself online.  It has an XRDS document located at: <a href="http://jaredhanson.net/meta.xrds">http://jaredhanson.net/meta.xrds</a></p>
<p><code>&lt;xrds:XRDS xmlns:xrds=&quot;xri://$xrds&quot;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;xmlns=&quot;xri://$xrd*($v*2.0)&quot;&gt;<br />
&lt;XRD&gt;<br />
&nbsp;&nbsp;&lt;Service&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&lt;Type&gt;http://portablecontacts.net/spec/1.0&lt;/Type&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&lt;URI&gt;http://www-opensocial.googleusercontent.com/api/people/&lt;/URI&gt;<br />
&nbsp;&nbsp;&lt;/Service&gt;<br />
&nbsp;&nbsp;&lt;Service&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&lt;Type&gt;http://specs.eaut.org/1.0/template&lt;/Type&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&lt;URI&gt;http://jaredhanson.net/&lt;/URI&gt;<br />
&nbsp;&nbsp;&lt;/Service&gt;<br />
&lt;/XRD&gt;<br />
&lt;/xrds:XRDS&gt;</code></p>
<p>Among the services advertised are an address book available via <a href="http://portablecontacts.net/">Portable Contacts</a> and an <a href="http://eaut.org/">EAUT</a>-based email address to URL translation service.  The address book is very specifically associated with me; it is my address book.  The EAUT service, however, is simply a service that is running at the domain jaredhanson.net; it is not associated with me directly.  This case exhibits the conflict between the host and the root-level resource.</p>
<p>The new XRD specification does not define a resolution protocol.  That task is left up to other specifications such as host-meta and <a href="http://tools.ietf.org/html/draft-hammer-discovery-04">LRDD</a>.  host-meta, in particular, addresses this conflict by registering a <a href="http://tools.ietf.org/html/draft-nottingham-site-meta-05">well-known URI</a> for metadata about the host.</p>
<p>Looking again at my digital identity, things have been broken down into two separate documents.  One for information about the host at: <a href="http://jaredhanson.net/.well-known/host-meta">http://jaredhanson.net/.well-known/host-meta</a></p>
<p><code>&lt;XRD xmlns=&quot;http://docs.oasis-open.org/ns/xri/xrd-1.0&quot;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;xmlns:hm=&quot;http://host-meta.net/xrd/1.0&quot;&gt;<br />
&nbsp;&nbsp;&lt;hm:Host&gt;jaredhanson.net&lt;/hm:Host&gt;<br />
&nbsp;&nbsp;&lt;Link&nbsp;rel=&quot;lrdd&quot;&nbsp;template=&quot;http://jaredhanson.net/meta.xrd?id={uri}&quot;/&gt;<br />
&lt;/XRD&gt;</code></p>
<p>And another for information about me at: <a href="http://jaredhanson.net/meta.xrd">http://jaredhanson.net/meta.xrd</a></p>
<p><code>&lt;XRD xmlns=&quot;http://docs.oasis-open.org/ns/xri/xrd-1.0&quot;&gt;<br />
&nbsp;&nbsp;&lt;Subject&gt;acct:me@jaredhanson.net&lt;/Subject&gt;<br />
&nbsp;&nbsp;&lt;Link&nbsp;rel=&quot;http://portablecontacts.net/spec/1.0&quot;&nbsp;href=&quot;http://www-opensocial.googleusercontent.com/api/people/&quot;/&gt;<br />
&lt;/XRD&gt;</code></p>
<p>Using this schema, my address book remains in the XRD that describes me.  However, <a href="http://code.google.com/p/webfinger/">WebFinger</a> (the modern EAUT equivalent), which utilizes LRDD, moves to the host-meta XRD.  This is a much cleaner approach, which resolves ambiguities about exactly what discovery is being performed on.</p>
<img src="http://feeds.feedburner.com/~r/backdrifter/~4/rOHvKHzQILw" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.backdrifter.com/2010/03/13/solving-xrds-host-problem-with-xrd-and-host-meta/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.backdrifter.com/2010/03/13/solving-xrds-host-problem-with-xrd-and-host-meta/</feedburner:origLink></item>
		<item>
		<title>Online Status Indicators with Ajax</title>
		<link>http://feeds.backdrifter.com/~r/backdrifter/~3/e3MSfiAZhDg/</link>
		<comments>http://www.backdrifter.com/2010/01/24/online-status-indicators-with-ajax/#comments</comments>
		<pubDate>Mon, 25 Jan 2010 05:51:11 +0000</pubDate>
		<dc:creator>Jared Hanson</dc:creator>
				<category><![CDATA[Unknown]]></category>
		<category><![CDATA[aim]]></category>
		<category><![CDATA[google]]></category>
		<category><![CDATA[im]]></category>
		<category><![CDATA[msn]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[skype]]></category>
		<category><![CDATA[yahoo]]></category>

		<guid isPermaLink="false">http://www.backdrifter.com/?p=172</guid>
		<description><![CDATA[Back in October, Tantek Çelik wrote an entry on the Microformats blog, featuring my online identity, jaredhanson.net, as an example of a beautifully styled hCard.
While I don&#8217;t claim to be particularly adept at web design, especially compared to the other two featured individuals (Tim Van Damme and Rogie King), my use of Ajax to display [...]]]></description>
			<content:encoded><![CDATA[<p>Back in October, <a href="http://tantek.com/">Tantek Çelik</a> wrote an entry on the <a href="http://microformats.org/">Microformats</a> blog, <a href="http://microformats.org/2009/10/06/recently-2009-09">featuring</a> my online identity, <a href="http://jaredhanson.net/">jaredhanson.net</a>, as an example of a beautifully styled <a href="http://microformats.org/wiki/hcard">hCard</a>.</p>
<p>While I don&#8217;t claim to be particularly adept at web design, especially compared to the other two featured individuals (<a href="http://timvandamme.com/">Tim Van Damme</a> and <a href="http://rogieking.com/#contact">Rogie King</a>), my use of <a href="http://en.wikipedia.org/wiki/Ajax_%28programming%29">Ajax</a> to display a status indicator was highlighted.</p>
<p>Since that time, I&#8217;ve had numerous people inquire as to how I added this functionality to my website.  In response, I&#8217;m supplying the source code that I use.  Download: <a href="http://www.backdrifter.com/assets/2010/01/24/online-status-indicators-with-ajax/web-presence.zip">web-presence.zip</a></p>
<p><span id="more-172"></span></p>
<p>Each of the instant messaging networks I have an account on (<a href="http://www.aim.com/">AIM</a>, <a href="http://www.google.com/talk/">Google Talk</a>, <a href="http://download.live.com/messenger">Windows Live</a>, <a href="http://www.skype.com/">Skype</a>, and <a href="http://messenger.yahoo.com/">Yahoo!</a>) have some form of API or web-based badge which can be queried using <a href="http://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol">HTTP</a>.  On my server, I am running <a href="http://php.net/">PHP</a> code which issues requests to the particular service and translates the response into a <a href="http://en.wikipedia.org/wiki/JSON">JSON</a> object.  When my page loads, Ajax requests are made to retrieve these JSON objects.  Based on presence, the image is updated to reflect whether I am available or away.</p>
<p>For those interested in implementing similar functionality, this code should get you off the ground.  Remember to use the required credentials or keys for your account.  I&#8217;ve made notes where insertions are necessary.  Good luck!</p>
<img src="http://feeds.feedburner.com/~r/backdrifter/~4/e3MSfiAZhDg" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.backdrifter.com/2010/01/24/online-status-indicators-with-ajax/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<feedburner:origLink>http://www.backdrifter.com/2010/01/24/online-status-indicators-with-ajax/</feedburner:origLink></item>
		<item>
		<title>Internet Identity Workshop 9</title>
		<link>http://feeds.backdrifter.com/~r/backdrifter/~3/FWl7pcSxvAU/</link>
		<comments>http://www.backdrifter.com/2009/11/17/internet-identity-workshop-9/#comments</comments>
		<pubDate>Wed, 18 Nov 2009 06:39:29 +0000</pubDate>
		<dc:creator>Jared Hanson</dc:creator>
				<category><![CDATA[Unknown]]></category>
		<category><![CDATA[iiw]]></category>
		<category><![CDATA[iiw9]]></category>

		<guid isPermaLink="false">http://www.backdrifter.com/?p=163</guid>
		<description><![CDATA[Two weeks ago, I attended Internet Identity Workshop 9 at the Computer History Museum in Mountain View.  IIW brings together a group of people working on user-centric identity, and gives them a common time and place to collaborate with one another.
In the past, I&#8217;ve followed previous IIWs through blogs and mailing lists.  I&#8217;ve [...]]]></description>
			<content:encoded><![CDATA[<p>Two weeks ago, I attended <a href="http://www.internetidentityworkshop.com/">Internet Identity Workshop</a> <a href="http://iiw.idcommons.net/Iiw9">9</a> at the <a href="http://www.computerhistory.org/">Computer History Museum</a> in <a href="http://www.ci.mtnview.ca.us/">Mountain View</a>.  IIW brings together a group of people working on user-centric identity, and gives them a common time and place to collaborate with one another.</p>
<p>In the past, I&#8217;ve followed previous IIWs through blogs and mailing lists.  I&#8217;ve always been impressed with the caliber of people that attend and the quality of work that results.  This was the first IIW I attended in person, and my expectations were met.</p>
<p>IIW is organized in <a href="http://en.wikipedia.org/wiki/Unconference">unconference</a> style, with the agenda set by the participants.  A grid is drawn on the wall, with meeting areas along the X-axis and time sessions along the Y-axis.  With each day divided into slots, anyone can propose a topic and schedule it for an available room and time.  The format works very well, and allows people to tailor the event to their desired focus, be it business, legal, technical, or cross-discipline.</p>
<p><span id="more-163"></span></p>
<p>Primarily for my own records, I&#8217;m listing the sessions I attended here.  Where available, I&#8217;ve also linked to the <a href="http://iiw.idcommons.net/Notes_iiw9">notes</a> found on the <a href="http://iiw.idcommons.net/Main_Page">IIW wiki</a>.</p>
<p><b>Day 1</b><br />
Session 1: OpenID Artifact Binding (<a href="http://iiw.idcommons.net/OpenID_Artifact_Binding">notes</a>)<br />
Session 2: Activity Streams<br />
Session 3: Email Sucks What&#8217;s Next</p>
<p><b>Day 2</b><br />
Session 4: Building Action Cards<br />
Session 5: What an RP Needs<br />
Session 6: The Hammer-Stack (<a href="http://iiw.idcommons.net/The_Hammer-Stack">notes</a>)<br />
Session 7: Webfinger<br />
Session 8: Salmon Pixie Dust</p>
<p><b>Day 3</b><br />
Session 9: Information Sharing<br />
Sesison 10: WRAP<br />
Session 11: Public Key Discovery<br />
Lunch: Getting data into XRD<br />
Session 12: Rich Sharing on the Web</p>
<p>The knowledge and ideas gained during these sessions will be influencing my projects going forward.  Expect more detailed information on these topics to show up in future entries here on this blog.</p>
<p>I also took some <a href="http://www.flickr.com/photos/jaredhanson/archives/date-taken/2009/11/03/">photographs</a> from the opening talks which are available on <a href="http://www.flickr.com/">Flickr</a>.</p>
<img src="http://feeds.feedburner.com/~r/backdrifter/~4/FWl7pcSxvAU" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.backdrifter.com/2009/11/17/internet-identity-workshop-9/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://www.backdrifter.com/2009/11/17/internet-identity-workshop-9/</feedburner:origLink></item>
		<item>
		<title>Brett Slatkin on PubSubHubbub</title>
		<link>http://feeds.backdrifter.com/~r/backdrifter/~3/EsjM6eaElow/</link>
		<comments>http://www.backdrifter.com/2009/10/19/brett-slatkin-on-pubsubhubbub/#comments</comments>
		<pubDate>Tue, 20 Oct 2009 04:01:44 +0000</pubDate>
		<dc:creator>Jared Hanson</dc:creator>
				<category><![CDATA[Unknown]]></category>
		<category><![CDATA[mozillalabs]]></category>
		<category><![CDATA[pubsubhubbub]]></category>
		<category><![CDATA[xmpp]]></category>

		<guid isPermaLink="false">http://www.backdrifter.com/?p=147</guid>
		<description><![CDATA[Continuing in the series of entries derived from my notes taken during Mozilla Labs October meetup, this post covers Brett Slatkin&#8217;s talk about PubSubHubbub.  PubSubHubbub is a simple publish/subscribe protocol for turning Atom and RSS feeds into real-time streams.
The publish/subscribe paradigm is commonly found throughout software engineering.  In essence, a component of a [...]]]></description>
			<content:encoded><![CDATA[<p>Continuing in the <a href="http://www.backdrifter.com/2009/10/15/brad-fitzpatrick-on-webfinger/">series</a> of entries derived from my notes taken during <a href="http://labs.mozilla.com/">Mozilla Labs</a> October <a href="http://www.meetup.com/Mozilla-Labs-Meetup/calendar/11472113/">meetup</a>, this post covers <a href="http://www.google.com/profiles/bslatkin">Brett Slatkin</a>&#8217;s talk about <a href="http://code.google.com/p/pubsubhubbub/">PubSubHubbub</a>.  PubSubHubbub is a simple <a href="http://en.wikipedia.org/wiki/Publish/subscribe">publish/subscribe</a> protocol for turning <a href="http://en.wikipedia.org/wiki/Atom_(standard)">Atom</a> and <a href="http://en.wikipedia.org/wiki/RSS">RSS</a> feeds into real-time streams.</p>
<p>The publish/subscribe paradigm is commonly found throughout software engineering.  In essence, a component of a system publishes events as it performs its tasks.  For example, a video encoder would post an event when it has completed encoding.</p>
<p>Separate components register as subscribers, and receive notice when an event occurs.  In our example, a content management system could take the encoded video and publish it to a website.  Meanwhile, a separate component could email the director to inform him that his video is available online.</p>
<p>A broker in the middle (a &#8220;hub&#8221; in PubSubHubbub terminology) is responsible for delivering published events to any interested subscribers.  This decoupling creates a flexible architecture, in which separate components are isoloted and can evolve independently.</p>
<p><span id="more-147"></span></p>
<p>There have been many attempts to define a standard publish/subscribe protocol in the past, including the <a href="http://xmpp.org/extensions/xep-0060.html">XEP-0060</a> extension to <a href="http://xmpp.org/">XMPP</a>, <a href="http://www.amqp.org/">AMQP</a>, competing WS-* efforts, and <a href="http://www.restms.org/">RestMS</a> (which I&#8217;m unfamiliar with and need to research).  None of these protocols have achieved widespread adoption.  PubSubHubbub is an attempt which initially appears like it may have a better fate.</p>
<p>Architecturally, PubSubHubbub is decentralized and designed to scale to the size of the web.  Because of this, it doesn&#8217;t suffer from any slow down or failure at a central point.  I found the touting of this benefit quite humorous given the location of the meetup at <a href="http://twitter.com/">Twitter</a>&#8217;s headquarters.</p>
<p>One of the potential limitation of the protocol, however, is that it is server-to-server only.  It operates on the backend, and is not attempting to reach the last mile to desktops or mobile phones.  I suspect that this drawback could eventually work in favor of XEP-0060, which could act as a compliment to PubSubHubbub by filling this gap.</p>
<p>Interestingly, Brett remarked on how slowly the web actually changes.  He revealed that the egress from the <a href="http://pubsubhubbub.appspot.com/">reference hub</a> on <a href="http://code.google.com/appengine/">App Engine</a> is only 24Kb/second, including all of <a href="http://www.blogger.com/">Blogger</a>, <a href="http://www.livejournal.com/">LiveJournal</a>, and <a href="http://friendfeed.com/">FriendFeed</a>.  Taken at face value, this is a remarkably low figure.</p>
<img src="http://feeds.feedburner.com/~r/backdrifter/~4/EsjM6eaElow" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.backdrifter.com/2009/10/19/brett-slatkin-on-pubsubhubbub/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.backdrifter.com/2009/10/19/brett-slatkin-on-pubsubhubbub/</feedburner:origLink></item>
		<item>
		<title>Brad Fitzpatrick on WebFinger</title>
		<link>http://feeds.backdrifter.com/~r/backdrifter/~3/JEcT7imIOxU/</link>
		<comments>http://www.backdrifter.com/2009/10/15/brad-fitzpatrick-on-webfinger/#comments</comments>
		<pubDate>Fri, 16 Oct 2009 02:28:01 +0000</pubDate>
		<dc:creator>Jared Hanson</dc:creator>
				<category><![CDATA[Unknown]]></category>
		<category><![CDATA[finger]]></category>
		<category><![CDATA[mozillalabs]]></category>
		<category><![CDATA[pubsubhubbub]]></category>
		<category><![CDATA[webfinger]]></category>

		<guid isPermaLink="false">http://www.backdrifter.com/?p=134</guid>
		<description><![CDATA[Last week I went to the Mozilla Labs October meetup at Twitter HQ.  Employees of Mozilla and Google presented their latest projects, which were very interesting for those involved in engineering the future of the Web.  I intend to turn my notes from the gathering into two or three blog entries.  This [...]]]></description>
			<content:encoded><![CDATA[<p>Last week I went to the <a href="http://labs.mozilla.com/">Mozilla Labs</a> October <a href="http://www.meetup.com/Mozilla-Labs-Meetup/calendar/11472113/">meetup</a> at <a href="http://twitter.com/">Twitter</a> HQ.  Employees of <a href="http://www.mozilla.com/">Mozilla</a> and <a href="http://www.google.com/">Google</a> presented their latest projects, which were very interesting for those involved in engineering the future of the Web.  I intend to turn my notes from the gathering into two or three blog entries.  This is the first of those.</p>
<p>To kick off the evening, <a href="http://bradfitz.com/">Brad Fitzpatrick</a> and <a href="http://www.google.com/profiles/bslatkin">Brett Slatkin</a> (both of Google) presented on <a href="http://code.google.com/p/webfinger/">WebFinger</a> and <a href="http://code.google.com/p/pubsubhubbub/">PubSubHubub</a>, respectively.  Brad stated that he &#8220;would like to totally decentralize social networking,&#8221; which is a common link between the two efforts.  This post will outline Brad&#8217;s talk on WebFinger; PubSubHubbub will follow separately.</p>
<p>WebFinger attempts to solve the problem that we don&#8217;t have good identifiers for people.  Over time, people have become accustomed to identifying themselves by an email address.  They sign into websites with this as their ID and print it on their business cards.  People instinctively recognize anything with an @ sign in it as an email address.</p>
<p><span id="more-134"></span></p>
<p>From an engineering standpoint, however, this is a rather stupid heuristic.  Something that looks like an email address may, in fact, not be one at all.  A Jabber ID is a common example.  To distinguish between the two in a computer program, a URL must be formed with either a <code><a href="http://tools.ietf.org/html/rfc2368">mailto:</a></code> or <code><a href="http://tools.ietf.org/html/rfc5122">xmpp:</a></code> scheme to represent email and IM addresses, respectively.</p>
<p>However, it would run counter to usability to avoid &#8220;email address-like&#8221; identifiers, so a solution to this problem is necessary.</p>
<p>For its part, WebFinger has minted the new URI scheme <code><a href="http://hueniverse.com/2009/08/making-the-case-for-a-new-acct-uri-scheme/">acct:</a></code> to denote a generic account.  From this generic concept, the WebFinger protocol can be used to determine the capabilities of the account.  For example, whether it can be sent email or instant messages (or both), or where that person&#8217;s address book is located.</p>
<p>It is important to note that this new <code>acct:</code> scheme imposes no burden on the user.  Ideally, people will remain completely unaware of its existence.  They will continue to use email address-looking strings as usual, and applications will simply treat them as account identifiers internally.</p>
<p>Of course, any new protocol hinges its hopes on adoption by other parties.  Both Google and <a href="http://www.yahoo.com/">Yahoo!</a> have deployed experimental endpoints.  With the support of two of the big-cos, as well as independent implementations, WebFinger&#8217;s potential to become a key piece of enabling infrastructure is promising.</p>
<p>WebFinger derives its name from <a href="http://en.wikipedia.org/wiki/Finger_protocol">Finger</a>, a protocol from the dawn of the Internet which was used to look up information about people on a network.  One slide in Brad&#8217;s deck contrasting the two illustrated that Finger ran over TCP, whereas WebFinger uses HTTP (&#8221;the new TCP&#8221;, sigh), an aside which I found amusing.</p>
<p>For technical details, <a href="http://hueniverse.com/">Eran Hammer-Lahav</a> has a guide to <a href="http://hueniverse.com/2009/09/implementing-webfinger/">implementing WebFinger</a>, in addition to other useful information on the <a href="http://hueniverse.com/webfinger/">topic</a>.</p>
<img src="http://feeds.feedburner.com/~r/backdrifter/~4/JEcT7imIOxU" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.backdrifter.com/2009/10/15/brad-fitzpatrick-on-webfinger/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<feedburner:origLink>http://www.backdrifter.com/2009/10/15/brad-fitzpatrick-on-webfinger/</feedburner:origLink></item>
		<item>
		<title>The Rise of the Data Web</title>
		<link>http://feeds.backdrifter.com/~r/backdrifter/~3/hufM8xpVvQY/</link>
		<comments>http://www.backdrifter.com/2009/09/02/the-rise-of-the-data-web/#comments</comments>
		<pubDate>Wed, 02 Sep 2009 23:54:07 +0000</pubDate>
		<dc:creator>Jared Hanson</dc:creator>
				<category><![CDATA[Unknown]]></category>
		<category><![CDATA[bigdata]]></category>
		<category><![CDATA[data]]></category>
		<category><![CDATA[xml]]></category>

		<guid isPermaLink="false">http://www.backdrifter.com/?p=133</guid>
		<description><![CDATA[Via a tweet by Tim O&#8217;Reilly, I came across an excellent post entitled The Rise of the Data Web, on Dataspora Blog (which I quickly subscribed to).  The author, Michael E. Driscoll, summed up nicely an important trend occurring presently on the web.
The web originated as a set of documents and files served up [...]]]></description>
			<content:encoded><![CDATA[<p>Via a <a href="http://twitter.com/timoreilly/status/3697001810">tweet</a> by <a href="http://tim.oreilly.com/">Tim O&#8217;Reilly</a>, I came across an excellent post entitled <a href="http://dataspora.com/blog/the-rise-of-the-data-web/">The Rise of the Data Web</a>, on <a href="http://dataspora.com/blog/">Dataspora Blog</a> (which I quickly subscribed to).  The author, Michael E. Driscoll, summed up nicely an important trend occurring presently on the web.</p>
<p>The web originated as a set of documents and files served up for people to read and occasionally edit.  Indeed, it is this web that we all still experience as we surf from page to page reading news or looking at photos.</p>
<p>Underneath all this, and unseen except by software engineers, is a massive web of data.  Sensors of all kinds are now measuring everything that can be quantified, from people&#8217;s location and biological functions to the environment we all share.  All of this data is flowing through the network.</p>
<p><span id="more-133"></span></p>
<blockquote><p>The web we experience will continue to be dominated by documents — e-mail, blogs, and news. And while many sites are data-centric — Google maps, Weather.com, and Yahoo finance — it’s the web that we can’t see that surging with data. It’s not about us, it’s about servers in the cloud mediating <a href="http://radar.oreilly.com/archives/2007/02/pipes-and-filte.html">entire pipelines of data</a>, only occasionally surfacing in a browser.</p></blockquote>
<p>But this new influx of data is presenting challenges.  Conventional wisdom often means engineers approach data with a document-centric mindset.  One has to look no further than the vast assortment of <a href="http://en.wikipedia.org/wiki/XML">XML</a> schemas for evidence of this.</p>
<p>Data and documents are different, however.  The suggestion, and one I agree with, is that we begin to think of data as a stream &#8220;extending infinitely forward in time&#8221; which can be &#8220;split, sampled, and filtered.&#8221;</p>
<blockquote><p>Conceiving of data as streams moves us out of the realm of static objects and into the <a href="http://mitpress.mit.edu/sicp/full-text/book/book-Z-H-24.html#%_sec_3.5">realm of signal processing</a>. This is the domain of the living: where the web is not an archive but an organism, <a href="http://radar.oreilly.com/2009/08/big-data-and-real-time-structured-data-analytics.html">reacting in real-time</a>.</p></blockquote>
<img src="http://feeds.feedburner.com/~r/backdrifter/~4/hufM8xpVvQY" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.backdrifter.com/2009/09/02/the-rise-of-the-data-web/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://www.backdrifter.com/2009/09/02/the-rise-of-the-data-web/</feedburner:origLink></item>
		<item>
		<title>User Interface Implications of Google Wave</title>
		<link>http://feeds.backdrifter.com/~r/backdrifter/~3/xa0h2bKgfYI/</link>
		<comments>http://www.backdrifter.com/2009/06/01/user-interface-implications-of-google-wave/#comments</comments>
		<pubDate>Tue, 02 Jun 2009 06:33:20 +0000</pubDate>
		<dc:creator>Jared Hanson</dc:creator>
				<category><![CDATA[Unknown]]></category>
		<category><![CDATA[google]]></category>
		<category><![CDATA[wave]]></category>

		<guid isPermaLink="false">http://www.backdrifter.com/?p=132</guid>
		<description><![CDATA[I set aside the time tonight to watch the full hour and a half demo of Google Wave.  Seeing the creators use their product shed some light onto the possibilities of the system.  However, I&#8217;m glad I read the technical specifications before witnessing the user interface.
The initial focus and reaction around Google Wave [...]]]></description>
			<content:encoded><![CDATA[<p>I set aside the time tonight to <a href="http://www.youtube.com/watch?v=v_UyVmITiYQ">watch</a> the full hour and a half demo of <a href="http://wave.google.com/">Google Wave</a>.  Seeing the creators use their product shed some light onto the possibilities of the system.  However, I&#8217;m glad I read the technical specifications before witnessing the user interface.</p>
<p>The initial focus and reaction around Google Wave centers, rightfully, on communication.  In particular, the real-time aspects were highlighted and comparisons drawn to <a href="http://twitter.com/">Twitter</a> and <a href="http://friendfeed.com/">FriendFeed</a>.  Some even tout it as the &#8220;one true&#8221; communication tool.</p>
<p>It&#8217;s important to note, though, that different people have different needs.  For example, both <a href="http://www.wordyard.com/2009/05/29/wave-or-river/">Scott Rosenberg</a> and <a href="http://www.avc.com/a_vc/2009/05/cloud-based-messaging.html">Fred Wilson</a> find the interface to be complicated.  Fortunately, under the open development model <a href="http://www.google.com/">Google</a> is taking, others are free to design simpler interfaces.</p>
<p><span id="more-132"></span></p>
<p>Looking at things from a technical perspective, the communication-centric mindset is noticeably absent.  The general architecture is nothing more than an instantly distributed version control system, complete with access control and an extensible content model.</p>
<p>True, that forms a solid foundation for Google Wave the communication tool.  It also forms a solid foundation for myriad other applications, including those yet to be imagined.  (I&#8217;m starting a timer; stop me when the first <a href="http://fuse.sourceforge.net/">FUSE</a> file system is released.)</p>
<p>While its interesting to explore the impact of Wave on existing ideas, I also think its important to step away from drawing comparisons.  The &#8220;killer app&#8221; for Wave is likely something that doesn&#8217;t exist currently.  The synthesis of features in the underlying technology will allow something new to germinate.</p>
<p>It&#8217;ll be interesting to see how this evolves.  I fully expect to see many front-end interfaces to Wave designed.  Some of those will certainly <i>not</i> be geared toward communication uses for the back-end.</p>
<img src="http://feeds.feedburner.com/~r/backdrifter/~4/xa0h2bKgfYI" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.backdrifter.com/2009/06/01/user-interface-implications-of-google-wave/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://www.backdrifter.com/2009/06/01/user-interface-implications-of-google-wave/</feedburner:origLink></item>
		<item>
		<title>The Google Wave Announcement</title>
		<link>http://feeds.backdrifter.com/~r/backdrifter/~3/UvBcMefHbfQ/</link>
		<comments>http://www.backdrifter.com/2009/05/28/the-google-wave-announcement/#comments</comments>
		<pubDate>Fri, 29 May 2009 05:05:35 +0000</pubDate>
		<dc:creator>Jared Hanson</dc:creator>
				<category><![CDATA[Unknown]]></category>
		<category><![CDATA[google]]></category>
		<category><![CDATA[wave]]></category>

		<guid isPermaLink="false">http://www.backdrifter.com/?p=131</guid>
		<description><![CDATA[The big news to hit the web today was the announcement of Google Wave at Google I/O.  Described as &#8220;the e-mail of the future,&#8221; Wave is an ambitious project with a grand vision of unified communications.
A concise description of what Wave is, exactly, seems to be hard to formulate.  You have to see [...]]]></description>
			<content:encoded><![CDATA[<p>The big news to hit the web today was the announcement of <a href="http://wave.google.com/">Google Wave</a> at <a href="http://code.google.com/events/io/">Google I/O</a>.  Described as &#8220;the e-mail of the future,&#8221; Wave is an ambitious project with a grand vision of unified communications.</p>
<p>A concise description of what Wave is, exactly, seems to be hard to formulate.  You have to see it to understand it seems to be a growing consensus.  That is a bit frustrating to those trying to conceptualize, but it may be appropriate if Wave truly is a leap forward for communication.</p>
<p><a href="http://radar.oreilly.com/tim/">Tim O&#8217;Reilly</a> has the best <a href="http://radar.oreilly.com/2009/05/google-wave-what-might-email-l.html">description</a> I&#8217;ve come across:</p>
<blockquote><p>
Jens, Lars, and team re-imagined email and instant-messaging in a connected world, a world in which messages no longer need to be sent from one place to another, but could become a conversation in the cloud. Effectively, a message (a wave) is a shared communications space with elements drawn from email, instant messaging, social networking, and even wikis.
</p></blockquote>
<p><span id="more-131"></span></p>
<p><a href="http://www.techcrunch.com/">TechCrunch</a> also has an extensive <a href="http://www.techcrunch.com/2009/05/28/google-wave-drips-with-ambition-can-it-fulfill-googles-grand-web-vision/">rundown</a> of Wave and the capabilities that were demonstrated today.</p>
<p>Wave is the result of a two-year long effort led by Lars and Jens Rasmussen, the creators of what became <a href="http://maps.google.com/">Google Maps</a>.  Their success on that project gave them the opportunity to pursue this open-ended idea.  While they have raised the hype meter to new levels, only time will tell if they have another hit on their hands.</p>
<p>Wave remains in the prototype stage at this juncture.  It was announced at a developer conference for a reason: feedback is needed from the engineering community.  For it to gain public acceptance, developers will need to embrace it and build capabilities around it.</p>
<p>My interest has certainly been piqued.  I&#8217;ve spent the day reading articles, watching videos, and researching specifications.  Expect follow-up posts with more detailed thoughts.</p>
<img src="http://feeds.feedburner.com/~r/backdrifter/~4/UvBcMefHbfQ" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.backdrifter.com/2009/05/28/the-google-wave-announcement/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<feedburner:origLink>http://www.backdrifter.com/2009/05/28/the-google-wave-announcement/</feedburner:origLink></item>
		<item>
		<title>People, Services and Content</title>
		<link>http://feeds.backdrifter.com/~r/backdrifter/~3/mdKAd_eA0nY/</link>
		<comments>http://www.backdrifter.com/2009/05/27/people-services-and-content/#comments</comments>
		<pubDate>Wed, 27 May 2009 16:46:40 +0000</pubDate>
		<dc:creator>Jared Hanson</dc:creator>
				<category><![CDATA[Unknown]]></category>
		<category><![CDATA[eaut]]></category>
		<category><![CDATA[openid]]></category>
		<category><![CDATA[xrd]]></category>
		<category><![CDATA[xrds]]></category>
		<category><![CDATA[yadis]]></category>

		<guid isPermaLink="false">http://www.backdrifter.com/?p=130</guid>
		<description><![CDATA[A couple weeks ago, Marc Canter wrote a entry outlining the constructs of people, services and content.  These are the central pillars around which collaboration software is structured.
Content, as a concept, encompasses a wide area.  It could be a newspaper article, a radio program, a TV show, a spreadsheet or presentation.  Creating [...]]]></description>
			<content:encoded><![CDATA[<p>A couple weeks ago, <a href="http://marc.blogs.it/">Marc Canter</a> wrote a <a href="http://blog.broadbandmechanics.com/2009/05/08/people-services-and-content-the-3-hiways/">entry</a> outlining the constructs of people, services and content.  These are the central pillars around which collaboration software is structured.</p>
<p>Content, as a concept, encompasses a wide area.  It could be a newspaper article, a radio program, a TV show, a spreadsheet or presentation.  Creating and managing content has been one of the primary purposes of computers, ever since they came into existence.</p>
<p>With the rise of the Internet, and particularly social networking, there has been a renewed focus on people and the role they play in a system.  Proper emphasis on individuals and groups makes collaboration more efficient.</p>
<p><span id="more-130"></span></p>
<p>One of the problems surrounding identity in the past has been the lack of a widely adopted standard.  This has made it very difficult to build solutions that are interoperable.  Thankfully, <a href="http://openid.net/">OpenID</a> is gaining traction, along with usability improvements through <a href="http://eaut.org/">EAUT</a> and other initiatives.</p>
<p>Underlying OpenID, the <a href="http://www.oasis-open.org/committees/tc_home.php?wg_abbrev=xri">XRD</a> specification, emerging from earlier work on <a href="http://xrds-simple.net/">XRDS-Simple</a> and <a href="http://yadis.org/">Yadis</a>, will tie people and content together through services that allow interaction among the two.</p>
<p>There is a lot of work remaining, but its conceivable at this point to envision a future where signing up for a service is as simple as entering your email address and approving access. When the mesh realizes that level of usability, innovation will both flourish and be self-reinforcing.</p>
<p>Developers would be well advised to pay attention to these standards.  Integrating these technologies will allow software to participate in the larger web-based ecosystem, both deriving and yielding benefits from and to the whole.</p>
<p>As I noted in my <a href="http://blog.broadbandmechanics.com/2009/05/08/people-services-and-content-the-3-hiways/#comment-17802">comment</a>:</p>
<blockquote><p>
The standards are all coming together. In my mind, the flow looks something like this:</p>
<p>1. People become directly addressable (i.e. through email addresses).<br />
2. Programs dereference the email address and get an XRD document, which identifies associated services.<br />
3. Programs interact with the discovered services to publish and subscribe to content.
</p></blockquote>
<img src="http://feeds.feedburner.com/~r/backdrifter/~4/mdKAd_eA0nY" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.backdrifter.com/2009/05/27/people-services-and-content/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://www.backdrifter.com/2009/05/27/people-services-and-content/</feedburner:origLink></item>
		<item>
		<title>Using Multiple Versions of Rake</title>
		<link>http://feeds.backdrifter.com/~r/backdrifter/~3/Ovta3V0emjI/</link>
		<comments>http://www.backdrifter.com/2009/04/07/using-multiple-versions-of-rake/#comments</comments>
		<pubDate>Tue, 07 Apr 2009 18:58:04 +0000</pubDate>
		<dc:creator>Jared Hanson</dc:creator>
				<category><![CDATA[Unknown]]></category>
		<category><![CDATA[chrysalis]]></category>
		<category><![CDATA[rake]]></category>
		<category><![CDATA[ruby]]></category>
		<category><![CDATA[rubygems]]></category>

		<guid isPermaLink="false">http://www.backdrifter.com/?p=129</guid>
		<description><![CDATA[Rake has become a critical component of my development toolchain.  So much so that I have developed extensions, such as Chrysalis, to assist with common aspects of the build cycle.
However, due to time constraints, Chrysalis does not support the latest version of Rake (currently 0.8.3).  The 0.8 branch reworked some of the internals, [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://rake.rubyforge.org/">Rake</a> has become a critical component of my development toolchain.  So much so that I have developed extensions, such as <a href="http://chrysalis.rubyforge.org/">Chrysalis</a>, to assist with common aspects of the build cycle.</p>
<p>However, due to time constraints, Chrysalis does not support the latest version of Rake (currently 0.8.3).  The 0.8 branch reworked some of the internals, and Chrysalis was developed against 0.7.3.  As such, I often need to quickly switch between multiple versions of Rake.</p>
<p>Thankfully, the executable <a href="http://www.rubygems.org/">RubyGems</a> places in the bin directory makes this easy.  I had long been curious how this works, so I took the time to figure it out.</p>
<p><span id="more-129"></span></p>
<p>The executable scripts generated by RubyGems, in this case for Rake, look like the following:<br />
<code><br />
require 'rubygems'<br />
&nbsp;<br />
version = "&gt;= 0"<br />
&nbsp;<br />
if ARGV.first =~ /^_(.*)_$/ and Gem::Version.correct? $1 then<br />
&nbsp;&nbsp;version = $1<br />
&nbsp;&nbsp;ARGV.shift<br />
end<br />
&nbsp;<br />
gem 'rake', version<br />
load 'rake'<br />
</code></p>
<p>There is a bit of regular expression magic that works on the first argument to the command, accessed through <code>ARGV.first</code>.  The <code>=~</code> is the positive match operator for regular expressions.  If a match is found, a portion of it will be stored in the global variable <code>$1</code>.</p>
<p>The goal of the RubyGems-generated script is to match a user-supplied version number, without interfering with any other arguments the actual script may expect.  In order to do so, the version argument is surrounded by underscores.  This is enforced by using the <code>^</code> and <code>$</code> as achors for the beginning and end of the string, respectively.</p>
<p>The result of all this is a simple way to switch between versions easily on the command line.<br />
<code><br />
$ rake _0.7.3_ --version<br />
$ rake _0.8.3_ --version<br />
</code></p>
<img src="http://feeds.feedburner.com/~r/backdrifter/~4/Ovta3V0emjI" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.backdrifter.com/2009/04/07/using-multiple-versions-of-rake/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		<feedburner:origLink>http://www.backdrifter.com/2009/04/07/using-multiple-versions-of-rake/</feedburner:origLink></item>
	</channel>
</rss>
