<?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"
	>

<channel>
	<title>The Song Remains The Same</title>
	<atom:link href="http://jpatterson.floe.tv/index.php/feed/" rel="self" type="application/rss+xml" />
	<link>http://jpatterson.floe.tv</link>
	<description>pOld-&#62;Next = pNew-&#62;Next = pOld-&#62;Next</description>
	<pubDate>Tue, 08 Dec 2009 21:25:24 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.5.1</generator>
	<language>en</language>
			<item>
		<title>The Smartgrid Goes Open Source</title>
		<link>http://jpatterson.floe.tv/index.php/2009/10/29/the-smartgrid-goes-open-source/</link>
		<comments>http://jpatterson.floe.tv/index.php/2009/10/29/the-smartgrid-goes-open-source/#comments</comments>
		<pubDate>Thu, 29 Oct 2009 20:20:06 +0000</pubDate>
		<dc:creator>Josh Patterson</dc:creator>
		
		<category><![CDATA[Distributed File Systems]]></category>

		<category><![CDATA[hadoop]]></category>

		<category><![CDATA[openPDC]]></category>

		<category><![CDATA[smartgrid]]></category>

		<category><![CDATA[pmus]]></category>

		<guid isPermaLink="false">http://jpatterson.floe.tv/?p=63</guid>
		<description><![CDATA[ 

I love it when a plan comes together.
&#8212; Hannibal, The A-Team

Disclaimer: I&#8217;m a contributor on the openPDC and I work for TVA/NERC. These are my personal views and in no way espouse the opinion or position of my employer or the Federal government. These are simply my thoughts from an outside viewpoint on where I [...]]]></description>
			<content:encoded><![CDATA[<p class="MsoNormal" style="margin: 0in 0in 0pt;"> </p>
<blockquote>
<p class="MsoNormal" style="text-align: right;"><em>I love it when a plan comes together.</em></p>
<p class="MsoNormal" style="text-align: right;">&#8212; Hannibal, The A-Team</p>
</blockquote>
<p class="MsoNormal" style="margin: 0in 0in 0pt; text-align: right;"><em>Disclaimer: I&#8217;m a contributor on the openPDC and I work for TVA/NERC. These are my personal views and in no way espouse the opinion or position of my employer or the Federal government. These are simply my thoughts from an outside viewpoint on where I could see this open source project going and not necessarily any real roadmaps or internal plans.</em></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"> </p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;">Recently <a href="http://earth2tech.com/2009/06/02/how-to-use-open-source-hadoop-for-the-smart-grid/">TVA</a> and the NERC <a href="http://www.tva.gov/news/releases/octdec09/data_collection_software.htm">open sourced a key part of the &#8220;smartgrid&#8221;</a> that deals with concentration, storage, and processing of transmission and generation phasor measurement unit (PMU) data. This project is referred to as the Open Phasor Data Concentrator (openPDC) and is housed at <a href="http://openpdc.codeplex.com ">http://openpdc.codeplex.com </a>where members of the power community (and interested enthusiasts) can examine or contribute to the project. From the website the project is described as:</p>
<blockquote><p><span style="font-family: ">The openPDC is a complete set of applications for processing streaming time-series data in real-time. Measured data is gathered with GPS-time from multiple input sources, time-sorted and provided to user defined actions, then dispersed to custom output destinations for archival.</span></p></blockquote>
<p><span style="font-family: ">The website goes on further to describe the project in more detail:<br />
</span></p>
<blockquote><p><span style="font-family: ">The open source phasor data concentrator (openPDC) is a system that can be used to <a class="externalLink" href="http://en.wikipedia.org/wiki/Complex_event_processing"><span style="color: #3e62a6;">process complex events</span></a><span style="color: #30332d;"> and respond to dynamic changes in fast moving data. More specifically, the openPDC can process complex events that can be described as “time-stamped measured values”. These measured values are simply numeric quantities that have been acquired at a source device and are typically called points, signals, events, time-series values or <em>measurements</em>. Examples of measurements include temperature, voltage, vibration, location, luminosity and, of course, phasors. When a value gets measured, an exact timestamp is taken, typically using a GPS-clock for accuracy – the value, along with its timestamp, is then streamed to the openPDC where it can be “time-aligned” with other incoming measurements so that an action can then be taken on a complete <em>slice</em> of data that was all measured at the exact same moment in time.</span><br />
</span></p></blockquote>
<p>The U.S. power grid is run by multiple private and government run power companies which must all work together in order to keep power flowing and downtime to a minimum. The openPDC allows a regional grid operator to collect PMU data from multiple sources and either archive it or forward it on to a larger concentration point. The NERC designated TVA as the official repository for the collection and archival of U.S. power grid PMU data (although currently only the eastern half is online). Given that large scale data warehousing and analysis is no mean feat, <a href="http://hadoop.apache.org/">Hadoop</a> was chosen as the architecture for the PMU data repository.</p>
<p>Hadoop is a framework for running applications on large clusters built of commodity hardware. Hadoop includes the Hadoop Distributed File System (<a href="http://hadoop.apache.org/common/docs/current/hdfs_design.html">HDFS</a>) and the <a href="http://en.wikipedia.org/wiki/MapReduce">Map Reduce programming model</a>. The openPDC project includes the necessary Hadoop components (InputFormat and RecordReader) to allow Hadoop to work directly with openPDC data points.</p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"> </p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;">The openPDC collects data from around the US power grid for archival and analysis. The openPDC is designed to talk directly to PMU sensor devices and transmit it back to collection nodes. At collection nodes the data is archived in a binary format by the Historian (also included in the openPDC project). This archival format can then be used directly with Hadoop via the classes included in the openPDC project (Inputformat / RecordReader).</p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"> </p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"> </p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;">Hadoop works well for a project such as the openPDC in that:</p>
<ul>
<li>Its based on commodity hardware</li>
<li>Its performance generally scales linearly with the size of the input data</li>
<li>Its programming model Map Reduce is simple and robust</li>
<li>It doesn&#8217;t lock a project into a proprietary system</li>
</ul>
<p>The openPDC is really interesting from an engineering perspective in that it provides an open source &#8220;building block&#8221; for smart grid participants and researchers to work with to develop more layers of the smart grid. I look at the openPDC in the same role as <a href="http://www.techcrunch.com/2009/10/15/schmidt-android-adoption-is-about-to-explode/">Google&#8217;s Android platform</a> in that it:</p>
<ul>
<li>Allows researchers to focus on research and not on implementing protocols</li>
<li>Allows vendors to focus on a common building block</li>
<li>Gives companies with less resources an opportunity to compete without having to &#8220;re-invent the wheel&#8221;</li>
<li>Gives companies a way to collaborate on a <a href="http://www.thestreet.com/story/10614007/1/exclusive-google-plans-its-own-android-phone.html">common building block</a> to drive improvement of their market</li>
</ul>
<p>In addition to the obvious use cases within the smart grid, the openPDC is well suited to collect time-series data from just about any type of sensors. Once the proper adapters for the specific sensor is written, time series data could then be easily collected, concentrated, and archived for easy analysis in a Hadoop cluster. To me this seems like a very good collection and analysis framework to use with a system like a <a href="http://jpatterson.floe.tv/index.php/2009/07/19/tinyos-and-tinytermite/">TinyOS mesh network</a>. Complex distributed systems can be difficult to build from scratch and using building block components such as openPDC greatly lowers the overall cost of development.</p>
<p>Development overhead is greatly reduced with the openPDC just like Android can cut down development costs significantly for cell phone companies. In a similar way, Hadoop cuts down costs in that Hadoop is open source and an open platform. From a tax payer&#8217;s standpoint, Hadoop is really nice in that our Federal Government is using an open source alternative and saving your tax dollars. <strong><em>On top of that, a government entity is open sourcing a key piece of smart grid technology &#8212; the openPDC.</em></strong> I believe this is a unique situation where a government entity made extremely effective and intelligent use of resources that benefited society. Hopefully we&#8217;ll continue to see these type <a href="http://radar.oreilly.com/2009/10/defense-department-releases-op.html">initiatives</a> spring up in the future.</p>
<p>openPDC Coverage:</p>
<ul>
<li><a href="http://www.chattanoogan.com/articles/article_160601.asp">http://www.chattanoogan.com/articles/article_160601.asp</a></li>
<li><span style="font-family: "><a href="http://www.tva.gov/news/releases/octdec09/data_collection_software.htm">http://www.tva.gov/news/releases/octdec09/data_collection_software.htm</a></span></li>
<li><span style="font-family: "><span style="font-family: "><a href="http://forum.complexevents.com/viewtopic.php?f=17&amp;t=217">http://forum.complexevents.com/viewtopic.php?f=17&amp;t=217</a></span></span></li>
<li><span style="font-family: "><span style="font-family: "><a href="http://news.cnet.com/8301-13846_3-10393259-62.html?tag=mncol;title">http://news.cnet.com/8301-13846_3-10393259-62.html?tag=mncol;title</a></span></span></li>
<li><span style="font-family: "><span style="font-family: "><a href="http://earth2tech.com/2009/11/10/the-google-android-of-the-smart-grid-openpdc/">http://earth2tech.com/2009/11/10/the-google-android-of-the-smart-grid-openpdc/</a></span></span></li>
<li><span style="font-family: "><span style="font-family: "><a href="http://agilecat.wordpress.com/2009/11/17/overview-of-hadoop-conference-2009-in-japan-english-edition/">http://agilecat.wordpress.com/2009/11/17/overview-of-hadoop-conference-2009-in-japan-english-edition/</a></span></span></li>
<li><span style="font-family: "><span style="font-family: "><a href="http://econgreen.blogspot.com/2009/11/set-phasors-to-smart.html">http://econgreen.blogspot.com/2009/11/set-phasors-to-smart.html</a></span></span></li>
</ul>
<p>�</p>
]]></content:encoded>
			<wfw:commentRss>http://jpatterson.floe.tv/index.php/2009/10/29/the-smartgrid-goes-open-source/feed/</wfw:commentRss>
		</item>
		<item>
		<title>A High Level Comparison of Hadoop and Dryad</title>
		<link>http://jpatterson.floe.tv/index.php/2009/07/20/a-high-level-comparison-of-hadoop-and-dryad/</link>
		<comments>http://jpatterson.floe.tv/index.php/2009/07/20/a-high-level-comparison-of-hadoop-and-dryad/#comments</comments>
		<pubDate>Tue, 21 Jul 2009 03:50:14 +0000</pubDate>
		<dc:creator>Josh Patterson</dc:creator>
		
		<category><![CDATA[Parallel Computing]]></category>

		<category><![CDATA[Research]]></category>

		<category><![CDATA[The Evolution of Computing]]></category>

		<category><![CDATA[dryad]]></category>

		<category><![CDATA[hadoop]]></category>

		<category><![CDATA[linq]]></category>

		<category><![CDATA[mapreduce]]></category>

		<guid isPermaLink="false">http://jpatterson.floe.tv/?p=58</guid>
		<description><![CDATA[Disclaimer: This is my personal opinion and in no way reflects the opinion of my employer.
Today parallel programming at the commodity level is a booming sector both from big tech standpoint and from a small grassroots &#8220;web 2.0&#8243; standpoint; Most everyone who is connected to the internet has more data than they know what to [...]]]></description>
			<content:encoded><![CDATA[<p><em>Disclaimer: This is my personal opinion and in no way reflects the opinion of my employer.</em></p>
<p>Today parallel programming at the commodity level is a booming sector both from big tech standpoint and from a small grassroots &#8220;web 2.0&#8243; standpoint; Most everyone who is connected to the internet has more data than they know what to do with. As I use <a href="http://hadoop.apache.org/">Hadoop</a> on a daily basis, recently I sat down and took a look at the two research papers [1,2] published by Microsoft on their competing platform &#8220;<a href="http://research.microsoft.com/en-us/projects/Dryad/">Dryad</a>&#8220;. Given that I&#8217;ve heard some discussion informally comparing the two platforms, I decided to write up my own comparison. I&#8217;m going to state upfront that I have only seen Microsoft comparing Dryad against the Map Reduce model in general, and not specifically Hadoop itself. However, it seems like Dryad and Hadoop are going to at least have some overlap in userbase. Therefore I think its a worthwhile exercise to compare them &#8212; if only to help someone figure out which one is right for them. The major areas that I wanted to compare the two platforms on were:</p>
<ul>
<li>Processing Model</li>
<li>Tools</li>
<li>Storage</li>
<li>Community</li>
<li>Performance</li>
<li>Cost</li>
</ul>
<p>Hadoop employees the venerable Map Reduce [4] <a href="http://labs.google.com/papers/mapreduce.html">programming model</a> that was made popular at Google. Map Reduce has proven quite reliable and robust given its strong community based around the open source version of it, hadoop. With Dryad, Microsoft proposes using a Directed Acyclic Graph (DAG) to combine computational &#8220;vertices&#8221; with communication &#8220;channels&#8221; to model data flow graphs.</p>
<p><img src="http://research.microsoft.com/en-us/projects/dryad/dryad-job.png" alt="" width="290" height="200" /></p>
<p>A DAG is somewhat analagous to the Map Reduce model yet is more complex and can model Map Reduce itself (among other flows). The Dryad team states</p>
<blockquote><p>The application can discover the size and placement of data at run time, and modify the graph as the computation progresses to make efficient use of the available resources.</p></blockquote>
<p>Dryad&#8217;s argument is that Map Reduce is too simplistic and that</p>
<blockquote><p>In all these programming paradigms, the system dictates a communication graph, but makes it simple for the developer to supply subroutines to be executed at specified graph verticies.</p>
<p>&#8230;</p>
<p>Map Reduce was designed to be accessible to the widest possible class of developers, and therefore aims for simplicity at the expense of generality and performance. By fixing the boundary between the communication graph and the subroutines that inhabit its verticies, the model guides the developer towards an appropriate level of granularity.</p></blockquote>
<p>The more I read through the Dryad paper, the more I began to see their argument in that Dryad allowed the programming to be more expressive with a more general parallel computing model. However, is Dryad&#8217;s additional complexity a net gain in practical terms? The researchers in Berkley&#8217;s RAD lab don&#8217;t think so; In their paper on the Nexus [3] project, they state:</p>
<blockquote><p>However, making a programming model too general increases complexity (Dryad is arguably more complex than Map Reduce) and decreases the opportunity to optimize programs using application specific knowledge.</p></blockquote>
<p>going on to state:</p>
<blockquote><p>We believe that no single general programming model for the cloud will exist. Instead, multiple cluster computing frameworks will emerge, providing various programming models with different tradeoffs.</p></blockquote>
<p>which I feel is a pretty sage observation, at least in a general sense &#8212; <strong><em>design is about tradeoffs</em></strong>.</p>
<p>Dryad has some interesting tools, obviously integrating nicely with the .NET framework with DryadLINQ expressions. Hadoop has an interesting array of tools including</p>
<ul>
<li><a href="http://hadoop.apache.org/pig/">Pig</a> - <span class="Apple-style-span" style="widows: 2; text-transform: none; text-indent: 0px; border-collapse: separate; font-family: 'Times New Roman'; white-space: normal; orphans: 2; letter-spacing: normal; color: #000000; word-spacing: 0px;"><span class="Apple-style-span" style="font-family: Verdana; font-size: 13px;">A high-level data-flow language and execution framework for parallel computation.</span></span></li>
<li><a href="http://hadoop.apache.org/hive/">Hive</a> - <span class="Apple-style-span" style="widows: 2; text-transform: none; text-indent: 0px; border-collapse: separate; font-family: 'Times New Roman'; white-space: normal; orphans: 2; letter-spacing: normal; color: #000000; word-spacing: 0px;"><span class="Apple-style-span" style="font-family: Verdana; font-size: 13px;">A data warehouse infrastructure that provides data summarization and ad hoc querying.</span></span></li>
<li>Cascading</li>
<li><a href="http://hadoop.apache.org/hbase/">HBase<br />
</a></li>
<li>Thrift</li>
</ul>
<p>and many other projects that have a cozy relationship with the Hadoop / HDFS ecosystem. Another inherent aspect to Hadoop&#8217;s array of tools is the fact that the project is open source and you can freely download the source code to add bug fixes or new features as you see fit. With Dryad, this is sadly not an option.</p>
<p>As I was reading up on Dryad I was really surprised to find that Microsoft does not include any sort of distributed filesystem &#8220;out of the box&#8221; for use with the system. Internally, Microsoft uses the <a href="http://www.goland.org/whatiscosmos">Cosmos file system</a> &#8212; but this is unfortunately not even available in the academic preview. Instead, there are bindings for NTFS and SQL Server which left me somewhat puzzled. If you want to position a product to go up against a solid engineering effort such as Hadoop, how can you leave out the distributed storage part of it? Hadoop on the other hand comes out of the box with HDFS and also works wiht KFS, HBase, Amazon S3, and others. To be fair, the Dryad team has only compared itself to the Map Reduce programming model and not the Hadoop project itself (HDFS included), so it is premature to make a comparison on this point &#8212; but its something that stood out to me.</p>
<p>The community aspect of Hadoop is a really nice feature from the perspective of a developer. The community is <a href="http://hadoop.apache.org/mailing_lists.html">extremely active</a> (and vocal) and will engage most any Hadoop related topic with very detailed discussions. A wonderful thing about open source is that a popular project generally has a <a href="http://wiki.apache.org/hadoop/PoweredBy">strong and voracious user and developer base</a>. Even though Microsoft is known to have its own enthusiastic supporters, at the present time Dryad has little beyond a small select academic circle using it. Until a production grade package for Dryad is released the jury will be out on what kind of community it will command.</p>
<p>As I don&#8217;t have a Dryad cluster to run tests on currently I am not able to run my own performance tests on it (unlike with Hadoop where I have access to a cluster). I would really like to see more apples to apples comparisons to see if Dryad&#8217;s added complexity yields performance increases that are worth the extra design overhead. I&#8217;ve learned the hard way that for anything you are going to rely on you need to do your own benchmarking in order to know true &#8220;real world&#8221; performance of a system (mesh networking coming to mind here). The <a href="http://research.microsoft.com/en-us/projects/dryad/eurosys07.pdf">2007 Dryad paper</a> [1] understandably did not have a comparison to Hadoop, but I was somewhat surprised to see the <a href="http://research.microsoft.com/en-us/projects/dryadlinq/dryadlinq.pdf">2008 paper</a> [2] not have a direct comparison (instead, the paper talked about Map Reduce in a general sense).To be fair, Hadoop may not have been on the Dryad team&#8217;s radar until the paper was well underway, and as I pointed out before, may not be a focal point for them in terms of market segment.</p>
<p>However, I did notice that the Dryad team tested against <a href="http://sortbenchmark.org/">Jim Gray&#8217;s Terasort benchmark</a> [5] and reported numbers for an array of cluster sizes, with their performance being reported as 319 seconds on 240 nodes for sorting 10^12 bytes. Hadoop currently holds the Terasort record [6] by sorting 10^12 bytes in 62 seconds. However, the primary difference was that yahoo team <a href="http://developer.yahoo.net/blogs/hadoop/2009/05/hadoop_sorts_a_petabyte_in_162.html">used 1,460 nodes in their Hadoop cluster</a>. As anyone knows these sorts of tests are highly sensitive to parameter tuning and other conditions, so it is somewhat difficult to extrapolate what Dryad&#8217;s performance would be at 1,460 nodes. I did develop a quick and dirty fitted logarithmic curve for Dryad&#8217;s Terasort performance, and came up with ~800 seconds at 1460 Dryad nodes. (<strong>Update:</strong> <em><strong>Dimitri Ryaboy has since pointed out a flaw in this projection, in that there is more data involved in the sort basis as Dryad is sorting 3.87 GB per node. This inflates the total number of bytes past the 1TB mark and makes this projection suspect at best. Without an &#8220;apples-to-apples&#8221; setup, its difficult to get a better assessment. Originally the projection was done out of curiosity and meant to be taken with a very large grain of salt.)</strong></em> However, I did this just for curiosity &#8212; its unfair to even begin to project out performance given the myriad of variables involved in these type setups. Regardless, I can safely say that I feel like Hadoop&#8217;s implementation of Map Reduce is not holding it back performance wise in terms of the Terrasort benchmark when compared with the DAG implementation of Terasort. I would also be willing to bet that the Dryad team will step up to the plate and make a serious run at the Terasort benchmark now that the Hadoop team at Yahoo <a href="http://developer.yahoo.net/blogs/hadoop/2009/05/hadoop_sorts_a_petabyte_in_162.html">has taken the crown</a>.</p>
<p>How much our computation time costs us is generally a prime concern for most big data businesses. Both clusters require a capital outlay for hardware, so as long as you are using commodity hardware (and here we assume you are) then this is a wash. However, the per node license costs is typically where vendors make their money in the OS and RDBMs scenes. With Dryad we only know that it runs on Windows HPC Server so your per node cost would have to reflect that (probably not cheap) and then there more than likely would be a per node license fee for each Dryad node (unless they release a all-in-one package/license). So cost with Dryad, at least in stark comparison with Hadoop, would be an issue for any sizable cluster. There is also the added costs of support, where I&#8217;m sure Microsoft would offer a support contract option, and Hadoop has a few vendors that offer enterprise support. Other than that, I feel that the Hadoop community is a strong factor in keeping costs low as you can either request a feature or patch it in yourself &#8212; which can save you a lot of time in contrast to waiting for that next 18 month release cycle.</p>
<p>Hadoop offers a robust computing platform that while may be considered more simple than Dryad&#8217;s DAG, has proven to be a reliable and powerful parallel computing solution. Sometimes less is more, but until we see more hard numbers published I will cut the Dryad team some slack there. When dealing with &#8220;warehouse scale computing&#8221;, I believe that the algorithm is going to dominate performance with generalized optimizations lagging behind that. In terms of relevance to the developer community, Dryad having a more complex processing data flow may or may not provide enough incentive to take on its much higher total cost of ownership &#8212; only a fully completed Dryad product will be able to accurately answer that. Taking on Hadoop directly may never even be in the Dryad team&#8217;s plans as they seem to be targetting a more general parallel programming case; If you are looking to do certain types of parallel processing intensive computations, you may want to give Dryad&#8217;s DAG model a look. However, without a &#8220;in the box&#8221; storage solution like HDFS and more compelling reasons to deal with their more general programming model,  I feel that Dryad may have a hard time finding fans in the general hadoop ecosystem.</p>
<p>References</p>
<p>[1] Michael Isard, Mihai Budiu, Yuan Yu, Andrew Birrell, and Dennis Fetterly, <em>Dryad: Distributed Data-Parallel Programs from Sequential Building Blocks</em>, http://research.microsoft.com/en-us/projects/dryad/eurosys07.pdf</p>
<p>[2] <em>DryadLinq: A System for General-Purpose Distributed Data-Parallel Computing Using a High-Level Language</em>, http://research.microsoft.com/en-us/projects/dryadlinq/dryadlinq.pdf</p>
<p>[3] Benjamin Hindman, Andy Konwinski, Matei Zaharia, Ion Stoica, Scott Shenker, <em>Nexus: A Common Substrate For Cluster Computing</em>, http://www.usenix.org/event/hotcloud09/tech/slides/hindman.pdf</p>
<p>[4] <span class="Apple-style-span" style="widows: 2; text-transform: none; text-indent: 0px; border-collapse: separate; font-family: 'times new roman'; white-space: normal; orphans: 2; letter-spacing: normal; color: #000000; word-spacing: 0px;"><span class="Apple-style-span" style="font-family: arial; font-size: 13px;"><span class="Apple-converted-space">Jeff Dean, </span>Sanjay Ghemawat, </span></span><em>MapReduce: Simplified Data Processing on Large Clusters</em>, http://labs.google.com/papers/mapreduce.html</p>
<p>[5] Terasort, <a href="http://sortbenchmark.org/">http://sortbenchmark.org/</a></p>
]]></content:encoded>
			<wfw:commentRss>http://jpatterson.floe.tv/index.php/2009/07/20/a-high-level-comparison-of-hadoop-and-dryad/feed/</wfw:commentRss>
		</item>
		<item>
		<title>TinyOS and TinyTermite</title>
		<link>http://jpatterson.floe.tv/index.php/2009/07/19/tinyos-and-tinytermite/</link>
		<comments>http://jpatterson.floe.tv/index.php/2009/07/19/tinyos-and-tinytermite/#comments</comments>
		<pubDate>Mon, 20 Jul 2009 01:56:51 +0000</pubDate>
		<dc:creator>Josh Patterson</dc:creator>
		
		<category><![CDATA[Research]]></category>

		<category><![CDATA[Self Organization]]></category>

		<category><![CDATA[The Evolution of Computing]]></category>

		<category><![CDATA[Wireless Mesh Networks]]></category>

		<category><![CDATA[Ad Hoc Networks]]></category>

		<category><![CDATA[ants]]></category>

		<category><![CDATA[swarms]]></category>

		<category><![CDATA[Termite]]></category>

		<category><![CDATA[TinyOS]]></category>

		<category><![CDATA[TinyTermite]]></category>

		<guid isPermaLink="false">http://jpatterson.floe.tv/?p=43</guid>
		<description><![CDATA[saw them hurrying from either side
and each shade kissed another, without pausing,
Each by the briefest society satisfied.
(Ants, in their dark ranks, meet exactly so,
rubbing each other&#8217;s noses, to ask perhaps
What luck they&#8217;ve had, or which way they should go.)
&#8212; Dante, Purgatorio, Canto XXVI

Before I went back to grad school, I had been studying self organization [...]]]></description>
			<content:encoded><![CDATA[<blockquote><p>saw them hurrying from either side</p>
<p>and each shade kissed another, without pausing,</p>
<p>Each by the briefest society satisfied.</p>
<p>(Ants, in their dark ranks, meet exactly so,</p>
<p>rubbing each other&#8217;s noses, to ask perhaps</p>
<p>What luck they&#8217;ve had, or which way they should go.)</p>
<p style="text-align: right;">&#8212; Dante, <em>Purgatorio</em>, Canto XXVI</p>
</blockquote>
<p>Before I went back to grad school, I had been studying <a href="http://jpatterson.floe.tv/index.php/2008/08/13/emergence/">self organization</a> and emergent systems as a side interest. While in grad school, when the opportunity to work on mobile ad hoc networks came along, I jumped at the chance to apply a swarm based routing algorithm in real research. My master&#8217;s thesis (TinyTermite [1,3]) ended up applying social insect inspired routing algorithms on wireless mesh networks (along with improving security in the base routing algorithm). In a <a href="http://jpatterson.floe.tv/index.php/2008/09/25/discovery-and-social-insects/">previous article</a>, we took a look at discovery and <a href="http://jpatterson.floe.tv/index.php/2008/09/12/self-organization-and-social-insects/">social insects</a>;  Just like in nature, the base algorithm Termite [2] uses local information to make the wireless mobile ad hoc networks (MANET) self organize and adapt to their conditions.</p>
<p>TinyTermite is a novel probabilistic routing algorithm that is secure against selective forwarding and replay attacks. We use a technique called &#8220;suspicion&#8221; (or suspicion pheromone) to track possibly compromised neighbor nodes. As suspicion builds up and decays for each neighbor, TinyTermite is able to deal with uncertain stimulus and react properly. TinyTermite is fully implemented on the TinyOS based Intel Mote2 platform and experiments were done to compare its performance with that of the traditional Termite algorithm. With TinyTermite we implemented a swarm based routing algorithm that uses a digital pheromone to drive <a href="http://jpatterson.floe.tv/index.php/2008/08/25/the-principles-of-self-organization-stigmergy/">stigmergy</a> among nodes in a mobile ad hoc network. The network is completely decentralized, just like the ants, and can adapt in uncertain conditions by leveraging stigmergy and indirect communication.</p>
<p>MANETs use a group of nodes to move information from a source node to a destination node without having a central authority directing the operations. MANETs can be quickly and inexpensively set up as needed and require no centralized administration or fixed network infrastructure such as base stations or access points. MANETs have begun to move into the commercial industry as a way to track inventory, route traffic, and move information. However, for applications such as military uses, disaster relief, and mine site operation, security and reliability are key.</p>
<p>With MANETs, we do not assume every node can hear every other node; This is a typical characteristic of these type networks. Wireless networks are inherently less reliable than wired networks due to interference. Routing is a key problem in any information network. MANETs are very dynamic when compared with their statically wired cousins. To route a packet, a node <a href="http://jpatterson.floe.tv/index.php/2008/11/23/ad-hoc-discovery-in-mesh-networks/">needs to know only the next hop to forward a packet to</a>; However, this can be quite a difficult problem when a MANET&#8217;s topology changes frequently. Some key routing algorithms in the field are:</p>
<ul>
<li><a href="http://en.wikipedia.org/wiki/AODV">AODV</a></li>
<li><a href="http://en.wikipedia.org/wiki/Dynamic_Source_Routing">DSR</a></li>
<li><a href="http://en.wikipedia.org/wiki/OLSR">OSLR</a></li>
<li><a href="http://en.wikipedia.org/wiki/DSDV">DSDV</a></li>
</ul>
<p>The underlying algorithm that TinyTermite is based on is called <a href="http://wisl.ece.cornell.edu/roth/research/Termite_MedHoc2003.pdf">Termite</a>. Termite is a biologically inspired routing algorithm for MANETs that is based on previous work in adapting the effects of stigmergy. Termite <a href="http://jpatterson.floe.tv/index.php/2008/09/25/discovery-and-social-insects/">models how termite colonies lay pheromone to communicate</a> in a decentralized manner. The concept of pheromone (as I&#8217;ve talked about before) is taken directly from the social insect metaphor where <a href="http://jpatterson.floe.tv/index.php/2008/09/12/self-organization-and-social-insects/">social insects</a> use the chemical pheromone as a way to communicate indirectly. Termite piggybacks pheromone on normal network traffic which &#8220;trains&#8221; the network in an &#8220;on-line&#8221; manner. A more common technique is to send special packets out with the purpose of updating routing information around the network.</p>
<p>Termite is based on stigmergy powered by digital pheromone, which creates patterns of self organization in the ad hoc network. Termite was developed by <a href="http://wisl.ece.cornell.edu/roth/">Martin Roth</a> and <a href="http://wisl.ece.cornell.edu/wicker/">Stephen Wicker</a> at <a href="http://wisl.ece.cornell.edu/index.html">Cornell</a>. I&#8217;ve talked about stigmergy quite a bit in previous articles and in my graduate research I actually got a chance to create social intelligence between embedded devices. It was a lot of fun to see a flock of tiny devices &#8220;come alive&#8221; and show &#8220;bottom up&#8221; intelligence.</p>
<p><a href="http://www.tinyos.net/">TinyOS</a> is an <a href="http://www.sourceforge.net/projects/tinyos/">open source</a> operating system and platform intended for wireless sensor networks. <a href="http://en.wikipedia.org/wiki/TinyOS">TinyOS</a> is an embedded operating system written in the <a title="NesC" href="http://en.wikipedia.org/wiki/NesC">nesC programming language</a> as a set of cooperating tasks and processes. TinyOS started as a collaboration between the <a title="University of California, Berkeley" href="http://en.wikipedia.org/wiki/University_of_California,_Berkeley">University of California, Berkeley</a> in co-operation with Intel Research. Since that time the project has grown into an international consortium, the TinyOS Alliance. There is a <a href="http://www.cs.berkeley.edu/~culler/tinyos/ttx/">lot</a> of <a href="http://tinyos.stanford.edu/ttx/2007/">interesting</a> research based around wireless mobile ad hoc network (MANETs).</p>
<p>The primary language, <a href="http://www.tinyos.net/tinyos-1.x/doc/nesc/ref.pdf">nesC</a> (<strong>n</strong>etwork <strong>e</strong>mbedded <strong>s</strong>ystems C), used for development on TinyOS is a <span class="mw-redirect">component-based</span>, event-driven programming language (quick <a href="http://www.tinyos.net/tinyos-1.x/doc/tutorial/lesson1.html">tutorial</a> for the interested). It&#8217;s basically C with some minor quirks and less features. However, the real difference is whichever compiler variant you end up using for your mote platform as some compilers are far more mature than others.  We worked on the <a href="http://www.xbow.com/Products/Product_pdf_files/Wireless_pdf/Imote2_Datasheet.pdf">Imote2</a> hardware which is considerably more advanced than earlier TinyOS based motes. Each Imote2 mote has a 415MHZ clock rate and 32 Megs or ram running on an Intel <a href="http://download.intel.com/pressroom/kits/pxa27x/pb_pxa27x_fam.pdf">XScale2</a> processor. The one thing the XScale2 does not have is a floating point processor on its ALU, which provided some hurdles to overcome with floating point processing. I taught 3 days of a graduate class on communications as part of my graduate research work. I&#8217;ve posted my slides (slides are located <a href="http://jpatterson.floe.tv/tinyOS/IntroTinyOSPlatform.ppt">here</a> and <a href="http://jpatterson.floe.tv/tinyOS/IntroTinyOSPlatform_pt2.ppt">here</a>) from class on developing for the platform for those interested in what the platform is like. My sessions were on specifically the TinyOS platform and programming in the nesC language.</p>

<div class="slideshow" id="ngg_slideshow4"><p>The <a href="http://www.macromedia.com/go/getflashplayer">Flash Player</a> and <a href="http://www.mozilla.com/firefox/">a browser with Javascript support</a> are needed..</p></div>
	<script type="text/javascript" defer="defer">
		var so435 = new SWFObject("http://jpatterson.floe.tv/wp-content/plugins/nextgen-gallery/imagerotator.swf", "ngg_slideshow4", "320", "240", "7", "#000000");
		so435.addParam("wmode", "opaque");
		so435.addVariable("file", "http://jpatterson.floe.tv/wp-content/plugins/nextgen-gallery/nggextractXML.php?gid=4");
		so435.addVariable("linkfromdisplay", "true");
		so435.addVariable("shownavigation", "true");
		so435.addVariable("showicons", "true");
		so435.addVariable("overstretch", "true");
		so435.addVariable("backcolor", "0x000000");
		so435.addVariable("frontcolor", "0xFFFFFF");
		so435.addVariable("lightcolor", "0xCC0000");
		so435.addVariable("screencolor", "0x000000");
		so435.addVariable("rotatetime", "5");
		so435.addVariable("transition", "random");
		so435.addVariable("width", "320");
		so435.addVariable("height", "240");
		so435.write("ngg_slideshow4");
	</script>
<p>I spent a lot of time studying the basics of ad hoc networks, routing, and self organization while doing our research. It really made me re-evaluate <a href="http://jpatterson.floe.tv/index.php/2009/01/14/what-is-an-operating-system/">what an operating system actually is</a> and is not (<a href="http://jpatterson.floe.tv/index.php/2008/12/12/a-quick-glance-at-the-history-of-the-operating-system/">a browser is not an operation system</a>). I also became a tremendously better programmer having to work on an embedded processor with much tighter constraints that on a desktop machine. Spending a lot of time in ad hoc networks also made me think about other domains where we having an uncertain topology of &#8220;nodes&#8221; where dynamic decentralized discovery is needed &#8212; namely linked web data and the self organizing web data ecosystem. It also made me think of new ideas on how computing is evolving and where we can draw on themes from wireless ad hoc networks and apply them to other domains.</p>
<p>The field of <a href="http://jpatterson.floe.tv/index.php/2008/08/25/the-principles-of-self-organization-stigmergy/">self organization</a> is amazing and I really enjoyed being able to work in academia doing research in that arena. It gave me a new appreciation for the non-mainstream area of computer science where I had to rely more on theory background and less of dogmatic ideas of mainstream programming. I also got to see my own work in self organization come alive, which was a thrill for me. Somewhere along the dull days of research, I scribbled down the words &#8220;<strong>elegant complexity <a href="http://blogs.wnyc.org/radiolab/2008/07/15/emergence/">emerges</a> from brilliant simplicity</strong>&#8221; as a footnote on a draft of my thesis; I think that holds, especially in &#8220;bottom up&#8221; emergent systems. I think all too often in design we forget occam&#8217;s razor and try to overdo it. Termite is a great example of this as it uses no special packets to broadcast network topology yet continuously explores possible new routing solutions.</p>
<p>TinyTermite is completely decentralized and I believe provides a good example of the possibilities of decentralized dynamic discovery. I&#8217;ve already touched on some ways that this type of discovery could be useful in other domains, such as <a href="http://jpatterson.floe.tv/index.php/2009/04/19/the-data-ecology/">open linked web data</a>. I also believe as the web continues to take over the desktop that we will see more techniques borrowed from mesh networks and applied to the internet as it becomes more like a single machine. In future articles I want to sketch out more ways I believe that could happen.</p>
<p>References</p>
<p>[1] J Patterson, <em>TinyTermite: A Secure Routing Algorithm (Master&#8217;s Thesis)<br />
</em></p>
<p>[2] M Roth, S Wicker, <a href="[4] M Roth, S Wicker, Termite: A Swarm Intelligent Routing Algorithm for Mobile Wireless Ad-Hoc Networks"><em>Termite: A Swarm Intelligent Routing Algorithm for Mobile Wireless Ad-Hoc Networks</em></a></p>
<p>[3] M Sartipi, J Patterson, <em>TinyTermite: A Secure Routing Algorithm on Intel Mote 2 Sensor Network Platform, Innovative Applications of Artificial Intelligence 2009</em></p>
]]></content:encoded>
			<wfw:commentRss>http://jpatterson.floe.tv/index.php/2009/07/19/tinyos-and-tinytermite/feed/</wfw:commentRss>
		</item>
		<item>
		<title>The Data Ecology</title>
		<link>http://jpatterson.floe.tv/index.php/2009/04/19/the-data-ecology/</link>
		<comments>http://jpatterson.floe.tv/index.php/2009/04/19/the-data-ecology/#comments</comments>
		<pubDate>Mon, 20 Apr 2009 01:18:48 +0000</pubDate>
		<dc:creator>Josh Patterson</dc:creator>
		
		<category><![CDATA[Brainstorming]]></category>

		<category><![CDATA[Self Organization]]></category>

		<category><![CDATA[The Data Ecology]]></category>

		<category><![CDATA[discovery]]></category>

		<category><![CDATA[XRDS-s]]></category>

		<guid isPermaLink="false">http://jpatterson.floe.tv/?p=19</guid>
		<description><![CDATA[
Where there is an ecosystem, there are local experts. An outsider can muddle through an unfamiliar wilderness at some level, but to thrive or to survive a crisis, he&#8217;ll require local expertise. Gardeners regularly surprise academic experts by growing things they aren&#8217;t supposed to be able to grow because, as local experts, they tune into [...]]]></description>
			<content:encoded><![CDATA[<p><img style="margin: 20px;" src="http://cache.boston.com/universal/site_graphics/blogs/bigpicture/efa_10_06/07_ff.jpg" alt="Newly Forming Ecosystem" width="591" height="394" /></p>
<blockquote><p><em>Where there is an ecosystem, there are local experts. An outsider can muddle through an unfamiliar wilderness at some level, but to thrive or to survive a crisis, he&#8217;ll require local expertise. Gardeners regularly surprise academic experts by growing things they aren&#8217;t supposed to be able to grow because, as local experts, they tune into the neighborhood soil and climate.</em></p></blockquote>
<blockquote>
<p style="text-align: right;"><em>— from the book </em><a href="http://www.amazon.com/Out-Control-Biology-Machines-Economic/dp/0201483408/ref=sr_1_1?ie=UTF8&amp;s=books&amp;qid=1226172900&amp;sr=1-1">Out of Control: The New Biology of Machines, Social Systems, &amp; the Economic World</a><em> by Kevin Kelly, Image courtesy of Boston.com&#8217;s &#8220;<a href="http://www.boston.com/bigpicture/2008/10/earth_from_above_comes_to_nyc.html">The Big Picture</a>&#8220;; </em><span class="bpMore"><span style="color: #999999;"><em>Mountainous countryside near Maelifellssandur, Myrdalsjökull Region, Iceland. Once the young lava fields of Iceland cool down, life begins anew little by little. Ice, wind and water flatten and carve out shapes to begin with, then, during the summer, bacteria, lichen and fungi prepare the soil for plants, in particular mosses which adapt to an environment which remains difficult. These plants colonise the most favourable sites and terrain little by little, forming a new ecosystem.</em></span> [<a href="http://maps.google.com/?ie=UTF8&amp;ll=63.761851,-19.204102&amp;spn=0.935022,2.848206&amp;t=k&amp;z=9" target="_new">map</a>] (© <a href="http://www.yannarthusbertrand.org/">Yann Arthus-Bertrand</a>)</span></p>
</blockquote>
<p>Much like the <a href="http://www.kk.org/thetechnium/archives/2006/03/civilizations_a.php">physical</a> world, our current web of data on the internet is <a href="http://www.kk.org/thetechnium/archives/2007/03/any_organism_th.php">growing and adapting to its environment</a>. Everyday this web of linked data becomes a more intertwined ecosystem that grows along side other regions of linked data, <a href="http://identi.ca/">linking the sub-ecosystems together</a>. Each area of this ecosystem, just like in nature, has its own peculiarities and personality. There is a lot of movement in the linked data space, from the concept of &#8220;the cloud&#8221; to other technologies like Azure and RDF. Some themes I keep seeing are:</p>
<ul>
<li>The inherent social nature of the web</li>
<li>Interconnectedness vs the &#8220;sandbox&#8221; mentality</li>
<li>Implications of interconnectedness</li>
<li>Wiring into open ecosystems and creating more value</li>
</ul>
<p>The web is, and will continue to be, a very social <a href="http://autonomo.us/2008/11/social-networking/">place</a>. The nature of intelligence is social, so the (open?) social graph will naturally be a <a href="http://news.floe.tv/index.php/2008/08/08/what-is-a-floe">conduit of related information</a>. Some data will be explicitly linked via technologies like <a href="http://www.hueniverse.com/hueniverse/2009/03/setting-the-stage-for-the-new-oauth-discovery-protocol.html">XRD</a> (and other discovery techniques), other data will be implicitly linked via tech like what our friends are <a href="http://www.twitter.com">talking about</a> or <a href="http://www.techcrunchit.com/2008/10/21/friendfeed-the-little-engine-that-could/">doing</a> (<a href="http://www.hueniverse.com/hueniverse/2009/03/xrd-document-structure.html">XRD</a> and <a href="http://www.hueniverse.com/hueniverse/2009/03/the-discovery-protocol-stack.html">LRDD </a>are key in this space). I believe that <a href="http://www.friendfeed.com">friendfeed</a> and &#8220;follow&#8221; are early &#8220;primordial soup&#8221;-type social discovery techniques. As this space <a href="http://www.readwriteweb.com/archives/report_social_web_usage_tipped_2008.php#more">evolves</a> we&#8217;ll continue to see projects such as laconi.ca and magnolia2 pop up, projects that allow for far more <a href="http://www.techcrunch.com/2008/12/22/scrapplet-powerful-social-web-canvases-that-are-as-easy-as-drag-and-drop/">decentralization of user information</a> yet <a href="http://www.techcrunchit.com/2008/10/24/realtime-wars-pick-up-speed/">employ smart and simple federation techniques</a> to allow for identity to emerge from the <a href="http://venturebeat.com/2008/10/20/twine-goes-fully-public-with-next-generation-bookmarking/">nebulous pockets of personal information scattered around the web</a>.</p>
<p><a href="http://radar.oreilly.com/2008/10/the-connected-economy.html">Interconnectedness</a> is another facet of an ecosystem, as the output of one system is the input of another system. Companies can no longer afford to dictate how the internet as a &#8220;platform&#8221; works as there is only value in the network effect; Companies have to come to the realization that <a href="http://www.techcrunch.com/2009/02/08/what-i-learned-at-davos-how-networking-and-feedback-loops-can-make-a-better-world/">value is in the connections</a>, yet not so much in just the information itself. Far too many companies want to try and create stockholder value through creating a small <a href="http://www.readwriteweb.com/archives/finally_google_to_offer_rss_fe.php">closed ecosystem</a> (a &#8220;sandbox&#8221;) and then trapping users inside that sandboxed ecosystem, holding them hostage with no other choices after lock-in. Today the internet is about value coming from choice and &#8220;sandboxes&#8221; limit this value through their constrictive nature. In the new linked <a href="http://radar.oreilly.com/2007/12/google-admits-data-is-the-inte.html">data ecosystem</a>, a sandbox or data island has little to no value as it does not benefit from relationships with other data, providing less context through fewer connections. We are quickly coming to a day where <a href="http://en.wikipedia.org/wiki/Metcalfes_Law">how we connect our data determines just how much value that data can have</a> as it determines or limits how the data can interact with the greater data ecosystem.</p>
<p>In the current climate, sandboxes lose value with time due to the lack of connections. With open linked data, the ecosystem is always growing, as well as connections, so data accrues value naturally with time. I liken this to how money can earn interest in your bank account, but not in a mason jar buried in your back yard. An interesting example of connecting data together was a <a href="http://blog.wired.com/business/2009/01/twitter-yahoo-b.html">mashup between twitter and yahoo</a> data:</p>
<blockquote><p>That inspired Singh to create the TweetNews mashup, combining the real-time search Yahoo’s BOSS tools with the freshness of Twitter. As an added bonus each story listed in TweetNews’ results also shows the relevant tweets, which themselves often have additional links. A quick search this morning for &#8220;flight 1549&#8243; yielded seven unique links from just the top result.</p>
<p>TweetNews is not only a fantastic resource, but might well be the best mashup we’ve ever seen. The remarkable part is that Singh was able to create it with less than one hundred lines of code — a testament to the power of Yahoo Boss and APIs like Twitter’s.</p></blockquote>
<p>Mashups like this are the basis for a whole class of simple interconnected web building blocks that will evolve the data ecosystem towards new and interesting places. We need connections not only between sites, but between data as well, to create feedback (which we <a href="http://jpatterson.floe.tv/index.php/2008/08/17/the-principles-of-self-organization-positive-feedback/">established earlier as a driver of growth</a> in a system). Feedback along a system of connections in an ecosystem will create the building blocks for all sorts of new and interesting systems.</p>
<p>The interaction of an ecosystem&#8217;s parts at the local level create the ecosystem through emergent ripples. The local interactions we start with dictate which possible set of stable states we could arrive at. Open and free local interactions will more likely result in a more democratic and decentralized web data ecosystem. Closed and proprietary local parts will result in very muted, controlled, and color-less reactions. The freedom of choice at the local level is what drives any dynamic decentralized system, and users need to be able to choose where their data goes, and how it gets used. However, every ecosystem has to start somewhere, and the mechanics to boot up a successful ecosystem can be daunting.</p>
<p>In the book &#8220;<a href="http://www.amazon.com/Out-Control-Biology-Machines-Economic/dp/0201483408/ref=sr_1_2?ie=UTF8&amp;s=books&amp;qid=1224693072&amp;sr=8-2">Out of Control</a>&#8220;, Kevin Kelly talks about recreating a lost biological ecosystem from scratch, and the difficulties involved in such a process:</p>
<blockquote><p>The problem Wingate faced was the perennial paradox that all whole system makers confront: where do you start? Everything requires everything else to stay up, yet you can&#8217;t levitate the whole thing at once. Some things have to happen first. And in the correct order.</p></blockquote>
<p>This is basically the issue of having a highly interdependent system that needs the parts to grow together in a cooperative but autonomous manner. Kelly goes on to make several other observations about ecosystems:</p>
<ul>
<li>It was very easy to arrive at a stable ecosystem, if you didn&#8217;t care what system you arrived at.</li>
<li>The larger an Ecosphere is, the longer it takes to stabilize, and the harder it is to kill it. But once in gear, the collective give and take of a vivisystem takes root and persists.</li>
<li>Evolution not only evolves the functioning community, but it also finely tunes the assembly process of the gathering until the community practically falls together.</li>
</ul>
<p>Which sum together to essentially mean that an ecosystem doesn&#8217;t just happen in an instant, it has to be &#8220;booted up&#8221;, so to speak, and even beyond that it has to organically develop in a cooperative manner. The advantage for any biological ecosystem is summed up by Kelly as:</p>
<blockquote><p>Given a slim foothold, <em>the remarkable latent power in interconnected green things can launch the law of increasing returns: &#8220;Them that has, gets more.&#8221;</em></p></blockquote>
<p>Which brings us back to our system of linked web data; <strong>I hypothesize that the same effect is true for web linked data, as there is and will continue to be <a href="http://www.techcrunch.com/2009/02/07/why-facebook-isnt-poised-to-steal-twitters-thunder/">remarkable latent power in interconnected linked data</a> (and services) which will continue to launch the law of increasing returns.</strong> I also assert that web linked data and dynamic discovery will be a driving force in the next wave of web technology. Linking of data and <a href="http://www.hueniverse.com/hueniverse/2009/03/xrd-sneakpeek.html">automated discovery</a> (via techniques such as MetaData discovery / LRDD) will be the catalyst for co-evolution in future web iterations, but the evolution of these discovery and connection mechanisms won&#8217;t be without their growing pains.</p>
<p>Having a thriving, growing vivisystem of interconnected data is a high and mighty idea, but there are many considerations to take a look at under this scenario.</p>
<ul>
<li>Technological hurdles</li>
<li>Not all data will be linked</li>
<li>Not every application needs to be open source</li>
<li><a href="http://www.techcrunchit.com/2008/10/22/facebook-connect-and-openid-relationship-status-%E2%80%9Cit%E2%80%99s-complicated%E2%80%9D/">Privacy and Control balance</a></li>
<li>Threats to entrenched institutions, Opportunities for the grassroots players</li>
</ul>
<p>Technology is generally a double edged sword; we come up with great ideas that can advance the art, but then have to go about finding design tradeoffs so that current technology can meet future needs. The first generation of the web had us in a single document mindset with some slightly dynamic interactions. The second (current, or &#8220;web 2.0&#8243; as Oreilly calls it) generation has been about moving towards social networks, explosion of rich online media, with an explosion of personal publishing. All of this has provided us with an abundance of information about us scattered across the web.</p>
<p>I believe the next wave of the web will focus on dynamic discovery and federation of these resources to produce more sophisticated and intuitive social media. However, currently we struggle with finding and <a href="http://www.hueniverse.com/hueniverse/2009/03/sunday-morning-discovery.html#more">linking this data together</a> in a easy and cohesive manner, as we have bits of data scattered across a very distributed data store (the internet). If we look at it from a computer science historical standpoint, <strong>I think the biggest issue with respect to linked data is basically web2.0&#8217;s version of shared memory and interprocess communication.</strong> I think this topic will have to be widely discussed as we approach issues such as:</p>
<blockquote><p>How will we share and relate facebook data with myspace data, and pull that merged data store into a third party application securely and intuitively enough for the average user?</p></blockquote>
<p>Another issue that I&#8217;ve seen brought up is the fact that not all data should be linked together. I think this is very important from the since that data control should be granular enough that we (the user and owner of our data) can make those distinctions at our own discretion. Data ownership and privacy will continue to be big topics in this arena.</p>
<p>Regardless of the hurdles, the companies that continue to wire into the data ecology will find their net returns magnified over time. The companies that continue to live in their sandbox will have to rely on considerable barriers to entry surrounding their market in order to continue operation. <a href="http://www.hueniverse.com/hueniverse/discovery/">Automated discovery</a> and wireup of services will be a key driver in the bootup of the web data ecology. More and more, the data ecology will tie together the desktop, <a href="http://www.readwriteweb.com/archives/yahoo_opens_yos_to_developers.php#more">web</a>, <a href="http://www.readwriteweb.com/archives/the_first_new_york_times_api_i.php">traditional media</a>, <a href="http://gartner.com/it/page.jsp?id=784212">organizations</a>, <a href="http://broadcast.oreilly.com/2008/10/xbrl-and-the-need-for-regulato.html">entities</a> and <a href="http://groups.google.com/group/microformats/browse_thread/thread/ab266046384a15e6">closed systems</a> into a computing space that is more open and <a href="http://evan.prodromou.name/Journal/14_Messidor_CCXVI">interconnected</a> than ever before.</p>
]]></content:encoded>
			<wfw:commentRss>http://jpatterson.floe.tv/index.php/2009/04/19/the-data-ecology/feed/</wfw:commentRss>
		</item>
		<item>
		<title>What Is An Operating System?</title>
		<link>http://jpatterson.floe.tv/index.php/2009/01/14/what-is-an-operating-system/</link>
		<comments>http://jpatterson.floe.tv/index.php/2009/01/14/what-is-an-operating-system/#comments</comments>
		<pubDate>Wed, 14 Jan 2009 18:12:18 +0000</pubDate>
		<dc:creator>Josh Patterson</dc:creator>
		
		<category><![CDATA[Brainstorming]]></category>

		<category><![CDATA[The Evolution of Computing]]></category>

		<category><![CDATA[operating system]]></category>

		<guid isPermaLink="false">http://jpatterson.floe.tv/?p=34</guid>
		<description><![CDATA[Without its software, a computer is basically a useless lump of metal.
- first line of the book &#8220;Operating Systems: Design and Implementation&#8221;

So, in my last article, we took a look at the last 50 or so years of operating system evolution. In this article, I want to take a short look at the current state [...]]]></description>
			<content:encoded><![CDATA[<blockquote><p>Without its software, a computer is basically a useless lump of metal.</p>
<p style="text-align: right;"><em>- first line of the book &#8220;Operating Systems: Design and Implementation&#8221;</em></p>
</blockquote>
<p>So, in my last article, <a href="http://jpatterson.floe.tv/index.php/2008/12/12/a-quick-glance-at-the-history-of-the-operating-system/">we took a look at the last 50 or so years of operating system evolution</a>. In this article, I want to take a short look at the current state of what an operating system is and does. So what exactly is an operating system?</p>
<blockquote><p><em>Computer software can be roughly divided into two kinds: the system programs, <strong>which manage the operation of the computer itself</strong>, and the application programs, <strong>which solve problems for the users</strong>. The most fundamental of all the systems programs is the operating system, which controls all the computer&#8217;s resources and provides the base upon which the application programs can be written. </em>[1]<em><br />
</em></p></blockquote>
<p>Ok, so, thats pretty interesting right? So, to be fair, when we say &#8220;computer&#8221;, exactly what are we referring to?</p>
<blockquote><p><em>A modern computer system consists of one of more processors, some main memory, clocks, terminals, disks, network interfaces, and other input/output devices. All in all, a complex system. </em>[1]<em><br />
</em></p></blockquote>
<p>So we&#8217;ve established what an operating system is, and what its trying to work with (components of a computer) &#8212; but why do we need this so called &#8220;operating system&#8221;?</p>
<blockquote><p><em>Writing programs that keep track of all these components and use them correctly, let alone optimally, is an extremely difficult job. If every programmer had to be concerned with how disk drives work, and with all the dozens of things that could go wrong when reading a disk block, it is unlikely that many programs could be written at all. </em>[1]</p></blockquote>
<p>So, basically what we are talking about when we say &#8220;operating system&#8221; is a layer of services that abstract a lower level of complexity away so that we can build other more complex services on top of them without re-inventing the wheel. A very popular and highly influential operating system is the unix operating system. In the book &#8220;Design of the Unix Operating System&#8221; [2], Bach takes a look at why Unix was successful:</p>
<ul>
<li>written in high level language, C, making it easy to read, change, and move to other systems</li>
<li>simple ui, power to provide services that users want</li>
<li><strong>provides primitives that permit complex programs to be built from simpler programs</strong></li>
<li>uses a hierarchial file system that allows easy maintenance and efficient implementation</li>
<li>uses a consistent format for files, the byte stream, making application programs easier to write</li>
<li>proves a simple, consistent interface to peripheral devices</li>
<li>is multi-user, multi-process system; each user can execute several process simultaneaously</li>
<li>hides the machine architecture from the user, kaing it easier to write programs that run on different hardware implementations</li>
</ul>
<p>Bach also gives us the famous Unix diagram on the front cover of the book:<a href="https://people.chem.umass.edu/wiki/images/e/eb/Kernel.png"></a></p>
<p style="text-align: center;"><img style="border: 0pt none; margin: 20px; vertical-align: middle;" src="https://people.chem.umass.edu/wiki/images/e/eb/Kernel.png" border="0" alt="Kernel Diagram" width="402" height="405" align="left" /></p>
<p>Which shows up how the system is layered around the hardware &#8220;core&#8221;, abstracting underlying plumbing as it goes. In this way, Unix is a very interesting design in that it takes a lot of loosely coupled pieces, and allows for higher order functions to be built on top of them.</p>
<p>Another interesting more recently developed operating system is TinyOS. <a href="http://www.tinyos.net/">TinyOS</a> is an <a href="http://www.sourceforge.net/projects/tinyos/">open source</a> operating system and platform intended for wireless sensor networks. <a href="http://en.wikipedia.org/wiki/TinyOS">TinyOS</a> is an embedded operating system written in the <a title="NesC" href="http://en.wikipedia.org/wiki/NesC">nesC programming language</a> as a set of cooperating tasks and processes. TinyOS started as a collaboration between the <a title="University of California, Berkeley" href="http://en.wikipedia.org/wiki/University_of_California,_Berkeley">University of California, Berkeley</a> in co-operation with Intel Research. Since that time the project has grown into an international consortium, the TinyOS Alliance. There is a <a href="http://www.cs.berkeley.edu/~culler/tinyos/ttx/">lot</a> of <a href="http://tinyos.stanford.edu/ttx/2007/">interesting</a> research based around wireless mobile ad hoc network (MANETs).</p>
<p>An interesting contrast between TinyOS and Unix is that a lot of people assume that an operating system and a desktop or graphical user interface (of any sort, windows or command line) are necessary components of an operating system; this is in fact, false, as TinyOS is an example of an OS that runs with no visual interface other than 3 LEDs on the mote circuit board. It also has no direct user input device, as it is meant to run the low level services of a small embedded device.</p>
<p>Given that from the previous article we established a history of operating systems, and in this article we took at look at modern operating system design (Unix), and emerging design (TinyOS) &#8212; I believe it is safe to say that the concept of an operating system is shifting and changing in different ways. Where are the bounds of what can be considered an operating system? The &#8220;Web2.0&#8243; media seems to want to annoint every vaguely new computing paradigm as an &#8220;operating system&#8221; such as</p>
<ul>
<li>facebook</li>
<li>a webpage</li>
<li>a <a href="http://www.linuxjournal.com/content/gacl">web browser</a></li>
<li>a web desktop</li>
<li>a remote connection to a desktop</li>
</ul>
<p>Given the arc of the previous article on the history of computing, and the current article&#8217;s focus on what modern operating system&#8217;s entail, I fail to see how a single web page or a <a href="http://teddziuba.com/2008/09/a-web-os-are-you-dense.html">web browser</a> can possibly be defined as an &#8220;operating system&#8221;. None of the items listed above &#8220;<em><strong>manage the operation of the computer itself&#8221;</strong>.</em> By the definition established above for an operating system, <a href="http://www.tbray.org/ongoing/When/200x/2008/06/03/Not-an-OS">these components are not operating systems by any means</a>. Tim Bray even tweeted:</p>
<blockquote><p><a href="http://twitter.com/timbray/statuses/823088211">I strive to maintain an open mind when nontechnical people talk about the &#8220;Internet OS&#8221; or &#8220;Web OS&#8221;. Sometimes it&#8217;s tough.</a></p></blockquote>
<p>However, as time goes on, every domain evolves as <strong>equilibrium is death</strong>. Computing is no different, and in the age of the internet we are quickly becoming a highly interconnected society by means of more sophisticated tools. As the complexity of our system advances, new layers of abstraction are required to built yet even more complex tools and systems. There is no doubt that the computing experience is shifting and <a href="http://pewinternet.org/PPF/r/270/report_display.asp">users&#8217; expectations are shifting</a> as well. We are increasingly entering an age where data moves everywhere and the user experience is no longer on the desktop, but where ever the user happens to be using a device and in whatever context the user is in, be it desktop, commandline, or webpage.</p>
<p>I believe past shifts in computing can give us insights in how <a href="http://www.crunchgear.com/2009/01/23/what-would-life-after-microsoft-look-like-legos/">future shifts</a> may occur, from <a href="http://www.tbray.org/ongoing/When/200x/2008/11/21/2008-Storage-Hierarchy">storage</a>, to <a href="http://www.cerias.purdue.edu/site/blog/rethinking_computing_insanity_practice_and_research">computing infrastructure</a>, to <a href="http://reasonablysmart.blogspot.com/2008/12/cloudy-bit.html">cloud</a> computing. I will content that these shifts will produce needs for new layers of abstraction, similar to how the concept of an operating system evolved from the need to abstract away things like disk block access. As more complex services evolve on the web that need abstraction and aggregation via their APIs, what will our abstraction mechanisms look like, and how is this epoch of computing evolution any different than what was faced back in the 50s and 60s? What will the diagram above (Unix layers) look like in the near future with respect to layers of abstraction needed to produce more complex internet applicatons? I think looking back to it is an interesting topic, just as <a href="http://radar.oreilly.com/2008/08/social-networking-for-books.html">Tim Oreilly talks about</a> how a critical design aspect of future web apps is:</p>
<blockquote><p>the <span id="apture_prvw2" class="aptureLink"><span class="aptureLinkIcon" style="background-position: right -1048px;"> </span><a class="aptureLink snap_noshots" href="http://en.wikipedia.org/wiki/The%20Unix%20Programming%20Environment">Unix/Internet model of &#8220;small pieces loosely joined,&#8221;</a></span> in which <a href="http://radar.oreilly.com/2008/05/microhoo-corporate-penis-envy.html">cooperating applications come together to build value greater than any of the pieces do alone</a>.</p></blockquote>
<p>Here very soon we may end up <a href="http://appliedlife.blogspot.com/2008/06/why-there-is-or-might-be-web-os.html">rethinking</a> what an operating system really is, and quite possibly see our daily computing experience move away from being OS centered and towards a more <strong>ephemeral computing experience</strong>. In coming articles I&#8217;m going to take a look at how I think decentralized systems such as TinyOS will influence some older ideas to produce the next epoch of computing on the internet, and how the loosely coupled mindset of Unix may have a strong influence on this design as well.</p>
<p>References</p>
<p>[1] Andrew Tanenbaum, <a href="http://www.amazon.com/Operating-Systems-Design-Implementation-Textbook/dp/0003458903/ref=sr_1_9?ie=UTF8&amp;s=books&amp;qid=1229096159&amp;sr=1-9"><em>Operating Systems: Design and Implementation</em></a>, Prentice Hall, 1987.</p>
<p>[2] M. Bach, <em><a href="http://www.amazon.com/Design-Operating-System-Prentice-Software/dp/0132017997/ref=pd_bbs_6?ie=UTF8&amp;s=books&amp;qid=1229025672&amp;sr=8-6">Design of the Unix Operating System</a></em><a href="http://www.amazon.com/Design-Operating-System-Prentice-Software/dp/0132017997/ref=pd_bbs_6?ie=UTF8&amp;s=books&amp;qid=1229025672&amp;sr=8-6"> </a>, Prentice Hall, 1986.<a href="http://www.amazon.com/Design-Operating-System-Prentice-Software/dp/0132017997/ref=pd_bbs_6?ie=UTF8&amp;s=books&amp;qid=1229025672&amp;sr=8-6"><br />
</a></p>
]]></content:encoded>
			<wfw:commentRss>http://jpatterson.floe.tv/index.php/2009/01/14/what-is-an-operating-system/feed/</wfw:commentRss>
		</item>
		<item>
		<title>A Quick Glance at the History of the Operating System</title>
		<link>http://jpatterson.floe.tv/index.php/2008/12/12/a-quick-glance-at-the-history-of-the-operating-system/</link>
		<comments>http://jpatterson.floe.tv/index.php/2008/12/12/a-quick-glance-at-the-history-of-the-operating-system/#comments</comments>
		<pubDate>Fri, 12 Dec 2008 15:44:19 +0000</pubDate>
		<dc:creator>Josh Patterson</dc:creator>
		
		<category><![CDATA[The Evolution of Computing]]></category>

		<category><![CDATA[history]]></category>

		<category><![CDATA[operating system]]></category>

		<guid isPermaLink="false">http://jpatterson.floe.tv/?p=44</guid>
		<description><![CDATA[Long ago it became clear that in order to create more complex programs, we needed to shield programmers from the complexity of the hardware. [1]
In any discipline, it&#8217;s interesting to see where we&#8217;ve been to get an idea of where we might be heading. These days we hear a lot of things about cloud computing, [...]]]></description>
			<content:encoded><![CDATA[<blockquote><p>Long ago it became clear that in order to create more complex programs, we needed to shield programmers from the complexity of the hardware. [1]</p></blockquote>
<p>In any discipline, it&#8217;s interesting to see where we&#8217;ve been to get an idea of where we might be heading. These days we hear a lot of things about cloud computing, browsers as &#8220;operating systems&#8221;, and web2.0; In order to setup some future articles (similar to what I am doing with self organization), I am going to write a bit about where operating systems have been, and then what the key principles of operating systems are &#8212; and then in future articles how this relates to evolution of the web. But first, let&#8217;s cover a little background.</p>
<p>The first era of the digital computer was in the time of <a href="http://en.wikipedia.org/wiki/Babbage">Charles Babbage</a> (1792 - 1871), a computer that never got built completely. This computer was largely conceptual and never got off of the drawing board, so to speak. Needles to say, it was based around the basics of computation and had no operating system to speak of. However, later on an operational <a title="Difference engine" href="http://en.wikipedia.org/wiki/Difference_engine">difference engine</a> was constructed from Babbage&#8217;s original plans and the <a class="mw-redirect" title="London Science Museum" href="http://en.wikipedia.org/wiki/London_Science_Museum">London Science Museum</a> has parts of Babbage&#8217;s uncompleted mechanisms on display.</p>
<p>The next era of computing I want to look at is the era of &#8220;punch cards&#8221;. A punch card (also known as a Hollerith card or <em>IBM card</em>) is a paper card that holds digital information encoded as holes or the absence of a hole. Punch cards, now obsolete as a medium, were widely used throughput the 19th century as control mechanisms for textile looms and certain musical instruments. In the 20th century punch cards were used as <a title="Unit record equipment" href="http://en.wikipedia.org/wiki/Unit_record_equipment">unit record machines</a> for input, processing, and <span class="mw-redirect">data storage</span>. Punch cards were also used as the primary input medium for early digital computers for programs and data.</p>
<p>After punch cards, we see the first signs of the evolution of operating systems with vaccum tubes and plug boards (1945 - 1955) [1]. These operating systems were based a lot on intense technology developments from WWII. I&#8217;ve always viewed WWII as a major driver in advancing the state of computers in general as so much intensive research was poured into the subject in such a short period of time. Aspects of this era of computing include:</p>
<ul>
<li>Vacuum tubes and plugboards</li>
<li>Absolute machine language</li>
<li>No programming languages, no assembly</li>
<li>Burned out vacuum tubes were more troublesome than software bugs</li>
<li>Reliability an issue</li>
</ul>
<p>The second generation (1955 - 1965) [1] was based around the development of the transistor and batch systems. Properties included</p>
<ul>
<li>These systems were more reliable and could be manufactured for mass production</li>
<li>Clear separation between designer, builder, operator, programmer, and maintenance</li>
<li>Generally only large institutions could afford the multi-million dollar price tag</li>
<li>Code was first written in FORTRAN or Assembly, then punched in on cards</li>
<li>Mostly used for scientific and engineering calculations, such as solving partial differential equations</li>
<li>Typical operating systems in these times were Fortran Monitor System and IBSYS</li>
</ul>
<p>The third generation (1965 - 1980) [1] was based around integrated circuits and multiprogramming. The IBM System/360 was a major part of this epoch that met the needs of a wide variety of customer. Properties of this generation included</p>
<ul>
<li>The evolution of families of machines that would run the same code</li>
<li>First use of small scale integrated circuits in the IBM Sys360</li>
<li>Programming was still very difficult</li>
<li>Partitioning of memory for multiple concurrent jobs to be processed (multiprogramming)</li>
<li>Concept of time sharing and terminals</li>
<li>Development of the PDP-1 by DEC</li>
<li>Dennis Ritchie rewrites UNIX in a high level language called &#8220;C&#8221;</li>
</ul>
<p>The fourth generation (1980 - 1990) [1] was based around personal computers, most notable the Apple IIe, the Mac, and MSDos. Notable things about this period include</p>
<ul>
<li>Individuals could now afford home computers such as the Apple IIe [3]</li>
<li>Advent of the GUI in devices <a href="http://www.folklore.org/index.py">such as the Mac</a> [3]</li>
<li>Widespread growth of software for personal computers</li>
<li>Two operating systems have dominated since then, UNIX and MSDOS (plus their derivatives) [2]</li>
</ul>
<p>As I mentioned above, I wrote up this review because I want to take a look at where we&#8217;ve been and see where we might be headed on our evolutionary arc of computing. Some themes I want to examine, in conjunction with themes on linked data, <a href="http://jpatterson.floe.tv/index.php/2008/11/30/a-road-sign-in-a-digital-world/">discovery</a>, and <a href="http://jpatterson.floe.tv/index.php/2008/09/25/discovery-and-social-insects/">self organization</a>, are:</p>
<ul>
<li>What exactly makes up an operating system, and how have those properties shifted over time?</li>
<li>What exactly is this so called &#8220;Cloud&#8221; computing?</li>
<li>Why do some people keep saying the browser is an operating system? (hint: its not)</li>
<li>How does our computing experience shift in the age of HTTP, linked data, and distributed identity?</li>
<li>What can the biological world tell us about <a href="http://jpatterson.floe.tv/index.php/2008/11/23/ad-hoc-discovery-in-mesh-networks/">how to design systems</a> of the future?</li>
</ul>
<p>I think we can find some interesting trends along these arcs, and I believe we&#8217;ll see some patterns revisted.</p>
<p>References</p>
<p>[1] Andrew Tanenbaum, <a href="http://www.amazon.com/Operating-Systems-Design-Implementation-Textbook/dp/0003458903/ref=sr_1_9?ie=UTF8&amp;s=books&amp;qid=1229096159&amp;sr=1-9"><em>Operating Systems: Design and Implementation</em></a>, Prentice Hall, 1987.</p>
<p>[2] M. Bach, <em><a href="http://www.amazon.com/Design-Operating-System-Prentice-Software/dp/0132017997/ref=pd_bbs_6?ie=UTF8&amp;s=books&amp;qid=1229025672&amp;sr=8-6">Design of the Unix Operating System</a></em><a href="http://www.amazon.com/Design-Operating-System-Prentice-Software/dp/0132017997/ref=pd_bbs_6?ie=UTF8&amp;s=books&amp;qid=1229025672&amp;sr=8-6"> </a>, Prentice Hall, 1986.<a href="http://www.amazon.com/Design-Operating-System-Prentice-Software/dp/0132017997/ref=pd_bbs_6?ie=UTF8&amp;s=books&amp;qid=1229025672&amp;sr=8-6"><br />
</a></p>
<p>[3] A. Hertzfeld, <em><a href="http://www.amazon.com/Revolution-Valley-Insanely-Great-Story/dp/0596007191/ref=sr_1_1?ie=UTF8&amp;s=books&amp;qid=1229096198&amp;sr=1-1">Revolution in The Valley: The Insanely Great Story of How the Mac Was Made</a></em>, O&#8217;Reilly Media, Inc., 2004.</p>
]]></content:encoded>
			<wfw:commentRss>http://jpatterson.floe.tv/index.php/2008/12/12/a-quick-glance-at-the-history-of-the-operating-system/feed/</wfw:commentRss>
		</item>
		<item>
		<title>A Road Sign In A Digital World</title>
		<link>http://jpatterson.floe.tv/index.php/2008/11/30/a-road-sign-in-a-digital-world/</link>
		<comments>http://jpatterson.floe.tv/index.php/2008/11/30/a-road-sign-in-a-digital-world/#comments</comments>
		<pubDate>Mon, 01 Dec 2008 03:24:08 +0000</pubDate>
		<dc:creator>Josh Patterson</dc:creator>
		
		<category><![CDATA[Brainstorming]]></category>

		<category><![CDATA[Linked Data]]></category>

		<category><![CDATA[The Internet OS]]></category>

		<category><![CDATA[discovery]]></category>

		<category><![CDATA[personal services index]]></category>

		<category><![CDATA[XRDS-s]]></category>

		<guid isPermaLink="false">http://jpatterson.floe.tv/?p=36</guid>
		<description><![CDATA[Once the young lava fields of Iceland cool down, life begins anew little by little. Ice, wind and water flatten and carve out shapes to begin with, then, during the summer, bacteria, lichen and fungi prepare the soil for plants, in particular mosses which adapt to an environment which remains difficult. These plants colonize the [...]]]></description>
			<content:encoded><![CDATA[<blockquote><p><em><span class="bpMore">Once the young lava fields of Iceland cool down, life begins anew little by little. Ice, wind and water flatten and carve out shapes to begin with, then, during the summer, bacteria, lichen and fungi prepare the soil for plants, in particular mosses which adapt to an environment which remains difficult. These plants colonize the most favourable sites and terrain little by little, forming a new ecosystem.</span></em></p>
<p style="text-align: right;"><em>— from the book </em><a href="http://www.amazon.com/Out-Control-Biology-Machines-Economic/dp/0201483408/ref=sr_1_1?ie=UTF8&amp;s=books&amp;qid=1226172900&amp;sr=1-1">Out of Control: The New Biology of Machines, Social Systems, &amp; the Economic World</a><em> by Kevin Kelly</em></p>
<p style="text-align: right;"><a href="http://www.amazon.com/Out-Control-Biology-Machines-Economic/dp/0201483408/ref=sr_1_2?ie=UTF8&amp;s=books&amp;qid=1224693072&amp;sr=8-2"></a></p>
</blockquote>
<p>I believe we are building a unified ecosystem of web applications that will evolve and grow just like biological ecosystems do. In order to allow this ecosystem of data and applications to co-evolve and interlink over time, we need to provide a way for this ecosystem to <a href="http://www.hueniverse.com/hueniverse/2008/07/beginners-guide.html">discover</a> and <a href="http://www.hueniverse.com/hueniverse/2008/07/beginners-gui-1.html">self organize</a> itself. I believe <a href="http://xrds-simple.net/">XRDS-Simple</a> can be one of the technologies that allows us to &#8220;boot up&#8221; the emerging web data ecosystem.</p>
<p>As we move into the economic downturn, startups (and <a href="http://factoryjoe.com/blog/2007/12/06/oauth-10-openid-20-and-up-next-diso/">grassroots</a> efforts) will shift from focusing on the last epoch of social graph and media sites to looking at how we can do something with all these disparate pockets of our media around the web. Just like in the last economic downturn (2000), we will see a new set of seed ideas take hold in the web ecosystem and spring forth many new hits for this next epoch of the web. I believe one aspect of the next evolution of the web will be based around dynamic discovery of relative linked data.</p>
<p>In previous articles we saw how the natural world employs self organization to <a href="http://jpatterson.floe.tv/index.php/2008/09/25/discovery-and-social-insects/">drive emergent processes</a>. One of the underpinning mechanics of <a href="http://jpatterson.floe.tv/index.php/2008/08/13/emergence/">self organization</a> is its decentralized nature. We saw how in ad-hoc networks a network could <a href="http://jpatterson.floe.tv/index.php/2008/11/23/ad-hoc-discovery-in-mesh-networks/">adapt and thrive under difficult conditions</a> with no central leader. The internet is a loosely coupled set of computers, just like an ad-hoc network. Its an ad-hoc network of clients and servers within a system that faces many of the same obstacles a mesh network does &#8212; and has a tremendous amount of linked data contained inside.</p>
<p>This linked data is coming online at a rapid pace, but it <a href="http://jpatterson.floe.tv/index.php/2008/05/10/its-the-end-of-the-world-as-we-know-it/">continues to be pooled in silos</a>; the data is linked, yet we still have to manually connect those links and use our data in seperate sandboxes (ex: <em>my facebook and myspace data does not play together</em>). Just as google found out, a tremendous amount of value lies in how information is linked together. Today users have their photos in a couple different services and the majority of the US has its social graph split between myspace and facebook. There are all sorts of bookmarking services, and we have accounts for all sorts of shopping sites scattered everywhere. As these clusters of data come online and grow, <a href="http://jpatterson.floe.tv/index.php/2008/06/23/the-coming-economics-of-big-data/">more value can be had in how they are connected</a> and what can be done with these new connections. With respect to how we&#8217;re <a href="http://jpatterson.floe.tv/index.php/2008/05/10/stone-soup/">allowed to use our data</a>, we&#8217;re sorta in the &#8220;Hotel California&#8221; phase of the web &#8212;</p>
<blockquote><p><em>you can check in, but you can never check out</em>.</p></blockquote>
<p>In future iterations of the web I see <a href="http://www.scripting.com/2007/11/23.html">users</a> <a href="http://blogs.law.harvard.edu/doc/2007/11/25/time-to-write-our-own-rules/">taking ownership of their data</a> and creating a more personal user experience based on their existing data no matter what device they use or their location. This depends on how we link our data, how we allow our data to be discovered. So that begs the question, <strong><em>just how will we leverage this linked data and aggregate our information in more intelligent ways</em></strong>? I think a key lies in ad-hoc networks, social insects, and self organization &#8212; with one fundamental aspect being dynamic discovery.</p>
<p><a href="http://jpatterson.floe.tv/index.php/2008/09/25/discovery-and-social-insects/">Discovery</a> is the key mechanic that connects relevant parts of a decentralized system. As the web and linked data get more complex, we can&#8217;t predict the ways in which will need to discover and use data. Search engines can only give us part of the solution as they make connections based on their own assumptions and biases. We saw how <a href="http://jpatterson.floe.tv/index.php/2008/09/25/discovery-and-social-insects/">ants discover food sources using stigmergy</a> yet with no central source of control. We also saw how an ad-hoc network <a href="http://jpatterson.floe.tv/index.php/2008/11/23/ad-hoc-discovery-in-mesh-networks/">leverages a similar stigmergy based mechanic</a> to find quality routes through a chaotic network. Discovery needs a little more structure than we currently employ &#8212; it needs a &#8220;<strong>road sign</strong>&#8221; to know where and how to get to your data. Ants do this with pheromone build up, MANETs with routing tables, but how can we do this in a linked data world? I believe XRDS-Simple can provide us with the basic &#8220;n+1&#8243; evolution of dynamic discovery we need for this emerging web data ecosystem.</p>
<p><a href="http://www.hueniverse.com/hueniverse/2008/09/discovery-and-h.html">XRDS-Simple</a> (or XRDS-S - <a href="http://groups.google.com/group/xrds-simple">google group</a>) as described by <a href="http://www.hueniverse.com/hueniverse/">Eran Hammer-Lahav</a>:</p>
<blockquote><p>XRDS came out of the <a href="http://www.oasis-open.org/committees/xri/">XRI</a> world and is focused on service endpoint selection – connecting a list of concrete resources to an abstract identifier. When expending XRDS to HTTP URLs - non-abstract web resources - it providers a simple format for tagging resources and related services. These tags, called types, are URI-formatted strings which inform machines about the capabilities and characteristics of the resource they are associated with.</p></blockquote>
<p>This means XRDS-S allows a service to discover attributes about a resource which can redirect a service towards other related or linked resources. XRDS-S is essentially an XML format for pointing towards a set of services related to a url. The current case I am most focused on is a user&#8217;s personal set of services, as in the places a user</p>
<ul>
<li>Keeps their images</li>
<li>Keeps their bookmarks</li>
<li>Delegates their identity provider to</li>
<li>etc</li>
</ul>
<p>If a user can control this index of their service &#8220;endpoints&#8221; (XRDS-S resource), the user can then provide specific levels of access to specific subsets of interested outside parties (a longer term goal). And when we have a robust technology that allows users to do this, I believe web data can interconnect and auto discover in ways we haven&#8217;t even through of yet.</p>
<p>I think XRDS-S can create more value for the user by giving control and ownership of data flow to the user, back to the owner, and ultimately give us a better computing experience. However, thats big pie in the sky talk. Let&#8217;s think more along the lines of building up the technology in terms of &#8220;n+1&#8243;, in terms of adding a basic new mechanic and see how it effects the emerging web data ecosystem.</p>
<p>In the short term, I&#8217;d like to explore more on how XRDS-S can be used to do some basic things like</p>
<ul>
<li>Allow a 3rd Party Service to discover your preferred bookmarking service, and automatically route the saved url to said service</li>
<li>Automatically discover your media you have stored around the web</li>
<li>Dynamically <a href="http://practicalid.blogspot.com/2008/10/subscribing-to-activity-streams.html">find a related service in an contextually sensitive way</a> which enhances the user experience.</li>
</ul>
<p>In coming articles, I want to take a look at how XRDS-S is emerging as a discovery technique, and scenarios where it can be used &#8212; and how it can be a road sign in the emerging digital ecosystem.</p>
]]></content:encoded>
			<wfw:commentRss>http://jpatterson.floe.tv/index.php/2008/11/30/a-road-sign-in-a-digital-world/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Ad Hoc Discovery in Mesh Networks</title>
		<link>http://jpatterson.floe.tv/index.php/2008/11/23/ad-hoc-discovery-in-mesh-networks/</link>
		<comments>http://jpatterson.floe.tv/index.php/2008/11/23/ad-hoc-discovery-in-mesh-networks/#comments</comments>
		<pubDate>Mon, 24 Nov 2008 03:28:27 +0000</pubDate>
		<dc:creator>Josh Patterson</dc:creator>
		
		<category><![CDATA[Research]]></category>

		<category><![CDATA[Self Organization]]></category>

		<category><![CDATA[Wireless Mesh Networks]]></category>

		<category><![CDATA[Ad Hoc Networks]]></category>

		<category><![CDATA[Termite]]></category>

		<category><![CDATA[TinyTermite]]></category>

		<guid isPermaLink="false">http://jpatterson.floe.tv/?p=47</guid>
		<description><![CDATA[&#8220;Well, in our country,&#8221; said Alice, still panting a little, &#8220;you&#8217;d generally get to somewhere else — if you run very fast for a long time, as we&#8217;ve been doing.&#8221;
&#8220;A slow sort of country!&#8221; said the Queen. &#8220;Now, here, you see, it takes all the running you can do, to keep in the same place. [...]]]></description>
			<content:encoded><![CDATA[<blockquote><p>&#8220;Well, in our country,&#8221; said Alice, still panting a little, &#8220;you&#8217;d generally get to somewhere else — if you run very fast for a long time, as we&#8217;ve been doing.&#8221;</p></blockquote>
<blockquote><p>&#8220;A slow sort of country!&#8221; said the Queen. &#8220;Now, here, you see, it takes all the running you can do, to keep in the same place. If you want to get somewhere else, you must run at least twice as fast as that!&#8221;</p></blockquote>
<blockquote style="text-align: right;"><p>&#8212; Lewis Carroll&#8217;s <a href="http://search.barnesandnoble.com/Red-Queen/Matt-Ridley/e/9780060556570"><em>Red Queen</em></a> from <em>Through the Looking-Glass</em></p></blockquote>
<p style="text-align: left;">For my Master&#8217;s thesis, I did work in Mobile Ad Hoc NETworks (MANETs) and self organizing routing algorithms. At the present time, I can&#8217;t post my thesis online as we are waiting to see about some journal publications, but I&#8217;d like to talk a little about decentralized discovery in MANETs (however, I have a large article ready to go about my Master&#8217;s thesis, so when I get the clearance, it will be posted).</p>
<p><a href="http://en.wikipedia.org/wiki/MANET">MANETs</a> are decentralized networks that have no leader node or central controller where each node can only hear a subset of all nodes. Every node has to be a good citizen and agree to forward packets for other nodes in order for the network to function. Routing is a key issue in MANETs since a different set of obstacles are faced as opposed to traditional wired networks. There are many different ways that a network can approach the issue of routing, however there are two (main) classes in MANETs: <a href="http://en.wikipedia.org/wiki/Ad_hoc_routing_protocol_list">Proactive and Reactive</a> networks.</p>
<ul>
<li>Proactive: A proactive ad-hoc network seeks to constantly have the best possible global routing information in its routing tables, updating the routing table as new information comes online.</li>
<li>Reactive: A reactive ad-hoc network only caches routing information in its tables relative to the routes it has seen recently or needs to forward the current packets in its queue</li>
</ul>
<p>Beyond the type of MANET, another major designation is how the network routes its packets. There are generally two main types of of routing protocols used in packet-switched networks : <a href="http://en.wikipedia.org/wiki/Link-state_routing_protocol">link-state</a> and <a href="http://en.wikipedia.org/wiki/Distance-vector_routing_protocol">distance vector</a>.</p>
<p>With link state routing each node broadcasts to all other nodes in the network its view of the status of each of its adjacent network links &#8212; it sends its map. Each node then computes the shortest distance to each host based on the complete picture of the network formed from the most recent link information from all nodes. This approach is closer to the centralized version of the shortest path computation method, with each node maintaining a view of the network topology with a cost for each link. <a href="http://en.wikipedia.org/wiki/Routing_Information_Protocol">RIP</a> and <a href="http://en.wikipedia.org/wiki/OLSR">OLSR</a> are link state algorithms.</p>
<p><!--[if !mso]></p>
<style>
v\:* {behavior:url(#default#VML);}
o\:* {behavior:url(#default#VML);}
p\:* {behavior:url(#default#VML);}
.shape {behavior:url(#default#VML);}
v\:textbox {display:none;}
</style>
<p><![endif]--><!--[endif]--></p>
<div><span style="font-size: 156%;"><span style="position: absolute; left: -3.49%;">•</span></span></div>
<p>A distance vector routing protocol requires that a router informs its neighbors of topology changes periodically &#8212; it sends its routing table. It also informs neighbors when changes are detected. They have less computational complexity and less message overhead. <a href="http://en.wikipedia.org/wiki/AODV">AODV</a> and <a href="http://wisl.ece.cornell.edu/roth/research/Termite_MedHoc2003.pdf">Termite</a> are distance vector algorithms.</p>
<p><a href="http://wisl.ece.cornell.edu/roth/research/Termite_MedHoc2003.pdf">Termite</a> is a biologically inspired routing algorithm for MANETs that is based on previous work in adapting the effects of <a href="http://jpatterson.floe.tv/index.php/2008/08/25/the-principles-of-self-organization-stigmergy/">stigmergy</a>. Termite models how termite colonies lay pheromone to <a href="http://jpatterson.floe.tv/index.php/2008/09/12/self-organization-and-social-insects/">communication in a decentralized manner</a>. The concept of pheromone (as I&#8217;ve talked about before) is taken directly from the social insect metaphor where social insects use the chemical pheromone as a way to communicate indirectly. Termite piggybacks pheromone on normal network traffic which &#8220;trains&#8221; the network in an &#8220;on-line&#8221; manner. A more common technique is to send special packets out with the purpose of updating routing information around the network.</p>
<p>Termite is based on stigmergy powered by digital pheromone, which creates patterns of <a href="http://jpatterson.floe.tv/index.php/2008/08/13/emergence/">self organization</a> in the ad hoc network. Termite was developed by <a href="http://wisl.ece.cornell.edu/roth/">Martin Roth</a> and <a href="http://wisl.ece.cornell.edu/wicker/">Stephen Wicker</a> at <a href="http://wisl.ece.cornell.edu/index.html">Cornell</a>. Distance vector algorithms such as Termite use routing tables in order to choose a next hop for a packet. Each Termite node has a pheromone table (a routing table) in which it lists the neighbors that the node can hear locally. Termite uses this routing table, which has a goodness rating for taking a neighbor node as the next hop of a path towards a destination node, as a way to probabilistically choose a next hop for the packet (the higher the pheromone rating for a neighbor+destination pair, the higher the chance that that neighbor will be chosen for the next hop &#8220;towards&#8221; the destination). In Figure 1 and 2 below, we see how a packet traveling from the source node 0 to the destination node 6 updates the pheromone table at node 6 on its final hop.</p>
<p><img class="aligncenter" src="http://jpatterson.floe.tv/hold/ptable_update_v2_1.jpg" alt="" /></p>
<p><!--[if gte mso 9]><xml> <w:WordDocument> <w:View>Normal</w:View> <w:Zoom>0</w:Zoom> <w:PunctuationKerning /> <w:ValidateAgainstSchemas /> <w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid> <w:IgnoreMixedContent>false</w:IgnoreMixedContent> <w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText> <w:Compatibility> <w:BreakWrappedTables /> <w:SnapToGridInCell /> <w:WrapTextWithPunct /> <w:UseAsianBreakRules /> <w:DontGrowAutofit /> </w:Compatibility> <w:BrowserLevel>MicrosoftInternetExplorer4</w:BrowserLevel> </w:WordDocument> </xml><![endif]--><!--[if gte mso 9]><xml> <w:LatentStyles DefLockedState="false" LatentStyleCount="156"> </w:LatentStyles> </xml><![endif]--> <!--[if gte mso 10]></p>
<style>
 /* Style Definitions */
 table.MsoNormalTable
	{mso-style-name:"Table Normal";
	mso-tstyle-rowband-size:0;
	mso-tstyle-colband-size:0;
	mso-style-noshow:yes;
	mso-style-parent:"";
	mso-padding-alt:0in 5.4pt 0in 5.4pt;
	mso-para-margin:0in;
	mso-para-margin-bottom:.0001pt;
	mso-pagination:widow-orphan;
	font-size:10.0pt;
	font-family:"Times New Roman";
	mso-ansi-language:#0400;
	mso-fareast-language:#0400;
	mso-bidi-language:#0400;}
</style>
<p><![endif]--></p>
<p><span style="color: #000000;"><strong><a name="_Toc213582541">Figure </a><span><span>1</span></span><span>: </span></strong></span><em><span style="color: #999999;"><span><span style="font-weight: normal;">Packet movement through Termite network. A packet moves from node 4 to node 6 on its final hop to the destination node 6.</span></span></span></em></p>
<p><!--[if supportFields]><span style="mso-bookmark: _Toc213582541" mce_style="mso-bookmark: _Toc213582541"></span><span style="mso-element:field-begin" mce_style="mso-element:field-begin"></span><span style="mso-bookmark:_Toc213582541" mce_style="mso-bookmark:_Toc213582541"><span style="mso-spacerun:yes" mce_style="mso-spacerun:yes"> </span>SEQ Figure \* ARABIC <span style="mso-element:field-separator" mce_style="mso-element:field-separator"></span></span><![endif]--><!--[if supportFields]><span style="mso-bookmark:_Toc213582541" mce_style="mso-bookmark:_Toc213582541"></span><span style="mso-element:field-end" mce_style="mso-element:field-end"></span><![endif]--></p>
<p class="MsoCaption" style="text-align: center;" align="center">
<p class="MsoCaption" style="text-align: center;" align="center"><img class="aligncenter" src="http://jpatterson.floe.tv/hold/ptable_v1.jpg" alt="" /></p>
<p class="MsoCaption" style="text-align: center;" align="center"><!--[if gte mso 9]><xml> <w:WordDocument> <w:View>Normal</w:View> <w:Zoom>0</w:Zoom> <w:PunctuationKerning /> <w:ValidateAgainstSchemas /> <w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid> <w:IgnoreMixedContent>false</w:IgnoreMixedContent> <w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText> <w:Compatibility> <w:BreakWrappedTables /> <w:SnapToGridInCell /> <w:WrapTextWithPunct /> <w:UseAsianBreakRules /> <w:DontGrowAutofit /> </w:Compatibility> <w:BrowserLevel>MicrosoftInternetExplorer4</w:BrowserLevel> </w:WordDocument> </xml><![endif]--><!--[if gte mso 9]><xml> <w:LatentStyles DefLockedState="false" LatentStyleCount="156"> </w:LatentStyles> </xml><![endif]--> <!--[if gte mso 10]></p>
<style>
 /* Style Definitions */
 table.MsoNormalTable
	{mso-style-name:"Table Normal";
	mso-tstyle-rowband-size:0;
	mso-tstyle-colband-size:0;
	mso-style-noshow:yes;
	mso-style-parent:"";
	mso-padding-alt:0in 5.4pt 0in 5.4pt;
	mso-para-margin:0in;
	mso-para-margin-bottom:.0001pt;
	mso-pagination:widow-orphan;
	font-size:10.0pt;
	font-family:"Times New Roman";
	mso-ansi-language:#0400;
	mso-fareast-language:#0400;
	mso-bidi-language:#0400;}
</style>
<p><![endif]--></p>
<p class="MsoCaption" style="text-align: center;" align="center"><strong><span style="color: #000000;"><a name="_Toc213582542">Figure </a><span><span>2</span></span></span></strong><!--[if supportFields]><span style="mso-bookmark: _Toc213582542" mce_style="mso-bookmark: _Toc213582542"></span><span style="mso-element:field-begin" mce_style="mso-element:field-begin"></span><span style="mso-bookmark:_Toc213582542" mce_style="mso-bookmark:_Toc213582542"><span style="mso-spacerun:yes" mce_style="mso-spacerun:yes"> </span>SEQ Figure \* ARABIC <span style="mso-element:field-separator" mce_style="mso-element:field-separator"></span></span><![endif]--><span><strong><span style="color: #000000;">:</span></strong> </span><em><span style="color: #999999;"><span><span style="font-weight: normal;">Pheromone table update. As the packet in Figure 1 hops to node 6, node 6 updates its pheromone table to reflect the incoming packet’s information. The pheromone table is updated such that neighbor node 4’s destination entry for node 0 (source node) has its value adjusted. The rows in node 6’s pheromone table reflect the nodes that node 6 can hear locally. The destinations are nodes that node 6 knows about.</span></span></span></em></p>
<p>As packets move from node to node (they are routed at each hop), they follow the &#8220;pheromone gradient&#8221; that is relevant to their destination. The higher the level of destination pheromone for a next hop neighbor, the more likely a packet is to be routed towards the destination via that neighbor. Packets also carry a pheromone factor which represents the quality of the path that the packet has traveled and influences each node&#8217;s pheromone table that the packet passes through. The pheromone table for each hop is influenced by the amount of pheromone on the packet (the pheromone table is updated &#8220;towards&#8221; the source (as the destination in the table) and the previous hop (as neighbor that is updated). In this way, Termite updates node pheromone table in an on-line manner with no special control traffic.</p>
<p>If a destination node is requested that the forwarding node has no entry for in it&#8217;s pheromone table, the packet is stored in a queue, and a Route Request (RREQ) packet is broadcast. A RREQ packet is forwarded to neighbors who check to see if they have an entry for the requested destination. If the node does in fact have an entry for the requested destination, it generates a Route Reply (RREP) packet and sends it back towards the source node (node which generated the RREQ). At each hop the RREP influences the pheromone table so that the originator of the RREQ is linked with the node that had a next hop for its required destination. When the RREP reaches the source node, the source node&#8217;s pheromone table is updated and the queued data packet is forwarded.</p>
<p>The effects of the pheromone based probabilistic routing system with a RREQ / RREP discovery mechanism allow Termite to be flexible and robust in the face of many types of deployment climates. Just like with <a href="http://jpatterson.floe.tv/index.php/2008/09/25/discovery-and-social-insects/">social insects foraging for food</a>, Termite can endure and thrive in uncertain conditions where tradtional techniques would fail. Termite is a very interesting application of biologically inspired systems that use nature to find good engineering solutions. These types of biologically inspired decentralized systems show how emergence can be leveraged in technology. <a href="http://www.kk.org/thetechnium/">Kevin Kelly</a> has an interesting take on the strategy of these biologically inspired system in that:</p>
<blockquote><p>A network nurtures small failures in order that large failures don&#8217;t happen as often</p>
<p style="text-align: right;"><em>— from the book </em><a href="http://www.amazon.com/Out-Control-Biology-Machines-Economic/dp/0201483408/ref=sr_1_1?ie=UTF8&amp;s=books&amp;qid=1226172900&amp;sr=1-1">Out of Control: The New Biology of Machines, Social Systems, &amp; the Economic World</a><em> by Kevin Kelly</em></p>
</blockquote>
<p>These systems bend, but they rarely break. Highly linear, clockwork type systems are rarely this robust in the face of uncertainty (not that they don&#8217;t have their strengths). I see ad-hoc networks as a metaphor for a lot of different areas of technology and complex systems. Decentralized discovery seems to me as if it can be <a href="http://practicalid.blogspot.com/2008/11/important-topics-at-iiw2008b.html">useful</a> in a lot <a href="http://diso-project.org/">of</a> <a href="http://drupal.org/project/xrds_simple">different</a> <a href="http://http://www.hueniverse.com/hueniverse/2008/03/putting-xrds-si.html">places</a>.</p>
<p>Something that has really interested me<em> </em>is the parallel between ad-hoc networks and the emerging ad-hoc nature of today&#8217;s web of linked data. The more I dig, the more I see similarities in the development of a decentralized ecosystem that has value in how it is <a href="http://en.wikipedia.org/wiki/Metcalfes_Law">interconnected</a>. As we&#8217;ve seen with Termite, there is also tremendous value in a system that is interconnected, yet <a href="http://radar.oreilly.com/archives/2007/10/dynamo-amazons-highly-availabl.html">loosely coupled</a>.  Something I want to explore further is how we can add small properties to the web at the &#8220;node&#8221; level that give it more decentralized robustness, more ways to auto <a href="http://practicalid.blogspot.com/2008/10/subscribing-to-activity-streams.html">discover itself</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://jpatterson.floe.tv/index.php/2008/11/23/ad-hoc-discovery-in-mesh-networks/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Discovery and Social Insects</title>
		<link>http://jpatterson.floe.tv/index.php/2008/09/25/discovery-and-social-insects/</link>
		<comments>http://jpatterson.floe.tv/index.php/2008/09/25/discovery-and-social-insects/#comments</comments>
		<pubDate>Thu, 25 Sep 2008 05:27:44 +0000</pubDate>
		<dc:creator>Josh Patterson</dc:creator>
		
		<category><![CDATA[Brainstorming]]></category>

		<category><![CDATA[Linked Data]]></category>

		<category><![CDATA[Self Organization]]></category>

		<category><![CDATA[The Data Ecology]]></category>

		<category><![CDATA[ants]]></category>

		<category><![CDATA[discovery]]></category>

		<category><![CDATA[Social Insects]]></category>

		<category><![CDATA[swarms]]></category>

		<guid isPermaLink="false">http://jpatterson.floe.tv/?p=33</guid>
		<description><![CDATA[(This is a thread of an ongoing series on Self Organization; The first article was Emergence, and the preceding article was Self Organization and Social Insects.)
In this article I want to explore discovery in social insects as it is a critical mechanic given that individuals in a colony have little beyond local perception yet employ [...]]]></description>
			<content:encoded><![CDATA[<p>(This is a thread of an ongoing series on Self Organization; The first article was <a href="http://jpatterson.floe.tv/index.php/2008/08/13/emergence/">Emergence</a>, and the preceding article was <a href="http://jpatterson.floe.tv/index.php/2008/09/12/self-organization-and-social-insects/">Self Organization and Social Insects</a>.)</p>
<p>In this article I want to explore discovery in social insects as it is a critical mechanic given that individuals in a colony have little beyond local perception yet employ decentralized discovery in an uncertain environment to survive. In articles that led up to this one I talked a lot about the principles of self organization and how they drive the decentralized activities of social insects, using techniques such as <a href="http://jpatterson.floe.tv/index.php/2008/08/25/the-principles-of-self-organization-stigmergy/">stigmergy</a> and positive / negative feedback. Here I want to further expand on how stigmergy and feedback can drive discovery in natural systems such as social insects and begin to set the foundation for other lines of thought in terms of where decentralized discovery can be employed.</p>
<p>If you will recall from a previous article, <a href="http://jpatterson.floe.tv/index.php/2008/08/25/the-principles-of-self-organization-stigmergy/">we have established stigmergy</a> as</p>
<blockquote><p>&#8230;a method of communication, albeit in an indirect fashion, between two units or agents. <strong>Stigmergy is defined as information gathered from work in progress.</strong></p></blockquote>
<p>Indirect communication via &#8220;work in progress&#8221; could be achieved in many ways, but to isolate the concept in a concrete example, I want to look at foraging mechanics in ant colonies for the purposes of this article. The ant colony functions as a single machine, as a single organism; It is dependent on no single ant and can afford to lose individuals as long as it doesn&#8217;t lose a critical mass of its population, much the same as an organ in your body can lose cells as long as it doesn&#8217;t lose too much of its overall tissue.</p>
<p>An ant colony needs food or fuel just like any other animal or organism. Ants do not feed in an individual manner, but actively forage for quality food sources and bring these food sources back to the colony for processing. Just like most processes in an ant colony, foraging is a highly decentralized yet collaborative behavior. Amazingly enough, an ant colony has a system in place to continuously load balance the number of ants doing each type of task (forage, midden, defense, etc) with no central or hierarchical control directing those efforts (the mechanics of this are covered in the Swarm Intelligence book [1] by Marco Dorigo, and is a topic I want to touch on in a later article.)</p>
<p>There are multiple issues facing a colony during foraging:</p>
<ul>
<li>Before a food source can be retrieved, it must be discovered.</li>
<li>Not all food sources are equal in value; how does the colony best deploy its resources to retrieve the most food in the shortest time?</li>
<li>How does one ant communicate to the rest of the colony where a food source is located, and how do the other ants determine which food source to go after?</li>
</ul>
<p>Let&#8217;s tackle the first issue of food source discovery; From a cold start where no ants have emerged from the nest, ants leave the nest in an exploratory walk in random directions. Ants have very limited vision and can only detect chemicals in their local area at each step, so a random walk for them can be fairly precarious. Now, at each step the ant lays down a small trace amount of pheromone to mark the trail taken. Pheromone is a key component to how stigmergy and ant colonies operate, and I liken it to the bread crumps left to mark a trail in the forest &#8212; just like animals will tend to eat some of the bread crumbs over time, pheromone evaporates over time. Eventually an ant will stumble upon a crumb of a cookie or other food source, and after determining it is an acceptable resource for the colony (taste test?), the ant will head back towards the nest.</p>
<p>Now, your first questions is &#8220;how is this simple agent going to get home with the food?&#8221; and this is where that pheromone chemical comes into play, and on many levels. At each step, the ant makes a directional decision in terms of where to go next. It has been shown in many experiments [1] that an ant is highly influenced to take a step in a direction that has pheromone, although it is still probabilistic &#8212; but just like in vegas, the odds win over time. The ant will find its way back home on its invisible trail of pheromone. Now, a subtle thing happens on the way back to the nest &#8212; the ant lays a more intense pheromone chemical at each step, reinforcing the trail back towards the food source. Now, a connection has been made for the colony between nest and food source, but we aren&#8217;t done. The colony has multiple food sources (hopefully) to harvest at all times, yet limited resources and time to invest in them; how does the colony best approach this issue?</p>
<p><a href="http://jpatterson.cerillian.com/img/extra_foraging_1.gif"><img class="alignright alignnone" style="float: right;" src="http://jpatterson.cerillian.com/img/extra_foraging_1.gif" alt="Monte Carlo Simulation of Raid Patterns" width="242" height="180" /></a></p>
<p>As each ant moves out to forage over time it tends to take high pheromone paths, and as it has success, it lays even more pheromone on the return trip. High quality food sources very quickly have high intensity pheromone trails leading right to them (ever wonder why ants seem to know where all your good sugary food is, and they just keep coming?). Many aspects of these mechanics have been studied by biologists and scientists, breaking down the various properties of how the ants move into sets of equations. One of my early experiments was to see if I could replicate the foraging raid patterns pictured in the Swarm Intelligence book. My efforts are pictured to the right where I put together an openGL simulation of ants moving across a simulated world with random placement of different quality of food sources.</p>
<p><a href="http://jpatterson.cerillian.com/img/extra_foraging_3.gif"><img class="alignleft" style="float: left; margin-left: 6px; margin-right: 6px;" src="http://jpatterson.cerillian.com/img/extra_foraging_3.gif" alt="" width="191" height="143" /></a>The image itself is nice, but watching the simulated colony explore and exploit various concentrations of food sources is very interesting, as you can see the colony &#8220;sample&#8221; various food sources and then tend to focus on a few relative to distance vs quality of the source. The <a href="http://jpatterson.floe.tv/index.php/2008/08/17/the-principles-of-self-organization-positive-feedback/">positive feedback</a> of adding pheromone to the landscape is balanced by the <a href="http://jpatterson.floe.tv/index.php/2008/08/19/the-principles-of-self-organization-negative-feedback/">negative feedback</a> of the evaporation of the pheromone. The evaporation of pheromone keeps the colony from converging on a suboptimal solution too quickly, and allows the colony to continually evaluate food sources based on quality vs distance. The colony is constantly using the mechanics of stigmergy to communicate in a decentralized manner and get the best yield on its foraging efforts while considering obstacles, resources, and load balancing.</p>
<p>As ants have been studied to understand their mechanics, these same principles and techniques have been applied to similar problems in other domains. A very early simulation that allowed the user to create rules for a set of agents in a simulation (which also employed pheromone as a form of stigmergy) is <a href="http://education.mit.edu/starlogo/">StarLogo</a> by Mitchel Resnick at MIT. There have been many papers written on applying basic forms of swarm algorithms to the Traveling Salesman Problem, the quadratic problem, and other classical computer science benchmarks. As the field has become more mature, it has been used in data mining, search, and routing in networks.</p>
<p>The specific mechanics of discovery via stigmergy in swarm algorithms is being explored in many ways today. <a href="http://en.wikipedia.org/wiki/Particle_swarm_optimization">Particle Swarm Optimization</a> (Kennedy and Eberhart, Indiana) is a specialized algorithm that uses many groups of agents which roam search space, communicating their best found solutions and influencing one another in how they &#8220;flock&#8221; through search space. One of the most interesting aspects of the technique is how it is <strong>robust in uncertain conditions that continually change</strong>, something that traditional search techniques have a very hard problem with. This has led to much research in swarm algorithms applied to network routing, such as algorithms like AntNet [2]. Swarm algorithms are very good at finding things under fairly chaotic conditions. In a near future article we are going to take a look at just how self organization, stigmergy, and discovery can be applied to ad hoc networks.</p>
<p>So we&#8217;ve seen some basic action of an ant colony in action and how it uses decentralized discovery in a very elegant and robust way. We&#8217;ve also alluded to the fact that much research is being done in various areas of computer science in the application of swarm intelligence, a field that I have been interested in and working in for a few years now. A new area that I have been working in is the <a href="http://cowbell.floe.tv/WRFS_11_20_2007.html">auto discovery of linked data</a> on the web, and ways to link up sets of decentralized services outside the normal mechanics of wiring directly to a single site api. This has led me to begin asking myself many questions, as I see so many parallels between today&#8217;s emerging linked data ecosystem, a very uncertain world, and the metaphors that have been extracted from ant colonies and swarm mechanics in general. A few things I want to take a look at in coming articles are:</p>
<ul>
<li>How does today&#8217;s web relate to an organic ecosystem?</li>
<li>How can we apply some techniques such as dynamic discovery to the web in ways that make sense?</li>
<li>What are other areas of similar swarm research application that we can take a look at and apply to linked data?</li>
<li>How can we use self organization to make our systems more robust?</li>
</ul>
<p>Today the internet is the most advancement interconnection of information we&#8217;ve ever known, but connecting distributed sources of data and finding what you want still remains troublesome in certain cases. Google talks about wanting to organize the world&#8217;s information as their mission, but isnt all that data in one &#8220;logical&#8221; place too much centralization? What if somehow data could self organize and emerge as if it lived in a biological ecosystem? In my graduate research I worked on the application of swarm algorithms to wireless mesh networks where decentralized discovery was a key component; As I move through this series of articles I want to draw parallels to how the ideas in the ad hoc network domain can be applied to the open linked data web, conceptually the &#8220;ad hoc web&#8221;.</p>
<p>My next few articles will touch on various aspects of discovery in other technologies such as ad hoc networks (my grad research on TinyTermite), indexes, and linked web data. I will pose more questions than I can answer in the short term, but mainly I want to address &#8220;what could the ad hoc web be?&#8221; and &#8220;how do we make our data and preferred services a little more decentralized, keeping them out of central gatekeepers, and in our control?&#8221; &#8212; and then follow some arcs of thought to see where that takes us.</p>
<p>References</p>
<p>[1] E. Bonabeau, M. Dorigo, G. Theraluz, <a href="http://www.amazon.com/Swarm-Intelligence-Artificial-Complexity-Proceedings/dp/0195131592/ref=sr_1_1?ie=UTF8&amp;s=books&amp;qid=1222319742&amp;sr=8-1"><em>Swarm Intelligence: From Natural to Artificial Systems</em></a>, Oxford University Press, 1999.</p>
<p>[2] <span style="color: #000000;">Di Caro G., Dorigo M.,  <a href="http://www.idsia.ch/%7Egianni/Papers/PDCS98.ps.gz"> &#8220;Two Ant Colony Algorithms for Best-Effort  Routing in Datagram Networks&#8221; </a>,  <em> Proceedings of PDCS&#8217;98 - 10th International Conference on Parallel and Distributed Computing and Systems</em>,  Las Vegas, Nevada, October 28-31, 1998, (also <em>Technical Report IRIDIA 98-09</em>). </span></p>
<p><em><br />
</em></p>
]]></content:encoded>
			<wfw:commentRss>http://jpatterson.floe.tv/index.php/2008/09/25/discovery-and-social-insects/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Self Organization and Social Insects</title>
		<link>http://jpatterson.floe.tv/index.php/2008/09/12/self-organization-and-social-insects/</link>
		<comments>http://jpatterson.floe.tv/index.php/2008/09/12/self-organization-and-social-insects/#comments</comments>
		<pubDate>Fri, 12 Sep 2008 18:56:13 +0000</pubDate>
		<dc:creator>Josh Patterson</dc:creator>
		
		<category><![CDATA[Research]]></category>

		<category><![CDATA[Self Organization]]></category>

		<category><![CDATA[ants]]></category>

		<category><![CDATA[bees]]></category>

		<category><![CDATA[insects]]></category>

		<category><![CDATA[swarms]]></category>

		<guid isPermaLink="false">http://jpatterson.floe.tv/?p=30</guid>
		<description><![CDATA[(This article is an entry on my continuing series on Self Organization. The first article was Emergence, and the article that preceeded this one was based on stigmergy. )
What is it that governs here? What is it that issues orders, forsees the future, elaborates plans, and preserves equilibrium?
- Maeterlinck [1]
Social Insects are an incredible biological [...]]]></description>
			<content:encoded><![CDATA[<p>(This article is an entry on my continuing series on Self Organization. The first article was <a href="http://jpatterson.floe.tv/index.php/2008/08/13/emergence/">Emergence</a>, and the article that preceeded this one was based on <a href="http://jpatterson.floe.tv/index.php/2008/08/25/the-principles-of-self-organization-stigmergy/">stigmergy</a>. )</p>
<blockquote><p>What is it that governs here? What is it that issues orders, forsees the future, elaborates plans, and preserves equilibrium?</p>
<p>- Maeterlinck [1]</p></blockquote>
<p>Social Insects are an incredible biological machine. They operate at the colony level as a single body but retain semi-independence at the local level (their level of independence is tied to their genetic programming, which in itself is the root of a philosophical topic I can&#8217;t begin to broach here). These social insect colonies are able to adapt to the environment and robustly thrive in uncertain conditions because as we discussed <a href="References  [1] E. Bonabeau, M. Dorigo, G. Theraluz, Swarm Intelligence: From Natural to Artificial Systems, Oxford University Press, 1999.">before</a> &#8212; <em>Social insects are able to operate with no central leader and exhibit the emergent collective intelligence of groups of simple agents.</em></p>
<p>Upon first sight, a critic may argue that these complex behaviors are too sophisticated for such simple agents to achieve even collectively. Give that our point of view is always relative and subjective, people want to believe that it only occurs in places where more sophisticated organisms are involved. The really interesting thing is that it occurs at all levels of nature, with insect societies being one of the more interesting examples &#8212; as they simply do not have the mental capacities anywhere near humans or fish, yet create some very complex nests and structures.</p>
<p>Even though an insect doesn&#8217;t have higher order mental capacities, it still is a complex creature. However, an insect is still not complex enough on its own to explain the complexities of social insect colonies. Insect colonies are perfect examples of synergy or systems that are much greater than the sum of their parts. In order to operate in such a coordinated manner with no hierarchical control, social insects must employ highly decentralized operations to achieve scale while still communicating state to other operating units. What are some examples of this, and how do they do it? Self organization is the key to all of it.</p>
<p>There are a lot of interesting places in the insect world where self organization drives the basic mechanics of life for these insects. Some examples are</p>
<ul>
<li>leaf cutter ants - forage for leaves to grow fungi, where foraging for leaves is a form of dynamic discovery which employs pheromone trails and stigmergy</li>
<li>army ants - hundreds of thousands of ants which swarm an area in a giant raid party, again achieving discovery of new food sources through pheromone trails and stigmergy</li>
<li>honey bees nests - construction of honey comb, brood sorting, temperature regulation using stigmergy and positive/negative feedback</li>
<li>wasp nest construction - complex geometric patterns emerge from decentralized construction using stigmergy and localized rule bases.</li>
<li>termite chamber construction - decentralized clustering though the use of stigmergy, pheromone, and positive/negative feedback</li>
</ul>
<p>In most social insect colonies a worker usually does not perform all tasks, but rather specializes in a set of tasks according to its morphology, age, or chance. Some types of insect societies have multiple body types, such as majors and minors, which are built for different subsets of tasks, but are also flexible enough to perform one another&#8217;s tasks if need be [2] (large loss of population, etc). Age can contribute to how the insect switches task or deploys themselves into the work force, but one of the strongest factors (especially in ant colonies) is chance and the role of task switching based on response thresholds.</p>
<p>Response thresholds and task-stimulus-associations are concepts introduced by Bonabeau (et al) [3] that help explain Wilson&#8217;s observations. For different types of stimulus an ant has an associated threshold and as it perceives locally said stimulus, it raises its set point a little, or how much it has been stimulated by that stimulus. Based on how much stimulus an ant has perceived for its various sets of associations, the ant will probabilistically switch to a new task every so often. For ant colonies examples of these tasks are midden work, nest defense, and foraging for food in raiding parties (discovery).</p>
<p>The probability of which task the ant switches to is governed by the levels of simulation for each association (<em>ie, if task-assoc for A is much higher relatively than task-assoc-B and task-assoc-C, then it is far more likely to switch to that task &#8212; think of it as probabilistic process switching in an operating system</em>).  The associations govern how the ant switches tasks as it encounters stimulus, with the aggregate effect of all ants operating in this manner gives the colony a way to do decentralized load balancing. This has been shown to be incredibly robust and effective as a load balancing technique in ant colonies. Nature, it seems, is pretty good at this stuff.</p>
<p>Clustering and decentralized construction is another phenomenon associated with social insects. Termites build complex underground chambers by moving pebbles about with multiple termites touching each pebble as the pebble moves probabilistically towards a resting spot [4]. As termites move about an area they lay a chemical called &#8220;pheromone&#8221; which indicates a path taken to other insects. The pheromone gradient attracts termites to areas of high densities of pebbles as they are probabilistically attracted towards those areas at each step. Large amounts of pebbles tend to make termites want to drop their pebbles, which when coupled with the pheromone effect, creates a positive feedback look.</p>
<p>To counter the downside or premature convergence on a suboptimal chamber design, termites need a measure of negative feedback. Evaporation of pheromone in termite colonies is a source of negative feedback, as it weakens the pheromone over time resulting in less gradient. As the pheromone gradient weakens, it will attract less termites and therefore less pebbles will be deposited in the area. We need a measure of negative feedback to keep our system from converging on sub-optimal “solutions” too quickly, just like the termites employ negative feedback to keep from clustering their pebbles in many small piles too quickly.</p>
<p>So as we&#8217;ve seen, social insect colonies can do some pretty amazing things with relatively simple local interactions and no hierarchical control. We&#8217;ve seen ants find food with stigmergy and positive / negative feedback and we&#8217;ve seen termites build a nest with the same principles only applied in a different context.</p>
<p>As any engineer (or just curious person) begins to think about insect societies, its easy to see obstacles that ants overcome as the same obstacles we are faced with in our work and in the technology around us. Much research around self organization (and swarm intelligence) is being applied to areas in technology such as</p>
<ul>
<li> MANETs (ad hoc networks)</li>
<li>Robotics</li>
<li>Telecommunications</li>
<li>Data mining</li>
<li>Load balancing</li>
<li>Search / discovery</li>
</ul>
<p>and many more. As our world becomes more complex with respect to the amount of data and technology that we must address, hierarchical methods begin to break down.</p>
<p>Something I want to look at in coming articles is discovery with respect to self organization, and how that applies to linked data and the internet.</p>
<ul>
<li>Where can we go with that?</li>
<li>Does it relate, and how so? What are the implications?</li>
<li>What happens with scale and centralization, and how do we map self organizational techniques onto other problem domains that face these same challenges?</li>
</ul>
<p>To bridge these ideas and concepts my next article will focus on discovery and social insects a little more in-depth, and begin to talk about my research work from graduate school in self organization and ad hoc networks.</p>
<p>References</p>
<p>[1] Maeterlinck, M. <em>The Life of the White Ant.</em> London: George Allen and Unwin, 1927</p>
<p>[2] Wilson, E. O. &#8220;The Relation Between Caste Ratios and Division of Labour in the Ant Genus Pheidole (Hymenoptera: Formicidae).&#8221; <em>Behav. Ecol. Sociobiol</em>. 16 (1984): 89-98</p>
<p>[3] E. Bonabeau, G. Theraulaz, and J.-L. Deneubourg. &#8220;Quantitative Study of the Fixed Threshold Model for the Regulation of Division of Labour in Insect Societies.&#8221; <em>Proceedings Roy. Soc. London B</em> <strong>263</strong> (1996): 1565-1569</p>
<p>[4] M Roth, S Wicker, <em>Termite: A Swarm Intelligent Routing Algorithm for Mobile Wireless Ad-Hoc Networks<span style="font-size: 12pt; font-family: "></span></em></p>
]]></content:encoded>
			<wfw:commentRss>http://jpatterson.floe.tv/index.php/2008/09/12/self-organization-and-social-insects/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>
