<?xml version="1.0" encoding="UTF-8"?>
<!-- generator="wordpress/2.0.4" -->
<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/"
	>

<channel>
	<title>Hexten</title>
	<link>http://www.hexten.net</link>
	<description>Better than Slashdot</description>
	<pubDate>Wed, 16 Apr 2008 22:09:00 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.0.4</generator>
	<language>en</language>
			<item>
		<title>Don&#8217;t follow me&#8230;</title>
		<link>http://www.hexten.net/2008/04/16/dont-follow-me</link>
		<comments>http://www.hexten.net/2008/04/16/dont-follow-me#comments</comments>
		<pubDate>Wed, 16 Apr 2008 22:08:59 +0000</pubDate>
		<dc:creator>Andy</dc:creator>
		
	<category>Culture</category>
		<guid isPermaLink="false">http://www.hexten.net/2008/04/16/dont-follow-me</guid>
		<description><![CDATA[&#8230;I&#8217;m just following a meme.
$ history &#124; awk {'print $2'} &#124; sort &#124; uniq -c &#124; sort -k1 -rn &#124; head
  69 svn
  56 cd
  52 ls
  49 make
  26 perl
  19 vi
  15 tack
  15 cpan
  11 sudo
  11 prove


And actually, I&#8217;d have to [...]]]></description>
			<content:encoded><![CDATA[<p>&#8230;I&#8217;m just following a <a href="https://www.socialtext.net/open/index.cgi?lukec_2008_04_16_commands">meme</a>.</p>
<pre>$ history | awk {'print $2'} | sort | uniq -c | sort -k1 -rn | head
  69 svn
  56 cd
  52 ls
  49 make
  26 perl
  19 vi
  15 tack
  15 cpan
  11 sudo
  11 prove
</pre>
</p>
<p>And actually, I&#8217;d have to merge the histories from eight different Terminal.app windows to get a full picture&#8230;</p>
]]></content:encoded>
			<wfw:commentRSS>http://www.hexten.net/2008/04/16/dont-follow-me/feed/</wfw:commentRSS>
		</item>
		<item>
		<title>Charging for GPSBabel?</title>
		<link>http://www.hexten.net/2008/01/28/charging-for-gpsbabel</link>
		<comments>http://www.hexten.net/2008/01/28/charging-for-gpsbabel#comments</comments>
		<pubDate>Mon, 28 Jan 2008 20:24:49 +0000</pubDate>
		<dc:creator>Andy</dc:creator>
		
	<category>Software</category>
		<guid isPermaLink="false">http://www.hexten.net/2008/01/28/charging-for-gpsbabel</guid>
		<description><![CDATA[It seems that someone is and I don&#8217;t think it&#8217;s anyone involved with the project. That page certainly doesn&#8217;t look like spam or a scam me.
]]></description>
			<content:encoded><![CDATA[<p>It seems that <a href="http://wiki.gpsbabel.org/index.php/GPSBabel:Community_Portal">someone is</a> and I don&#8217;t think it&#8217;s anyone involved with the project. That page certainly doesn&#8217;t look like spam or a scam me.</p>
]]></content:encoded>
			<wfw:commentRSS>http://www.hexten.net/2008/01/28/charging-for-gpsbabel/feed/</wfw:commentRSS>
		</item>
		<item>
		<title>Cargo-Culted Optimisations</title>
		<link>http://www.hexten.net/2008/01/04/cargo-culted-optimisations</link>
		<comments>http://www.hexten.net/2008/01/04/cargo-culted-optimisations#comments</comments>
		<pubDate>Fri, 04 Jan 2008 12:44:57 +0000</pubDate>
		<dc:creator>Andy</dc:creator>
		
	<category>Programming</category>
		<guid isPermaLink="false">http://www.hexten.net/2008/01/04/cargo-culted-optimisations</guid>
		<description><![CDATA[In Understanding User and Kernel Mode Jeff Atwood says that code that uses exceptions is slow because &#8220;exceptions imply kernel mode transitions&#8221;. From the ongoing debate in the comments it seems that this may be true for some languages running under .NET that use Window&#8217;s Structured Exception Handling but it&#8217;s misleading to state that it&#8217;s [...]]]></description>
			<content:encoded><![CDATA[<p>In <a href="http://www.codinghorror.com/blog/archives/001029.html">Understanding User and Kernel Mode</a> Jeff Atwood says that code that uses exceptions is slow because &#8220;exceptions imply kernel mode transitions&#8221;. From the ongoing debate in the comments it seems that this may be true for some languages running under .NET that use Window&#8217;s Structured Exception Handling but it&#8217;s misleading to state that it&#8217;s true in the general case.</p>
<p>There are all sorts of reason why exceptions <i>might</i> be slow - they&#8217;re just more code the CPU has to execute after all. I worry though about general claims that <i>any</i> idiom is slow. Search a selection of programming blogs for &#8220;X is slow&#8221; and I guarantee that in the comments someone will say &#8220;I never knew that. I&#8217;m going to avoid X in future&#8221;. I imagine that after a couple of years of cargo-culting these folks are working with a miniscule subset of their chosen language, circumscribed by all those &#8220;slow&#8221; things that they&#8217;re religiously avoiding.</p>
<p>Measure instead of guessing. Look for algorithmic complexity: if you can go from O(N^2) or worse to O(N log N), O(N) or O(1) you might gain far more than a few percent. But then again you might not - so <b>measure</b>.</p>
]]></content:encoded>
			<wfw:commentRSS>http://www.hexten.net/2008/01/04/cargo-culted-optimisations/feed/</wfw:commentRSS>
		</item>
		<item>
		<title>Steve Furber CBE</title>
		<link>http://www.hexten.net/2007/12/29/steve-furber-cbe</link>
		<comments>http://www.hexten.net/2007/12/29/steve-furber-cbe#comments</comments>
		<pubDate>Sat, 29 Dec 2007 01:26:10 +0000</pubDate>
		<dc:creator>Andy</dc:creator>
		
	<category>Acorn</category>
		<guid isPermaLink="false">http://www.hexten.net/2007/12/29/steve-furber-cbe</guid>
		<description><![CDATA[ARM designer Steve Furber has been given a CBE. I believe the appropriate response is &#8220;w00t!&#8221;.
]]></description>
			<content:encoded><![CDATA[<p>ARM designer Steve Furber has been <a href="http://news.bbc.co.uk/1/hi/technology/7162935.stm">given a CBE</a>. I believe the appropriate response is &#8220;w00t!&#8221;.</p>
]]></content:encoded>
			<wfw:commentRSS>http://www.hexten.net/2007/12/29/steve-furber-cbe/feed/</wfw:commentRSS>
		</item>
		<item>
		<title>Stop worrying and learn to love Perl 6</title>
		<link>http://www.hexten.net/2007/12/28/stop-worrying-and-learn-to-love-perl-6</link>
		<comments>http://www.hexten.net/2007/12/28/stop-worrying-and-learn-to-love-perl-6#comments</comments>
		<pubDate>Fri, 28 Dec 2007 14:03:51 +0000</pubDate>
		<dc:creator>Andy</dc:creator>
		
	<category>Perl</category>
		<guid isPermaLink="false">http://www.hexten.net/2007/12/28/stop-worrying-and-learn-to-love-perl-6</guid>
		<description><![CDATA[Perl needs Perl 6 and the wider Perl community needs to understand why.
When I first got into computers I worried, briefly, that everything I learnt would inevitably be outmoded. I don&#8217;t want to scare anyone unduly but there will come a time when Perl 5 is outdated. Slow, ugly, verbose, arbitrary: it will become all [...]]]></description>
			<content:encoded><![CDATA[<p>Perl needs Perl 6 and the wider Perl community needs to understand why.</p>
<p>When I first got into computers I worried, briefly, that everything I learnt would inevitably be outmoded. I don&#8217;t want to scare anyone unduly but there will come a time when Perl 5 is outdated. Slow, ugly, verbose, arbitrary: it will become all of those and worse.</p>
<p>That is the fate of all languages. At least I hope that&#8217;s the fate of all current languages. These days if I <i>really</i> want to scare myself I need only imagine that the current state of the art is is a good as it ever gets. If that doesn&#8217;t worry you try to imagine a parallel universe in which our understanding of computers hit a glass ceiling any time in the past fifty years. Imagine COBOL as pinnacle of language design, 64k as a generous helping of memory, punched cards baby! Happy days, certainly, but I&#8217;m glad we were able to leave them behind.</p>
<p>As more of the world depends on computers there&#8217;s a growing force that slows change. The enemy of evolution in language design is the installed user base. In the case of a successful language like Perl millions of people may now be affected by an incompatible language change. The Perl 5 Porters must always balance the needs of the future with those of the past and that places an upper limit of the rate at which Perl 5 can mutate.</p>
<p>What to do? How do you move forward if you&#8217;re constantly looking over your shoulder? You take advantage of a fortunate property of software: that it is possible to simultaneously care for and conservatively develop the current active branch of a language <i>and</i> forge into the future with a clean new version. Two siblings: the elder healthy, but constrained by responsibilities, the younger relatively free and able to learn from the elder&#8217;s mistakes without repeating them. Perl 5 and Perl 6.</p>
<p><i>But Perl 6 is taking too long to mature. More than seven years in embarrassing, right?</i> Not really. Perl wasn&#8217;t really the Perl we know and love until Perl 5. For the first ten or so years Perl was a lesser language. Sure, the step from Perl 5 to Perl 6 will be bigger than the step from 4 to 5. The jump from 4 to 5 was in its time the biggest seismic shift the Perl world had seen. There&#8217;s a trend there; the steps are getting bigger all the time. There was no significant dynamic language movement when Perl 1 entered the world. Perl 6 is gestating in a rather different environment.</p>
<p>Perl 5 is not yet decrepit. Rumours of its death greatly exaggerated (or imagined). Perl 6 doesn&#8217;t yet need to come of age so it makes sense for it to continue to mature in a relatively protected environment. As long as Perl 5 remains viable it&#8217;s sensible to give Perl 6 the space it needs to grow because when its time comes it&#8217;s going to face stiff competition from its elder and from Ruby, Python and others.</p>
<p>Rather than impatient foot tapping Perl 6 needs the help and nurture of the Perl community. The Perl 6 development process is transparent and open. Anyone with something useful to contribute will be welcomed. If you self-identify as a Perl person then Perl 6 is in part <i>your</i> responsibility. And if you can&#8217;t usefully contribute then, please, quietly reflect on the debt of gratitude you owe to those who do. They&#8217;re working to guarantee your future.</p>
<p>Perl 6 is not a liability. There&#8217;s no need to be defensive about it. Paul Cory would like to <a href="http://perlbuzz.com/2007/12/why-perl-6-needs-to-be-deemphasized-and-renamed.html">rebrand Perl 6 into the shadows</a>. That&#8217;s the kind of Stalinist revisionism favoured by corporations that realise that their &#8220;next big thing&#8221; has become an embarrassing albatross. It&#8217;s a response to Perl 6 that the circumstances do not require.</p>
<p>Here are his reasons:</p>
<blockquote><p>1) It emphasises the &#8220;inadequacies&#8221; of Perl 5.</p></blockquote>
<p>All languages have inadequacies, imperfections, miss-features, cruft. Perl 5 is no different. Fortunately, instead of brushing them under the rug, the Perl 6 team is actively seeking to right those wrongs. A question: would you rather use a language that&#8217;s maintained by people who are a) in denial about it&#8217;s inadequacies or b) actively developing a new language based on recognised shortcomings? I hope that&#8217;s a rhetorical question.</p>
<blockquote><p>2) It makes the development community look unorganized, at best. People comparing at the development pace of Python, Ruby and PHP to Perl 6 are likely to come to harsher conclusions about the community&#8217;s focus, viability and competence, based on Perl 6&#8217;s seven-year, and counting, gestation period.</p></blockquote>
<p>Those hypothetical people are wrong and I don&#8217;t want to be part of a community that panders to their views. The Perl 5 Porters are doing a great job of continuously improving Perl 5 within the constraints that popularity brings. The Perl 6 team are laying the foundations for the next generation of Perl. Perl 5 and Perl 6 have a mutually beneficial relationship: features, tools and ideas are traded freely between the two groups. It&#8217;s healthy, responsible and creative.</p>
<p>Python and Ruby have, to their credit, somewhat similar splits between far sighted strategic development and tactical improvements to the current language generation. PHP is a bizarre bazaar that does not provide a model other language communities should emulate.</p>
<blockquote><p>3) It creates uncertainty: what happens to Perl 5 when Perl 6 finally drops? How much new stuff will I have to learn? How will my existing code work, or not, if I upgrade? Why should I invest time in Perl 5 if Perl 6 is just around the corner, and will be far superior?</p></blockquote>
<p>Learning to deal with an uncertain future comes with the territory of computing. Continual improvement necessarily means that things will change.</p>
<p>Perl 6 is visible proof that we have vision. Perl 5 is visible proof that we can maintain an extremely high quality programming language. These facts combined should give observers confidence about the health of Perl. As a community we certainly need to work to allay fears and calibrate expectations. But let&#8217;s not start by hiding one of our greatest assets, ok?</p>
<blockquote><p>4) It creates frustration inside the community. Perl 6 has been &#8220;coming soon&#8221; for 7.5 years now. It&#8217;s hard to remain excited about something that long with no payoff.</p></blockquote>
<p>Welcome to the world of free software. Instead of waiting for Godot we can go and meet him half way; help him carry his load. Let&#8217;s be explicit here: if Perl is part of your life or career and you&#8217;re tired of waiting for Perl 6 <b>help make it happen.</b></p>
<p>You don&#8217;t have to contribute code to help. Learn more about Perl 6 so you can explain it to others. If you find it hard to learn make it easier for others: write an article that explains some of the important points, give talks, learn so you can teach.</p>
<blockquote><p>5) The story is confusing: Pugs? Haskell? Parrot? Two development tracks? I thought this was about Perl? Yes, I have an idea of what those things are, but most folks outside the community (and a fair few inside, I&#8217;d wager) don&#8217;t know, don&#8217;t care, and shouldn&#8217;t have to.</p></blockquote>
<p>If the story is confusing we need to tell it more clearly. That doesn&#8217;t justify changing the underlying technical narrative.</p>
<p>In a commodified world criticism and spending discretion are the consumer&#8217;s only levers. We crave influence over the things we consume. In the absence of direct influence over a product&#8217;s design we use criticism as a proxy for control. We hope that they&#8217;ll make the next version better as a result.</p>
<p>Criticism is still valid in the free software world but it&#8217;s importance is de-emphasised. You can criticise or you can help. In fact you can criticise <i>and</i> help.</p>
<p>It&#8217;s important that Perl 6 is not immune from scrutiny but if you&#8217;re frustrated that it&#8217;s taking a while then volunteer. The Perl 6 team is small at the moment; small enough that a few well placed contributions can make a real difference. Let&#8217;s not default to bitching about it when we have the opportunity of contributing to its success.</p>
<p>Why not make 2008 the year you do something for Perl 6?</p>
]]></content:encoded>
			<wfw:commentRSS>http://www.hexten.net/2007/12/28/stop-worrying-and-learn-to-love-perl-6/feed/</wfw:commentRSS>
		</item>
		<item>
		<title>Perl 5.10.0 is out</title>
		<link>http://www.hexten.net/2007/12/18/perl-5100-is-out</link>
		<comments>http://www.hexten.net/2007/12/18/perl-5100-is-out#comments</comments>
		<pubDate>Tue, 18 Dec 2007 21:07:42 +0000</pubDate>
		<dc:creator>Andy</dc:creator>
		
	<category>Perl</category>
		<guid isPermaLink="false">http://www.hexten.net/2007/12/18/perl-5100-is-out</guid>
		<description><![CDATA[Congratulations to Rafael and all the Perl 5 Porters on releasing Perl 5.10.0 on Perl&#8217;s 20th birthday. There&#8217;s a torrent here for early adopters.
]]></description>
			<content:encoded><![CDATA[<p>Congratulations to Rafael and all the Perl 5 Porters on releasing Perl 5.10.0 on Perl&#8217;s 20th birthday. There&#8217;s a torrent <a href="http://torrents.thepiratebay.org/3938859/perl-5.10.0.tar.gz.3938859.TPB.torrent">here</a> for early adopters.</p>
]]></content:encoded>
			<wfw:commentRSS>http://www.hexten.net/2007/12/18/perl-5100-is-out/feed/</wfw:commentRSS>
		</item>
		<item>
		<title>Leopard, Proxies, PubSubAgent crash</title>
		<link>http://www.hexten.net/2007/12/17/leopard-proxies-pubsubagent-crash</link>
		<comments>http://www.hexten.net/2007/12/17/leopard-proxies-pubsubagent-crash#comments</comments>
		<pubDate>Mon, 17 Dec 2007 01:57:26 +0000</pubDate>
		<dc:creator>Andy</dc:creator>
		
	<category>Apple</category>
	<category>Perl</category>
		<guid isPermaLink="false">http://www.hexten.net/2007/12/17/leopard-proxies-pubsubagent-crash</guid>
		<description><![CDATA[I&#8217;ve just released HTTP::Proxy::GreaseMonkey. It&#8217;s an HTTP proxy that allows (some) GreaseMonkey scripts to be used in any browser - not just FireFox. I wrote it so I could use my GreaseMonkey search.cpan.org enhancer with Safari.
After installing the proxy and telling Safari (and everything else on the machine) to use it I started to experience [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve just released <a href="http://search.cpan.org/dist/HTTP-Proxy-GreaseMonkey/">HTTP::Proxy::GreaseMonkey</a>. It&#8217;s an HTTP proxy that allows (some) GreaseMonkey scripts to be used in any browser - not just FireFox. I wrote it so I could use my GreaseMonkey <a href="http://use.perl.org/article.pl?sid=07/12/15/1931244">search.cpan.org enhancer</a> with Safari.</p>
<p>After installing the proxy and telling Safari (and everything else on the machine) to use it I started to experience <code>PubSubAgent</code> crashes every twenty minutes or so. It turns out that <code>PubSubAgent</code> is responsible for .mac synchronisation - and it doesn&#8217;t like proxies. You can read more about the problem <a href="http://discussions.apple.com/thread.jspa?messageID=6056954">here</a>.</p>
<p>The solution suggested on that thread - to add .mac.com to the proxy bypass list - is heading in the right direction but isn&#8217;t quite correct. Instead you must add <code>*.mac.com</code> to the proxy bypass.</p>
<p style="text-align: center"><img src="http://www.hexten.net/wp-content/uploads/2007/12//proxy.png" border="0" height="251" width="562" alt="Proxy Settings" /></p>
]]></content:encoded>
			<wfw:commentRSS>http://www.hexten.net/2007/12/17/leopard-proxies-pubsubagent-crash/feed/</wfw:commentRSS>
		</item>
		<item>
		<title>Awards for terror attack bravery</title>
		<link>http://www.hexten.net/2007/12/10/awards-for-terror-attack-bravery</link>
		<comments>http://www.hexten.net/2007/12/10/awards-for-terror-attack-bravery#comments</comments>
		<pubDate>Mon, 10 Dec 2007 23:45:18 +0000</pubDate>
		<dc:creator>Andy</dc:creator>
		
	<category>Humour</category>
		<guid isPermaLink="false">http://www.hexten.net/2007/12/10/awards-for-terror-attack-bravery</guid>
		<description><![CDATA[It can&#8217;t just be me who, on reading this headline, wonders why awards are being given for terror and why those awards are attacking bravery.
]]></description>
			<content:encoded><![CDATA[<p>It can&#8217;t just be me who, on reading <a href="http://news.bbc.co.uk/1/hi/scotland/glasgow_and_west/7136842.stm">this headline</a>, wonders why awards are being given for terror and why those awards are attacking bravery.</p>
]]></content:encoded>
			<wfw:commentRSS>http://www.hexten.net/2007/12/10/awards-for-terror-attack-bravery/feed/</wfw:commentRSS>
		</item>
		<item>
		<title>Simpsons Me</title>
		<link>http://www.hexten.net/2007/06/27/simpsons-me</link>
		<comments>http://www.hexten.net/2007/06/27/simpsons-me#comments</comments>
		<pubDate>Wed, 27 Jun 2007 19:39:38 +0000</pubDate>
		<dc:creator>Andy</dc:creator>
		
	<category>Humour</category>
		<guid isPermaLink="false">http://www.hexten.net/2007/06/27/simpsons-me</guid>
		<description><![CDATA[I wonder if I could use it as my passport photo? It&#8217;s not exactly a striking likeness.

Get yours here.
]]></description>
			<content:encoded><![CDATA[<p>I wonder if I could use it as my passport photo? It&#8217;s not exactly a striking likeness.</p>
<p><img src="http://www.hexten.net/wp-content/uploads/2007/06/simpsons-me.png" border="0" height="600" width="249" alt="My Simpsons Avatar" align="center" /></p>
<p>Get yours <a href="http://www.simpsonsmovie.com/">here</a>.</p>
]]></content:encoded>
			<wfw:commentRSS>http://www.hexten.net/2007/06/27/simpsons-me/feed/</wfw:commentRSS>
		</item>
		<item>
		<title>CPAN v DTD (spoiler: CPAN loses)</title>
		<link>http://www.hexten.net/2007/06/01/cpan-v-dtd-spoiler-cpan-loses</link>
		<comments>http://www.hexten.net/2007/06/01/cpan-v-dtd-spoiler-cpan-loses#comments</comments>
		<pubDate>Fri, 01 Jun 2007 16:41:57 +0000</pubDate>
		<dc:creator>Andy</dc:creator>
		
	<category>Perl</category>
		<guid isPermaLink="false">http://www.hexten.net/2007/06/01/cpan-v-dtd-spoiler-cpan-loses</guid>
		<description><![CDATA[I need to parse a DTD. Specifically I need to parse this DTD:
http://www.w3.org/TR/html4/strict.dtd
It&#8217;s quite a well known one. Certainly there&#8217;ll be a module on CPAN that can parse it. Let&#8217;s have a look.
XML::DTD
Looks promising, comprehensive. Unfortunately it fails with an error which is eventually tracked to a misspelled method name. So much for test coverage. [...]]]></description>
			<content:encoded><![CDATA[<p>I need to parse a DTD. Specifically I need to parse this DTD:</p>
<p><a href="http://www.w3.org/TR/html4/strict.dtd">http://www.w3.org/TR/html4/strict.dtd</a></p>
<p>It&#8217;s quite a well known one. Certainly there&#8217;ll be a module on CPAN that can parse it. Let&#8217;s have a look.</p>
<p><b><a href="http://search.cpan.org/dist/XML-DTD">XML::DTD</a></b></p>
<p>Looks promising, comprehensive. Unfortunately it fails with an error which is eventually tracked to a misspelled method name. So much for test coverage. Fix that and it throws a bunch of warnings that cause a rapid loss of confidence. No matter, let&#8217;s try&#8230;</p>
<p><b><a href="http://search.cpan.org/dist/XML-DTDParser">XML::DTDParser</a></b></p>
<p>It&#8217;s a &#8220;quick and dirty DTD parser&#8221;. Hmm. &#8220;I&#8217;m too lazy to document<br />
the structure&#8221;. Nice.</p>
<blockquote><p>&#8220;Since version 1.6 this module supports my &#8220;extensions&#8221; to DTDs. If the DTD contains a comment in form&#8230;&#8221;</p></blockquote>
<p>Maybe I&#8217;ll come back to XML::DTDParser&#8230;</p>
<p><b><a href="http://search.cpan.org/dist/SGML-DTDParse">SGML::DTDParse</a></b></p>
<p>SGML? That&#8217;s got to be good, right? SGML is the daddy. Every fule no that. Unfortunately it doesn&#8217;t really seem to have much of a Perl interface. It&#8217;s all about translating DTDs to XML. I <i>might</i> be able to use that. I&#8217;m getting desperate.</p>
<p>I&#8217;ll take a quick look at the test suite for a confidence boost. Here&#8217;s one:</p>
<pre>
    # Before `make install' is performed this script should be
    # `make test'. After `make install' it should work as `perl

    #########################                                  

    # change 'tests => 1' to 'tests => last_test_to_print';    

    use Test::More tests => 1;
    BEGIN { use_ok('SGML::DTDParse') };                        

    #########################                                  

    # Insert your test code below, the Test::More module is use
    # its man page ( perldoc Test::More ) for help writing this
</pre>
<p>(I&#8217;ve cut the right hand side of the test off so it fits my stupid page layout. Don&#8217;t worry - you&#8217;re not missing anything good)</p>
<p>The other test is pretty similar. I&#8217;m not that confident now.</p>
<p><b><a href="http://search.cpan.org/dist/XML-ParseDTD">XML::ParseDTD</a></b></p>
<p>Running out of options. Let&#8217;s look at XML::ParseDTD. From the documentation it appears to rock. The test results say &#8220;2 PASS, 2 FAIL&#8221;. 50/50. So at least it&#8217;s <i>got</i> some tests, right? Damn right! Here they are in their entirety:</p>
<pre>
    #!/usr/bin/env perl -w

    use strict;
    use Test::Simple tests => 2;
    use XML::ParseDTD;

    my $dtd = new XML::ParseDTD('http://www.w3.org/TR/xhtml1/D
    ok( defined $dtd, 'new() returned something' );
    ok( $dtd->isa('XML::ParseDTD'), 'it's the right class' );
</pre>
<p>(Again I&#8217;ve cut the right hand side of the test off. Again you&#8217;re not missing anything good)</p>
<p>I&#8217;m momentarily impressed that it managed to score two failures with that. I&#8217;m about to find out how.</p>
<p>Never mind, the DTD URI in the test looks a lot like the DTD I need to parse. I&#8217;m getting close. I can feel it.</p>
<p>Unfortunately it has a dependency on Cache::SharedMemoryCache (why?) which in turn depends on IPC::ShareLite - which doesn&#8217;t install on my PowerBook. So now I need to fix / avoid IPC::ShareLite.</p>
<p>See kids: the great thing about CPAN is how much time it saves!</p>
]]></content:encoded>
			<wfw:commentRSS>http://www.hexten.net/2007/06/01/cpan-v-dtd-spoiler-cpan-loses/feed/</wfw:commentRSS>
		</item>
	</channel>
</rss>
