<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	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:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>Ungeek DaPo</title>
	<atom:link href="https://ungeekdapo.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>https://ungeekdapo.wordpress.com</link>
	<description>My attempt to ungeek Data Portability (DaPo)</description>
	<lastBuildDate>Sat, 05 Jul 2008 16:51:24 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<site xmlns="com-wordpress:feed-additions:1">3171307</site><cloud domain='ungeekdapo.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>https://s0.wp.com/i/buttonw-com.png</url>
		<title>Ungeek DaPo</title>
		<link>https://ungeekdapo.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="https://ungeekdapo.wordpress.com/osd.xml" title="Ungeek DaPo" />
	<atom:link rel='hub' href='https://ungeekdapo.wordpress.com/?pushpress=hub'/>
	<item>
		<title>Open Source Twitter is here</title>
		<link>https://ungeekdapo.wordpress.com/2008/07/04/open-source-twitter-is-here/</link>
					<comments>https://ungeekdapo.wordpress.com/2008/07/04/open-source-twitter-is-here/#respond</comments>
		
		<dc:creator><![CDATA[Bob Ngu]]></dc:creator>
		<pubDate>Fri, 04 Jul 2008 00:35:41 +0000</pubDate>
				<category><![CDATA[data portability]]></category>
		<category><![CDATA[identi.ca]]></category>
		<category><![CDATA[OpenMicroBlogging]]></category>
		<guid isPermaLink="false">http://ungeekdapo.wordpress.com/?p=56</guid>

					<description><![CDATA[Ok, technically not Twitter but it&#8217;s dang close, the site is called identi.ca, some pertinent details from the site Identi.ca is a microblogging service brought to you by Control Yourself, Inc.. It runs the Laconica microblogging software, version 0.4.1, available under the GNU Affero General Public License. Unless otherwise specified, contents of this site are [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>Ok, technically not Twitter but it&#8217;s dang close, the site is called <a href="http://identi.ca/">identi.ca</a>, some pertinent details from the site</p>
<blockquote>
<p><strong>Identi.ca</strong> is a microblogging service brought to you by <a href="http://controlezvous.ca/">Control Yourself, Inc.</a>. It runs the <a href="http://laconi.ca/">Laconica</a> microblogging software, version 0.4.1, available under the <a href="http://www.fsf.org/licensing/licenses/agpl-3.0.html">GNU Affero General Public License</a>.</p>
<p>    <img src="https://i0.wp.com/i.creativecommons.org/l/by/3.0/88x31.png" alt="Creative Commons Attribution 3.0"></img><br />
Unless otherwise specified, contents of this site are copyright by the contributors and available under the  <a class="license" rel="license" href="http://creativecommons.org/licenses/by/3.0/">Creative Commons Attribution 3.0</a>. Contributors should be attributed by full name or nickname.
</p></blockquote>
<p>It is based on a <a href="http://openmicroblogging.org/">new V0.1 open microblogging protocol</a> from <a href="http://evan.prodromou.name/">Evan Prodromou</a>. In general, the tech blogosphere is excited about identi.ca and the open microblogging protocol it is based on</p>
<ul>
<li><a href="http://www.readwriteweb.com/archives/indentica_federated_twitter.php">Identi.ca: May A Million Twitters Bloom</a> by ReadWriteWeb</li>
<li><a href="http://www.scripting.com/stories/2008/07/03/federatingIdentica.html">Federating identi.ca?</a> by Dave Winer who is a big fan of federated microblogging.
</li>
</ul>
<p>identi.ca supports OpenID, that&#8217;s cool because I don&#8217;t have to remember yet another username and password. But the real cool thing is that the code is open source, get it <a href="http://laconi.ca/Main/Source">here</a>, and already a couple of people have installed their own instances of it. Here&#8217;s <a href="http://decafbad.com/blog/2008/07/03/getting-laconica-up-and-running">detailed instructions</a> from one developer from his successful installations (2 of them) and another supposedly simpler set of installation instructions <a href="http://www.orient-lodge.com/node/3051">here</a> on a shared host. I haven&#8217;t tried them yet so use them at your discretion. Also, it has attracted the attention of other developers that are going to start <a href="http://www.russellbeattie.com/blog/let-the-microblogs-bloom">tweaking </a>the code to make it more scalable, such is the power of open source especially since Laconica&#8217;s GNU Affero license means any changes made on anyone&#8217;s server needs to be released back as well. Developers are also starting to experiment with federating different instances of Laconica where a message posted on one instance of Laconica, e.g., <a href="http://laconica.kamleitner.com/">http://laconica.kamleitner.com/</a>, shows up on another Laconica instance, e.g., <a href="http://identi.ca">http://identi.ca</a> and vice versa.</p>
<p>Since the launch yesterday, the site was up and down several times, so hopefully it will get better over time, I sure would hate for it to suffer the same dreadful Twitter scalability issue. It was probably due to the buzz in the tech blogosphere that generated a ton of traffic. Even with the site being inconsistently available, a nice feature is the XMPP support. I was able to interact with it via my Pidgin / Gtalk setup even when the site isn&#8217;t available and that&#8217;s very handy.</p>
<p>I am excited about this for data portability because with it being open source, developers can add support for relevant data portability technology such as XFN, microformats, FOAF, RDF, RDFa, etc. If this really takes off, it can mean serious trouble for Twitter. Even without identi.ca, the tech blogosphere have talked about migrating to FriendFeed from Twitter due to its scalability issue. To get an idea how interested the blogosphere is in identi.ca, it has 10,000 registered users in 3 days from launch.</p>
<p>On a side note, I am spending less time on this blog and more time on my <a href="http://rubyonrailswin.wordpress.com/">Ruby on Rails blog</a> as I ramp up development for my next startup. </p>
]]></content:encoded>
					
					<wfw:commentRss>https://ungeekdapo.wordpress.com/2008/07/04/open-source-twitter-is-here/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">56</post-id>
		<media:content url="https://0.gravatar.com/avatar/f8141d64548e2f858c28fc462f0545798ff7a6bde49a10aed3d3a6f0804a625b?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Bob</media:title>
		</media:content>

		<media:content url="http://i.creativecommons.org/l/by/3.0/88x31.png" medium="image">
			<media:title type="html">Creative Commons Attribution 3.0</media:title>
		</media:content>
	</item>
		<item>
		<title>OAuth or bust</title>
		<link>https://ungeekdapo.wordpress.com/2008/06/28/oauth-or-bust/</link>
					<comments>https://ungeekdapo.wordpress.com/2008/06/28/oauth-or-bust/#respond</comments>
		
		<dc:creator><![CDATA[Bob Ngu]]></dc:creator>
		<pubDate>Sat, 28 Jun 2008 01:07:05 +0000</pubDate>
				<category><![CDATA[data portability]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[oAuth]]></category>
		<guid isPermaLink="false">http://ungeekdapo.wordpress.com/?p=54</guid>

					<description><![CDATA[Hot off the press! (is that still an expression given the apparent demise of newspapers?) Mashups: Google&#8217;s Adoption Makes oAuth a Must Have for All Apps. This right after MySpace announcing support for OAuth with their Data Availability initiative the day before. IMHO, this is huge for data portability, in this case, OAuth support for [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>Hot off the press! (is that still an expression given the apparent demise of newspapers?) <a href="http://www.readwriteweb.com/archives/google_oauth.php">Mashups: Google&#8217;s Adoption Makes oAuth a Must Have for All Apps</a>. This right after <a href="http://www.techcrunch.com/2008/06/26/myspace-opens-up-the-data-pipe-with-launch-of-data-availability/">MySpace announcing support for OAuth with their Data Availability initiative</a> the day before. </p>
<p>IMHO, this is <strong>huge</strong> for data portability, in this case, OAuth support for all Google Data APIs, everything from Gmail contacts to Google Calendar to Docs to YouTube. Bottom line, users no longer need to give up their confidential Google accounts username and password to 3rd party services in order for the 3rd party services to access their data on Google services. I suspect that Google is doing this because it helps them become the service provider of choice using an open and standard means of authentication hence channeling even more traffic through Google servers that they can figure out how to monetize later, much like their Friend Connect effort.</p>
<p>This is a major win for OAuth, in fact I would say that OAuth has now become a bigger player than OpenID in the space of data portability technologies. Given the recent history of big players announcing back to back support of similar features, I predict (ok I hope) that Facebook and Microsoft will follow suit.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://ungeekdapo.wordpress.com/2008/06/28/oauth-or-bust/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">54</post-id>
		<media:content url="https://0.gravatar.com/avatar/f8141d64548e2f858c28fc462f0545798ff7a6bde49a10aed3d3a6f0804a625b?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Bob</media:title>
		</media:content>
	</item>
		<item>
		<title>Is MySpace data availability truly more open?</title>
		<link>https://ungeekdapo.wordpress.com/2008/06/26/is-myspace-data-availability-truly-more-open/</link>
					<comments>https://ungeekdapo.wordpress.com/2008/06/26/is-myspace-data-availability-truly-more-open/#comments</comments>
		
		<dc:creator><![CDATA[Bob Ngu]]></dc:creator>
		<pubDate>Thu, 26 Jun 2008 17:43:39 +0000</pubDate>
				<category><![CDATA[data portability]]></category>
		<category><![CDATA[user privacy]]></category>
		<category><![CDATA[data availability]]></category>
		<category><![CDATA[Facebook]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[Google Friend Connect]]></category>
		<category><![CDATA[MySpace]]></category>
		<guid isPermaLink="false">http://ungeekdapo.wordpress.com/?p=53</guid>

					<description><![CDATA[In the post MySpace Opens Up The Data Pipe With Full Launch Of Data Availability, Arrington praised MySpace on fully launching data availability MySpace is taking a much more interesting approach than Google, which controls data sent to third party sites via an iframe. MySpace is actually streaming data to these sites, which allows for [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>In the post <a href="http://www.techcrunch.com/2008/06/26/myspace-opens-up-the-data-pipe-with-launch-of-data-availability/">MySpace Opens Up The Data Pipe With Full Launch Of Data Availability</a>, Arrington praised MySpace on fully launching data availability</p>
<blockquote><p>MySpace is taking a much more interesting approach than Google, which controls data sent to third party sites via an iframe. MySpace is actually streaming data to these sites, which allows for true integration between the services, not just a bolted-on social tool.</p></blockquote>
<p>My initial reaction is awesome, now I (as a 3rd party service provider) can consume the open user data but reading further into the article</p>
<blockquote><p>Since actual data is being streamed out of MySpace, they have a strict terms of use policy that forbids third party sites from storing or caching the data, other than the unique MySpace user id of the user. Each time a page is rendered the third party must re-request the data from MySpace via a set of APIs. That means any changes by the user to their MySpace profile data or friends list will be instantly applied across third parties who access the data.</p></blockquote>
<p>So basically MySpace TOS forbids me to do anything more than what is currently allowed by Google Friend Connect. Granted that there is a technical difference between the two, Google Friend Connect uses an iframe and MySpace actually lets the data out, there is no inherent difference in the 3rd party service provider ability to consume the data. In fact I would argue that it is more work for the 3rd party service provider to provide a UI page to render the data rather than just sticking in an iframe and letting Google do the heavy lifting. </p>
<p>Saying that MySpace&#8217;s data availability solution solves the problem of constant syncing of data so that the users remain in control is like Facebook saying that they are blocking Google Friend Connect due to user privacy concerns. IMHO the real reason is to <strong>maintain control</strong> and quoting the user privacy concern is merely a convenient PR front for both companies. I am surprised that Arrington is buying into MySpace&#8217;s PR spiel especially since he called Facebook on their user privacy concern blocking Google Friend Connect. </p>
]]></content:encoded>
					
					<wfw:commentRss>https://ungeekdapo.wordpress.com/2008/06/26/is-myspace-data-availability-truly-more-open/feed/</wfw:commentRss>
			<slash:comments>2</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">53</post-id>
		<media:content url="https://0.gravatar.com/avatar/f8141d64548e2f858c28fc462f0545798ff7a6bde49a10aed3d3a6f0804a625b?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Bob</media:title>
		</media:content>
	</item>
		<item>
		<title>Time to define open privacy standards?</title>
		<link>https://ungeekdapo.wordpress.com/2008/06/23/time-to-define-open-privacy-standards/</link>
					<comments>https://ungeekdapo.wordpress.com/2008/06/23/time-to-define-open-privacy-standards/#comments</comments>
		
		<dc:creator><![CDATA[Bob Ngu]]></dc:creator>
		<pubDate>Mon, 23 Jun 2008 20:03:42 +0000</pubDate>
				<category><![CDATA[data portability]]></category>
		<category><![CDATA[user privacy]]></category>
		<guid isPermaLink="false">http://ungeekdapo.wordpress.com/?p=52</guid>

					<description><![CDATA[Today, I came across this post &#8220;Are shoeboxes better than Flickr?&#8221; and it got me wondering (again) whether it is time to define open privacy standards much like OpenID did for identity and OAuth did for authentication / authorization. I come across such privacy discussions frequently but nowhere have I seen any consensus on privacy [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>Today, I came across this post <a href="http://www.ownyouridentity.com/2008/06/23/are-shoeboxes-better-than-flickr/">&#8220;Are shoeboxes better than Flickr?&#8221;</a> and it got me wondering (again) whether it is time to define open privacy standards much like OpenID did for identity and OAuth did for authentication / authorization. </p>
<p>I come across such privacy discussions frequently but nowhere have I seen any consensus on privacy standards other than broad sweeping statements or wishes such as (quoting from the above article)</p>
<blockquote><p>I have a policy which I assert over my stuff that I control, which is this protected zone in the cloud. And I have some real control over how I define policies over that thing and who gets access to it and on what terms. And I get to audit that access in a coherent way.</p></blockquote>
<p>As I said in a comment on the above post, this is a loaded statement or perhaps the devil is in the details. It&#8217;s not like people haven&#8217;t tried, I know for a fact that there were several such discussions at dataportability.org that never reached any consensus (check out the policy group threads), plus numerous posts by Michael Arrington, Robert Scoble, Marc Canter, Steve Gillmor, etc. My personal take on it &#8220;<strong><a href="https://ungeekdapo.wordpress.com/2008/05/19/my-data-and-having-it-my-way/">user privacy is a personal and individual thing and is also dependent on the context of usage</a></strong>&#8220;. I attempted to define some levels of privacy controls that make sense but it is far from complete. Marc Canter has a similar idea and calls it <a href="http://blog.broadbandmechanics.com/2008/05/how-should-dynamic-privacy-work">dynamic privacy</a>. </p>
<p>I understand that this is a difficult area to tackle but I think it is time to define open privacy standards much like the approach taken by OpenID and OAuth. Let&#8217;s start with something small and tangible for 1.0 version and build on it based on real-world usage on what works and what doesn&#8217;t work, essentially going it the agile way. </p>
]]></content:encoded>
					
					<wfw:commentRss>https://ungeekdapo.wordpress.com/2008/06/23/time-to-define-open-privacy-standards/feed/</wfw:commentRss>
			<slash:comments>3</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">52</post-id>
		<media:content url="https://0.gravatar.com/avatar/f8141d64548e2f858c28fc462f0545798ff7a6bde49a10aed3d3a6f0804a625b?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Bob</media:title>
		</media:content>
	</item>
		<item>
		<title>Reality bites</title>
		<link>https://ungeekdapo.wordpress.com/2008/06/13/reality-bites/</link>
					<comments>https://ungeekdapo.wordpress.com/2008/06/13/reality-bites/#respond</comments>
		
		<dc:creator><![CDATA[Bob Ngu]]></dc:creator>
		<pubDate>Fri, 13 Jun 2008 23:09:56 +0000</pubDate>
				<category><![CDATA[data portability]]></category>
		<category><![CDATA[Chi.mp]]></category>
		<category><![CDATA[DiSo]]></category>
		<category><![CDATA[Google Friend Connect]]></category>
		<category><![CDATA[Google Social Graph]]></category>
		<category><![CDATA[opensocial]]></category>
		<guid isPermaLink="false">http://ungeekdapo.wordpress.com/?p=51</guid>

					<description><![CDATA[Today a couple of posts wondered out loud if social networking has peaked Social Networking Gets a Sanity Check by Om Malik Social Networking: Taking Off or Taking a Dive? by Sarah Perez In particular, Malik thinks that the market has transitioned onto niche social networks, in his words The way I see it, the [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>Today a couple of posts wondered out loud if social networking has peaked</p>
<ul>
<li><a href="http://gigaom.com/2008/06/13/social-networking-gets-a-sanity-check/">Social Networking Gets a Sanity Check</a> by Om Malik</li>
<li><a href="http://www.readwriteweb.com/archives/social_networking_taking_off_or_taking_a_dive.php">Social Networking: Taking Off or Taking a Dive?</a> by Sarah Perez</li>
</ul>
<p>In particular, Malik thinks that the market has transitioned onto niche social networks, in his words</p>
<blockquote><p>The way I see it, the market has shifted its focus onto niche social networks, such as those dedicated to sports, music, automobiles and pets. You know, sites like Dogster! They have focused, engaged communities, which means they can attract a higher amount of advertising dollars.</p></blockquote>
<p>In the very first comment on that post,</p>
<blockquote><p>Niraj said:</p>
<p>While it would be easier to monetize, I can’t see the niche site idea working very well because users would have to sign up at several sites to cover their different interests. Facebook and Myspace’s broader appeal give them a much larger base, and it seems like a tradeoff: easier to monetize versus easier to gain users.
</p></blockquote>
<p>Like Malik, I am seeing a shift to niche social sites because it is getting incredibly harder and harder for horizontal play sites to gain mass traction, I am also speaking from personal experience with my video aggregation site, <a href="http://www.jiggyme.com">JiggyMe</a>. </p>
<p>But Niraj does have a point that it is a pain for users to repeatedly sign up and re-enter the same profile information and recreate the social graph over and over. And this is what data portability advocates have always said, a user shouldn&#8217;t have to do that time and again. The real value-add for social sites should be the services they provide, not the user and social graph data. I am seeing this happening already now with projects like <a href="http://code.google.com/p/diso/">DiSo</a>, <a href="http://www.google.com/friendconnect/">Google Friend Connect</a>, <a href="http://sites.google.com/a/opensocial.org/opensocial/OpenSocial-Foundation-Proposal">Open Social Foundation</a>, <a href="http://code.google.com/apis/socialgraph/">Google Social Graph API</a>, and stealth startup <a href="http://chi.mp/">chi.mp</a>. These startups and projects aim to make user and social graph data more open and accessible so social sites can instead focus on providing value-add services instead of keeping users data walled in. Mind you, this is just the start and there is plenty of work to be done to make the user experience seamless, but it is a good start.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://ungeekdapo.wordpress.com/2008/06/13/reality-bites/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">51</post-id>
		<media:content url="https://0.gravatar.com/avatar/f8141d64548e2f858c28fc462f0545798ff7a6bde49a10aed3d3a6f0804a625b?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Bob</media:title>
		</media:content>
	</item>
		<item>
		<title>Shameless self-promotion</title>
		<link>https://ungeekdapo.wordpress.com/2008/06/13/shameless-self-promotion/</link>
					<comments>https://ungeekdapo.wordpress.com/2008/06/13/shameless-self-promotion/#comments</comments>
		
		<dc:creator><![CDATA[Bob Ngu]]></dc:creator>
		<pubDate>Fri, 13 Jun 2008 20:30:03 +0000</pubDate>
				<category><![CDATA[data portability]]></category>
		<category><![CDATA[in the wild snapshot]]></category>
		<category><![CDATA[podcast]]></category>
		<guid isPermaLink="false">http://ungeekdapo.wordpress.com/?p=50</guid>

					<description><![CDATA[My in the wild posts got some attention this week and I felt compelled to share them with you &#8211; like I said, shameless self-promotion 🙂 DataPortability.org May Progress report, click on either the HTML or PDF link to see the actual report. Trent Adams, an active DataPortability.org contributor and founder of MatchMine, interviewed me [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>My <a href="http://wordpress.com/tag/in-the-wild-snapshot/">in the wild posts</a> got some attention this week and I felt compelled to share them with you &#8211; like I said, shameless self-promotion <img src="https://s0.wp.com/wp-content/mu-plugins/wpcom-smileys/twemoji/2/72x72/1f642.png" alt="🙂" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>
<ul>
<li>DataPortability.org <a href="http://wiki.dataportability.org/x/A4Yj">May Progress report</a>, click on either the <a href="http://danielabarbosa.com/DataPortabilityMay2008Report.htm">HTML</a> or <a href="http://wiki.dataportability.org/download/attachments/1115009/DataPortabilityMayReport2008.pdf">PDF</a> link to see the actual report.</li>
<li>Trent Adams, an active DataPortability.org contributor and founder of <a href="http://www.matchmine.com/">MatchMine</a>, interviewed me on my in the wild posts for his regular podcast series. You can listen to my podcast interview <a href="http://www.mediaslate.org/wp/2008/06/13/dataportability-in-motion-podcast-episode-11/">here</a>. While you are there, check out his other <a href="http://www.mediaslate.org/wp/dataportability/dataportability-in-motion-podcast/">podcast interviews</a> with people like Plaxo &#8211; Joseph Smarr, Chief Platform Architect, John McCrae, VP Marketing; Google &#8211; Kevin Marks, Developer Advocate for OpenSocial, Robert Scoble, Managing Director of FastCompany.tv, etc.
</li>
</ul>
<p>As a side note, I plan on changing the focus of my startup, <a href="http://www.jiggyme.com/">JiggyMe</a> (video aggregation site), to feature only technology videos, so feel free to add your technology videos there.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://ungeekdapo.wordpress.com/2008/06/13/shameless-self-promotion/feed/</wfw:commentRss>
			<slash:comments>2</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">50</post-id>
		<media:content url="https://0.gravatar.com/avatar/f8141d64548e2f858c28fc462f0545798ff7a6bde49a10aed3d3a6f0804a625b?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Bob</media:title>
		</media:content>
	</item>
		<item>
		<title>In the wild snapshot#3: DiSo profile plugin</title>
		<link>https://ungeekdapo.wordpress.com/2008/06/02/in-the-wild-snapshot3-diso-profile-plugin/</link>
					<comments>https://ungeekdapo.wordpress.com/2008/06/02/in-the-wild-snapshot3-diso-profile-plugin/#comments</comments>
		
		<dc:creator><![CDATA[Bob Ngu]]></dc:creator>
		<pubDate>Mon, 02 Jun 2008 16:13:51 +0000</pubDate>
				<category><![CDATA[data portability]]></category>
		<category><![CDATA[in the wild snapshot]]></category>
		<category><![CDATA[DiSo]]></category>
		<category><![CDATA[hCard]]></category>
		<category><![CDATA[Microformats]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[WordPress plugin]]></category>
		<category><![CDATA[XFN]]></category>
		<guid isPermaLink="false">http://ungeekdapo.wordpress.com/?p=49</guid>

					<description><![CDATA[I had an excellent conversation with Stephen Paul Weber, an active DiSo plugin developer, on his experience with the DiSo profile plugin. For those of you unfamiliar with this series of posts, the idea is to create blog-length interviews with various in the wild apps describing their processes and the technologies that they use with [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>I had an excellent conversation with <a href="http://singpolyma.net/">Stephen Paul Weber</a>, an active DiSo plugin developer, on his experience with the <a href="http://singpolyma.net/plugins/diso-profile/">DiSo profile plugin</a>. For those of you unfamiliar with this series of posts, the idea is to create blog-length interviews with various in the wild apps describing their processes and the technologies that they use with regards to data portability. The goal is to profile real use cases, solutions, and lessons learned when it comes to the current state of affairs for data portability technology. Note that these posts aren’t meant to recommend or not recommend certain technology, I leave that up to the developers/architects to decide based on their needs. If you have such an app and are interested in being interviewed, please leave me a comment on one of my posts and I will get in touch with you.</p>
<p><strong>DiSo Project Background</strong><br />
Straight from the <a href="http://groups.google.com/group/diso-project">DiSo Google group</a> About page</p>
<blockquote>
<p><a href="http://redmonk.net/archives/2007/12/05/diso/">Social networks are becoming more open, more interconnected, and more distributed</a>. Many of us in the web creation world are embracing and promoting web standards &#8211; both client-side and server-side. Microformats, standard apis, and open-source software are key building blocks of these technologies.</p>
<p><a href="http://diso-project.org">DiSo</a> (dee • zoh) is an umbrella project for a group of open source implementations of these <em>distributed social networking</em> concepts. or as Chris Messina puts it:“to build a social network with its skin inside out”.
</p></blockquote>
<p>You can also listen to an <a href="http://factoryjoe.com/blog/2008/01/23/the-existential-diso-interview/">interview</a> by Chris Messina on Chris Messina about DiSo.</p>
<p>At this stage, DiSo plugins only work on self-hosted WordPress blogs which means if you have a blog on wordpress.com, you are out of luck. Also, all DiSo plugins currently are written in PHP, WordPress&#8217;s choice of language. Visit the WordPress site to get instructions on how to host your own WordPress blog and install plugins.</p>
<p><strong>Application Overview</strong><br />
The DiSo WordPress profile plugin has the following main features</p>
<ul>
<li>
When a user signs up for a WordPress account, the plugin makes it easier to import the user&#8217;s profile information via hCard and XFN (if available)
</li>
<li>
Once a user has signed up for a WordPress account, the plugin makes it easier for the user (now blog owner) to publish their own profile with standards like hcard, XFN
</li>
<li>
Supports permission features allowing blog owner to restrict access to his information based on predefined relationship, e.g., I can&#8217;t see his phone number but friends of him who login with their OpenID and are present on his authorized list of friends can see his phone number
</li>
<li>
There is a sidebar widget that displays names/avatars of most recently logged in visitors
</li>
</ul>
<p><strong>Technology</strong><br />
The key technical pieces are hCard, XFN (rel-me, rel-contact), PHP5, and standard WordPress plugin architecture. The plugin should work on WordPress 2.0 and above, and has been tested on 2.3 through 2.5. Currently the plugin mimics SGAPI functionality without the FOAF bit. Also, FOAF was considered but not implemented, another item for the future perhaps.  He plans to add Google Social Graph API (SGAPI) support, but it wasn&#8217;t available when the plugin was written, so it is something to consider for the future &#8211; Steve Ivy wrote a PHP wrapper for SGAPI.</p>
<p>While the plugin works with OpenID, it does not require OpenID. There is a button to import profile and can fetch profile information if it is not an OpenID URL. OpenID profile extraction for XFN and hCard is automatic upon registeration and login. For OpenID feature to work, it needs the WP-OpenID plugin. No other libraries or plugins are required, in fact the import button works fine if the WP-OpenID is not installed. To display the user&#8217;s profile, the user needs to add a <a href="http://codex.wordpress.org/Template_Tags">WordPress template tag</a>. There is a page token for rendering on a WordPress page and a PHP function for addition directly to the template (documented on the plugin page). So far, most people don&#8217;t use it as a sidebar widget and instead display their profile information inline in the blog.</p>
<p>For an example of the plugin in action, check out <a href="http://singpolyma.net/">Stephen&#8217;s blog</a>, it powers the top half of his main page and the avatars of recent visitors in his sidebar.</p>
<p><strong>Lessons learned</strong><br />
Some people have hCard on their OpenID pages via OpenID delegation usually or directly on the page. A large number of people have rel-me links going to their main profile somewhere else. In his opinion, the biggest hurdle is still HTML parsing in PHP which is surprsing to me since PHP is such a popular web development language. Event though PHP has excellent XML support but if the HTML is broken or incomplete as it is often the case in the world wild web, there is no library to handle that. An option is to fix it with HTML Tidy but most shared service providers (like DreamHost) do not have HTML Tidy installed. Without HTML Tidy, the plugin has to run the page through W3C remote tidy proxy which can be slow. Another option is to use HTML Purifier which is a re-implementation of HTML Tidy in PHP.</p>
<p>The current plugin user base is primarily DiSo developers and he has not gotten any feedback from non-DiSo developers. He noted that there is a goofy WordPress thing where the permissions model is based on the contacts list but WordPress only supports one blogroll list, so everyone on that list has the same permission. This is not a problem for most blogs but it could be a problem for multi-authors blog. There is no affiliation with WordPress other than it is a WordPress plugin.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://ungeekdapo.wordpress.com/2008/06/02/in-the-wild-snapshot3-diso-profile-plugin/feed/</wfw:commentRss>
			<slash:comments>9</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">49</post-id>
		<media:content url="https://0.gravatar.com/avatar/f8141d64548e2f858c28fc462f0545798ff7a6bde49a10aed3d3a6f0804a625b?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Bob</media:title>
		</media:content>
	</item>
		<item>
		<title>OAuth authentication flow</title>
		<link>https://ungeekdapo.wordpress.com/2008/05/25/oauth-authentication-flow/</link>
					<comments>https://ungeekdapo.wordpress.com/2008/05/25/oauth-authentication-flow/#respond</comments>
		
		<dc:creator><![CDATA[Bob Ngu]]></dc:creator>
		<pubDate>Sun, 25 May 2008 19:21:13 +0000</pubDate>
				<category><![CDATA[data portability]]></category>
		<category><![CDATA[oAuth]]></category>
		<guid isPermaLink="false">http://ungeekdapo.wordpress.com/?p=47</guid>

					<description><![CDATA[I came across this thread by Jeff Hodges on the Google OAuth group and thought it worth sharing.]]></description>
										<content:encoded><![CDATA[<p>I came across this <a href="http://groups.google.com/group/oauth/msg/cab0f8f18fcaec58?">thread</a> by Jeff Hodges on the <a href="http://groups.google.com/group/oauth">Google OAuth group</a> and thought it worth sharing.</p>
<p><a href="https://ungeekdapo.wordpress.com/wp-content/uploads/2008/05/oauth_authenticatio_flow_609x3660.jpg"><img data-attachment-id="48" data-permalink="https://ungeekdapo.wordpress.com/2008/05/25/oauth-authentication-flow/oauth_authenticatio_flow_609x3660/" data-orig-file="https://ungeekdapo.wordpress.com/wp-content/uploads/2008/05/oauth_authenticatio_flow_609x3660.jpg" data-orig-size="609,3660" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;}" data-image-title="OAuth authentication flow" data-image-description="&lt;p&gt;OAuth authentication flow&lt;/p&gt;
" data-image-caption="&lt;p&gt;OAuth authentication flow&lt;/p&gt;
" data-medium-file="https://ungeekdapo.wordpress.com/wp-content/uploads/2008/05/oauth_authenticatio_flow_609x3660.jpg?w=50" data-large-file="https://ungeekdapo.wordpress.com/wp-content/uploads/2008/05/oauth_authenticatio_flow_609x3660.jpg?w=170" src="https://ungeekdapo.wordpress.com/wp-content/uploads/2008/05/oauth_authenticatio_flow_609x3660.jpg?w=500&#038;h=3004" alt="OAuth authentication flow" width="500" height="3004" class="alignnone size-full wp-image-48" srcset="https://ungeekdapo.wordpress.com/wp-content/uploads/2008/05/oauth_authenticatio_flow_609x3660.jpg?w=500&amp;h=3005 500w, https://ungeekdapo.wordpress.com/wp-content/uploads/2008/05/oauth_authenticatio_flow_609x3660.jpg?w=25&amp;h=150 25w, https://ungeekdapo.wordpress.com/wp-content/uploads/2008/05/oauth_authenticatio_flow_609x3660.jpg?w=50&amp;h=300 50w, https://ungeekdapo.wordpress.com/wp-content/uploads/2008/05/oauth_authenticatio_flow_609x3660.jpg 609w" sizes="(max-width: 500px) 100vw, 500px" /></a></p>
]]></content:encoded>
					
					<wfw:commentRss>https://ungeekdapo.wordpress.com/2008/05/25/oauth-authentication-flow/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">47</post-id>
		<media:content url="https://0.gravatar.com/avatar/f8141d64548e2f858c28fc462f0545798ff7a6bde49a10aed3d3a6f0804a625b?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Bob</media:title>
		</media:content>

		<media:content url="https://ungeekdapo.wordpress.com/wp-content/uploads/2008/05/oauth_authenticatio_flow_609x3660.jpg" medium="image">
			<media:title type="html">OAuth authentication flow</media:title>
		</media:content>
	</item>
		<item>
		<title>In the wild snapshot#2: floe.tv</title>
		<link>https://ungeekdapo.wordpress.com/2008/05/24/in-the-wild-snapshot2-floetv/</link>
					<comments>https://ungeekdapo.wordpress.com/2008/05/24/in-the-wild-snapshot2-floetv/#comments</comments>
		
		<dc:creator><![CDATA[Bob Ngu]]></dc:creator>
		<pubDate>Sat, 24 May 2008 18:17:35 +0000</pubDate>
				<category><![CDATA[data portability]]></category>
		<category><![CDATA[in the wild snapshot]]></category>
		<category><![CDATA[AS3]]></category>
		<category><![CDATA[ASP.NET]]></category>
		<category><![CDATA[FLEX]]></category>
		<category><![CDATA[oAuth]]></category>
		<category><![CDATA[openID]]></category>
		<category><![CDATA[WRFS]]></category>
		<category><![CDATA[XRDS]]></category>
		<category><![CDATA[XRDS-S]]></category>
		<guid isPermaLink="false">http://ungeekdapo.wordpress.com/?p=45</guid>

					<description><![CDATA[An excellent in the wild post written by Josh Patterson about his floe.tv project with some feedback from me, so the credit really goes to him. For those of you unfamiliar with this series of posts, the idea is to create blog-length interviews with various in the wild apps describing their processes and the technologies [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>An excellent in the wild post written by <a href="http://jpatterson.floe.tv">Josh Patterson</a> about his floe.tv project with some feedback from me, so the credit really goes to him. For those of you unfamiliar with this series of posts, the idea is to create blog-length interviews with various in the wild apps describing their processes and the technologies that they use with regards to data portability. The goal is to profile real use cases, solutions, and lessons learned when it comes to the current state of affairs for data portability technology. Note that these posts aren&#8217;t meant to recommend or not recommend certain technology, I leave that up to the developers/architects to decide based on their needs. If you have such an app and are interested in being interviewed, please leave me a comment on one of my posts and I will get in touch with you. </p>
<p><strong>Application Overview</strong><br />
Basically with floe.tv we started out just wanting to try out some video ideas we had. We started out with a simple playlist of videos on the internet linked together at a site, which evolved into a full own video editor. After a number of months of development we hit a point where the team sat down with some users and did a testing session, asking questions and gauging responses to see how well we were hitting our marks. We came to the subject of data storage, local hardrives, and getting media online, and just as a thought exercise I asked &#8220;well, what if floe.tv just knew about all your online media by your login name, and referenced it automatically in your libraries the first time you logged in &#8212; just as if it was an app installed locally on your hd?&#8221; and immediately both of them became excited and one asked &#8220;can I do that right now? when can I use that?&#8221; and I knew from experience that the market was speaking very loudly and clearly in my direction, and that I had better listen very closely.</p>
<p>The very next meeting I posed this question to our team:</p>
<p>What if our app was &#8220;inherently installed&#8221; in the internet? What if someone logged in, and the app just acted like a desktop app that &#8220;knew&#8221; about your flickr images, your youtube videos, it knew about your myspace friends, facebook friends, and automatically treated them as one logical database, one logical social graph? And someone started right into an app tutorial right off the bat with their contacts, files, and assets already referenced (but fully respecting privacy, control, etc)?</p>
<p>So the next question naturally becomes &#8220;that all sounds really great, but &#8230; how do we get there?&#8221;</p>
<p>From there we really began to push a &#8220;what if this/that&#8221; scenario, and drew up our ideas into a document entitled <a href="http://cowbell.floe.tv/WRFS_11_20_2007.html">WRFS</a> and from that we began to re-engineer the floe.tv app towards a truly linked data experience.</p>
<p><strong>Technology</strong><br />
We are currently using FLEX/as3 for the editor and player with ASP.NET for the server technology. Discovery is a big deal with how I view next gen web apps &#8212; dynamically finding data at runtime without having to go through &#8220;Big Data&#8217;s&#8221; walls  to get to it. How I see this happening is</p>
<ol>
<li>
the user logs in with an identity url, be it an openID or a XRDS file location. floe.tv is an openID only application, but user&#8217;s can map multiple openIDs to one account with it.</li>
<li>
the app authenticates the user, and then uses multiple fallback methods to find the XRDS-S file if not specified.</li>
<li>
The XRDS file is parsed, and relevant data types (here image and video) location uris are pulled out</li>
<li>Each uri points to a data container, which is then queried via its API for a list of resources the user has stored there.</li>
<li>these results are then aggregated back together into a single &#8220;recordset&#8221; to be returned to the floe.tv application layer</li>
</ol>
<p>The fallback methods for XRDS discovery (done in the FLEX client) are ordered as:</p>
<ol>
<li>First do basic yadis discovery to see if the identity delegate is the openID provider or a blog of some sort head link delegation setup. Either the openID provider or the XRDS location may here, or both. In some cases, such as the DiSo XRDS plugin, the XRDS file located in the head link tag will have the openID provider location.</li>
<li>The secondary method we have kicked around is to query the openID provider for an Attribute Exchange key that points to the XRDS file. This is not well defined yet but has been discussed amongst various groups.</li>
<li>Lastly we fallback to having our flex app prompt the user for a XRDS url so that we can &#8220;enhance their user experience&#8221;.</li>
</ol>
<p>So although I think our secondary option with the AX key is a little shaky right now, overall we degrade gracefully.</p>
<p>For a quick demo of how some of the data query and aggregation mechanics might work, I&#8217;ve built a <a href="http://cowbell.floe.tv/rest/wrfs_demo_pauls_images.html">short demo</a> illustrating the step by step mechanics.</p>
<p><strong>Lessons learned</strong><br />
We aren&#8217;t done with this application, obviously, and a lot of work remains to be done &#8211; I should note that I am currently at Step 2 of 5 as stated above. However, the application is evolving into the embryo of what I think a linked data application can and will be. What I can share are the places that we are actively looking for solutions, simple decentralized solutions, that solve these issues.</p>
<p>One thing that is slowly changing is the perception of cross domain scripting on the internet. As services get more complex, and require more aggregation of data from multiple sources, we are going to push more data handling duties to the client, as scalability will suffer. For flash crossdomain scripting we need the crossdomain.xml file present on the server of the api would like to call for it to work. This is a trivial thing to setup as it consists of a  simple xml file located off of the subdirectory level you wish to grant access to.<br />
Examples:<br />
<a href="http://api.flickr.com/crossdomain.xml">http://api.flickr.com/crossdomain.xml</a><br />
<a href="http://api.floe.tv/crossdomain.xml">http://api.floe.tv/crossdomain.xml</a><br />
Once this file is exposed, the flash runtime will then allow calls from the client to those servers.</p>
<p>For cross domain client side javascript, things get a little bit trickier. A lot of cross domain tricks, such as widget embedding, is done via iframe embeds. This type of embedding significantly restricts access to the rest of the page, so effectively the widget is isolated in terms of interaction with the rest of the page DOM. Firefox 3 will allow cross domain client side scripting with certain <a href="http://ejohn.org/blog/cross-site-xmlhttprequest/">http headers</a> being present on the server response from the remote cross domain endpoint. I&#8217;m not sure how future versions of Internet Explorer will address this issue, but I think evolutionary pressure from both Firefox and Flash will yield some effect there. A new development that is supposed to make javascript more secure is <a href="http://groups.google.com/group/google-caja-discuss">Google Caja</a>. I&#8217;ve begun to follow Google Gaja but I&#8217;ve yet to deeply jump into that project.</p>
<p>We&#8217;ve been waiting to see how the discovery wars pan out, as it stands now XRDS-S is looking like the service index of choice amongst the big players (presently Yahoo is endorsing it, hiring Eran Hammer Lahav as their <a href="http://www.hueniverse.com/hueniverse/2008/05/new-ground-rule.html">Open Standards Evangelist</a>. How the XRDS resource is discovered automatically without a tremendous amount of user interaction is something that we are taking many approaches towards, as discussed above. For now we&#8217;re going to focus on finding XRDS files as our catalog of service endpoints for a user. The DiSo project is going to be publishing its user&#8217;s service endpoints in the XRDS format and already has a plugin for it, so I think in the short term we&#8217;ll be focusing on consuming that data in terms of an early conceptual demo in runtime linked data.</p>
<p>Once we find the XRDS file, we aren&#8217;t out of the woods. How do I set my XRDS file up so that I can tell the floe.tv application that I have &#8220;images in flickr&#8221;? This is a fundamental question being setup and worked on at the site <a href="http://www.xrdstype.net/">http://www.xrdstype.net/</a> by many different groups and people, and has yet to fully be fleshed out.</p>
<p>There&#8217;s also the issue of once we find a data endpoint, how do we talk to it? ATOM? Some sort of standard data interop api that spits out RDF? In a perfect world I&#8217;d love to see a self organizing web, a linked data web that can find a data endpoint at runtime, find its semantic schema, and wire itself such that it can talk to that api without ever needing user intervention &#8212; it simply will understand how to talk to it.</p>
<p>Another key development will be the permission system, possibly using OAuth+Discovery to automate the updating of a XRDS-S file for someone when they add data to a service. I need to learn a lot more about OAuth and the direction its heading. I&#8217;d prefer a world where the user doesn&#8217;t need to manually go to a site to allow their resources to be used by a third party, but for now, this is how we have to operate.</p>
<p>So really, I think I have more &#8220;lessons underway&#8221; than &#8220;lessons learned&#8221;, but sharing this information is key since it sparks interest in other like minded developers who may know a lot more about some of these areas than me. There&#8217;s going to be some places that we punt and just hard code some scaffolding code in to just get going, but over time I&#8217;d like to evolve towards a linked data web that auto discovers new connections at runtime and self organizes to give a smarter and far more intuitive user experience than we&#8217;ve seen so far.</p>
<p>If you are interesting in linking data or trying some data interop experiments, please feel free to email me (jpatterson at floe.tv) or check out the <a href="http://groups.google.com/group/wrfs">WRFS workgroup</a> or my blog <a href="http://jpatterson.floe.tv">http://jpatterson.floe.tv</a></p>
<p>Feedback and suggestions are welcomed.  </p>
]]></content:encoded>
					
					<wfw:commentRss>https://ungeekdapo.wordpress.com/2008/05/24/in-the-wild-snapshot2-floetv/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">45</post-id>
		<media:content url="https://0.gravatar.com/avatar/f8141d64548e2f858c28fc462f0545798ff7a6bde49a10aed3d3a6f0804a625b?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Bob</media:title>
		</media:content>
	</item>
		<item>
		<title>I like to FOAF you</title>
		<link>https://ungeekdapo.wordpress.com/2008/05/21/i-like-to-foaf-you/</link>
					<comments>https://ungeekdapo.wordpress.com/2008/05/21/i-like-to-foaf-you/#comments</comments>
		
		<dc:creator><![CDATA[Bob Ngu]]></dc:creator>
		<pubDate>Wed, 21 May 2008 04:08:23 +0000</pubDate>
				<category><![CDATA[data portability]]></category>
		<category><![CDATA[FOAF]]></category>
		<category><![CDATA[hCard]]></category>
		<category><![CDATA[hFOAF]]></category>
		<category><![CDATA[Microformats]]></category>
		<category><![CDATA[XFN]]></category>
		<guid isPermaLink="false">http://ungeekdapo.wordpress.com/?p=43</guid>

					<description><![CDATA[No, it isn&#8217;t a proposition, so get your mind out of the gutter 🙂 FOAF stands for Friend-of-a-Friend and is a RDF taxonomy capable of describing a person and his/her friend(s) in far more glory details than XFN, in fact it is a competing standard. Reading your mind, you are probably going to ask me, [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>No, it isn&#8217;t a proposition, so get your mind out of the gutter <img src="https://s0.wp.com/wp-content/mu-plugins/wpcom-smileys/twemoji/2/72x72/1f642.png" alt="🙂" class="wp-smiley" style="height: 1em; max-height: 1em;" /> FOAF stands for Friend-of-a-Friend and is a RDF taxonomy capable of describing a person and his/her friend(s) in far more glory details than XFN, in fact it is a competing standard. Reading your mind, you are probably going to ask me, what is RDF? RDF (first published specs in 1999) stands for Resource Description Framework which means absolutely nothing to most people however it is often touted as the foundation for the so-called semantic web. If you want a good introductory RDF post, check out <a href="http://www.xml.com/pub/a/2001/01/24/rdf.html">What Is RDF</a>. A synopsis of RDF extracted from this ReadWriteWeb post <a href="http://www.readwriteweb.com/archives/semantic_web_patterns.php">Semantic Web Patterns: A Guide to Semantic Technologies</a></p>
<blockquote><p>RDF is a powerful, graph-based language for declaring things, and attributes and relationships between things. In a simplistic way, one can think of RDF as the language that allows expressing truths like: Alex IS human (type expression), Alex HAS a brain (attribute expression), and Alex IS the father of Alice, Lilly, and Sofia (relationship expression). RDF is powerful, but because it is highly recursive, precise, and mathematically sound, it is also complex.</p></blockquote>
<p>On a high level, FOAF has the following categories</p>
<ul>
<li>Person&#8217;s basic information such as name, nick, title, homepage, email, surname, first name, given name, email (expressed as mbox), etc. </li>
<li>Person&#8217;s extended information such as blog, interest, project, school home page, work home page, friend(s) he knows, etc.</li>
<li>Person&#8217;s online accounts (includes instant messaging) </li>
<li>Person&#8217;s projects and groups</li>
<li>Person&#8217;s documents and images</li>
</ul>
<p>As you can see, it allows for extensive coverage of a person&#8217;s information. If you want the full details, check out <a href="http://xmlns.com/foaf/spec/#term_weblog">FOAF Vocabulary Specification 0.91</a>. Assuming you have a basic knowledge of XML, let&#8217;s take a simple example to illustrate how FOAF is actually written.<br />
<code>            </p>
<div align="left" style="border:solid;padding:5px;">
&lt;rdf:RDF<br />
      xmlns:rdf=&quot;http://www.w3.org/1999/02/22-rdf-syntax-ns#&quot;<br />
      xmlns:foaf=&quot;http://xmlns.com/foaf/0.1/&quot;&gt;</p>
<p>&lt;foaf:Person&gt;<br />
      &lt;foaf:name&gt;John Doe&lt;/foaf:name&gt;<br />
      &lt;foaf:mbox rdf:resource=&quot;mailto:johndoe@hisemailprovider.com&quot; /&gt;<br />
&lt;/foaf:Person&gt;</p>
<p>&lt;/rdf:RDF&gt;
</p></div>
<p></code></p>
<p>The above XML snippet describes a person&#8217;s name and email, obviously John Doe is not a real name and johndoe@hisemailprovider.com is not a real email but you get the idea. Technically this describes a person, not the &#8220;me&#8221; identity as defined by XFN rel-me. </p>
<p>Let&#8217;s take a more slightly more complex example<br />
<code>            </p>
<div align="left" style="border:solid;padding:5px;">
&lt;rdf:RDF<br />
      xmlns:rdf=&quot;http://www.w3.org/1999/02/22-rdf-syntax-ns#&quot;<br />
      xmlns:foaf=&quot;http://xmlns.com/foaf/0.1/&quot;&gt;</p>
<p>&lt;foaf:Person&gt;</p>
<div style="padding-left:20px;">
      &lt;foaf:name&gt;John Doe&lt;/foaf:name&gt;<br />
      &lt;foaf:mbox rdf:resource=&quot;mailto:johndoe@hisemailprovider.com&quot; /&gt;<br />
      &lt;foaf:knows&gt;
</div>
<div style="padding-left:40px;">
           &lt;foaf:Person&gt;<br />
                &lt;foaf:mbox rdf:resource=&quot;mailto:jane.smith@hercompany.com&quot; /&gt;<br />
                &lt;foaf:name&gt;Jane Smith&lt;/foaf:name&gt;<br />
           &lt;/foaf:Person&gt;
</div>
<div style="padding-left:20px;">
      &lt;/foaf:knows&gt;
</div>
<p>&lt;/foaf:Person&gt;<br />
&lt;/rdf:RDF&gt;
</p></div>
<p></code></p>
<p>Basically the above FOAF says there is a person John Doe, his email is johndoe@hisemailprovider.com, he &#8220;knows&#8221; Jane Smith, and her email is jane.smith@hercompany.com. Note that &#8220;knows&#8221; does not necessarily equate to a friend, it simply means that you know someone, that person could be a friend, lover, co-worker, parent, sibling, or someone you met online but not in person, etc. For a more in-depth look at FOAF, check out <a href="http://www.ibm.com/developerworks/xml/library/x-foaf.html">XML Watch: Finding friends with XML and RDF</a>. </p>
<p>Ok, now that you know how to create basic FOAF, what next. Unlike XFN / hCard / microformats, FOAF is delivered via a file separate from any HTML markup. Creating a FOAF file is not something that a Joe Blow user will ever do manually. However, if you are curious and want to play around with creating FOAF, you can use this handy tool <a href="http://www.ldodds.com/foaf/foaf-a-matic">FOAF-o-Matic</a>. For most users, their service providers, the ones that support FOAF, will handle all the intricate details behind the scene. For example, if you have an account at <a href="http://www.mybloglog.com/">MyBlogLog</a>, you can check out their FOAF feature by appending &#8220;/foaf&#8221; to the end of your MyBlogLog member URL. If you aren&#8217;t a MyBlogLog member, here is Ken Brewster&#8217;s MyBlogLog FOAF file, <a href="http://www.mybloglog.com/buzz/members/kentbrew/foaf/">http://www.mybloglog.com/buzz/members/kentbrew/foaf/</a>, and check out his fun <a href="http://kentbrewster.com/foafster/">FOAF consuming app</a>, picture below<br />
<a href="https://ungeekdapo.wordpress.com/wp-content/uploads/2008/05/foaf_ken_brewster.jpg"><img data-attachment-id="44" data-permalink="https://ungeekdapo.wordpress.com/2008/05/21/i-like-to-foaf-you/foaf_ken_brewster/" data-orig-file="https://ungeekdapo.wordpress.com/wp-content/uploads/2008/05/foaf_ken_brewster.jpg" data-orig-size="480,476" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;}" data-image-title="Ken Brewster FOAF app" data-image-description="&lt;p&gt;Ken Brewster FOAF app&lt;/p&gt;
" data-image-caption="&lt;p&gt;Ken Brewster FOAF app&lt;/p&gt;
" data-medium-file="https://ungeekdapo.wordpress.com/wp-content/uploads/2008/05/foaf_ken_brewster.jpg?w=300" data-large-file="https://ungeekdapo.wordpress.com/wp-content/uploads/2008/05/foaf_ken_brewster.jpg?w=480" src="https://ungeekdapo.wordpress.com/wp-content/uploads/2008/05/foaf_ken_brewster.jpg?w=500" alt="Ken Brewster FOAF app"   class="alignnone size-full wp-image-44" srcset="https://ungeekdapo.wordpress.com/wp-content/uploads/2008/05/foaf_ken_brewster.jpg 480w, https://ungeekdapo.wordpress.com/wp-content/uploads/2008/05/foaf_ken_brewster.jpg?w=150&amp;h=150 150w, https://ungeekdapo.wordpress.com/wp-content/uploads/2008/05/foaf_ken_brewster.jpg?w=300&amp;h=298 300w" sizes="(max-width: 480px) 100vw, 480px" /></a></p>
<p>Since FOAF is a separate file, you have to link to it from a HTML page by adding the following HTML code within your &lt;head&gt; tag (using Kent Brewster&#8217;s FOAF URL)<br />
<code>            </p>
<div align="left" style="border:solid;padding:5px;">
&lt;link rel=&quot;meta&quot; type=&quot;application/rdf+xml&quot; title=&quot;FOAF&quot; href=&quot;http://www.mybloglog.com/buzz/members/kentbrew/foaf/&quot; /&gt;
</div>
<p></code></p>
<p>In MyBlogLog&#8217;s case, that HTML code is added automatically to a member&#8217;s profile page. I should note that in MyBlogLog&#8217;s case, the FOAF file is publicly available without any authentication allowing any search engine to crawl and index it, in fact, this information is available through Google Social Graph API but beware that there is a current limitation with Social Graph API in that Googlebot does not crawl a FOAF file linked from an HTML page, hence not making it available for the API to parse. In <a href="http://bradfitz.com/">Brad Fitz</a> own words,</p>
<blockquote><p>I just verified that the problem is the crawl coverage.  Historically Googlebot hasn&#8217;t cared about FOAF because it hasn&#8217;t used FOAF, so why hit your server fetching it just to throw it away?  Now that the SGAPI is using it, though, I need to ask Googlebot to go get that FOAF that I know exists but is uncrawled. </p></blockquote>
<p>A few parting thoughts&#8230;</p>
<ul>
<li>Chris Messina thinks that FOAF baking in relationship information is a fundamental flaw, I have to respectfully disagree because I think it is a key missing feature from XFN/hCard, at least when it comes to my <a href="https://ungeekdapo.wordpress.com/2008/05/18/in-the-wild-snapshot1-lessons-from-my-xfn-coding-experiment/">XFN consuming app</a>. Upon further reflection, I think I understand Messina&#8217;s concern about FOAF being potentially convoluted. It is due to the powerful recursive nature of RDF that can lead to circular references and if a FOAF parser doesn&#8217;t account for this, it can lead to infinite loops.</li>
<li>Since FOAF only has a &#8220;knows&#8221; property, it is less descriptive, hence less useful, than <a href="http://gmpg.org/xfn/1">XFN rel values</a> (friend, acquaintance, co-worker, neighbor, sibling, parent, child, crush, date, etc)
<li>Apparently FOAF does not have properties to specify an address, e.g.<br />
state/province, country, city, street address, quite odd indeed. However, it can be remedied by adding <a href="http://www.w3.org/TR/vcard-rdf">VCard namespace</a> to RDF.</p>
<li>The general vibe in the web development community is that FOAF is more complicated than XFN so it is more likely to see XFN in the wild than FOAF
<li>Firefox Operator plugin does not consume FOAF information</li>
<li>FOAF information is meant for app-to-app consumption unlike XFN / hCard which are embedded in HTML. Check out this post <a href="http://apassant.net/blog/2008/01/06/wordpress-foaf-openid-updated/">WordPress, FOAF, OpenID &#8211; updated</a> for a WordPress plugin retrieving FOAF profiles when users authenticate a wordpress blog with OpenID.</li>
<li>There is a recent effort, <a href="http://weborganics.co.uk/hFoaF/">hFOAF</a>, to combine FOAF, hCard, and XFN</li>
</ul>
]]></content:encoded>
					
					<wfw:commentRss>https://ungeekdapo.wordpress.com/2008/05/21/i-like-to-foaf-you/feed/</wfw:commentRss>
			<slash:comments>7</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">43</post-id>
		<media:content url="https://0.gravatar.com/avatar/f8141d64548e2f858c28fc462f0545798ff7a6bde49a10aed3d3a6f0804a625b?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Bob</media:title>
		</media:content>

		<media:content url="https://ungeekdapo.wordpress.com/wp-content/uploads/2008/05/foaf_ken_brewster.jpg" medium="image">
			<media:title type="html">Ken Brewster FOAF app</media:title>
		</media:content>
	</item>
	</channel>
</rss>
