<?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>JCranky&#039;s Blog! &#187; peer-to-peer</title>
	<atom:link href="http://jcranky.com/tag/peer-to-peer/feed/" rel="self" type="application/rss+xml" />
	<link>http://jcranky.com</link>
	<description>Java, Scala, Agile and stuff, by JCranky =)</description>
	<lastBuildDate>Wed, 23 May 2012 13:48:24 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='jcranky.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://0.gravatar.com/blavatar/a2edfd1ac837f723e9b475c8eb5a5bbd?s=96&#038;d=http%3A%2F%2Fs2.wp.com%2Fi%2Fbuttonw-com.png</url>
		<title>JCranky&#039;s Blog! &#187; peer-to-peer</title>
		<link>http://jcranky.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://jcranky.com/osd.xml" title="JCranky&#039;s Blog!" />
	<atom:link rel='hub' href='http://jcranky.com/?pushpress=hub'/>
		<item>
		<title>GridGain first impressions</title>
		<link>http://jcranky.com/2010/04/19/gridgain-first-impressions/</link>
		<comments>http://jcranky.com/2010/04/19/gridgain-first-impressions/#comments</comments>
		<pubDate>Mon, 19 Apr 2010 14:37:57 +0000</pubDate>
		<dc:creator>Paulo "JCranky" Siqueira</dc:creator>
				<category><![CDATA[java]]></category>
		<category><![CDATA[peer-to-peer]]></category>
		<category><![CDATA[grid]]></category>
		<category><![CDATA[gridgain]]></category>
		<category><![CDATA[p2p]]></category>

		<guid isPermaLink="false">http://jcranky.com/?p=570</guid>
		<description><![CDATA[I&#8217;ve been working on a peer-to-peer project for a while. We are trying to build something new and interesting regarding transactions on top of a peer-to-peer network. Hopefully it will be useful =P. I&#8217;m not going to talk about that project now; the important point is that I&#8217;m aware about how hard setting up and [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=jcranky.com&#038;blog=4406641&#038;post=570&#038;subd=jcranky&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve been working on a peer-to-peer project for a while. We are trying to build something new and interesting regarding transactions on top of a peer-to-peer network. Hopefully it will be useful =P. I&#8217;m not going to talk about that project now; the important point is that I&#8217;m aware about how hard setting up and configuring peer-to-peer nodes can be. And making everything work out of the box seamlessly, with an easy to use API at the same time.</p>
<p>A couple of weeks ago, <a title="GridGain" href="http://www.gridgain.com/" target="_blank">GridGain</a> came to may attention, totally out of the blue. Now imagine my surprise when I decided to test it, following some of their examples. The freaking thing is easy to use and works out of the box. Run a script, a node is running. Do it again, a second one is running. Of course, for more complex scenarios you will have to configure a few things, but the point is that I could starting testing it right away.</p>
<p>The way to build and &#8220;deploy&#8221; services is ridiculously easy as well. I coded the <em>Hello World </em>example. When running, you start a new node in your main class, and in it you say what tasks you want to execute. GrigGain will then find all other available nodes and, depending on the task implementation, split the jobs between those nodes. Something I liked here is that the task implementation is sent to the other peers in a completely transparent way &#8211; you don&#8217;t even notice what&#8217;s happening.</p>
<p>I won&#8217;t dive too much into GridGain here, nor show any code, simply because of another great quality it has: documentation. There is a lot of stuff available, including a lot of easy-to-follow examples. Take a look for yourself. I won&#8217;t be using this framework for now, but if I end up needing to implement grid-related stuff, I certainly know where to start looking.</p>
<p><a title="GridGain Documentation" href="http://wiki.gridgain.org/" target="_blank">Direct link to the GridGain documentation.</a></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/jcranky.wordpress.com/570/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/jcranky.wordpress.com/570/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/jcranky.wordpress.com/570/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/jcranky.wordpress.com/570/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/jcranky.wordpress.com/570/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/jcranky.wordpress.com/570/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/jcranky.wordpress.com/570/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/jcranky.wordpress.com/570/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/jcranky.wordpress.com/570/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/jcranky.wordpress.com/570/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/jcranky.wordpress.com/570/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/jcranky.wordpress.com/570/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/jcranky.wordpress.com/570/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/jcranky.wordpress.com/570/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=jcranky.com&#038;blog=4406641&#038;post=570&#038;subd=jcranky&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://jcranky.com/2010/04/19/gridgain-first-impressions/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/3ebbb64cafa4d784a6f09a1886eaa5e7?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">paulosiqueira</media:title>
		</media:content>
	</item>
		<item>
		<title>Mercurial basics for CVS users</title>
		<link>http://jcranky.com/2008/11/05/mercurial-basics-for-cvs-users/</link>
		<comments>http://jcranky.com/2008/11/05/mercurial-basics-for-cvs-users/#comments</comments>
		<pubDate>Wed, 05 Nov 2008 02:31:14 +0000</pubDate>
		<dc:creator>Paulo "JCranky" Siqueira</dc:creator>
				<category><![CDATA[misc]]></category>
		<category><![CDATA[peer-to-peer]]></category>
		<category><![CDATA[cvs]]></category>
		<category><![CDATA[mercurial]]></category>
		<category><![CDATA[netbeans]]></category>
		<category><![CDATA[p2p]]></category>

		<guid isPermaLink="false">http://jcranky.wordpress.com/?p=129</guid>
		<description><![CDATA[We just made available here the initial code (only a draft right now) for the peer-to-peer project mentioned in this previous post. One of the things we decided to do differently from previous projects is to use an alternative approach for version control. So, we are switching from CVS to Mercurial. My goal in this [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=jcranky.com&#038;blog=4406641&#038;post=129&#038;subd=jcranky&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>We just made available <a title="Flypeer" href="http://kenai.com/projects/flypeer" target="_blank">here</a> the initial code (only a draft right now) for the peer-to-peer project mentioned <a title="Flypeer" href="2008/09/12/peer-to-peer-project/" target="_blank">in this previous post</a>. One of the things we decided to do differently from previous projects is to use an alternative approach for version control. So, we are switching from CVS to <a title="Mercurial" href="http://www.selenic.com/mercurial/wiki/" target="_blank">Mercurial</a>. My goal in this post is to show what changes in the daily work using it.</p>
<p>The first thing to understand is that Mercurial is a decentralized version control system. So, each developer will have its own local repository. When you commit, you&#8217;re not committing to the server, but instead to your local repository. This is cool because this way you can commit very often, and without breaking anyone else&#8217;s code. Also, you can easily work offline (airplane, anyone?), and synchronize when you get internet access.</p>
<p>So, when you want to get the most recent version of the project, you <strong>pull</strong> it from the main repository. And then of course solve eventual conflicts. This allows you to be sure that your code is fine with the server&#8217;s, i.e. all the tests passes and so on. After that, you are ready to <strong>push</strong> your code to the main repository.</p>
<p>So, don&#8217;t forget that now, after commiting you code, it is NOT sent to the main repository just yet. It will only get there after you issue a <strong>Push</strong> from your local repository to the main one.</p>
<p>The exact way to do this will be different depending on the IDE you are using, but the concept is the same. Please consult the official site mentioned earlier and the documentation of your IDE for more detailed information. For NetBeans 6.1, for example, you can find something <a title="Mercurial in NetBeans" href="http://wiki.netbeans.org/MercurialVersionControlReleaseNotes_for_NB_6_1" target="_blank">here</a>.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/jcranky.wordpress.com/129/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/jcranky.wordpress.com/129/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/jcranky.wordpress.com/129/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/jcranky.wordpress.com/129/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/jcranky.wordpress.com/129/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/jcranky.wordpress.com/129/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/jcranky.wordpress.com/129/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/jcranky.wordpress.com/129/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/jcranky.wordpress.com/129/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/jcranky.wordpress.com/129/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/jcranky.wordpress.com/129/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/jcranky.wordpress.com/129/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/jcranky.wordpress.com/129/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/jcranky.wordpress.com/129/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=jcranky.com&#038;blog=4406641&#038;post=129&#038;subd=jcranky&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://jcranky.com/2008/11/05/mercurial-basics-for-cvs-users/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/3ebbb64cafa4d784a6f09a1886eaa5e7?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">paulosiqueira</media:title>
		</media:content>
	</item>
		<item>
		<title>Quick Jxta Introduction</title>
		<link>http://jcranky.com/2008/10/08/quick-jxta-introduction/</link>
		<comments>http://jcranky.com/2008/10/08/quick-jxta-introduction/#comments</comments>
		<pubDate>Wed, 08 Oct 2008 02:23:13 +0000</pubDate>
		<dc:creator>Paulo "JCranky" Siqueira</dc:creator>
				<category><![CDATA[peer-to-peer]]></category>
		<category><![CDATA[jxta]]></category>
		<category><![CDATA[p2p]]></category>

		<guid isPermaLink="false">http://jcranky.wordpress.com/?p=75</guid>
		<description><![CDATA[According to the classical definition of a peer-to-peer network, peers that are part of this network should be able to run both as a client and as a server. This is what Jxta allows you to do. Jxta is a platform for developing peer-to-peer applications. It supports the definition stated above, plus a lot of [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=jcranky.com&#038;blog=4406641&#038;post=75&#038;subd=jcranky&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>According to the classical definition of a peer-to-peer network, peers that are part of this network should be able to run both as a client and as a server. This is what Jxta allows you to do.</p>
<p>Jxta is a platform for developing peer-to-peer applications. It supports the definition stated above, plus a lot of infrastructure features that most peer-to-peer applications might need. One example of such a feature is firewall traversal, which is done transparently for us. Also, it has some other very important qualities:</p>
<ul>
<li>It is open source and thus publicly available;</li>
</ul>
<ul>
<li>It is programming language agnostic &#8211; there is at least a <a title="JXSE" href="https://jxta-jxse.dev.java.net/" target="_blank">Java</a>, a <a title="jxta-c" href="https://jxta-c.dev.java.net/" target="_blank">C++</a>, a <a title="Jxta Ruby" href="https://jxta-ruby.dev.java.net/" target="_blank">Ruby</a> and a <a title="JXME" href="https://jxta-jxme.dev.java.net/" target="_blank">mobile</a> implementation;</li>
<li>It is communication protocol agnostic: it can run on top of TCP, HTTP, Bluetooth etc.</li>
</ul>
<p>It is important to note that Jxta is not an API &#8211; that&#8217;s why it can be independent of the programming language. Jxta defines a set of protocols, that can be implemented in a variety of different platforms. Currently, these are the protocols specified by Jxta:</p>
<ul>
<li><strong>Peer Resolver Protocol (PRP)</strong>: provides the foundation for sending and responding generic queries between peers<strong><br />
</strong></li>
<li><strong>Rendezvous Protocol (RVP)</strong>: used to help propagating queries between peers</li>
<li><strong>Peer Discovery Protocol (PDP)</strong>: used to allow peers to publish and find resources (like other peers, services etc)</li>
<li><strong>Endpoint Routing Protocol (ERP)</strong>: provides the mechanism that a peer can use to find routes to other peers, hiding low level details</li>
<li><strong>Pipe Binding Protocol (PBP)</strong>: provides the means to make a connection between two peers</li>
<li><strong>Peer Information Protocol (PIP)</strong>: used to get information from a peer, like its status or provided services for example</li>
</ul>
<p>Those are of course very basic definitions of the protocols, but should be enough for now.</p>
<p>Jxta is not difficult to learn but it is extensive. If you are to fully use it, you have a lot to learn. You can find a lot of resources on the internet. There is the <a title="Jxta" href="https://jxta.dev.java.net/" target="_blank">official site</a>, which is the best starting point. And the community is active in the <a title="Jxta Mailing Lists" href="https://jxta.dev.java.net/servlets/ProjectMailingListList" target="_blank">mailing lists</a>. Also, I&#8217;m currently reading <a title="Jxta Book" href="http://www.brendonwilson.com/projects/jxta-book/" target="_blank">this book</a>, which you can download for free.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/jcranky.wordpress.com/75/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/jcranky.wordpress.com/75/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/jcranky.wordpress.com/75/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/jcranky.wordpress.com/75/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/jcranky.wordpress.com/75/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/jcranky.wordpress.com/75/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/jcranky.wordpress.com/75/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/jcranky.wordpress.com/75/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/jcranky.wordpress.com/75/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/jcranky.wordpress.com/75/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/jcranky.wordpress.com/75/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/jcranky.wordpress.com/75/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/jcranky.wordpress.com/75/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/jcranky.wordpress.com/75/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=jcranky.com&#038;blog=4406641&#038;post=75&#038;subd=jcranky&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://jcranky.com/2008/10/08/quick-jxta-introduction/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/3ebbb64cafa4d784a6f09a1886eaa5e7?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">paulosiqueira</media:title>
		</media:content>
	</item>
		<item>
		<title>A peer-to-peer project</title>
		<link>http://jcranky.com/2008/09/12/peer-to-peer-project/</link>
		<comments>http://jcranky.com/2008/09/12/peer-to-peer-project/#comments</comments>
		<pubDate>Fri, 12 Sep 2008 21:50:33 +0000</pubDate>
		<dc:creator>Paulo "JCranky" Siqueira</dc:creator>
				<category><![CDATA[peer-to-peer]]></category>
		<category><![CDATA[dvsp]]></category>
		<category><![CDATA[jxta]]></category>
		<category><![CDATA[p2p]]></category>

		<guid isPermaLink="false">http://jcranky.wordpress.com/?p=50</guid>
		<description><![CDATA[Since a few weeks ago, we&#8217;ve been involved in a peer-to-peer project, somewhat deeply &#8211; and a little less than this before. Then, in the last two weeks, we started to implement something. Just a small demonstration code (for now), to be sure the work is feasible. So, first question: What? After some discussions, we [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=jcranky.com&#038;blog=4406641&#038;post=50&#038;subd=jcranky&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Since a few weeks ago, we&#8217;ve been involved in a peer-to-peer project, somewhat deeply &#8211; and a little less than this before. Then, in the last two weeks, we started to implement something. Just a small demonstration code (for now), to be sure the work is feasible.</p>
<p><strong>So, first question: What?</strong></p>
<p>After some discussions, we decided to use <a title="guigoh" href="http://www.guigoh.com/" target="_blank">guigoh</a>&#8216;s conference as a first scenario to test the ideas. But before that, we should be able to have some independent peers communicating. This would be the very foundation for any work that comes later. Something like this:</p>
<div id="attachment_54" class="wp-caption alignnone" style="width: 246px"><a href="http://jcranky.files.wordpress.com/2008/09/peers.png"><img class="size-full wp-image-54" title="peers" src="http://jcranky.files.wordpress.com/2008/09/peers.png?w=490" alt="peers communications across a network"   /></a><p class="wp-caption-text">peers communicating across a network</p></div>
<p>This means that Peer1 must be able to reach Peer2, and any other Peer, across a network. It shouldn&#8217;t have to worry about the details on how to find and send a message to them. Also, the peers cannot depend on any central server or any kind of node that could represent a single point of failure. And the same must be true for all peers.</p>
<p>Based on some ideas from <a title="guigoh" href="http://www.guigoh.com/" target="_blank">guigoh</a>&#8216;s conference application, and from the Dynamic Virtual Super Peer (DVSP) model (more on this one in a future post, if Amir and Sotiris don&#8217;t mind <img src='http://s1.wp.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> ), plus the small concept explained above, we planned what should be done in terms of functionality. So this is it, in two simple steps:</p>
<p><strong>The conference initialization</strong>: One peer creates a new conference, store its information in what we are calling <em>ConferenceContext</em>, and send invitations to the other peers it wants to have part in the conference. The <em>ConferenceContext</em> is also sent with the invitation. Each of these peers can accept or decline the invitation, which will then define who the conference participants are.</p>
<p><strong>An ongoing conference</strong>: When the time for the conference arrives, a conference window is displayed at the peer&#8217;s screen. In this window, the user can type messages that the peers will exchange between themselves. In the end, it is a simple chat, but in a pure peer-to-peer architecture.</p>
<p><strong>Now for the difficult question: How?</strong></p>
<p>The next decision was technological: how is this going to be implemented? Doing everything from scratch is probably not a very good idea. Just Imagine having to write firewall traversal code by yourself, for a simple example of the trouble. There is just too much basic infrastructure work that would be necessary. And thus a lot of resources, which we don&#8217;t have.</p>
<p>There are a few options around the web, but not that much actually. I won&#8217;t list them here because I don&#8217;t tend to remember things I put aside (sorry :-p). The important thing to mention is the chosen technology: <a title="Jxta" href="http://www.jxta.org/" target="_blank">Jxta</a>.</p>
<p>I won&#8217;t dive into <a title="Jxta" href="http://www.jxta.org/" target="_blank">Jxta</a> right now. Instead, the next post will probably be about it. So if you have any questions feel free to send it to me, and I&#8217;ll try to address them.</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/jcranky.wordpress.com/50/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/jcranky.wordpress.com/50/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/jcranky.wordpress.com/50/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/jcranky.wordpress.com/50/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/jcranky.wordpress.com/50/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/jcranky.wordpress.com/50/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/jcranky.wordpress.com/50/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/jcranky.wordpress.com/50/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/jcranky.wordpress.com/50/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/jcranky.wordpress.com/50/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/jcranky.wordpress.com/50/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/jcranky.wordpress.com/50/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/jcranky.wordpress.com/50/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/jcranky.wordpress.com/50/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/jcranky.wordpress.com/50/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/jcranky.wordpress.com/50/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=jcranky.com&#038;blog=4406641&#038;post=50&#038;subd=jcranky&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://jcranky.com/2008/09/12/peer-to-peer-project/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/3ebbb64cafa4d784a6f09a1886eaa5e7?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">paulosiqueira</media:title>
		</media:content>

		<media:content url="http://jcranky.files.wordpress.com/2008/09/peers.png" medium="image">
			<media:title type="html">peers</media:title>
		</media:content>
	</item>
	</channel>
</rss>
