<?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: My Frustrations with REXML: Ruby&#8217;s Standard Library for Reading/Writing XML; or, Ruby&#8217;s Problem Is Its Type System, and Don&#8217;t Try to Tell Me Otherwise</title>
	<atom:link href="http://enfranchisedmind.com/blog/2008/03/24/rexml-dynamic-typing-lose/feed/" rel="self" type="application/rss+xml" />
	<link>http://enfranchisedmind.com/blog/2008/03/24/rexml-dynamic-typing-lose/</link>
	<description>Robert Fischer and Brian Hurt on Punditry, Programming Languages, and Other Religious Issues</description>
	<pubDate>Sat, 05 Jul 2008 18:49:26 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.5.1</generator>
		<item>
		<title>By: Robert Fischer</title>
		<link>http://enfranchisedmind.com/blog/2008/03/24/rexml-dynamic-typing-lose/#comment-33022</link>
		<dc:creator>Robert Fischer</dc:creator>
		<pubDate>Mon, 14 Apr 2008 21:52:29 +0000</pubDate>
		<guid isPermaLink="false">http://enfranchisedmind.com/blog/2008/03/24/my-frustrations-with-rexml-rubys-standard-library-for-readingwriting-xml-or-rubys-problem-is-its-type-system-and-dont-try-to-tell-me-otherwise/#comment-33022</guid>
		<description>@jonas

Oh, and if REXML sucks so bad, why does the Ruby team make sure that it ships with every Ruby distribution?  What does it say about the language that they allow something so woefully broken to be a backbone of their language?</description>
		<content:encoded><![CDATA[<p>@jonas</p>
<p>Oh, and if REXML sucks so bad, why does the Ruby team make sure that it ships with every Ruby distribution?  What does it say about the language that they allow something so woefully broken to be a backbone of their language?</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Robert Fischer</title>
		<link>http://enfranchisedmind.com/blog/2008/03/24/rexml-dynamic-typing-lose/#comment-33019</link>
		<dc:creator>Robert Fischer</dc:creator>
		<pubDate>Mon, 14 Apr 2008 21:36:09 +0000</pubDate>
		<guid isPermaLink="false">http://enfranchisedmind.com/blog/2008/03/24/my-frustrations-with-rexml-rubys-standard-library-for-readingwriting-xml-or-rubys-problem-is-its-type-system-and-dont-try-to-tell-me-otherwise/#comment-33019</guid>
		<description>@jonas

Got some documentation on Hpricot and namespaces?  I haven't found any support.</description>
		<content:encoded><![CDATA[<p>@jonas</p>
<p>Got some documentation on Hpricot and namespaces?  I haven&#8217;t found any support.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Jonas</title>
		<link>http://enfranchisedmind.com/blog/2008/03/24/rexml-dynamic-typing-lose/#comment-33018</link>
		<dc:creator>Jonas</dc:creator>
		<pubDate>Mon, 14 Apr 2008 20:53:02 +0000</pubDate>
		<guid isPermaLink="false">http://enfranchisedmind.com/blog/2008/03/24/my-frustrations-with-rexml-rubys-standard-library-for-readingwriting-xml-or-rubys-problem-is-its-type-system-and-dont-try-to-tell-me-otherwise/#comment-33018</guid>
		<description>As someone pointed out earlier: don't use REXML. Its documentation is terrible, it doesn't really work, and it's ridiculously complicated to use. Also, don't use XML-Simple, since it suffers from the exact same problems.

Instead, use Hpricot.XML, which is awesome, seriously fast, ridiculously easy to use and awesome.

http://code.whytheluckystiff.net/hpricot/

You can select stuff with CSS or XPATH selectors, change it, print it out. It doesn't get any easier.</description>
		<content:encoded><![CDATA[<p>As someone pointed out earlier: don&#8217;t use REXML. Its documentation is terrible, it doesn&#8217;t really work, and it&#8217;s ridiculously complicated to use. Also, don&#8217;t use XML-Simple, since it suffers from the exact same problems.</p>
<p>Instead, use Hpricot.XML, which is awesome, seriously fast, ridiculously easy to use and awesome.</p>
<p><a href="http://code.whytheluckystiff.net/hpricot/" rel="nofollow">http://code.whytheluckystiff.net/hpricot/</a></p>
<p>You can select stuff with CSS or XPATH selectors, change it, print it out. It doesn&#8217;t get any easier.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Robert Fischer</title>
		<link>http://enfranchisedmind.com/blog/2008/03/24/rexml-dynamic-typing-lose/#comment-32926</link>
		<dc:creator>Robert Fischer</dc:creator>
		<pubDate>Sun, 30 Mar 2008 06:43:18 +0000</pubDate>
		<guid isPermaLink="false">http://enfranchisedmind.com/blog/2008/03/24/my-frustrations-with-rexml-rubys-standard-library-for-readingwriting-xml-or-rubys-problem-is-its-type-system-and-dont-try-to-tell-me-otherwise/#comment-32926</guid>
		<description>@&lt;a href="http://enfranchisedmind.com/blog/2008/03/24/rexml-dynamic-typing-lose/#comment-32907" rel="nofollow"&gt;Jeremy D Pavleck&lt;/a&gt;

Here's the summary of my experience: I haven't used the core library's built-in RSS feed, so I don't know how that works out.  REXML is to be avoided.  Hpricot is pretty nice, as long as you don't need to deal with namespaces.</description>
		<content:encoded><![CDATA[<p>@<a href="http://enfranchisedmind.com/blog/2008/03/24/rexml-dynamic-typing-lose/#comment-32907" rel="nofollow">Jeremy D Pavleck</a></p>
<p>Here&#8217;s the summary of my experience: I haven&#8217;t used the core library&#8217;s built-in RSS feed, so I don&#8217;t know how that works out.  REXML is to be avoided.  Hpricot is pretty nice, as long as you don&#8217;t need to deal with namespaces.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Enfranchised Mind &#187; Working on Rebuilding the Dialog</title>
		<link>http://enfranchisedmind.com/blog/2008/03/24/rexml-dynamic-typing-lose/#comment-32924</link>
		<dc:creator>Enfranchised Mind &#187; Working on Rebuilding the Dialog</dc:creator>
		<pubDate>Sun, 30 Mar 2008 06:37:35 +0000</pubDate>
		<guid isPermaLink="false">http://enfranchisedmind.com/blog/2008/03/24/my-frustrations-with-rexml-rubys-standard-library-for-readingwriting-xml-or-rubys-problem-is-its-type-system-and-dont-try-to-tell-me-otherwise/#comment-32924</guid>
		<description>[...] for my blogging: after some soul-searching prompted by insightful comments, I&#8217;ve decided that my last post on Ruby came a bit too close to violating my own rule #1. It [...]</description>
		<content:encoded><![CDATA[<p>[...] for my blogging: after some soul-searching prompted by insightful comments, I&#8217;ve decided that my last post on Ruby came a bit too close to violating my own rule #1. It [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Jeremy D Pavleck</title>
		<link>http://enfranchisedmind.com/blog/2008/03/24/rexml-dynamic-typing-lose/#comment-32907</link>
		<dc:creator>Jeremy D Pavleck</dc:creator>
		<pubDate>Fri, 28 Mar 2008 16:09:44 +0000</pubDate>
		<guid isPermaLink="false">http://enfranchisedmind.com/blog/2008/03/24/my-frustrations-with-rexml-rubys-standard-library-for-readingwriting-xml-or-rubys-problem-is-its-type-system-and-dont-try-to-tell-me-otherwise/#comment-32907</guid>
		<description>What a timely post actually. So I decided to poke around with Ruby finally, and see if it could work with one of my projects I have in mind, which is mainly grabbing an RSS feed, parsing it, re-writing it to a database, which I'll use later to construct some neat things - just for the hell of it.

Glad I saw this!</description>
		<content:encoded><![CDATA[<p>What a timely post actually. So I decided to poke around with Ruby finally, and see if it could work with one of my projects I have in mind, which is mainly grabbing an RSS feed, parsing it, re-writing it to a database, which I&#8217;ll use later to construct some neat things - just for the hell of it.</p>
<p>Glad I saw this!</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Robert Fischer</title>
		<link>http://enfranchisedmind.com/blog/2008/03/24/rexml-dynamic-typing-lose/#comment-32892</link>
		<dc:creator>Robert Fischer</dc:creator>
		<pubDate>Wed, 26 Mar 2008 04:55:09 +0000</pubDate>
		<guid isPermaLink="false">http://enfranchisedmind.com/blog/2008/03/24/my-frustrations-with-rexml-rubys-standard-library-for-readingwriting-xml-or-rubys-problem-is-its-type-system-and-dont-try-to-tell-me-otherwise/#comment-32892</guid>
		<description>@Zach

You're welcome to tackle Ruby and it's problems -- for my part, I was mainly trying to vent (see above for more on that).  I'd encourage you to post your stuff on Ruby and Ruby's core libraries: I'd be curious to see what you've bumped into.

Now that I'm a little calmer, let me add some more.  I may rework this and some other thoughts into a more coherent post in the near future -- I haven't decided.

Here's the thing: open source libraries are one thing.  I'm used to those being of dubious quality, and I'm worth putting some effort in to fix them.  Even more, I've cut Ruby on Rails a lot of slack, because the bugs and the awkwardness are the price that you pay to hang out with the beer-swilling hipsters that make out that community and roll with the rapid rate of development.  And, really, it is the best web framework I've dealt with, mainly because it provides the most comprehensive and extensible set of functionality of any framework, and it's got a solid community to back it up.

However, it's doing this all by constantly just barely working.  That's the price you pay: the development constantly pushes to the very edge of tolerance, and APIs you took for granted in the last release may fade away, and there's this constant concern about stability.

But, the argument ran, static typing really doesn't get you anything.  It's the unit tests that do it.  The testing will exercise the API and give you -- for all practical purposes, anyway -- the protection that static typing will.  So all this clinging to static typing is just old fogies who can't pry their insecurities away from their enterprisey languages long enough to see how people &lt;em&gt;really&lt;/em&gt; get productive.

And that argument isn't one I really buy.  But I hear it a lot.  And I hear people griping about how bad static typing is, for reasons that have zero applicability to any language whose type system postdates the Reagan administration.  And I try to mention things to engage in dialog, and it's really gotten nowhere.  But, y'know, hey, if the unit tests really do provide the same protection, then it's no big deal.

But then this went down.  If Ruby cannot even keep their standard library in check -- if they, as the leaders of the language, can't manage to keep themselves together, and keep something as common as &lt;em&gt;reading and writing XML&lt;/em&gt; working -- if they fall apart in ways that straightforward static type checking would solve, and if it burns a full day of my precious and limited time trying to figure it out, then I feel like all that tolerance and engaging in dialog just bit me in my ass.</description>
		<content:encoded><![CDATA[<p>@Zach</p>
<p>You&#8217;re welcome to tackle Ruby and it&#8217;s problems &#8212; for my part, I was mainly trying to vent (see above for more on that).  I&#8217;d encourage you to post your stuff on Ruby and Ruby&#8217;s core libraries: I&#8217;d be curious to see what you&#8217;ve bumped into.</p>
<p>Now that I&#8217;m a little calmer, let me add some more.  I may rework this and some other thoughts into a more coherent post in the near future &#8212; I haven&#8217;t decided.</p>
<p>Here&#8217;s the thing: open source libraries are one thing.  I&#8217;m used to those being of dubious quality, and I&#8217;m worth putting some effort in to fix them.  Even more, I&#8217;ve cut Ruby on Rails a lot of slack, because the bugs and the awkwardness are the price that you pay to hang out with the beer-swilling hipsters that make out that community and roll with the rapid rate of development.  And, really, it is the best web framework I&#8217;ve dealt with, mainly because it provides the most comprehensive and extensible set of functionality of any framework, and it&#8217;s got a solid community to back it up.</p>
<p>However, it&#8217;s doing this all by constantly just barely working.  That&#8217;s the price you pay: the development constantly pushes to the very edge of tolerance, and APIs you took for granted in the last release may fade away, and there&#8217;s this constant concern about stability.</p>
<p>But, the argument ran, static typing really doesn&#8217;t get you anything.  It&#8217;s the unit tests that do it.  The testing will exercise the API and give you &#8212; for all practical purposes, anyway &#8212; the protection that static typing will.  So all this clinging to static typing is just old fogies who can&#8217;t pry their insecurities away from their enterprisey languages long enough to see how people <em>really</em> get productive.</p>
<p>And that argument isn&#8217;t one I really buy.  But I hear it a lot.  And I hear people griping about how bad static typing is, for reasons that have zero applicability to any language whose type system postdates the Reagan administration.  And I try to mention things to engage in dialog, and it&#8217;s really gotten nowhere.  But, y&#8217;know, hey, if the unit tests really do provide the same protection, then it&#8217;s no big deal.</p>
<p>But then this went down.  If Ruby cannot even keep their standard library in check &#8212; if they, as the leaders of the language, can&#8217;t manage to keep themselves together, and keep something as common as <em>reading and writing XML</em> working &#8212; if they fall apart in ways that straightforward static type checking would solve, and if it burns a full day of my precious and limited time trying to figure it out, then I feel like all that tolerance and engaging in dialog just bit me in my ass.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Robert Fischer</title>
		<link>http://enfranchisedmind.com/blog/2008/03/24/rexml-dynamic-typing-lose/#comment-32889</link>
		<dc:creator>Robert Fischer</dc:creator>
		<pubDate>Tue, 25 Mar 2008 20:39:07 +0000</pubDate>
		<guid isPermaLink="false">http://enfranchisedmind.com/blog/2008/03/24/my-frustrations-with-rexml-rubys-standard-library-for-readingwriting-xml-or-rubys-problem-is-its-type-system-and-dont-try-to-tell-me-otherwise/#comment-32889</guid>
		<description>Check the Reddit comments for other links to complaints and pithy comments about REXML.  It's apparently just a complete mess.</description>
		<content:encoded><![CDATA[<p>Check the Reddit comments for other links to complaints and pithy comments about REXML.  It&#8217;s apparently just a complete mess.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Robert Fischer</title>
		<link>http://enfranchisedmind.com/blog/2008/03/24/rexml-dynamic-typing-lose/#comment-32888</link>
		<dc:creator>Robert Fischer</dc:creator>
		<pubDate>Tue, 25 Mar 2008 20:37:30 +0000</pubDate>
		<guid isPermaLink="false">http://enfranchisedmind.com/blog/2008/03/24/my-frustrations-with-rexml-rubys-standard-library-for-readingwriting-xml-or-rubys-problem-is-its-type-system-and-dont-try-to-tell-me-otherwise/#comment-32888</guid>
		<description>Oh, and let's not forget that this comes hot on the heels of &lt;a href="http://enfranchisedmind.com/blog/2008/03/22/actionviewtemplateerror-superclass-mismatch-for-class-cookie/" rel="nofollow"&gt;another problem I had&lt;/a&gt; with name collisions at runtime.</description>
		<content:encoded><![CDATA[<p>Oh, and let&#8217;s not forget that this comes hot on the heels of <a href="http://enfranchisedmind.com/blog/2008/03/22/actionviewtemplateerror-superclass-mismatch-for-class-cookie/" rel="nofollow">another problem I had</a> with name collisions at runtime.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Zach</title>
		<link>http://enfranchisedmind.com/blog/2008/03/24/rexml-dynamic-typing-lose/#comment-32887</link>
		<dc:creator>Zach</dc:creator>
		<pubDate>Tue, 25 Mar 2008 16:26:34 +0000</pubDate>
		<guid isPermaLink="false">http://enfranchisedmind.com/blog/2008/03/24/my-frustrations-with-rexml-rubys-standard-library-for-readingwriting-xml-or-rubys-problem-is-its-type-system-and-dont-try-to-tell-me-otherwise/#comment-32887</guid>
		<description>What interests me here is how you manage to go from "there is a major bug in this core library" to "an entire model for programming is wrong" in a single sentence.  "THAT STUPID BUG IN THEIR CORE LIBRARY WOULD HAVE BEEN FiXED WITH STATIC TYPING." doesn't, to me, seem to be a useful enough point to warrant the conclusion you have drawn.  You could write that sentence a hundred different ways - "the stupid bug could have been avoided if they used a hash instead of a set," "they completely would have avoided readability problems if they had used black instead of blue!" - that doesn't immediately nullify the value of the two choices.  No one would claim that because a set or the color blue where inherently poor simply because they were not proper solutions to specific problems.

This frustrates me because I have run into many things in Ruby and Ruby's core libraries that make me wary of considering it a "mature" language or one I'd really be interested in designing production systems in, and you were well on your way to aptly pointing that out, until you chose to use your rhetorical sword to slay a dragon far out of range.</description>
		<content:encoded><![CDATA[<p>What interests me here is how you manage to go from &#8220;there is a major bug in this core library&#8221; to &#8220;an entire model for programming is wrong&#8221; in a single sentence.  &#8220;THAT STUPID BUG IN THEIR CORE LIBRARY WOULD HAVE BEEN FiXED WITH STATIC TYPING.&#8221; doesn&#8217;t, to me, seem to be a useful enough point to warrant the conclusion you have drawn.  You could write that sentence a hundred different ways - &#8220;the stupid bug could have been avoided if they used a hash instead of a set,&#8221; &#8220;they completely would have avoided readability problems if they had used black instead of blue!&#8221; - that doesn&#8217;t immediately nullify the value of the two choices.  No one would claim that because a set or the color blue where inherently poor simply because they were not proper solutions to specific problems.</p>
<p>This frustrates me because I have run into many things in Ruby and Ruby&#8217;s core libraries that make me wary of considering it a &#8220;mature&#8221; language or one I&#8217;d really be interested in designing production systems in, and you were well on your way to aptly pointing that out, until you chose to use your rhetorical sword to slay a dragon far out of range.</p>
]]></content:encoded>
	</item>
</channel>
</rss>
