<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>keeping simple &#187; real-time</title>
	<atom:link href="http://www.yodaiken.com/tag/real-time/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.yodaiken.com</link>
	<description>Systems software technology and business</description>
	<lastBuildDate>Tue, 29 Jun 2010 00:09:42 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>RTOS design and embedded system development</title>
		<link>http://www.yodaiken.com/2009/07/rtos-design-and-embedded-system-development/</link>
		<comments>http://www.yodaiken.com/2009/07/rtos-design-and-embedded-system-development/#comments</comments>
		<pubDate>Wed, 15 Jul 2009 12:20:36 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[embedded systems]]></category>
		<category><![CDATA[green power]]></category>
		<category><![CDATA[operating systems]]></category>
		<category><![CDATA[software engineering]]></category>
		<category><![CDATA[real-time]]></category>
		<category><![CDATA[rtos design]]></category>
		<category><![CDATA[rtos programming]]></category>
		<category><![CDATA[synchronization]]></category>

		<guid isPermaLink="false">http://www.yodaiken.com/?p=492</guid>
		<description><![CDATA[Real-time operating systems are either a solved problem or a backwater of engineering design. Threads, semaphores, mutexes, some basic I/O, priority scheduling all of this has been more or less standardized in theÂ  POSIX 1003.13 smaller profiles (51,52) for many years. The basic programming model has not changed in years. Even FSM&#8217;s original RTOS and [...]]]></description>
			<content:encoded><![CDATA[<p>Real-time operating systems are either a solved problem or a backwater of engineering design. Threads, semaphores, mutexes, some basic I/O, priority scheduling all of this has been more or less standardized in theÂ  POSIX 1003.13 smaller profiles (51,52) for many years. The basic programming model has not changed in years. Even FSM&#8217;s original RTOS and QNX, the two most unusual RTOS&#8217;s, are pretty similar from a programming point of view except for the split between real-time and non-real-time in our old product.Â  My suspicion is that the programming model provided by these RTOS designs can be replaced by something better mostly because I think synchronization is a painful and error prone exercise that only gets worse as systems become more complicated. On the other hand, although many of our customers really loved it, and I think it was a huge advantage, the split mode approach in the old RTLinux* was a difficult learning experience for a lot of people.</p>
<p>Consider a simple design:</p>
<ol>
<li>Task A: collect data from an Analog/Digital converter, sampling at rate 1/t seconds and filling a small buffer (1/t)*n seconds.</li>
<li>Task B:Â  Aggregate A data and produce 3 streams of processed data that are functions of the input data and some settings.</li>
<li>Task C:Â  produce control data from the processed data at an output rate of 1/t2 seconds</li>
<li>Task D: provide a secure internet port which will process requests to interrogate data, to setup data push at some rate maximum 1/t3 pushes per second and update the settings with worst case delay from arrival of input packet to reset of 1/t4 seconds.</li>
<li>Task E: operate a touch screen display that has some of the same functionality as task D</li>
</ol>
<p>That seems like it should be straightforward, but it&#8217;s not: it&#8217;s a one year project that has a 70% chance of failing. Making sure shared data is efficiently and correctly shared, validating that the scheduling and timing is ok, and optimizing for hardware limits and power are all hard.Â  And that seems wrong because there is nothing in such a project that has not been done thousands of times before.Â  As the electric power industry stumbles into modern software based control,Â  the slow development times and poor reliability of products developed under this model is a serious problem.</p>
<p>* NOTE: RTLinux is a trademark of WindRiver Systems.</p>
<ul class="socialwrap size16 row">
<li class="iconOnly"><a rel="nofollow" target="_blank" class="delicious" href="http://delicious.com/post?url=http%3A%2F%2Fwww.yodaiken.com%2F2009%2F07%2Frtos-design-and-embedded-system-development%2F&amp;title=RTOS+design+and+embedded+system+development" title="Bookmark this post : RTOS design and embedded system development on Delicious" onclick="pageTracker._trackPageview('/outgoing/delicious.com/post?url=http_3A_2F_2Fwww.yodaiken.com_2F2009_2F07_2Frtos-design-and-embedded-system-development_2F_amp_title=RTOS+design+and+embedded+system+development&amp;referer=');"><span class="head">Bookmark on Delicious</span></a></li>
<li class="iconOnly"><a rel="nofollow" target="_blank" class="digg" href="http://digg.com/submit?url=http%3A%2F%2Fwww.yodaiken.com%2F2009%2F07%2Frtos-design-and-embedded-system-development%2F&amp;title=RTOS+design+and+embedded+system+development&amp;bodytext=Real-time+operating+systems+are+either+a+solved+problem+or+a+backwater+of+engineering+design.+Threads%2C+semaphores%2C+mutexes%2C+some+basic+I%2FO%2C+priority+scheduling+all+of+this+has+been+more+or+less+standardized+in+the%C3%82%C2%A0+POSIX+1003.13+smaller+profiles+%2851%2C52%29+for+many+years.+The+basic+programming+model+has+not+changed+in+" title="Digg this post : RTOS design and embedded system development" onclick="pageTracker._trackPageview('/outgoing/digg.com/submit?url=http_3A_2F_2Fwww.yodaiken.com_2F2009_2F07_2Frtos-design-and-embedded-system-development_2F_amp_title=RTOS+design+and+embedded+system+development_amp_bodytext=Real-time+operating+systems+are+either+a+solved+problem+or+a+backwater+of+engineering+design.+Threads_2C+semaphores_2C+mutexes_2C+some+basic+I_2FO_2C+priority+scheduling+all+of+this+has+been+more+or+less+standardized+in+the_C3_82_C2_A0+POSIX+1003.13+smaller+profiles+_2851_2C52_29+for+many+years.+The+basic+programming+model+has+not+changed+in+&amp;referer=');"><span class="head">Digg this post</span></a></li>
<li class="iconOnly"><a rel="nofollow" target="_blank" class="facebook" href="http://www.facebook.com/sharer.php?u=http%3A%2F%2Fwww.yodaiken.com%2F2009%2F07%2Frtos-design-and-embedded-system-development%2F&amp;t=RTOS+design+and+embedded+system+development" title="Recommend this post : RTOS design and embedded system development on Facebook" onclick="pageTracker._trackPageview('/outgoing/www.facebook.com/sharer.php?u=http_3A_2F_2Fwww.yodaiken.com_2F2009_2F07_2Frtos-design-and-embedded-system-development_2F_amp_t=RTOS+design+and+embedded+system+development&amp;referer=');"><span class="head">Recommend on Facebook</span></a></li>
<li class="iconOnly"><a rel="nofollow" target="_blank" class="linkedin" href="http://www.linkedin.com/shareArticle?mini=true&amp;url=http%3A%2F%2Fwww.yodaiken.com%2F2009%2F07%2Frtos-design-and-embedded-system-development%2F&amp;title=RTOS+design+and+embedded+system+development&amp;&amp;summary=" title="Share this post : RTOS design and embedded system development on Linkedin" onclick="pageTracker._trackPageview('/outgoing/www.linkedin.com/shareArticle?mini=true_amp_url=http_3A_2F_2Fwww.yodaiken.com_2F2009_2F07_2Frtos-design-and-embedded-system-development_2F_amp_title=RTOS+design+and+embedded+system+development_amp_amp_summary=&amp;referer=');"><span class="head">Share on Linkedin</span></a></li>
<li class="iconOnly"><a rel="nofollow" target="_blank" class="reddit" href="http://www.reddit.com/submit?url=http%3A%2F%2Fwww.yodaiken.com%2F2009%2F07%2Frtos-design-and-embedded-system-development%2F&amp;title=RTOS+design+and+embedded+system+development" title="Share this post : RTOS design and embedded system development on Reddit" onclick="pageTracker._trackPageview('/outgoing/www.reddit.com/submit?url=http_3A_2F_2Fwww.yodaiken.com_2F2009_2F07_2Frtos-design-and-embedded-system-development_2F_amp_title=RTOS+design+and+embedded+system+development&amp;referer=');"><span class="head">share via Reddit</span></a></li>
<li class="iconOnly"><a rel="nofollow" target="_blank" class="twitter" href="http://twitter.com/home/?status=http%3A%2F%2Fwww.yodaiken.com%2F2009%2F07%2Frtos-design-and-embedded-system-development%2F" title="Tweet this post : RTOS design and embedded system development on Twitter" onclick="pageTracker._trackPageview('/outgoing/twitter.com/home/?status=http_3A_2F_2Fwww.yodaiken.com_2F2009_2F07_2Frtos-design-and-embedded-system-development_2F&amp;referer=');"><span class="head">Tweet about it</span></a></li>
<li class="iconOnly"><a rel="nofollow" target="_blank" class="rss" href="http://www.yodaiken.com/2009/07/rtos-design-and-embedded-system-development/feed" title="Follow this post : RTOS design and embedded system development comments"><span class="head">Subscribe to the comments on this post</span></a></li>
</ul>
<div class="clean"></div>
]]></content:encoded>
			<wfw:commentRss>http://www.yodaiken.com/2009/07/rtos-design-and-embedded-system-development/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Wind River purchased by Intel</title>
		<link>http://www.yodaiken.com/2009/06/wind-river-purchased-by-intel/</link>
		<comments>http://www.yodaiken.com/2009/06/wind-river-purchased-by-intel/#comments</comments>
		<pubDate>Sat, 06 Jun 2009 01:19:15 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[embedded systems]]></category>
		<category><![CDATA[handset]]></category>
		<category><![CDATA[intellectual property]]></category>
		<category><![CDATA[marketing]]></category>
		<category><![CDATA[operating systems]]></category>
		<category><![CDATA[software business]]></category>
		<category><![CDATA[software engineering]]></category>
		<category><![CDATA[Add new tag]]></category>
		<category><![CDATA[embedded]]></category>
		<category><![CDATA[real-time]]></category>
		<category><![CDATA[wind river]]></category>

		<guid isPermaLink="false">http://www.yodaiken.com/?p=306</guid>
		<description><![CDATA[If anything, Wind River&#8217;s inability to breakout, despite a once Microsoft-like position of dominance, is a by-product of their failure to meaningfully go &#8220;up the stack&#8221; and away from their historical focus on the silicon layer as a primary differentiation point. In other words, if Wind River had enabled the next generation of Cisco and [...]]]></description>
			<content:encoded><![CDATA[<blockquote><p><a href="http://thenetworkgarden.com/weblog/2009/06/closing-the-book-on-embedded-intel-buys-wind-river.html" target="_blank" onclick="pageTracker._trackPageview('/outgoing/thenetworkgarden.com/weblog/2009/06/closing-the-book-on-embedded-intel-buys-wind-river.html?referer=');">If anything,</a> Wind River&#8217;s inability to breakout, despite a once Microsoft-like position of dominance, is a by-product of their failure to meaningfully go &#8220;up the stack&#8221; and away from their historical focus on the silicon layer as a primary differentiation point.</p>
<p>In other words, if Wind River had enabled the next generation of Cisco and Apple killers by providing more differentiated OEM-in-a-Box offerings, ala what Google is now trying to do with Android, they would not be staring at a $900M market cap and relatively flat revenues, margins and stock price.</p></blockquote>
<p>Well, that&#8217;s an argument. Embedded is a tough beat, but Wind did not exactly set the world on fire developing new concepts and software. Intel&#8217;s history in software is not glorious either &#8211; so it&#8217;s going to be an interesting challenge for the new entity.</p>
<ul class="socialwrap size16 row">
<li class="iconOnly"><a rel="nofollow" target="_blank" class="delicious" href="http://delicious.com/post?url=http%3A%2F%2Fwww.yodaiken.com%2F2009%2F06%2Fwind-river-purchased-by-intel%2F&amp;title=Wind+River+purchased+by+Intel" title="Bookmark this post : Wind River purchased by Intel on Delicious" onclick="pageTracker._trackPageview('/outgoing/delicious.com/post?url=http_3A_2F_2Fwww.yodaiken.com_2F2009_2F06_2Fwind-river-purchased-by-intel_2F_amp_title=Wind+River+purchased+by+Intel&amp;referer=');"><span class="head">Bookmark on Delicious</span></a></li>
<li class="iconOnly"><a rel="nofollow" target="_blank" class="digg" href="http://digg.com/submit?url=http%3A%2F%2Fwww.yodaiken.com%2F2009%2F06%2Fwind-river-purchased-by-intel%2F&amp;title=Wind+River+purchased+by+Intel&amp;bodytext=If+anything%2C+Wind+River%27s+inability+to+breakout%2C+despite+a+once+Microsoft-like+position+of+dominance%2C+is+a+by-product+of+their+failure+to+meaningfully+go+%22up+the+stack%22+and+away+from+their+historical+focus+on+the+silicon+layer+as+a+primary+differentiation+point.%0D%0A%0D%0AIn+other+words%2C+if+Wind+River+had+enabled+the+next+gen" title="Digg this post : Wind River purchased by Intel" onclick="pageTracker._trackPageview('/outgoing/digg.com/submit?url=http_3A_2F_2Fwww.yodaiken.com_2F2009_2F06_2Fwind-river-purchased-by-intel_2F_amp_title=Wind+River+purchased+by+Intel_amp_bodytext=If+anything_2C+Wind+River_27s+inability+to+breakout_2C+despite+a+once+Microsoft-like+position+of+dominance_2C+is+a+by-product+of+their+failure+to+meaningfully+go+_22up+the+stack_22+and+away+from+their+historical+focus+on+the+silicon+layer+as+a+primary+differentiation+point._0D_0A_0D_0AIn+other+words_2C+if+Wind+River+had+enabled+the+next+gen&amp;referer=');"><span class="head">Digg this post</span></a></li>
<li class="iconOnly"><a rel="nofollow" target="_blank" class="facebook" href="http://www.facebook.com/sharer.php?u=http%3A%2F%2Fwww.yodaiken.com%2F2009%2F06%2Fwind-river-purchased-by-intel%2F&amp;t=Wind+River+purchased+by+Intel" title="Recommend this post : Wind River purchased by Intel on Facebook" onclick="pageTracker._trackPageview('/outgoing/www.facebook.com/sharer.php?u=http_3A_2F_2Fwww.yodaiken.com_2F2009_2F06_2Fwind-river-purchased-by-intel_2F_amp_t=Wind+River+purchased+by+Intel&amp;referer=');"><span class="head">Recommend on Facebook</span></a></li>
<li class="iconOnly"><a rel="nofollow" target="_blank" class="linkedin" href="http://www.linkedin.com/shareArticle?mini=true&amp;url=http%3A%2F%2Fwww.yodaiken.com%2F2009%2F06%2Fwind-river-purchased-by-intel%2F&amp;title=Wind+River+purchased+by+Intel&amp;&amp;summary=" title="Share this post : Wind River purchased by Intel on Linkedin" onclick="pageTracker._trackPageview('/outgoing/www.linkedin.com/shareArticle?mini=true_amp_url=http_3A_2F_2Fwww.yodaiken.com_2F2009_2F06_2Fwind-river-purchased-by-intel_2F_amp_title=Wind+River+purchased+by+Intel_amp_amp_summary=&amp;referer=');"><span class="head">Share on Linkedin</span></a></li>
<li class="iconOnly"><a rel="nofollow" target="_blank" class="reddit" href="http://www.reddit.com/submit?url=http%3A%2F%2Fwww.yodaiken.com%2F2009%2F06%2Fwind-river-purchased-by-intel%2F&amp;title=Wind+River+purchased+by+Intel" title="Share this post : Wind River purchased by Intel on Reddit" onclick="pageTracker._trackPageview('/outgoing/www.reddit.com/submit?url=http_3A_2F_2Fwww.yodaiken.com_2F2009_2F06_2Fwind-river-purchased-by-intel_2F_amp_title=Wind+River+purchased+by+Intel&amp;referer=');"><span class="head">share via Reddit</span></a></li>
<li class="iconOnly"><a rel="nofollow" target="_blank" class="twitter" href="http://twitter.com/home/?status=http%3A%2F%2Fwww.yodaiken.com%2F2009%2F06%2Fwind-river-purchased-by-intel%2F" title="Tweet this post : Wind River purchased by Intel on Twitter" onclick="pageTracker._trackPageview('/outgoing/twitter.com/home/?status=http_3A_2F_2Fwww.yodaiken.com_2F2009_2F06_2Fwind-river-purchased-by-intel_2F&amp;referer=');"><span class="head">Tweet about it</span></a></li>
<li class="iconOnly"><a rel="nofollow" target="_blank" class="rss" href="http://www.yodaiken.com/2009/06/wind-river-purchased-by-intel/feed" title="Follow this post : Wind River purchased by Intel comments"><span class="head">Subscribe to the comments on this post</span></a></li>
</ul>
<div class="clean"></div>
]]></content:encoded>
			<wfw:commentRss>http://www.yodaiken.com/2009/06/wind-river-purchased-by-intel/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Are threads evil? (updated)</title>
		<link>http://www.yodaiken.com/2009/02/are-threads-evil/</link>
		<comments>http://www.yodaiken.com/2009/02/are-threads-evil/#comments</comments>
		<pubDate>Wed, 25 Feb 2009 19:18:51 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[embedded systems]]></category>
		<category><![CDATA[operating systems]]></category>
		<category><![CDATA[real-time]]></category>
		<category><![CDATA[rtlinux]]></category>
		<category><![CDATA[software engineering]]></category>
		<category><![CDATA[formal methods]]></category>
		<category><![CDATA[parallelism]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[threads]]></category>

		<guid isPermaLink="false">http://www.yodaiken.com/?p=220</guid>
		<description><![CDATA[This paper by Prof. Edward Lee explains something of why &#8220;threads&#8221; are such a painful abstraction.Â  As Prof. Lee notes, threads intrinsically create non-determinism and resource conflicts which we then attempt to &#8220;prune&#8221; via synchronization and complex tools. In an earlier note, I argued that we should design real-time multi-threaded applications to minimize the need [...]]]></description>
			<content:encoded><![CDATA[<p>This <a title="evil threads" href="http://www.yodaiken.com/references/threadsareevil.pdf" target="_blank">paper </a>by Prof. Edward Lee explains something of why &#8220;threads&#8221; are such a painful abstraction.Â  As Prof. Lee notes, threads intrinsically create non-determinism and resource conflicts which we then attempt to &#8220;prune&#8221; via synchronization and complex tools. In an <a href="http://www.yodaiken.com/papers/sync.pdf">earlier note</a>, I argued that we should design real-time multi-threaded applications to minimize the need for synchronization, but Prof. Lee goes further to point out that the thread model itself encourages a disorganized program structure.Â  Along those lines, one of the basic difficulties in real-time application design is non-deterministic resource allocation. How can we ever be sure that, for example, a multi-threaded app where threads can allocate memory has sufficient memory for critical threads to proceed?</p>
<p>I&#8217;m not a fan of the &#8220;algebraic&#8221; <a title="Tagged Signal Model" href="http://www.eecs.berkeley.edu/Pubs/TechRpts/2005/EECS-2005-31.pdf" target="_blank" onclick="pageTracker._trackPageview('/outgoing/www.eecs.berkeley.edu/Pubs/TechRpts/2005/EECS-2005-31.pdf?referer=');">tagged model</a> that Lee suggests as an alternative &#8211; too much of the flavor of &#8220;formal methods&#8221; via the denotational semantics base.Â  In fact, Liu&#8217;s thesis, referenced here, struggles mightly with the unsatisfactory nature of the mathematical framework to get somewhere. Do we really have to create lemmas about posets to describe 2 simple processes? It seems to me that the confusion of the underlying mathematical basis has to be resolved before we can figure this out. Or maybe not.</p>
<p>Consider a really dumb system that keeps a &#8220;gain&#8221; variable, outputs a single analog voltage, and inputs both an input signal and &#8220;messages&#8221; that tell it what to do. The input events can be thought of as samples of the analog signals on the &#8220;pins&#8221;.</p>
<p>Inputs are maps: Pins -&gt; SignalsÂ  where each input represents one unit of time and the set Pins contains &#8220;Vin&#8221; and some unknown number of pins (which may not be actual physical pins) comprising the message port.</p>
<p>Given a sequence of inputs, w, we suppose we have a function LastGain(w) that extracts the value of gain we were told to set in the most recent message and SinceLastCommand(w) that counts samples (time units) since the last command message.Â  Let&#8217;s be more specific on the &#8220;Vin&#8221;</p>
<p>LastVin(wa) = a(Vin).</p>
<p>StableVin(wa) = (1+ StableVin(w))*[a(Vin) ==Â  LastVin(w)]Â  where [exp] is 1 if exp is true and 0 otherwise</p>
<p>StableVin(emptysequence)=0</p>
<p>Then we can require that Dev(w)= g*v if</p>
<p>StableVin(w)&gt;= t1 and v=LastVin(w)</p>
<p>and g=LastCommand(w) and SinceLastCommand(w) &gt;= t2</p>
<ul class="socialwrap size16 row">
<li class="iconOnly"><a rel="nofollow" target="_blank" class="delicious" href="http://delicious.com/post?url=http%3A%2F%2Fwww.yodaiken.com%2F2009%2F02%2Fare-threads-evil%2F&amp;title=Are+threads+evil%3F+%28updated%29" title="Bookmark this post : Are threads evil? (updated) on Delicious" onclick="pageTracker._trackPageview('/outgoing/delicious.com/post?url=http_3A_2F_2Fwww.yodaiken.com_2F2009_2F02_2Fare-threads-evil_2F_amp_title=Are+threads+evil_3F+_28updated_29&amp;referer=');"><span class="head">Bookmark on Delicious</span></a></li>
<li class="iconOnly"><a rel="nofollow" target="_blank" class="digg" href="http://digg.com/submit?url=http%3A%2F%2Fwww.yodaiken.com%2F2009%2F02%2Fare-threads-evil%2F&amp;title=Are+threads+evil%3F+%28updated%29&amp;bodytext=This+paper+by+Prof.+Edward+Lee+explains+something+of+why+%22threads%22+are+such+a+painful+abstraction.%C3%82%C2%A0+As+Prof.+Lee+notes%2C+threads+intrinsically+create+non-determinism+and+resource+conflicts+which+we+then+attempt+to+%22prune%22+via+synchronization+and+complex+tools.+In+an+earlier+note%2C+I+argued+that+we+should+design+real-t" title="Digg this post : Are threads evil? (updated)" onclick="pageTracker._trackPageview('/outgoing/digg.com/submit?url=http_3A_2F_2Fwww.yodaiken.com_2F2009_2F02_2Fare-threads-evil_2F_amp_title=Are+threads+evil_3F+_28updated_29_amp_bodytext=This+paper+by+Prof.+Edward+Lee+explains+something+of+why+_22threads_22+are+such+a+painful+abstraction._C3_82_C2_A0+As+Prof.+Lee+notes_2C+threads+intrinsically+create+non-determinism+and+resource+conflicts+which+we+then+attempt+to+_22prune_22+via+synchronization+and+complex+tools.+In+an+earlier+note_2C+I+argued+that+we+should+design+real-t&amp;referer=');"><span class="head">Digg this post</span></a></li>
<li class="iconOnly"><a rel="nofollow" target="_blank" class="facebook" href="http://www.facebook.com/sharer.php?u=http%3A%2F%2Fwww.yodaiken.com%2F2009%2F02%2Fare-threads-evil%2F&amp;t=Are+threads+evil%3F+%28updated%29" title="Recommend this post : Are threads evil? (updated) on Facebook" onclick="pageTracker._trackPageview('/outgoing/www.facebook.com/sharer.php?u=http_3A_2F_2Fwww.yodaiken.com_2F2009_2F02_2Fare-threads-evil_2F_amp_t=Are+threads+evil_3F+_28updated_29&amp;referer=');"><span class="head">Recommend on Facebook</span></a></li>
<li class="iconOnly"><a rel="nofollow" target="_blank" class="linkedin" href="http://www.linkedin.com/shareArticle?mini=true&amp;url=http%3A%2F%2Fwww.yodaiken.com%2F2009%2F02%2Fare-threads-evil%2F&amp;title=Are+threads+evil%3F+%28updated%29&amp;&amp;summary=" title="Share this post : Are threads evil? (updated) on Linkedin" onclick="pageTracker._trackPageview('/outgoing/www.linkedin.com/shareArticle?mini=true_amp_url=http_3A_2F_2Fwww.yodaiken.com_2F2009_2F02_2Fare-threads-evil_2F_amp_title=Are+threads+evil_3F+_28updated_29_amp_amp_summary=&amp;referer=');"><span class="head">Share on Linkedin</span></a></li>
<li class="iconOnly"><a rel="nofollow" target="_blank" class="reddit" href="http://www.reddit.com/submit?url=http%3A%2F%2Fwww.yodaiken.com%2F2009%2F02%2Fare-threads-evil%2F&amp;title=Are+threads+evil%3F+%28updated%29" title="Share this post : Are threads evil? (updated) on Reddit" onclick="pageTracker._trackPageview('/outgoing/www.reddit.com/submit?url=http_3A_2F_2Fwww.yodaiken.com_2F2009_2F02_2Fare-threads-evil_2F_amp_title=Are+threads+evil_3F+_28updated_29&amp;referer=');"><span class="head">share via Reddit</span></a></li>
<li class="iconOnly"><a rel="nofollow" target="_blank" class="twitter" href="http://twitter.com/home/?status=http%3A%2F%2Fwww.yodaiken.com%2F2009%2F02%2Fare-threads-evil%2F" title="Tweet this post : Are threads evil? (updated) on Twitter" onclick="pageTracker._trackPageview('/outgoing/twitter.com/home/?status=http_3A_2F_2Fwww.yodaiken.com_2F2009_2F02_2Fare-threads-evil_2F&amp;referer=');"><span class="head">Tweet about it</span></a></li>
<li class="iconOnly"><a rel="nofollow" target="_blank" class="rss" href="http://www.yodaiken.com/2009/02/are-threads-evil/feed" title="Follow this post : Are threads evil? (updated) comments"><span class="head">Subscribe to the comments on this post</span></a></li>
</ul>
<div class="clean"></div>
]]></content:encoded>
			<wfw:commentRss>http://www.yodaiken.com/2009/02/are-threads-evil/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
