<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	>
<channel>
	<title>Comments on: Headius and Ruby Threading: Software Reinvention isn&#8217;t Sexy, It&#8217;s Stupid</title>
	<atom:link href="http://enfranchisedmind.com/blog/2008/02/25/headius-and-ruby-threading-software-reinvention-isnt-sexy-its-stupid/feed/" rel="self" type="application/rss+xml" />
	<link>http://enfranchisedmind.com/blog/2008/02/25/headius-and-ruby-threading-software-reinvention-isnt-sexy-its-stupid/</link>
	<description>Robert Fischer and Brian Hurt on Punditry, Programming Languages, and Other Religious Issues</description>
	<pubDate>Thu, 28 Aug 2008 11:34:09 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.6.1</generator>
		<item>
		<title>By: Enfranchised Mind &#187; 7 Actually Useful Things You Didn&#8217;t Know Static Typing Could Do: An Introduction for the Dynamic Language Enthusiast</title>
		<link>http://enfranchisedmind.com/blog/2008/02/25/headius-and-ruby-threading-software-reinvention-isnt-sexy-its-stupid/#comment-33464</link>
		<dc:creator>Enfranchised Mind &#187; 7 Actually Useful Things You Didn&#8217;t Know Static Typing Could Do: An Introduction for the Dynamic Language Enthusiast</dc:creator>
		<pubDate>Tue, 01 Jul 2008 14:14:49 +0000</pubDate>
		<guid isPermaLink="false">http://enfranchisedmind.com/blog/2008/02/25/headius-and-ruby-threading-software-reinvention-isnt-sexy-its-stupid/#comment-33464</guid>
		<description>[...] while this is an advance, it&#8217;s not a novel invention &#8212; there is already prior art (see another reinvention here). What the Rubyists call a &#8220;DSL&#8221;, Ocamlists call &#8220;readable code&#8221;[2]. Ocaml [...]</description>
		<content:encoded><![CDATA[<p>[...] while this is an advance, it&#8217;s not a novel invention &#8212; there is already prior art (see another reinvention here). What the Rubyists call a &#8220;DSL&#8221;, Ocamlists call &#8220;readable code&#8221;[2]. Ocaml [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Enfranchised Mind &#187; Real Life Update and Administrivia</title>
		<link>http://enfranchisedmind.com/blog/2008/02/25/headius-and-ruby-threading-software-reinvention-isnt-sexy-its-stupid/#comment-32765</link>
		<dc:creator>Enfranchised Mind &#187; Real Life Update and Administrivia</dc:creator>
		<pubDate>Sun, 09 Mar 2008 21:51:49 +0000</pubDate>
		<guid isPermaLink="false">http://enfranchisedmind.com/blog/2008/02/25/headius-and-ruby-threading-software-reinvention-isnt-sexy-its-stupid/#comment-32765</guid>
		<description>[...] I&#8217;m still cranking away on Java CONcurrency Handler, although I&#8217;m losing steam. The binary and source distributions have a whopping 18 downloads between them, and aside from Hamlet D&#8217;Arcy and a wiki comment, it seems to be kind of a dud. So I&#8217;m going to declare it finished as soon as the pipeline stuff gets done, and I&#8217;ll write up some documentation and then move on to other stuff. Quite frankly, I&#8217;m having more fun playing with JoCaml than reinventing it in Java (which, after all, is kinda stupid). [...]</description>
		<content:encoded><![CDATA[<p>[...] I&#8217;m still cranking away on Java CONcurrency Handler, although I&#8217;m losing steam. The binary and source distributions have a whopping 18 downloads between them, and aside from Hamlet D&#8217;Arcy and a wiki comment, it seems to be kind of a dud. So I&#8217;m going to declare it finished as soon as the pipeline stuff gets done, and I&#8217;ll write up some documentation and then move on to other stuff. Quite frankly, I&#8217;m having more fun playing with JoCaml than reinventing it in Java (which, after all, is kinda stupid). [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Robert Fischer</title>
		<link>http://enfranchisedmind.com/blog/2008/02/25/headius-and-ruby-threading-software-reinvention-isnt-sexy-its-stupid/#comment-32713</link>
		<dc:creator>Robert Fischer</dc:creator>
		<pubDate>Fri, 29 Feb 2008 13:32:25 +0000</pubDate>
		<guid isPermaLink="false">http://enfranchisedmind.com/blog/2008/02/25/headius-and-ruby-threading-software-reinvention-isnt-sexy-its-stupid/#comment-32713</guid>
		<description>Where are current proposals heading for the major overhaul?  Imperative threading models are just riddled with issues, and we keep going back and forth between user-space locking and syntactic locking, both of which suck in their own distinct ways.  Ruby already offers both of those approaches, so I'm not sure where they're heading next.

If they've got something wild coming out, I'd love to see it.</description>
		<content:encoded><![CDATA[<p>Where are current proposals heading for the major overhaul?  Imperative threading models are just riddled with issues, and we keep going back and forth between user-space locking and syntactic locking, both of which suck in their own distinct ways.  Ruby already offers both of those approaches, so I&#8217;m not sure where they&#8217;re heading next.</p>
<p>If they&#8217;ve got something wild coming out, I&#8217;d love to see it.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Kamil Szot</title>
		<link>http://enfranchisedmind.com/blog/2008/02/25/headius-and-ruby-threading-software-reinvention-isnt-sexy-its-stupid/#comment-32712</link>
		<dc:creator>Kamil Szot</dc:creator>
		<pubDate>Fri, 29 Feb 2008 13:02:35 +0000</pubDate>
		<guid isPermaLink="false">http://enfranchisedmind.com/blog/2008/02/25/headius-and-ruby-threading-software-reinvention-isnt-sexy-its-stupid/#comment-32712</guid>
		<description>I've seen this thing done in correct way in Delphi 3 around 1997 where class TThread had property named Terminated which sole purpose was to allow you to inform thread that it should end. There was no method to stop thread from outside. You just set Terminated to true and your own code inside thread must examine this property and end if it is set.</description>
		<content:encoded><![CDATA[<p>I&#8217;ve seen this thing done in correct way in Delphi 3 around 1997 where class TThread had property named Terminated which sole purpose was to allow you to inform thread that it should end. There was no method to stop thread from outside. You just set Terminated to true and your own code inside thread must examine this property and end if it is set.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Mark Murphy</title>
		<link>http://enfranchisedmind.com/blog/2008/02/25/headius-and-ruby-threading-software-reinvention-isnt-sexy-its-stupid/#comment-32711</link>
		<dc:creator>Mark Murphy</dc:creator>
		<pubDate>Fri, 29 Feb 2008 12:41:22 +0000</pubDate>
		<guid isPermaLink="false">http://enfranchisedmind.com/blog/2008/02/25/headius-and-ruby-threading-software-reinvention-isnt-sexy-its-stupid/#comment-32711</guid>
		<description>"It just blew me away that this wasn’t something that Ruby was aware of, since it was part of my Concurrency 101 experience in the Java/C# world."

I'm right with you there. At minimum, they should have used 'warn' to emit a warning and used that as their deprecation-notification mechanism.

FWIW, threading in general is getting a major overhaul, both in "classic" Ruby (MRI/YARV) and in alternative Ruby engines (JRuby, Rubinius, and presumably IronRuby). So I doubt this will remain an issue for terribly long.</description>
		<content:encoded><![CDATA[<p>&#8220;It just blew me away that this wasn’t something that Ruby was aware of, since it was part of my Concurrency 101 experience in the Java/C# world.&#8221;</p>
<p>I&#8217;m right with you there. At minimum, they should have used &#8216;warn&#8217; to emit a warning and used that as their deprecation-notification mechanism.</p>
<p>FWIW, threading in general is getting a major overhaul, both in &#8220;classic&#8221; Ruby (MRI/YARV) and in alternative Ruby engines (JRuby, Rubinius, and presumably IronRuby). So I doubt this will remain an issue for terribly long.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Robert Fischer</title>
		<link>http://enfranchisedmind.com/blog/2008/02/25/headius-and-ruby-threading-software-reinvention-isnt-sexy-its-stupid/#comment-32704</link>
		<dc:creator>Robert Fischer</dc:creator>
		<pubDate>Thu, 28 Feb 2008 23:48:47 +0000</pubDate>
		<guid isPermaLink="false">http://enfranchisedmind.com/blog/2008/02/25/headius-and-ruby-threading-software-reinvention-isnt-sexy-its-stupid/#comment-32704</guid>
		<description>@Mark

You're right -- this particular example isn't the greatest to illustrate the general principle I was getting at.  It just blew me away that this wasn't something that Ruby was aware of, since it was part of my Concurrency 101 experience in the Java/C# world.</description>
		<content:encoded><![CDATA[<p>@Mark</p>
<p>You&#8217;re right &#8212; this particular example isn&#8217;t the greatest to illustrate the general principle I was getting at.  It just blew me away that this wasn&#8217;t something that Ruby was aware of, since it was part of my Concurrency 101 experience in the Java/C# world.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Adam</title>
		<link>http://enfranchisedmind.com/blog/2008/02/25/headius-and-ruby-threading-software-reinvention-isnt-sexy-its-stupid/#comment-32699</link>
		<dc:creator>Adam</dc:creator>
		<pubDate>Thu, 28 Feb 2008 21:48:33 +0000</pubDate>
		<guid isPermaLink="false">http://enfranchisedmind.com/blog/2008/02/25/headius-and-ruby-threading-software-reinvention-isnt-sexy-its-stupid/#comment-32699</guid>
		<description>@Mark: Perhaps "reinventing the wheel" isn't a perfect fit as an expression, but the spirit of not learning the lessons of your predecessors and/or contemporaries is certainly there.</description>
		<content:encoded><![CDATA[<p>@Mark: Perhaps &#8220;reinventing the wheel&#8221; isn&#8217;t a perfect fit as an expression, but the spirit of not learning the lessons of your predecessors and/or contemporaries is certainly there.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Mark Murphy</title>
		<link>http://enfranchisedmind.com/blog/2008/02/25/headius-and-ruby-threading-software-reinvention-isnt-sexy-its-stupid/#comment-32698</link>
		<dc:creator>Mark Murphy</dc:creator>
		<pubDate>Thu, 28 Feb 2008 21:31:28 +0000</pubDate>
		<guid isPermaLink="false">http://enfranchisedmind.com/blog/2008/02/25/headius-and-ruby-threading-software-reinvention-isnt-sexy-its-stupid/#comment-32698</guid>
		<description>"Are you saying that I shouldn’t expect Ruby to have caught up?"

No, I'm saying you need to read your own writing, then figure out what you want to bitch about, and let us know when you're back in sync with yourself.

The crux of your rant is:

"why is it that the software development industry, which has all these awesome ways of sharing what has previously been done, constantly finds itself reinventing the wheel?"

You have shown no evidence that Ruby reinvented Java's threading implementation. Hence, you have no evidence of that of which you are "*headdesk*"-ing, and that is what you pinned your entire rant upon.

Now, if you want to write a blog post about why this problem has existed in Ruby a decade after Java deprecated its similar APIs, that's cool. Or, if you want to come up with another example that's more accurate, that's cool.

But complaining that developers are "reinventing the wheel" makes no sense given your example, which does not demonstrate "reinventing the wheel".</description>
		<content:encoded><![CDATA[<p>&#8220;Are you saying that I shouldn’t expect Ruby to have caught up?&#8221;</p>
<p>No, I&#8217;m saying you need to read your own writing, then figure out what you want to bitch about, and let us know when you&#8217;re back in sync with yourself.</p>
<p>The crux of your rant is:</p>
<p>&#8220;why is it that the software development industry, which has all these awesome ways of sharing what has previously been done, constantly finds itself reinventing the wheel?&#8221;</p>
<p>You have shown no evidence that Ruby reinvented Java&#8217;s threading implementation. Hence, you have no evidence of that of which you are &#8220;*headdesk*&#8221;-ing, and that is what you pinned your entire rant upon.</p>
<p>Now, if you want to write a blog post about why this problem has existed in Ruby a decade after Java deprecated its similar APIs, that&#8217;s cool. Or, if you want to come up with another example that&#8217;s more accurate, that&#8217;s cool.</p>
<p>But complaining that developers are &#8220;reinventing the wheel&#8221; makes no sense given your example, which does not demonstrate &#8220;reinventing the wheel&#8221;.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Robert Fischer</title>
		<link>http://enfranchisedmind.com/blog/2008/02/25/headius-and-ruby-threading-software-reinvention-isnt-sexy-its-stupid/#comment-32679</link>
		<dc:creator>Robert Fischer</dc:creator>
		<pubDate>Wed, 27 Feb 2008 03:47:43 +0000</pubDate>
		<guid isPermaLink="false">http://enfranchisedmind.com/blog/2008/02/25/headius-and-ruby-threading-software-reinvention-isnt-sexy-its-stupid/#comment-32679</guid>
		<description>This is true.  It's possible that Ruby and Java developed them at the same time.

However, Java -- the &lt;a href="http://weblog.raganwald.com/2008/02/1100inject.html" rel="nofollow"&gt;epically stagnant and tragically unhip enterprisey language&lt;/a&gt; --  &lt;a href="http://www.kaffe.org/pipermail/kaffe/2000-May/126045.html" rel="nofollow"&gt;knocked those methods out in 1.2&lt;/a&gt;, which was released &lt;a href="http://www.levenez.com/lang/history.html#07" rel="nofollow"&gt;a decade ago&lt;/a&gt;.

Are you saying that I shouldn't expect Ruby to have caught up?</description>
		<content:encoded><![CDATA[<p>This is true.  It&#8217;s possible that Ruby and Java developed them at the same time.</p>
<p>However, Java &#8212; the <a href="http://weblog.raganwald.com/2008/02/1100inject.html" rel="nofollow">epically stagnant and tragically unhip enterprisey language</a> &#8212;  <a href="http://www.kaffe.org/pipermail/kaffe/2000-May/126045.html" rel="nofollow">knocked those methods out in 1.2</a>, which was released <a href="http://www.levenez.com/lang/history.html#07" rel="nofollow">a decade ago</a>.</p>
<p>Are you saying that I shouldn&#8217;t expect Ruby to have caught up?</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Mark Murphy</title>
		<link>http://enfranchisedmind.com/blog/2008/02/25/headius-and-ruby-threading-software-reinvention-isnt-sexy-its-stupid/#comment-32675</link>
		<dc:creator>Mark Murphy</dc:creator>
		<pubDate>Tue, 26 Feb 2008 15:08:58 +0000</pubDate>
		<guid isPermaLink="false">http://enfranchisedmind.com/blog/2008/02/25/headius-and-ruby-threading-software-reinvention-isnt-sexy-its-stupid/#comment-32675</guid>
		<description>Ruby and Java were originally developed at around the same time (mid-1990's). While I don't have the timetables under which each language developed their original cut of threading primitives, it's well within reason they were developed around the same time as well. Unless you have concrete proof that Ruby's threading primitives were developed after Java's were demonstrated as being faulty, then you can't really "headdesk" about Ruby not learning from Java's mistakes.

That being said, Ruby does need a clearer API deprecation mechanism and does need to deprecate those APIs, like Java did. Even better, of course, is to work out the patterns for safer multi-threading and pour them into the language (e.g., actors).</description>
		<content:encoded><![CDATA[<p>Ruby and Java were originally developed at around the same time (mid-1990&#8217;s). While I don&#8217;t have the timetables under which each language developed their original cut of threading primitives, it&#8217;s well within reason they were developed around the same time as well. Unless you have concrete proof that Ruby&#8217;s threading primitives were developed after Java&#8217;s were demonstrated as being faulty, then you can&#8217;t really &#8220;headdesk&#8221; about Ruby not learning from Java&#8217;s mistakes.</p>
<p>That being said, Ruby does need a clearer API deprecation mechanism and does need to deprecate those APIs, like Java did. Even better, of course, is to work out the patterns for safer multi-threading and pour them into the language (e.g., actors).</p>
]]></content:encoded>
	</item>
</channel>
</rss>
