﻿<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0">
  <channel xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    <link>http://www.glennjones.net/</link>
    <language>en-GB</language>
    <copyright>© Copyright 2005 Glenn Jones</copyright>
    <pubDate>Thu, 11 Mar 2010 20:32:03 GMT</pubDate>
    <lastBuildDate>Thu, 11 Mar 2010 20:32:03 GMT</lastBuildDate>
    <generator>Raccoom rss generator, website http://raccoom.sytes.net, email chrisdarebell@msn.com</generator>
    <image>
      <title>glennjones.net - Latest Posts</title>
      <url>http://www.glennjones.net/images/rsslogo.gif</url>
      <link>http://www.glennjones.net</link>
    </image>
    <item>
      <title>Ident Engine</title>
      <description>&lt;p&gt;Without much conscious thought, most of us have built identities across the web. 
Weve filled in profiles, uploaded photos, videos, reviews and bookmarks. The Ident 
Engine uses semantic web API’s to bring together these web footprints.&lt;/p&gt;

&lt;strong&gt;&lt;a href="https://identengine.com/"&gt;Ident Engine site&lt;/a&gt;&lt;/strong&gt;&lt;br/&gt;
&lt;strong&gt;&lt;a href="http://www.alistapart.com/articles/discovering-magic/"&gt;A List Apart - Ident Engine&lt;/a&gt;&lt;/strong&gt;

&lt;p&gt;The Ident Engine is part of a year long 
					personal project into combining social graph data 
					with other open data sources. With over 1.3 billion hCard 
					profiles on the web and RDF growing in strength, the 
					semantic web has reached a tipping point. I built the Ident 
					Engine to show that constructing user experiences by 
					blending semantic web APIs and other open data sources is 
					not only practical, but offers exciting opportunities.&lt;/p&gt;


					
					&lt;h2&gt;Related projects&lt;/h2&gt;
					
					&lt;div class="demo-list"&gt;
						
							&lt;div&gt;			
								&lt;a href="https://addons.mozilla.org/en-US/firefox/addon/11570/"&gt;Identify - Firefox add-on&lt;/a&gt;
								&lt;br/&gt;Identify is a Firefox add-on that combines 
								identities across various social network/media 
								sites. Its uses the Ident Engine library .
							&lt;/div&gt;&lt;br/&gt;
							
							&lt;div&gt;			
								&lt;a href="http://lab.madgex.com/socialgraph/socialgraphexplorer.aspx/"&gt;Social Graph Explorer&lt;/a&gt;
								&lt;br/&gt;This is the original server-side application 
								on which the Ident Engine library is based. 
							&lt;/div&gt;&lt;br/&gt;
							
							&lt;div&gt;			
								&lt;a href="http://lab.madgex.com/microformats/apidemo/"&gt;Microformat API - OAuth &lt;/a&gt;
								&lt;br/&gt;This experimental demo 
								showes how OAuth can be used to add privacy to 
								open data sources like microformats and feeds.
							&lt;/div&gt;&lt;br/&gt;
							
					&lt;/div&gt;
 
					
					
						&lt;h2&gt;Presentations&lt;/h2&gt;
											
					&lt;p class="restricted-width"&gt;I have given a number of talks about blending social 
					graph data and other open data sources over the last year. The slide deck 
					from 
					&lt;span class="description"&gt;Twiist.be&lt;/span&gt; in &lt;span class="location"&gt;
					Leuven (below)&lt;/span&gt; contains the most update version of my 
					talks.&lt;/p&gt;
 
					&lt;ul class="restricted-width"&gt;
					&lt;li class="vevent"&gt;&lt;span class="summary"&gt;
					&lt;a class="url" href="http://twiist.be/speakers/glennjones"&gt;Experiments in Data Portability 2&lt;/a&gt;&lt;/span&gt; - 
					&lt;span class="description"&gt;Twiist.be&lt;/span&gt; – &lt;span class="location"&gt;Leuven, Belgium&lt;/span&gt; - &lt;abbr class="dtstart" title="2009-05-15"&gt;15 May 2009&lt;/abbr&gt;&lt;/li&gt;
					
					
					&lt;li class="vevent"&gt;&lt;span class="summary"&gt;
					&lt;a class="url" href="http://swfoo09.pbworks.com/"&gt;How to connect social media with open standards&lt;/a&gt;&lt;/span&gt; - 
					&lt;span class="description"&gt;Social Web Foocamp&lt;/span&gt; - 
					Sebastopol, CA &lt;span class="location"&gt;&lt;/span&gt; - &lt;abbr class="dtstart" title="2009-04-18"&gt;18 April 2009&lt;/abbr&gt;&lt;/li&gt;
					
					
					&lt;li class="vevent"&gt;&lt;span class="summary"&gt;
					&lt;a class="url" href="http://www.barcamplondon.org/"&gt;How I built the demo&amp;#39;s&lt;/a&gt;&lt;/span&gt;  - 
					&lt;span class="description"&gt;Barcamp London 6&lt;/span&gt; – &lt;span class="location"&gt;London, UK&lt;/span&gt; - &lt;abbr class="dtstart" title="2009-03-18"&gt;28 March 2009&lt;/abbr&gt;&lt;/li&gt;
					
					
					&lt;li class="vevent"&gt;&lt;span class="summary"&gt;
					&lt;a class="url" href="http://2009.sxsw.com/interactive/talks/panels?action=show&amp;amp;id=IAP0900913"&gt;Microformats: A Quiet Revolution&lt;/a&gt;&lt;/span&gt;  - 
					&lt;span class="description"&gt;SXSW&lt;/span&gt; – &lt;span class="location"&gt;Austin, TX&lt;/span&gt; - &lt;abbr class="dtstart" title="2009-03-14"&gt;14 March 2009&lt;/abbr&gt;&lt;/li&gt;
					
					
					&lt;li class="vevent"&gt;&lt;span class="summary"&gt;
					&lt;a class="url" href="http://skillswap-brighton.eventwax.com/skillswap-goes-portable"&gt;Experiments in Data Portability&lt;/a&gt;&lt;/span&gt;  - 
					&lt;span class="description"&gt;Skillswap&lt;/span&gt; – &lt;span class="location"&gt;Brighton, UK&lt;/span&gt; - &lt;abbr class="dtstart" title="2008-11-25"&gt;25 November 2008&lt;/abbr&gt;&lt;/li&gt;
					&lt;/ul&gt;
					
				
			
					&lt;p&gt;&amp;nbsp:&lt;/p&gt;
				
			
					&lt;div class="restricted-width"&gt;&lt;a style="display:block;margin:12px 0 3px 0;text-decoration:underline;" href="http://www.slideshare.net/glennjones/experiments-in-data-portability-2" title="Experiments in Data Portability 2"&gt;Experiments in Data Portability 2&lt;/a&gt;&lt;object style="margin:0px" width="425" height="355"&gt;&lt;param name="movie" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=twiist01-090516105000-phpapp01&amp;stripped_title=experiments-in-data-portability-2" /&gt;&lt;param name="allowFullScreen" value="true"/&gt;&lt;param name="allowScriptAccess" value="always"/&gt;&lt;embed src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=twiist01-090516105000-phpapp01&amp;stripped_title=experiments-in-data-portability-2" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="355"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div style="padding-top:2px;"&gt;View more &lt;a style="text-decoration:underline;" href="http://www.slideshare.net/"&gt;presentations&lt;/a&gt; from &lt;a style="text-decoration:underline;" href="http://www.slideshare.net/glennjones"&gt;Glenn Jones&lt;/a&gt;.&lt;/div&gt;
						&lt;/div&gt;
					&lt;h2&gt;Articles&lt;/h2&gt;
					&lt;ul class="restricted-width"&gt;
						&lt;li&gt;
						&lt;a href="http://www.readwriteweb.com/archives/identify_google_people_with_two_keystrokes.php"&gt;Identify: Google People With Two Keystrokes&lt;/a&gt; 
						- Read Write Web article on the Identify Firefox addon 
						by
						&lt;a href="http://www.readwriteweb.com/archives/author/marshall-kirkpatrick-1.php"&gt;
						Marshall Kirkpatrick&lt;/a&gt;&lt;/li&gt;
					&lt;/ul&gt;
					&lt;h2&gt;Resources&lt;/h2&gt;
					&lt;p class="restricted-width"&gt;If you are interested in this area I have listed a number 
					of different resources you may find useful.&lt;/p&gt;
					&lt;ul class="restricted-width"&gt;
						&lt;li&gt;&lt;a href="http://socialgraph.apis.google.com/"&gt;Google Social Graph API&lt;/a&gt;&lt;/li&gt;
						&lt;li&gt;
						&lt;a href="http://code.google.com/p/google-sgnodemapper/"&gt;Social Graph Node Mapper&lt;/a&gt;&lt;/li&gt;
						&lt;li&gt;
						&lt;a href="http://developer.yahoo.com/yql/"&gt;YQL&lt;/a&gt;&lt;/li&gt;
						&lt;li&gt;
						&lt;a href="http://tools.ietf.org/html/draft-gregorio-uritemplate-03"&gt;URI-Template&lt;/a&gt;&lt;/li&gt;
						&lt;li&gt;
						&lt;a href="http://www.hueniverse.com/hueniverse/2009/08/introducing-webfinger.html"&gt;
						WebFinger&lt;/a&gt;&lt;/li&gt;
						&lt;li&gt;&lt;a href="http://www.hueniverse.com/hueniverse/xrd/"&gt;XRD&lt;/a&gt;
						&lt;/li&gt;
						&lt;li&gt;&lt;a href="http://portablecontacts.net/"&gt;Portable Contacts API&lt;/a&gt;&lt;/li&gt;
						&lt;li&gt;&lt;a href="http://googlecodesamples.com/hybrid/"&gt;Hybrid Protocol (OpenID + OAuth) Demo&lt;/a&gt;&lt;/li&gt;
					&lt;/ul&gt;</description>
      <link>http://www.glennjones.net/Post/842/IdentEngine.htm</link>
      <pubDate>Sun, 04 Oct 2009 12:23:36 GMT</pubDate>
    </item>
    <item>
      <title>Experiments in Data Portability</title>
      <description>&lt;p&gt;&lt;strong&gt;I have post a &lt;a href="skillswap/"&gt;screencast&lt;/a&gt; with video's of the demo's and synced audio from the podcast&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;
On Tuesday, I gave a &lt;a href="http://skillswap-brighton.org/"&gt;skillswap&lt;/a&gt; talk about some of the experimental work I have 
been engaged in. For the last few months I have had a growing interest in the 
current data portability design patterns used in social media sites. As we start 
to see the maturing of the earlier technologies such as OpenID and growth of 
some exciting new ones like OAuth and XRDS-Simple, focus is moving to the user 
experience. Through this presentation I try to look at current patterns of data 
portability that could be implemented now and look at some of the lessons that 
could be leant from the early adopters.&lt;/p&gt;

&lt;p&gt;I showed some of what is currently possible using the Google Social Graph API 
coupled with a Microformats parser in a little application called the 
Social Network Explorer. The other major demo was my work on a Microformats API 
which makes use of OAuth to provide user controlled release of private data. &lt;/p&gt;

&lt;p&gt;Finally I asked the question do we really own our data in the same way as we own other 
property. If the value of data decays over time should we be looking more at 
systems which make use of attention metrics. &lt;/p&gt;

&lt;div style="width:425px;text-align:left" id="__ss_790304"&gt;&lt;a style="font:14px Helvetica,Arial,Sans-serif;display:block;margin:12px 0 3px 0;text-decoration:underline;" href="http://www.slideshare.net/glennjones/experiments-in-data-portability-presentation?type=powerpoint" title="Experiments in Data Portability"&gt;Experiments in Data Portability&lt;/a&gt;&lt;object style="margin:0px" width="425" height="355"&gt;&lt;param name="movie" value="http://static.slideshare.net/swf/ssplayer2.swf?doc=skillswap-1227701399946414-8&amp;rel=0&amp;stripped_title=experiments-in-data-portability-presentation" /&gt;&lt;param name="allowFullScreen" value="true"/&gt;&lt;param name="allowScriptAccess" value="always"/&gt;&lt;embed src="http://static.slideshare.net/swf/ssplayer2.swf?doc=skillswap-1227701399946414-8&amp;rel=0&amp;stripped_title=experiments-in-data-portability-presentation" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="355"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div style="font-size:11px;font-family:tahoma,arial;height:26px;padding-top:2px;"&gt;View SlideShare &lt;a style="text-decoration:underline;" href="http://www.slideshare.net/glennjones/experiments-in-data-portability-presentation?type=powerpoint" title="View Experiments in Data Portability on SlideShare"&gt;presentation&lt;/a&gt; or &lt;a style="text-decoration:underline;" href="http://www.slideshare.net/upload?type=powerpoint"&gt;Upload&lt;/a&gt; your own. (tags: &lt;a style="text-decoration:underline;" href="http://slideshare.net/tag/stack"&gt;stack&lt;/a&gt; &lt;a style="text-decoration:underline;" href="http://slideshare.net/tag/open"&gt;open&lt;/a&gt;)&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Skillswap has always been a vibrant part of the Brighton web scene and it was 
great to finally get around to giving a talk having listened to many great skillwap talks in the past. Bruce also gave a great talk on OAuth 
and issues around the password anti-pattern. &lt;/p&gt;

&lt;p&gt;James Box will be releasing a podcast of the audio soon.&lt;/p&gt;
&lt;p&gt;URL&amp;#39;s for topic in the presentation&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;Madgex Labs&lt;br /&gt;
	&lt;a href="http://lab.madgex.com/"&gt;http://lab.madgex.com/&lt;/a&gt;&lt;br /&gt;
	&lt;/li&gt;
	&lt;li&gt;Backnetwork&lt;br /&gt;
	&lt;a href="http://lab.backnetwork.com/"&gt;http://lab.backnetwork.com/&lt;/a&gt;&lt;br /&gt;
	&lt;/li&gt;
	&lt;li&gt;Microformats Parsers &lt;br /&gt;
	&lt;a href="http://microformats.org/wiki/parsers"&gt;
	http://microformats.org/wiki/parsers&lt;/a&gt;&lt;br /&gt;
&amp;nbsp;&lt;/li&gt;
	&lt;li&gt;Microformats Parser - Optimus - XSLT&lt;br /&gt;
	&lt;a href="http://microformatique.com/optimus/"&gt;http://microformatique.com/optimus/&lt;/a&gt;&lt;br /&gt;
&amp;nbsp; &lt;/li&gt;
	&lt;li&gt;Microformats Parser - Cognition - Perl &lt;br /&gt;
	&lt;a href="http://buzzword.org.uk/cognition/"&gt;
	http://buzzword.org.uk/cognition/&lt;/a&gt;&lt;br /&gt;
&amp;nbsp;&lt;/li&gt;
	&lt;li&gt;Google Social Graph API&lt;br /&gt;
	&lt;a href="http://socialgraph.apis.google.com/"&gt;
	http://socialgraph.apis.google.com/&lt;/a&gt;&lt;br /&gt;
&amp;nbsp;&lt;/li&gt;
	&lt;li&gt;Social Graph Node Mapper&lt;br /&gt;
	&lt;a href="http://code.google.com/p/google-sgnodemapper/"&gt;
	http://code.google.com/p/google-sgnodemapper/&lt;/a&gt;&lt;br /&gt;
&amp;nbsp;&lt;/li&gt;
	&lt;li&gt;URI-Template&lt;br /&gt;
	&lt;a href="http://tools.ietf.org/html/draft-gregorio-uritemplate-03"&gt;
	http://tools.ietf.org/html/draft-gregorio-uritemplate-03&lt;/a&gt;&lt;br /&gt;
	&lt;/li&gt;
	&lt;li&gt;XRDS-simple&lt;br /&gt;
	&lt;a href="http://xrds-simple.net/core/1.0/"&gt;http://xrds-simple.net/core/1.&lt;/a&gt;&lt;br /&gt;
	&lt;/li&gt;
	&lt;li&gt;Portable Contacts API &lt;br /&gt;
	&lt;a href="http://portablecontacts.net/"&gt;http://portablecontacts.net/&lt;/a&gt;&lt;br /&gt;
&amp;nbsp;&lt;/li&gt;
	&lt;li&gt;APML&lt;br /&gt;
	&lt;a href="http://www.apml.org/"&gt;http://www.apml.org/&lt;/a&gt;&lt;br /&gt;
&amp;nbsp;&lt;/li&gt;
	&lt;li&gt;TasteBroker experimental API for APML&lt;br /&gt;
	&lt;a href="http://tastebroker.org/"&gt;http://tastebroker.org/&lt;/a&gt;&lt;br /&gt;
	&lt;/li&gt;
	&lt;li&gt;APML JSON Tag Cloud&lt;br /&gt;
	&lt;a href="http://bmn.name/examples/apml/"&gt;http://bmn.name/examples/apml/&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <link>http://www.glennjones.net/Post/839/ExperimentsinDataPortability.htm</link>
      <pubDate>Sun, 30 Nov 2008 12:58:12 GMT</pubDate>
    </item>
    <item>
      <title>Microformats to Portable Contacts API converters</title>
      <description>&lt;p&gt;I have been doing some research work into the new 
&lt;a href="http://portablecontacts.net/"&gt;Portable Contacts API&lt;/a&gt;. It’s 
designed to enable users to securely port their friend lists or address books 
from one site to another. 
&lt;/p&gt;
&lt;p&gt;Currently most social networking and address book sharing sites have their own 
proprietary contacts API’s. These API’s often provide some sort of distributed 
authorisation model for a developer to code against. If you integrate a few of 
these different interfaces into your site the levels of complexity become 
nightmarish.&lt;/p&gt;
&lt;p&gt;
From this tangle was born the 
&lt;a href="http://microformats.org/wiki/social-network-anti-patterns"&gt;password anti-pattern&lt;/a&gt;, this is where you ask the 
user for their username and password and then log in to another site as them and 
scrape the data you need. This is a bad idea on many counts, but looking at the 
historical alternatives you can understand why most developers took this route.&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://oauth.net/"&gt;OAuth&lt;/a&gt; was designed to help remove the complexity of multiple distributed 
authorisation models. Whereas the Portable Contacts API tackles the second 
element of friend lists sharing, by providing common API and discovery.&lt;/p&gt;
&lt;p&gt;
&amp;nbsp;Portable Contacts API is built on open specifications which can be used across 
sites. It uses a number of pre-existing technologies with its data structures 
based around &lt;a href="http://www.opensocial.org/"&gt;OpenSocial&lt;/a&gt; and 
&lt;a href="http://en.wikipedia.org/wiki/VCard"&gt;vCard&lt;/a&gt;, which should create a common access pattern 
and contact schema for everyone to use.&lt;/p&gt;
&lt;p&gt;I have built a number of interfaces to help evaluate any data loss or added 
ambiguity that may occur when converting microformats into the Portable Contacts 
API data schema.
&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;&lt;a href="http://lab.madgex.com/portablecontacts/hcardtopoco.aspx"&gt;hCard to Portable Contacts API demo&lt;/a&gt;
	&lt;/li&gt;
	&lt;li&gt;&lt;a href="http://lab.madgex.com/portablecontacts/hcardxfntopoco.aspx"&gt;hCard-XFN pattern to Portable Contacts API demo&lt;/a&gt;
	&lt;/li&gt;
	&lt;li&gt;&lt;a href="http://lab.madgex.com/portablecontacts/hresumetopoco.aspx"&gt;hResume to Portable Contacts API demo&lt;/a&gt;
	&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt; They do not yet provide the querying, sorting and pagination nor the 
endpoint URL elements of the specification. It’s also worth mentioning that 
Portable Contacts API is still in development and these interfaces are based on 
the Draft C specification.&lt;/p&gt;
</description>
      <link>http://www.glennjones.net/Post/838/MicroformatstoPortableContactsAPIconverters.htm</link>
      <pubDate>Wed, 15 Oct 2008 08:14:58 GMT</pubDate>
    </item>
    <item>
      <title>getAttribute href bug</title>
      <description>&lt;p&gt;&lt;b&gt;Whilst working on the Ajax Link Tracker and MapSurface I 
have come across an inconsistency in how the href attribute is 
retrieved using DOM Scripting.&lt;/b&gt;&lt;/p&gt; 

&lt;p&gt;The href attribute is different to other element 
attributes in that the value set can be relative to the context of the page URL. If 
you set a link with a relative href attribute&lt;/p&gt; 

&lt;pre&gt;
&lt;a href="../development/test1.html"&gt;test page&lt;/a&gt;
&lt;/pre&gt;

&lt;p&gt;The browser will look at the pages current URL and derive 
an absolute URL for the link.&lt;/p&gt;

&lt;pre&gt;
http://www.glenn.jones.net/development/test1.html
&lt;/pre&gt;

&lt;p&gt;This is the root of the problem, some browsers return the 
text of the attribute and others return the derived absolute URL. The results 
also differ by the method you use to retrieve the href attribute. There are 
three common ways to access an attribute:&lt;/p&gt; 

&lt;pre&gt;
    linkobj.href;
    linkobj[‘href’];
    linkobj.getAttribute(‘href’);
&lt;/pre&gt;

&lt;p&gt;The &lt;code&gt;linkobj.href&lt;/code&gt; and &lt;code&gt;linkobj[‘href’];&lt;/code&gt; methods of accessing the attribute consistently return the derived absolute URL.&lt;/p&gt;

&lt;p&gt;Microsoft has tried to address this by &lt;strike&gt;problem&lt;/strike&gt; adding a 
second parameter to the getAttribute method. The second parameter can be set to 
0,1 or 2. If the parameter is set to 2 the method returns the attribute text. 
Any other setting will return the derived absolute URL.&lt;/p&gt;
&lt;pre&gt;
    linkobj.getAttribute(‘href’);
    linkobj.getAttribute(‘href’,2);
&lt;/pre&gt;

&lt;table border="0" cellspacing="0" cellpadding="6" class="DataTable" id="ResultTable1"&gt;
	
	&lt;tr&gt;
		&lt;th valign="top"&gt;&amp;nbsp;&lt;/th&gt;
		&lt;th valign="top"&gt;&amp;nbsp;&lt;/th&gt;
		&lt;th valign="top" width="50"&gt;Derived &lt;br&gt;Absolute URL&lt;/th&gt;
		&lt;th valign="top" width="50"&gt;Attribute Text&lt;/th&gt;
	&lt;/tr&gt;

	
	&lt;tr&gt;
		&lt;td valign="top"&gt;IE&lt;/td&gt;
		&lt;td valign="top"&gt;linkobj.href;&lt;/td&gt;
		&lt;td valign="top" align="center" width="50"&gt;&lt;b&gt;x&lt;/b&gt;&lt;/td&gt;
		&lt;td valign="top" align="center" width="50"&gt;&amp;nbsp;&lt;/td&gt;
	&lt;/tr&gt;

	&lt;tr&gt;
		&lt;td valign="top"&gt;IE&lt;/td&gt;
		&lt;td valign="top"&gt;linkobj.getAttribute(‘href’);&lt;/td&gt;
		&lt;td valign="top" align="center" width="50"&gt;&lt;b&gt;x&lt;/b&gt;&lt;/td&gt;
		&lt;td valign="top" align="center" width="50"&gt;&amp;nbsp;&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td valign="top"&gt;IE&lt;/td&gt;
		&lt;td valign="top"&gt;linkobj.getAttribute(‘href’,2);&lt;/td&gt;
		&lt;td valign="top" align="center" width="50"&gt;&amp;nbsp;&lt;/td&gt;
		&lt;td valign="top" align="center" width="50"&gt;&lt;b&gt;x&lt;/b&gt;&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td valign="top"&gt;Gecko&lt;/td&gt;
		&lt;td valign="top"&gt;linkobj.href;&lt;/td&gt;
		&lt;td valign="top" align="center" width="50"&gt;&lt;b&gt;x&lt;/b&gt;&lt;/td&gt;
		&lt;td valign="top" align="center" width="50"&gt;&amp;nbsp;&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td valign="top"&gt;Gecko&lt;/td&gt;
		&lt;td valign="top"&gt;linkobj.getAttribute(‘href’);&lt;/td&gt;
		&lt;td valign="top" align="center" width="50"&gt;&amp;nbsp;&lt;/td&gt;
		&lt;td valign="top" align="center" width="50"&gt;&lt;b&gt;x&lt;/b&gt;&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td valign="top"&gt;Gecko&lt;/td&gt;
		&lt;td valign="top"&gt;linkobj.getAttribute(‘href’,2);&lt;/td&gt;
		&lt;td valign="top" align="center" width="50"&gt;&lt;b&gt;&amp;nbsp;&lt;/b&gt;&lt;/td&gt;
		&lt;td valign="top" align="center" width="50"&gt;&lt;b&gt;x&lt;/b&gt;&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td valign="top"&gt;Opera&lt;/td&gt;
		&lt;td valign="top"&gt;linkobj.href;&lt;/td&gt;
		&lt;td valign="top" align="center" width="50"&gt;&lt;b&gt;x&lt;/b&gt;&lt;/td&gt;
		&lt;td valign="top" align="center" width="50"&gt;&amp;nbsp;&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td valign="top"&gt;Opera&lt;/td&gt;
		&lt;td valign="top"&gt;linkobj.getAttribute(‘href’);&lt;/td&gt;
		&lt;td valign="top" align="center" width="50"&gt;&lt;b&gt;x&lt;/b&gt;&lt;/td&gt;
		&lt;td valign="top" align="center" width="50"&gt;&amp;nbsp;&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td valign="top"&gt;Opera&lt;/td&gt;
		&lt;td valign="top"&gt;linkobj.getAttribute(‘href’,2);&lt;/td&gt;
		&lt;td valign="top" align="center" width="50"&gt;&lt;b&gt;x&lt;/b&gt;&lt;/td&gt;
		&lt;td valign="top" align="center" width="50"&gt;&amp;nbsp;&lt;/td&gt;
	&lt;/tr&gt;
	
&lt;/table&gt;
&lt;a id="testpage" href="http://www.glennjones.net/demos/getattribute.htm"&gt;Get attribute test page&lt;/a&gt; Test on IE6, Firefox 1.5 and Opera 8.51.

&lt;p&gt;So what should be returned by the getAttribute method? 
&lt;strike&gt;The W3C DOM Level 2 
Core specification which sets out the structure of the getAttribute method does 
not cover this issue. It is 
not that either approach is wrong or right. On this point the specification is 
open to interpretation.&lt;/strike&gt;&lt;/p&gt;

&lt;p&gt;&lt;strike&gt;As a coder I would like to be able to access both values. The DOM Core specification should be updated to address the problem.&lt;/strike&gt;&lt;/p&gt;

&lt;p&gt;&lt;b&gt;After a really good exchange with Jim in the comments below, I stand corrected. The specification does say the getAttribute should return the attribute value, not the absolute URL. The Microsoft approach is wrong.&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;For the time being I am using the old school object property 
method &lt;code&gt;linkobj.href&lt;/code&gt; to return derived absolute URLs. It provides the most consistent results across all browsers.&lt;/p&gt;


&lt;b&gt;URLs of interest&lt;/b&gt;&lt;br/&gt;

&lt;a id="w3c" href="http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/core.html#ID-666EE0F9"&gt;
W3C REC DOM Level 2 Core specification for getAttribute&lt;/a&gt;&lt;br/&gt;

&lt;a id="mozilla" href="http://www.mozilla.org/docs/dom/domref/dom_el_ref38.html#1028465"&gt;
Gecko documentation for getAttribute&lt;/a&gt;&lt;br/&gt;

&lt;a id="msdn"  href="http://msdn.microsoft.com/workshop/author/dhtml/reference/methods/getattribute.asp"&gt;
Microsoft documentation for getAttribute&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;

As usual just as I was finishing this post I found this bug report on the QuickMode site which discusses the same subject.&lt;br&gt;&lt;a id="quirksmode" href="http://www.quirksmode.org/index.html?/bugreports/archives/2005/02/getAttributeHREF_is_always_absolute.html"&gt;
getAttribute HREF is always absolute.html&lt;/a&gt;&lt;br/&gt;

</description>
      <link>http://www.glennjones.net/Post/809/getAttributehrefbug.htm</link>
      <pubDate>Sun, 19 Feb 2006 16:33:13 GMT</pubDate>
    </item>
    <item>
      <title>OAuth.net</title>
      <description>&lt;p&gt;
&lt;a href="http://oauth.net/"&gt;OAuth&lt;/a&gt; is one of those technologies that when first understood makes your mind race with the possibilities. Authentication is a dry subject at the best of  times, but OAuth shines not because the technology is cool, but because it has the capability to fundamentally change the way people use the web.
&lt;/p&gt;

&lt;p&gt;
Today &lt;a href="http://www.madgex.com/"&gt;Madgex&lt;/a&gt; open-sourced 
&lt;a href="http://lab.madgex.com/oauth-net/"&gt;OAuth.net&lt;/a&gt;, which as it sounds is an OAuth library for 
.net. This is a spin off from an internal research project we are working on.
&lt;/p&gt;

&lt;p&gt;
OAuth.net provides full OAuth consumer and provider support to the core 
specification. The library facilitates secure API authentication in a simple and 
standard method for desktop and web applications. We are putting the full source 
code with a MIT licence on Google code.
&lt;/p&gt;

&lt;p&gt;
&lt;a href="http://lab.madgex.com/oauth-net/"&gt;http://lab.madgex.com/oauth-net/&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://code.google.com/p/oauth-dot-net/"&gt;http://code.google.com/p/oauth-dot-net/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;
The thing that really stuck in my mind when I started to investigate OAuth was 
the joy of the user experience. With sometimes as little as 2 clicks I can share 
data between sites, which would of taken me ages to re-enter. Somehow this 
experience has that nice feeling like using the iPhone interface for the first 
time. Maybe it’s just because I am so sick of re-entering things over and over 
again.
&lt;/p&gt;

&lt;p&gt;
I have been fascinated with allowing users to share information for over 3 years 
now, whatever the name used Portable Social Networks, Social Graph or Data 
Portability.
&lt;/p&gt;

&lt;p&gt;
There is a vast amount of publically available data about each of us embedded in 
the pages of sites we use. There are hundreds of millions of social network 
profile pages. The Microformats community has done a great job defining 
practical ways to extract semantic structures of data, but the issues of 
privacy, authentication and authorisation are beyond its scope.
&lt;/p&gt;

&lt;p&gt;
OAuth allows users to share data between sites which they do not wish to make 
public. It does this without resorting to the heinous practice of asking a user 
to hand over their account details for other sites.
&lt;/p&gt;

&lt;p&gt;
If you have a Google mail account take a look at this demo. It is a very simple 
demo, but it shows you some of the power of the concept.
&lt;/p&gt;
&lt;a href="http://lab.madgex.com/oauth-net/googlecontacts/"&gt;http://lab.madgex.com/oauth-net/googlecontacts/

&lt;/a&gt;

&lt;p&gt;
There are also demos for Fire Eagle and extracting protected Microformat 
resources.
&lt;/p&gt;

&lt;p&gt;
OAuth.net is the first full library for .net. Our hope is that by sharing some 
of our work it will help move forward the adoption of OAuth. 
I will be talking about OAuth and OAuth.net at 
&lt;a href="http://barcamp.org/BarCampLondon5/"&gt;Barcamp London 5 &lt;/a&gt;on 27/28 
September. Bruce Boughton one of the libraries developers will be talking about 
the project at &lt;a href="http://barcampbrighton.org/"&gt;Barcamp Brighton 3&lt;/a&gt; on 6/7 September.&lt;p&gt;

&lt;p&gt;Enjoy&lt;/p&gt;
</description>
      <link>http://www.glennjones.net/Post/837/OAuthnet.htm</link>
      <pubDate>Mon, 08 Sep 2008 10:14:11 GMT</pubDate>
    </item>
    <item>
      <title>Microformats test-suite concept</title>
      <description>&lt;p&gt;I have been working on a concept for a new microformats test-suite. I need a 
comprehensive test-suite before I can move the development of UfXtract forward. 
Rather than just build something in isolation I thought it would be nice to find 
a way to share this work with the community. &lt;/p&gt;
&lt;p&gt;I have written two POSH patterns “testsuite” and “testfixture”. They follow 
the principles of microformats design:&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;They are self-describing and created with HTML ,with no hidden metadata&lt;/li&gt;
	&lt;li&gt;Building a test should be easy even for those who are HTML authors &lt;/li&gt;
	&lt;li&gt;They are not linked to any one programming language and should be easy 
	to share&lt;/li&gt;
	&lt;li&gt;They allow for the creation of an in-browser Testrunner&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;For example go to &lt;a href="http://ufxtract.com/testsuite/hcard/"&gt;
http://ufxtract.com/testsuite/hcard/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The earliest tests for hcard used vcards to describe the expected output. As 
the community has moved forward it has designed microformats which are 
independent of external specification. So this test-suite is designed around the 
concept of a standardised data structure. In this case, expressed in JSON, but 
they could be converted into XPaths to test XML or other languages.&lt;/p&gt;
&lt;p&gt;I have started to build a small console app, which will spider the HTML and 
create NUnit/C# class files for my build tests. Although this is specific to my 
own parsers development, it should be easy to do the same for other programming 
languages and projects.&lt;/p&gt;
&lt;p&gt;Parsing “testsuite” and “testfixture”.&lt;br /&gt;
I have already setup UfXtract to parse these patterns into JSON/XML. It would 
not take much for other microformats parser developers to construct profiles for 
these POSH patterns. &lt;/p&gt;
&lt;p&gt;Here is an example of the output.&lt;br /&gt;
&lt;a href="http://lab.backnetwork.com/ufXtract/?url=http%3A%2F%2Fufxtract.com%2Ftestsuite%2Fhcard%2Fhcard1.htm&amp;amp;format=test-fixture&amp;amp;output=json"&gt;ttp://lab.backnetwork.com/ufXtract/?url=http%3A%2F%2Fufxtract.com%2Ftestsuite%2Fhcard%2Fhcard1.htm&amp;amp;format=test-fixture&amp;amp;output=json&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2&gt;The Testrunner&lt;/h2&gt;
&lt;p&gt;If you go to &lt;a href="http://ufxtract.com/testsuite/hcard/hcard1.htm"&gt;http://ufxtract.com/testsuite/hcard/hcard1.htm&lt;/a&gt; and press 
&lt;strong&gt;Alt X&lt;/strong&gt; 
you can see a working demonstration of the testrunner.&lt;/p&gt;
&lt;p&gt;I have observed that most parser developers are using comparative testing as 
their main tool to quickly understand how the complex rules and optimizations 
are applied. So I have built a JavaScript Testrunner which allows for simple 
comparative testing between parsers.&lt;/p&gt;
&lt;p&gt;It uses a number of techniques to standardise both access to the parsers API’s 
and the JSON output. &lt;strong&gt;Please note that at this stage the JSON standardisation 
process can cause a test to be marked as failed when it could be judged to have 
passed.&lt;/strong&gt; Most of the current differences in parser output are down to whether 
a value is stored as single property or an array of properties.&lt;/p&gt;
&lt;p&gt;At the moment the Testrunner is only working with the testfixure , it would not 
take much to extend the Testrunner to run a whole test-suite.
&lt;/p&gt;
&lt;p&gt;I would love to add Operator and other parsers to the Testrunner.
&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2&gt;Proof of concept&lt;/h2&gt;
&lt;p&gt;This is very early proof of concept stuff. What I would like to ask is a number 
of questions before moving it forward.&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;Are people interested in the idea of shared test-suites?&lt;/li&gt;
	&lt;li&gt;What do you think to the approach?&lt;/li&gt;
	&lt;li&gt;Can you see any big issues with the concepts?&lt;/li&gt;
	&lt;li&gt;If you already have tests/test-suites, would you be willing to add them to the 
project?&lt;/li&gt;
	&lt;li&gt;Would you be interested in contributing to a project like this?&lt;/li&gt;
&lt;/ul&gt;
</description>
      <link>http://www.glennjones.net/Post/836/Microformatstest-suiteconcept.htm</link>
      <pubDate>Sat, 03 May 2008 11:14:29 GMT</pubDate>
    </item>
    <item>
      <title>Semantic Camp London</title>
      <description>&lt;p&gt;I spent this weekend at &lt;a href="http://semanticcamp.tommorris.org/"&gt;Semantic 
Camp&lt;/a&gt; learning all about &lt;a href="http://www.w3.org/RDF/"&gt;&lt;abbr title="Resource Description Framework"&gt;RDF&lt;/abbr&gt;&lt;/a&gt; and speaking about parsing 
&lt;a href="http://microformats.org/"&gt;microformats&lt;/a&gt;. 
Although the focus of the event was very small, it attracted a nice group of 
people who were all passionate about open data portability in one way or 
another. &lt;br /&gt;
I think I have a much clearer view of how RDF fits into the concepts of the 
semantic web. Over the next few weeks I am going to take some time to explore 
&lt;a href="http://www.w3.org/TR/rdf-sparql-query/"&gt;SPARQL&lt;/a&gt;. I had a chance to talk to a number of interesting people&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;br /&gt;
I used my talk to try and answer the question &lt;a rel="met friend" href="http://allinthehead.com/"&gt;Drew McLellan&lt;/a&gt; posed a year ago in 
his presentation 
&lt;a href="http://allinthehead.com/retro/301/can-your-website-be-your-api"&gt;Can Your Website be Your API?&lt;/a&gt; I used some of my experience 
building &lt;a href="http://lab.backnetwork.com/ufXtract/"&gt;ufXtract&lt;/a&gt; and parsing social networks information to see if it is 
possible in the real world. &lt;/p&gt;
&lt;p&gt;Presentation: &lt;a href="../downloads/canyourwebsite.pdf"&gt;Can your website be your API and real life&lt;/a&gt; (pdf 1.25Mb)&lt;/p&gt;
&lt;a href="../downloads/canyourwebsite.pdf"&gt;
&lt;img border="0" alt="Semantic Camp Presentation pdf 1.25Mb" src="Assets/GetAsset.aspx?ItemID=441" /&gt;
&lt;/a&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;I believe with a few small changes you can create successful ‘read only APIs’ 
using only microformats embedded in your html. The Q&amp;amp;A moved onto whether you 
could create ‘read/write APIs’ and some sort of HTTP verb discovery mechanism.
&lt;/p&gt;
&lt;p&gt;After my talk I spent some time chatting with &lt;a rel="met acquaintance" href="http://danbri.org/"&gt;Dan Brickley&lt;/a&gt; author of &lt;a href="http://www.foaf-project.org/"&gt;&lt;abbr title="Friend of a Friend"&gt;FOAF&lt;/abbr&gt;&lt;/a&gt;. We 
exchanged a few ideas about where microformats and RDF are going and talked 
about parsing issues. Dan has made me think hard about the lack of a formal 
framework for developing microformats parsers. This was reinforced by

&lt;a rel="met friend" href="http://morethanseven.net/"&gt;Gareth 
Rushgrove&lt;/a&gt;&lt;/a&gt; discussion on different microformats parsers. There are three things 
that seem to be missing:&lt;/p&gt;
&lt;ol&gt;
	&lt;li&gt;A codified specification, something along the lines of XSD or even a 
	propriety profile that all the current parsers could use. &lt;/li&gt;&lt;br /&gt;  
	&lt;li&gt;A strong set of tests which we could use to check whether a parser works 
	to a pre-defined standard. We should have both positive and negative tests 
	to make things like required attribute validation work. &lt;/li&gt;&lt;br /&gt; 
	&lt;li&gt;A standard output format so that developers can abstract libraries 
	easily swapping from one to another. It would also allow us to do 
	programmatic comparative testing. &lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;This whole area is something that needs to be raised on the microformats-dev 
list.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://wwmm.ch.cam.ac.uk/blogs/walkingshaw/"&gt;Andrew Walkingshaw&lt;/a&gt; did a great talk on automatic indexing using 
natural-language processing. The whole area of NLP keeps re-surfacing in my work 
at Madgex and I am becoming more convinced that there is a place for this 
technology in the aggregation of structured and unstructured information 
sources. The guys from the BBC should have a special mention for all the great 
work they demonstrated. &lt;/p&gt;
&lt;p&gt;&lt;a  rel="met acquaintance" href="http://binarytales.co.uk/"&gt;Jon Linklater-Johnson&lt;/a&gt; created Semantopoly for the event, yet another great 
effort from the man who gave us the very cool CSS specificity card game. Just 
take a look at the &lt;a href="http://www.flickr.com/photos/adactio/2272555558/"&gt;flickr pictures&lt;/a&gt;, Semantopoly was a great game made better by 
the twitters that where created around it. &lt;/p&gt;
&lt;p&gt;I would like to thank to &lt;a rel="met acquaintance" href="http://tommorris.org/"&gt;Tom&lt;/a&gt; and 
&lt;a href="http://vanirsystems.com/danielsblog/"&gt;Daniel&lt;/a&gt; for organising a fantastic event and 
to the sponsors who helped support it: &lt;a href="http://backstage.bbc.co.uk/"&gt;BBC Backstage&lt;/a&gt;, 
&lt;a href="http://hedgehoglab.com/"&gt;Hedgehog Lab&lt;/a&gt;,
&lt;a href="http://www.openlinksw.com/"&gt;OpenLink 
Software&lt;/a&gt;, &lt;a href="http://www.osmosoft.com/"&gt;Osmosoft&lt;/a&gt; and 
&lt;a href="http://www.talis.com/"&gt;Talis&lt;/a&gt;.&lt;/p&gt;
</description>
      <link>http://www.glennjones.net/Post/835/SemanticCampLondon.htm</link>
      <pubDate>Tue, 19 Feb 2008 15:02:41 GMT</pubDate>
    </item>
    <item>
      <title>Cake Friday vs HM Revenue &amp; Customs </title>
      <description>&lt;p&gt;A couple of weeks ago Madgex had a visit from HM Revenue &amp; Customs to review our PAYE tax payments. While in the office they informed us that providing cake on a Friday maybe a taxable benefit. We received this judgement by letter.  
&lt;/p&gt;
&lt;p&gt;
“Friday cake
The provision of cakes on a Friday is a different matter altogether. As I understand the position, the company provides cakes for all staff generally on a Friday. What is crucial here is that the meal (cakes) is provided to staff generally, its cost is reasonable in scale and in this instance free for staff. As such the provision of the Friday cakes under the circumstance described do not create a chargeable benefit in accordance with Section 317 Income Tax (Earnings and Pensions) Act 2003(ITEPA 2003). I have used the definition of a meal from the Pocket Oxford Dictionary 1972 Reprint as being ‘taking of food’. If I am incorrect in that regard relief will be available under the departments guidance for dealing with trivial benefits. There is no monetary limit to determine what is a trivial benefit. In essence a chargeable benefit will arise on the provision of cakes however, it is deemed trivial because it is perishable and/or consumable.
&lt;/p&gt;
&lt;p&gt;
I am of the opinion that the cakes provided on Fridays to all staff qualifies for relief under Section 317 ITEPA 2003 and also satisfy the trivial benefit criteria. As such the department will not seek to bring that benefit in to charge. Therefore the company can continue to provide cakes to all staff in the same way as the past without the need to declare the benefit or pay any Class 1A National Insurance.”

&lt;/p&gt;
&lt;p&gt;
We are now considering renaming “Cake Friday” to “Section 317 ITEPA 2003 Friday” in thanks of the enlightened decision of Revenue &amp; Customs. Although we were wondering how they could calculate the national insurance tax due for a slice of cake.    
&lt;/p&gt;
</description>
      <link>http://www.glennjones.net/Post/834/CakeFridayvsHMRevenueCustoms.htm</link>
      <pubDate>Sat, 09 Feb 2008 17:44:48 GMT</pubDate>
    </item>
    <item>
      <title>Making your social networking data portable - Marking up profiles and friends with mircoformats</title>
      <description>&lt;p&gt;
As the ideas of social media extends into the design of many modern websites, 
the addition of user profiles and friend lists are becoming more common. So what 
is the best practice for making your social network data portable with mircoformats. 
&lt;/p&gt;

&lt;p&gt;
Marking-up profiles and friend lists with mircoformats to any site is a relatively simple 
HTML coding process and involves the use of
&lt;a href="http://microformats.org/wiki/hcard"&gt;hCard&lt;/a&gt; and 
&lt;a href="http://gmpg.org/xfn/"&gt;XFN&lt;/a&gt;. If you are not yet 
familiar with mircoformats I would recommend reading microformats.org/wiki/ for 
a quick overview.
&lt;/p&gt;

&lt;h2&gt;Profiles&lt;/h2&gt;

&lt;p&gt;
Most social network sites follow a standard architecture which has a profile 
page for each user, often with an easy to remember URL. The information about a user 
on this page should be marked-up with hCard. 
&lt;/p&gt;

&lt;p&gt;
Where you have additional pages containing other user information such as 
friends list you should link to them using the XFN mircoformats rel=”me” 
attribute. The use rel=”me” will tell any parser that the linked page is also 
about this user
&lt;/p&gt;

&lt;pre class="csharpcode"&gt;
&lt;a &lt;strong&gt;rel=&amp;quot;me&amp;quot;&lt;/strong&gt; href=&amp;quot;../glennjones/friends/&amp;quot;&gt;Your friends&lt;/a&gt;
&lt;/pre&gt;

&lt;p&gt;
Often friends list can be so long that you need to use pagination and break 
them into several pages. You should also mark-up the pagination links with rel=”me 
next” and rel=”me prev”.
&lt;/p&gt;

&lt;pre class="csharpcode"&gt;
More friends: &lt;a &lt;strong&gt;rel=&amp;quot;me next&amp;quot;&lt;/strong&gt; href=&amp;quot;../glennjones/friends/2&amp;quot;&gt;Page 2&lt;/a&gt;
&lt;/pre&gt;

&lt;p&gt;
Using rel=”me” to link to profiles on sites allows for a parser to create a 
consolidated identity from many different sources. 
&lt;/p&gt;

&lt;h2&gt;Defining the representative hCard&lt;/h2&gt;
&lt;p&gt;Often you will find that a profile page will end up with more than one hCard. 
There could be a compact friends list that uses the hCard-XFN pattern or other 
content which carries hCard mark-up such hAtom. The 
&lt;a href="http://microformats.org/wiki/representative-hcard-brainstorming"&gt;representative hCard 
concept&lt;/a&gt;, defines how to mark-up an hCard so that a parser can identify it as representing the profile owner. There 
are two patterns:
&lt;/p&gt;

&lt;p&gt;
The first is an hCard where the uid, url attribute and the page source url all 
have the same value.
&lt;/p&gt;

&lt;pre class="csharpcode"&gt;
&lt;div class=&amp;quot;vcard&amp;quot;&gt;
&lt;a class=&amp;quot;fn n &lt;strong&gt;url uid&lt;/strong&gt;&amp;quot; href=&amp;quot;http://www.glennjones.net/&amp;quot;&gt;&lt;br /&gt;&lt;span class=&amp;quot;given-name&amp;quot;&gt;Glenn&lt;/span&gt; 
&lt;span class=&amp;quot;family-name&amp;quot;&gt;Jones&lt;/span&gt;
&lt;/a&gt;
&lt;/div&gt;
&lt;/pre&gt;


&lt;p&gt;The second is where rel=&amp;quot;me&amp;quot; is on the same link as class=&amp;quot;url&amp;quot;&lt;/p&gt;


&lt;pre class="csharpcode"&gt;
&lt;div class=&amp;quot;vcard&amp;quot;&gt;
&lt;a class=&amp;quot;fn n &lt;strong&gt;url&lt;/strong&gt;&amp;quot; &lt;strong&gt;rel=&amp;quot;me&amp;quot;&lt;/strong&gt; href=&amp;quot;http://www.glennjones.net/&amp;quot;&gt;&lt;br /&gt;&lt;span class=&amp;quot;given-name&amp;quot;&gt;Glenn&lt;/span&gt; 
&lt;span class=&amp;quot;family-name&amp;quot;&gt;Jones&lt;/span&gt;
&lt;/a&gt;
&lt;/div&gt;
&lt;/pre&gt;

&lt;p&gt;
Personally, I would use the rel=”me” pattern. Because rel=”me” is also the method for telling the parser that 
this element is a link to 
another profile. 
&lt;/p&gt;

&lt;h2&gt;Friends lists&lt;/h2&gt;
&lt;p&gt;Traditionally, XFN has been used to define relationships with friends. XFN 
is a simple mircoformat that allows you to represent these human 
relationships using rel attribute on hyperlinks. &lt;/p&gt;


&lt;pre class="csharpcode"&gt;
&lt;a &lt;strong&gt;rel=&amp;quot;friend met&amp;quot;&lt;/strong&gt; href=&amp;quot;../adactio&amp;quot; &gt;Jeremy Keith&lt;/a&gt;
&lt;/pre&gt;

&lt;p&gt;
Although XFN can describe relationships well, it lacks the richness of hCard 
which is more suited to describing information such as names. The mircoformats community have started to promote the use of the joint 
&lt;a href="http://microformats.org/wiki/hcard-xfn-supporting-friends-lists"&gt;hCard-XFN 
design pattern&lt;/a&gt; to take advantage of this. Below are the three most commonly used patterns.&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;1. A text list of friends full names&lt;/strong&gt;&lt;/p&gt;

&lt;pre class="csharpcode"&gt;
&lt;li class=&amp;quot;vcard&amp;quot;&gt;
&lt;a class=&amp;quot;&lt;strong&gt;fn n url&lt;/strong&gt;&amp;quot; &lt;strong&gt;rel=&amp;quot;friend met&amp;quot;&lt;/strong&gt; href=&amp;quot;../adactio&amp;quot;&gt;
&lt;span class=&amp;quot;given-name&amp;quot;&gt;Jeremy&lt;/span&gt; &lt;span class=&amp;quot;family-name&amp;quot;&gt;Keith&lt;/span&gt;&lt;br /&gt;&lt;/a&gt;
&lt;/li&gt;
&lt;/pre&gt;

&lt;p&gt;
&lt;strong&gt;2. A group of icons with no visible text&lt;/strong&gt;&lt;br /&gt;
When using icons without text, the alt attribute can be used to define the 
fn (formatted name) of the friend.
&lt;/p&gt;

&lt;pre class="csharpcode"&gt;
&lt;li class=&amp;quot;vcard&amp;quot;&gt;
&lt;a class=&amp;quot;url&amp;quot; rel=&amp;quot; friend met&amp;quot; href=&amp;quot;../adactio&amp;quot;&gt;&lt;br /&gt;&lt;img class=&amp;quot;photo &lt;strong&gt;fn&lt;/strong&gt;&amp;quot; src=&amp;quot;../icons/adactio.jpg&amp;quot; &lt;strong&gt;alt=&amp;quot;Jeremy Keith&amp;quot;&lt;/strong&gt;/&gt;&lt;br /&gt;&lt;/a&gt;
&lt;/li&gt;
&lt;/pre&gt;

&lt;p&gt;
&lt;strong&gt;3. A group of icons with a username marked-up as a nickname&lt;br /&gt;
&lt;/strong&gt;If you wish to use usernames rather than a full name you can change the 
image attributes to define a nickname.
&lt;/p&gt;

&lt;pre class="csharpcode"&gt;
&lt;i class=&amp;quot;vcard&amp;quot;&gt;
&lt;a class=&amp;quot;url&amp;quot; rel=&amp;quot;friend met&amp;quot; href=&amp;quot;../adactio&amp;quot;&gt;&lt;br /&gt;&lt;img class=&amp;quot;photo &lt;strong&gt;fn nickname&lt;/strong&gt;&amp;quot; src=&amp;quot;../icons/adactio.jpg&amp;quot; alt=&amp;quot;adactio&amp;quot;/&gt;
&lt;/a&gt;
&lt;/li&gt;
&lt;/pre&gt;

&lt;p&gt;
I would always try and display the full name as visible text. One of the 
fundamental concepts of mircoformats is not to hide your data. That said, all 
three patterns will work.&amp;nbsp;
&lt;/p&gt;
&lt;h2&gt;
Mapping relationship values&lt;/h2&gt;
&lt;p&gt;
You will often have to create a mapping of values between your sites and XFN. If your system does 
not differentiate the strength of a 
relationship, use the default &lt;strong&gt;rel=”acquaintance”&lt;/strong&gt;. &lt;/p&gt;
&lt;h2&gt;
Trying out your mark-up &lt;/h2&gt;
&lt;p&gt;
I have built a portable social network parser which can be used to test your 
mark-up. There is a &lt;a href="http://lab.backnetwork.com/ufXtract-psn/"&gt;public API&lt;/a&gt; on the backnetwork labs site which can produce 
either XML or JSON. There is also a &lt;a href="http://lab.backnetwork.com/ufXtract-psn/"&gt;demonstration&lt;/a&gt; of how a registration page 
could consume a site marked-up with mircoformats.&lt;/p&gt;
&lt;h2&gt;
Note&lt;/h2&gt;

&lt;p&gt;
This is an area of ongoing development, so some of this information may 
change as the portable social network concepts mature. Its always best to check 
the &lt;a href="http://microformats.org/wiki/Main_Page"&gt;mircoformats wiki&lt;/a&gt;. &lt;/p&gt;
</description>
      <link>http://www.glennjones.net/Post/833/Makingyoursocialnetworkingdataportable-Markingupprofilesandfriendswith.htm</link>
      <pubDate>Mon, 03 Dec 2007 22:02:29 GMT</pubDate>
    </item>
    <item>
      <title>ufXtract’s portable social network parser</title>
      <description>&lt;p&gt;After 14 months of talking about portable social networks at various events 
from SXSWi to a small geek dinner, I have finally found the time to build a 
working example.&amp;nbsp; &lt;/p&gt;
&lt;p&gt;&lt;a href="http://lab.backnetwork.com/ufXtract-psn/"&gt;ufXtract’s portable social network parser&lt;/a&gt; is a combination of the
&lt;a href="http://lab.backnetwork.com/ufXtract/"&gt;ufXtract 
microformats parser&lt;/a&gt; and a spider which follows rel=”me” links. It has been 
designed to extract profiles and friends lists from social networks and other 
sites which have microformats support. The parser returns two main collections of data, all the rel=”me” 
links and any 
&lt;a href="http://microformats.org/wiki/hcard-xfn-supporting-friends-lists"&gt;hCard-XFN patterns&lt;/a&gt;.&lt;/p&gt; 

&lt;p&gt;
&lt;strong&gt;The parser API&lt;/strong&gt;&lt;br /&gt;
&lt;a href="http://lab.backnetwork.com/ufXtract-psn/"&gt;http://lab.backnetwork.com/ufXtract-psn/&lt;/a&gt;

&lt;/p&gt;

&lt;p&gt;
&lt;strong&gt;A demo using JavaScript and JSON &lt;/strong&gt;&lt;br /&gt;
&lt;a href="http://lab.backnetwork.com/ufXtract-psn/demo01.htm"&gt;
http://lab.backnetwork.com/ufXtract-psn/demo01.htm&lt;/a&gt;&lt;br /&gt;
&lt;/p&gt;


&lt;h2&gt;The Parser&lt;/h2&gt;
&lt;p&gt;
You can restrict the parser to a single domain or spider across the whole web. 
Currently, there are limits to the number of pages which will be parsed. Each 
collection item is given an additional source-url attribute to identify its 
origin
&lt;/p&gt;

&lt;p&gt;
There is support for both XML and JSON output, for both client and server-side 
development.
&lt;/p&gt;


&lt;p&gt;
The parser also uses a version of 
the 
&lt;a href="http://microformats.org/wiki/representative-hcard-brainstorming"&gt;representative hCard concept&lt;/a&gt;, which tries to 
identify the hCard representing the profile owner. The implementation is a 
little more complex than described on the microformats wiki as it extends over 
multiple pages and domains. This means you may find multiple representative hCards 
from one call to the API, but there should only ever be one 
per a URL. 
&lt;/p&gt;

&lt;div class="style1"&gt;
	&lt;h2&gt;The Demo

&lt;/h2&gt;
&lt;/div&gt;

&lt;p&gt;
I believe there are a number of different ways that this functionality could be 
designed into web sites. So I have provided a simple interface design to 
demonstrate one possibility. It’s a bit of a homage to the
&lt;a href="http://getsatisfaction.com/people/new"&gt;getsatisfaction.com 
registration&lt;/a&gt; page with a few extra twists. I would like to thank my co-worker 
&lt;span class="hcard"&gt;&lt;a class="url fn" href="http://jameswragg.com" rel="freind met co-worker"&gt;James 
Wragg&lt;/a&gt;&lt;/span&gt; who created the JavaScript for the demo.
&lt;/p&gt;

&lt;p&gt;
Of the sites listed on the demo &lt;a href="http://www.last.fm/"&gt;last.fm&lt;/a&gt; and 
&lt;a href="http://ma.gnolia.com/"&gt;ma.gnolia.com&lt;/a&gt; return the best 
results. The other sites have differing levels of portable social network 
support. It also works well against blogs such as &lt;a href="http://adactio.com/"&gt;adactio.com&lt;/a&gt; or 
&lt;a href="http://tantek.com/"&gt;tantek.com&lt;/a&gt; that are marked-up with rel=”me” . It’s worth trying out the two depth 
search levels.
&lt;/p&gt;
&lt;h2&gt;
Pages not parsing
&lt;/h2&gt;
&lt;p&gt;
You may find on some sites like &lt;a href="http://twitter.com/"&gt;twitter.com&lt;/a&gt; 
only certain pages are parsed. These sites often have good microformats support, 
but parts of their functionally are locked behind logon&amp;#39;s. The parser does not 
support authenticated sessions as this would mean asking the user to pass me 
their log-in details which is a
&lt;a href="http://microformats.org/wiki/social-network-anti-patterns"&gt;really bad 
idea&lt;/a&gt;.&amp;nbsp; If I can lay my hands on a good &lt;a href="http://openid.net/"&gt;
Open-ID&lt;/a&gt; and/or &lt;a class="sublink" href="http://oauth.net/"&gt;OAuth&lt;/a&gt; C# 
libraries, I will try and implement some different types of authentication.&lt;/p&gt;

&lt;h2&gt;
Research&lt;/h2&gt;
&lt;p&gt;
This is all research work still under development, I placed it on the web for 
others to experiment with and to help foster discussion. I hope you enjoy playing 
with this.
&lt;/p&gt;
</description>
      <link>http://www.glennjones.net/Post/832/ufXtract%e2%80%99sportablesocialnetworkparser.htm</link>
      <pubDate>Mon, 03 Dec 2007 22:01:15 GMT</pubDate>
    </item>
  </channel>
</rss>