<?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>Perlblogs &#187; cpan</title>
	<atom:link href="http://perlblogs.com/category/cpan/feed/" rel="self" type="application/rss+xml" />
	<link>http://perlblogs.com</link>
	<description>Posts from selected Perl bloggers</description>
	<lastBuildDate>Mon, 06 Feb 2012 20:47:54 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
<atom:link rel="hub" href="http://pubsubhubbub.appspot.com"/><atom:link rel="hub" href="http://superfeedr.com/hubbub"/>		<item>
		<title>Perlbuzz news roundup for 2012-02-06</title>
		<link>http://feedproxy.google.com/~r/PerlBuzz/~3/jc9TYl3WoL4/perlbuzz-news-roundup-for-2012-02-06.html</link>
		<comments>http://feedproxy.google.com/~r/PerlBuzz/~3/jc9TYl3WoL4/perlbuzz-news-roundup-for-2012-02-06.html#comments</comments>
		<pubDate>Mon, 06 Feb 2012 20:47:15 +0000</pubDate>
		<dc:creator>Andy Lester</dc:creator>
				<category><![CDATA[Code craft]]></category>
		<category><![CDATA[cpan]]></category>
		<category><![CDATA[Perl 5]]></category>

		<guid isPermaLink="false">http://perlblogs.com/?guid=5f0f49061137bc0dafaa39cfd6fb6743</guid>
		<description><![CDATA[These links are collected from the Perlbuzz Twitter feed. If you have suggestions for news bits, please mail me at andy@perlbuzz.com. Which module should I use to define constants? (neilb.org) Why @chromatic_x runs tests on install, and I do,...]]></description>
			<content:encoded><![CDATA[
        <p>
These links are collected from the
<a href="http://twitter.com/perlbuzz">Perlbuzz Twitter feed</a>.
If you have suggestions for news bits, please mail me at
<a href="mailto:andy@perlbuzz.com">andy@perlbuzz.com</a>.
</p>

<ul>

<li>Which module should I use to define constants? (<a href="http://neilb.org/reviews/constants.html">neilb.org</a>)</li>
<li>Why <a href="http://twitter.com/chromatic_x">@chromatic_x</a> runs tests on install, and I do, too (<a href="http://www.modernperlbooks.com/mt/2012/01/why-i-run-tests-on-install.html">modernperlbooks.com</a>)</li>
<li>Peteris Krumins' series "Perl One-Liners Explained" is now an ebook (<a href="http://www.catonmat.net/blog/perl-book/">catonmat.net</a>)</li>
<li>Why I'm finally leaving GoDaddy (<a href="http://petdance.com/2012/02/why-im-finally-leaving-godaddy/">petdance.com</a>)</li>
<li>Don't assume that a true value is 1 (<a href="http://blogs.perl.org/users/michael_g_schwern/2012/02/true-true-2.html">blogs.perl.org</a>)</li>
</ul>

        
    <div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/PerlBuzz?a=jc9TYl3WoL4:kYnJuQQQ46I:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/PerlBuzz?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/PerlBuzz?a=jc9TYl3WoL4:kYnJuQQQ46I:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/PerlBuzz?i=jc9TYl3WoL4:kYnJuQQQ46I:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/PerlBuzz?a=jc9TYl3WoL4:kYnJuQQQ46I:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/PerlBuzz?i=jc9TYl3WoL4:kYnJuQQQ46I:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/PerlBuzz?a=jc9TYl3WoL4:kYnJuQQQ46I:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/PerlBuzz?d=qj6IDK7rITs" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/PerlBuzz/~4/jc9TYl3WoL4" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://perlblogs.com/2012/02/06/perlbuzz-news-roundup-for-2012-02-06/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Why I Run Tests on Install</title>
		<link>http://www.modernperlbooks.com/mt/2012/01/why-i-run-tests-on-install.html</link>
		<comments>http://www.modernperlbooks.com/mt/2012/01/why-i-run-tests-on-install.html#comments</comments>
		<pubDate>Tue, 31 Jan 2012 18:41:08 +0000</pubDate>
		<dc:creator>chromatic</dc:creator>
				<category><![CDATA[cpan]]></category>
		<category><![CDATA[modernperl]]></category>
		<category><![CDATA[perl]]></category>
		<category><![CDATA[testing]]></category>

		<guid isPermaLink="false">http://perlblogs.com/?guid=c3e05fd8a848a80ef83b5d3deb04579f</guid>
		<description><![CDATA[Jonathan Swartz makes a polemic statement: cpanm and perlbrew should not run tests by default. His points are reasonable, but his complaints are mostly about side effects and not the real problem. (I should clarify: the real problem I encounter.)...]]></description>
			<content:encoded><![CDATA[
        <p>Jonathan Swartz makes a polemic statement:</p>

<blockquote><em><a href="http://www.openswartz.com/2012/01/31/stop-running-tests-on-install/">cpanm and perlbrew should not run tests by default.</a></em></blockquote>

<p>His points are reasonable, but his complaints are mostly about side effects
and not the real problem. (I should clarify: the real problem <em>I</em>
encounter.)</p>

<p>If running tests slow down installs, speed up the tests. (Do you want to get the wrong answer faster? Easy: it's 42. No need for a quantum computer to do the calculation in constant time. This algorithm is O(0).)</p>

<p>If running tests exposes the fragility of the dependency chain, improve the dependency chain.</p>

<p>If dependency test failures prevent the installation of downstream
clients... this <em>is</em> a weakness of the CPAN toolchain. A well-written
test suite for a downstream client should reveal whether bugs or other sources
of test failures in a dependency affect the correctness of the client.</p>

<p>Note the assumptions in that sentence.</p>

<p>Anyone who's experienced the flash of enlightenment that comes from working
with well tested code and who's shared that new zeal with co-workers has
undoubtedly heard the hoary old truism that testing cannot prove the complete
absence of bugs. It's no less true for its age, though it's also true that
<em>good</em> testing only improves our confidence in the correctness and
efficacy of our code.</p>

<p>For me, a 95% certainty that my code works and continues to work for the
things to which I've tested it is more than sufficient. I focus on testing the
things I'm most likely to get wrong and the things which need to keep working
correctly. (I don't care much about pixel-perfect placement, but I do care that
a book's index uses the right escapes for its data and markup.)</p>

<p>Without tests running on the machines themselves in the environments
themselves where I expect my code to run, I don't have that confidence.</p>

<p>Put another way, I'm either not smart enough or far too lazy to want to
attempt to debug code without good tests. That's why I write tests, and that's
why I run them obsessively. That's good for me as a developer, and you're
getting the unvarnished developer perspective.</p>

<p><a href="http://www.modernperlbooks.com/mt/2011/10/in-search-of-minimum-viable-utility.html">I also care about the perspective of mere users</a>. (Without users, we're amusing ourselves, and I can think of better ways to amuse myself than by writing software no one uses.).</p>

<p>Yes, an excellent test suite can help a user help a developer debug a
problem. Many (most?) CPAN authors have had the wonderful experience of
receiving a bug report with a failing test case. Sometimes this even includes a
code patch.</p>

<p>Not all users are developers of that sort, nor should they be.</p>

<p>The CPAN ecosystem has improved greatly at automated testing and dependency tracking, but we can improve further. What if we could identify the severity of test failures? (We have TODO and SKIP, but they don't convey semantic meaning.) What if we could identify buggy or fragile tests? (My current favorite is <a href="https://rt.cpan.org/Ticket/Display.html?id=69540">XML::Feed tests versus DateTime::Format::Atom</a> because it catches me far too often, it doesn't affect the operation of the code, and it's a stupid fix that's lingered for a few months.) What if the failures are transient (Mechanize relying on your ISP <em>not</em> ruining DNS lookups for you) or specific to your environment (a test suite written without parallelism in mind).</p>

<p>As Jonathan rightly implies, how do you expect an end-user to understand or
care about or debug those things?</p>

<p>I'm still reluctant to agree that disabling tests for end-user installations
is the right solution. I <em>want</em> to know about failures in the wild wider
world. I want that confidence, but I can't bring myself to trade away that
confidence for the sake of a little more speed of installation.</p>

<p>Yet his point about lingering points of fragility in the ecosystem are true
and important, even if the proposed solution of skipping tests isn't right.
Fortunately, improving dependency management and tracking and use and testing
can help solve both issues: perhaps to the point where we can run only those
tests users most care about and identify and report material failures in
dependencies.</p>

        
    ]]></content:encoded>
			<wfw:commentRss>http://perlblogs.com/2012/01/31/why-i-run-tests-on-install/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Perlbuzz news roundup for 2012-01-30</title>
		<link>http://feedproxy.google.com/~r/PerlBuzz/~3/MCCZZFS-6YE/perlbuzz-news-roundup-for-2012-01-30.html</link>
		<comments>http://feedproxy.google.com/~r/PerlBuzz/~3/MCCZZFS-6YE/perlbuzz-news-roundup-for-2012-01-30.html#comments</comments>
		<pubDate>Mon, 30 Jan 2012 15:05:03 +0000</pubDate>
		<dc:creator>Andy Lester</dc:creator>
				<category><![CDATA[conferences]]></category>
		<category><![CDATA[cpan]]></category>
		<category><![CDATA[Perl 5]]></category>
		<category><![CDATA[Perl 6]]></category>

		<guid isPermaLink="false">http://perlblogs.com/?guid=6e16a77ffa11bcb9119664b24301c83f</guid>
		<description><![CDATA[These links are collected from the Perlbuzz Twitter feed. If you have suggestions for news bits, please mail me at andy@perlbuzz.com. Open source is improv, so say &#34;Yes and&#34; (petdance.com) craigslist donates $100,000 to the Perl Foundation (news.perlfoundation.org) Text::AsciiTeX...]]></description>
			<content:encoded><![CDATA[
        <p>
These links are collected from the
<a href="http://twitter.com/perlbuzz">Perlbuzz Twitter feed</a>.
If you have suggestions for news bits, please mail me at
<a href="mailto:andy@perlbuzz.com">andy@perlbuzz.com</a>.
</p>

<ul>

<li>Open source is improv, so say "Yes and" (<a href="http://petdance.com/2012/01/open-source-is-improv-so-say-yes-and/">petdance.com</a>)</li>
<li>craigslist donates $100,000 to the Perl Foundation (<a href="http://news.perlfoundation.org/2012/01/craigslist-charitable-fund-don.html">news.perlfoundation.org</a>)</li>
<li>Text::AsciiTeX renders TeX formulas as ASCII art (<a href="http://blogs.perl.org/users/joel_berger/2012/01/announcing-textasciitex.html">blogs.perl.org</a>)</li>
<li>The most important pig in the office (with nod to <a href="http://twitter.com/chipsalz">@chipsalz</a>, too) (<a href="http://petdance.com/2012/01/the-most-important-stuffed-pig-in-the-company/">petdance.com</a>)</li>
<li>An hour-long video of Damian Conway talking Perl and physics (<a href="http://blip.tv/open-source-developers-conference/temporally-quaquaversal-virtual-nanomachine-programming-in-multiple-topologically-4466153">blip.tv</a>)</li>
<li>Speed up Perlbrew with parallel tests (<a href="http://www.modernperlbooks.com/mt/2012/01/speed-up-perlbrew-with-test-parallelism.html">modernperlbooks.com</a>)</li>
<li>Visualizing the Perl 5 support policy (<a href="http://www.dagolden.com/index.php/1605/visualizing-the-perl-5-support-policy/">dagolden.com</a>)</li>
<li>MooseX::Role::Loggable adds logging goodness to your objects (<a href="http://blogs.perl.org/users/sawyer_x/2012/01/i-love-moosexroleloggable.html">blogs.perl.org</a>)</li>
<li>Rakudo Star 2012.01 released (<a href="http://rakudo.org/2012/01/28/rakudo-star-2012-01-released/">rakudo.org</a>)</li>
<li>What's next in Rakudo (<a href="http://6guts.wordpress.com/2012/01/29/this-months-rakudo-star-release-and-whats-coming-next/">6guts.wordpress.com</a>)</li>
<li>I'll be presenting "29 ways to get started in open source today" at YAPC:NA (<a href="http://act.yapcna.org/2012/talk/31">act.yapcna.org</a>)</li>
<li>DC-Baltimore Perl Workshop is April 14th. $25 for two tracks of talks. (<a href="http://dcbpw.org/dcbpw2012/">dcbpw.org</a>)</li>
</ul>

        

    <div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/PerlBuzz?a=MCCZZFS-6YE:fAE2enYJ1pA:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/PerlBuzz?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/PerlBuzz?a=MCCZZFS-6YE:fAE2enYJ1pA:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/PerlBuzz?i=MCCZZFS-6YE:fAE2enYJ1pA:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/PerlBuzz?a=MCCZZFS-6YE:fAE2enYJ1pA:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/PerlBuzz?i=MCCZZFS-6YE:fAE2enYJ1pA:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/PerlBuzz?a=MCCZZFS-6YE:fAE2enYJ1pA:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/PerlBuzz?d=qj6IDK7rITs" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/PerlBuzz/~4/MCCZZFS-6YE" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://perlblogs.com/2012/01/30/perlbuzz-news-roundup-for-2012-01-30/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Perlbuzz news roundup for 2012-01-23</title>
		<link>http://feedproxy.google.com/~r/PerlBuzz/~3/-6CMAb4n1sg/perlbuzz-news-roundup-for-2012-01-23.html</link>
		<comments>http://feedproxy.google.com/~r/PerlBuzz/~3/-6CMAb4n1sg/perlbuzz-news-roundup-for-2012-01-23.html#comments</comments>
		<pubDate>Mon, 23 Jan 2012 17:25:41 +0000</pubDate>
		<dc:creator>Andy Lester</dc:creator>
				<category><![CDATA[cpan]]></category>
		<category><![CDATA[Perl 5]]></category>

		<guid isPermaLink="false">http://perlblogs.com/?guid=55d190f122d3388a59ca3cd11107ea41</guid>
		<description><![CDATA[These links are collected from the Perlbuzz Twitter feed. If you have suggestions for news bits, please mail me at andy@perlbuzz.com. Perl QA Hackathon last call for participation (nntp.perl.org) RJBS gives the history of Dist::Zilla (perlmonks.org) What to avoid...]]></description>
			<content:encoded><![CDATA[
        <p>
These links are collected from the
<a href="http://twitter.com/perlbuzz">Perlbuzz Twitter feed</a>.
If you have suggestions for news bits, please mail me at
<a href="mailto:andy@perlbuzz.com">andy@perlbuzz.com</a>.
</p>

<ul>

<li>Perl QA Hackathon last call for participation (<a href="http://www.nntp.perl.org/group/perl.qa/2012/01/msg13091.html">nntp.perl.org</a>)</li>
<li>RJBS gives the history of Dist::Zilla (<a href="http://perlmonks.org/?node_id=949081">perlmonks.org</a>)</li>
<li>What to avoid in BEGIN blocks (<a href="http://blogs.perl.org/users/rurban/2012/01/what-to-avoid-in-begin-blocks.html">blogs.perl.org</a>)</li>
<li>Visualizing the improved Perl 5 release cycles (<a href="http://www.dagolden.com/wp-content/uploads/2012/01/perl5-release-timeline.png">dagolden.com</a>)</li>
<li>Perl tools for working with PostgreSQL logs (<a href="http://www.depesz.com/index.php/2012/01/23/some-new-tools-for-postgresql-or-around-postgresql/">depesz.com</a>)</li>
</ul>
        
    <div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/PerlBuzz?a=-6CMAb4n1sg:G6U41bF-Ddg:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/PerlBuzz?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/PerlBuzz?a=-6CMAb4n1sg:G6U41bF-Ddg:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/PerlBuzz?i=-6CMAb4n1sg:G6U41bF-Ddg:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/PerlBuzz?a=-6CMAb4n1sg:G6U41bF-Ddg:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/PerlBuzz?i=-6CMAb4n1sg:G6U41bF-Ddg:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/PerlBuzz?a=-6CMAb4n1sg:G6U41bF-Ddg:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/PerlBuzz?d=qj6IDK7rITs" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/PerlBuzz/~4/-6CMAb4n1sg" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://perlblogs.com/2012/01/23/perlbuzz-news-roundup-for-2012-01-23/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>A Little Bit is A Lot Better</title>
		<link>http://www.modernperlbooks.com/mt/2012/01/a-little-bit-is-a-lot-better.html</link>
		<comments>http://www.modernperlbooks.com/mt/2012/01/a-little-bit-is-a-lot-better.html#comments</comments>
		<pubDate>Mon, 09 Jan 2012 19:48:51 +0000</pubDate>
		<dc:creator>chromatic</dc:creator>
				<category><![CDATA[cpan]]></category>
		<category><![CDATA[modernperl]]></category>
		<category><![CDATA[perl]]></category>

		<guid isPermaLink="false">http://perlblogs.com/?guid=4df8a55681ff0ae28421e912d885fdee</guid>
		<description><![CDATA[Buddy Burden explanation of taking over maintenance of CPAN distributions is important. It's empowering. If you've ever thought &#34;I should contribute something to Perl&#34;, start there. You can do it. Sure, it's easy for me to say that. I've written...]]></description>
			<content:encoded><![CDATA[
        <p><a href="http://blogs.perl.org/mt/mt-cp.fcgi?__mode=view&id=1580">Buddy Burden</a> explanation of <a href="http://blogs.perl.org/users/buddy_burden/2012/01/stepping-up.html">taking over maintenance of CPAN distributions</a> is important. It's empowering. If you've ever thought "I should contribute something to Perl", start there.</p>

<p>You can do it.</p>

<p>Sure, it's easy for <em>me</em> to say that. I've written a few things about
Perl a few people have read. I have a few patches in a few projects and a
couple of modules on the CPAN myself. (You're reading this, aren't you? So I
have at least one reader. Thank you for your time!)</p>

<p>Even with all that in mind, two questions still come up far too often, and I think they prevent or delay us from providing code and documentation for other people to use freely:</p>

<ul>

<li>Does anyone care?</li>

<li>Is it good enough (yet)?</li>

</ul>

<p>You can see this attitude in the recurring debate over the responsibilities of authors. While some people say it's irresponsible or childish or unprofessional to upload code without full test coverage or complete documentation or an iron-clad promise to respond to every bug within 24 hours with a fix, an apology, a new release, and a sandwich (and yes, I exaggerate for effect), we're doing each other a disservice setting these demands on ourselves and each other.</p>

<p><em>Yes</em>, we should do our best.</p>

<p>... but <em>yes</em>, we can start from something small and incomplete and
refine it in smaller steps. It doesn't have to pass every test on every
platform known to man if you can get feedback on where it fails and release a
new version tomorrow. It doesn't have to have every feature you plan to add, if
it does something useful that other people might want to use today. It doesn't
have to have every option documented if it's usable right now.</p>

<p>I'm not suggesting that we allow ourselves to be irresponsible with what we
share, but I am suggesting that we can allow ourselves the freedom to share a
little earlier and a little more often. We have the ability to upload new code
every day (every hour!) if we want.</p>

<p>So what if it's not perfect? Even if you waited until you thought you'd achieved perfect, you probably would miss, even by a little bit.</p>

<p>Start small. Do your research&mdash;work to your best quality&mdash;but let yourself hit smaller goals and make things a little bit better a little more often. Share earlier. This is a lot better for everyone.</p>
        
    ]]></content:encoded>
			<wfw:commentRss>http://perlblogs.com/2012/01/09/a-little-bit-is-a-lot-better/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Perlbuzz news roundup for 2012-01-09</title>
		<link>http://feedproxy.google.com/~r/PerlBuzz/~3/MWe0kwDMP50/perlbuzz-news-roundup-for-2012-01-09.html</link>
		<comments>http://feedproxy.google.com/~r/PerlBuzz/~3/MWe0kwDMP50/perlbuzz-news-roundup-for-2012-01-09.html#comments</comments>
		<pubDate>Mon, 09 Jan 2012 15:41:18 +0000</pubDate>
		<dc:creator>Andy Lester</dc:creator>
				<category><![CDATA[conferences]]></category>
		<category><![CDATA[cpan]]></category>
		<category><![CDATA[Perl 5]]></category>

		<guid isPermaLink="false">http://perlblogs.com/?guid=4f0c4fd1dd0182cdf2a6a75695cdf00b</guid>
		<description><![CDATA[These links are collected from the Perlbuzz Twitter feed. If you have suggestions for news bits, please mail me at andy@perlbuzz.com. Perl interface to the nginx web server (blogs.perl.org) The 2011 Perl 6 coding contest: Write Perl 6 code,...]]></description>
			<content:encoded><![CDATA[
        <p>
These links are collected from the
<a href="http://twitter.com/perlbuzz">Perlbuzz Twitter feed</a>.
If you have suggestions for news bits, please mail me at
<a href="mailto:andy@perlbuzz.com">andy@perlbuzz.com</a>.
</p>

<ul>

<li>Perl interface to the nginx web server (<a href="http://blogs.perl.org/users/alexandr_gomoliako/2011/12/introducing-nginx-perl.html">blogs.perl.org</a>)</li>
<li>The 2011 Perl 6 coding contest: Write Perl 6 code, win $100 of prizes (<a href="http://strangelyconsistent.org/blog/the-2011-perl-6-coding-contest">strangelyconsistent.org</a>)</li>
<li>Perl documentation is awesome (<a href="http://blogs.perl.org/users/jesse_shy/2012/01/perl-documentation-is-awesome.html">blogs.perl.org</a>)</li>
<li>YAPC::NA 2012 is now accepting talk proposals (<a href="http://blogs.perl.org/users/jt_smith/2012/01/yapcna-2012-call-for-presenters-now-open.html">blogs.perl.org</a>)</li>
<li>A look back at Perl 2011 (<a href="http://onionstand.blogspot.com/2012/01/perls-of-2011.html">onionstand.blogspot.com</a>)</li>
<li>Installing Citrus Perl on OS X (<a href="http://blogs.perl.org/users/steve_dickinson/2011/12/citrus-perl-install-on-osx.html">blogs.perl.org</a>)</li>
<li>How do I debug memory usage? (<a href="http://blogs.perl.org/users/alex_balhatchet/2012/01/debugging-memory-use-in-perl---help.html">blogs.perl.org</a>)</li>
<li>Perl::Critic finds annoying little bugs in your code (<a href="http://perlbuzz.com/2012/01/perlcritic-finds-annoying-little-bugs-in-your-code.html">perlbuzz.com</a>)</li>
<li>(<a href="http://changes.cpanhq.org/">changes.cpanhq.org</a>) checks your Changes file for standards compliance. Whether that's useful is left as an exercise to the reader</li>
<li>Andrew Dunstan says the Perl 5 bug tracker is "worse than useless". (<a href="http://people.planetpostgresql.org/andrew/index.php?/archives/242-How-not-to-use-a-bug-tracker.html">people.planetpostgresql.org</a>)</li>
</ul>

        

    <div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/PerlBuzz?a=MWe0kwDMP50:jwXc54sEoDg:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/PerlBuzz?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/PerlBuzz?a=MWe0kwDMP50:jwXc54sEoDg:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/PerlBuzz?i=MWe0kwDMP50:jwXc54sEoDg:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/PerlBuzz?a=MWe0kwDMP50:jwXc54sEoDg:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/PerlBuzz?i=MWe0kwDMP50:jwXc54sEoDg:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/PerlBuzz?a=MWe0kwDMP50:jwXc54sEoDg:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/PerlBuzz?d=qj6IDK7rITs" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/PerlBuzz/~4/MWe0kwDMP50" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://perlblogs.com/2012/01/09/perlbuzz-news-roundup-for-2012-01-09/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Modern::Perl Updates</title>
		<link>http://www.modernperlbooks.com/mt/2012/01/modernperl-updates.html</link>
		<comments>http://www.modernperlbooks.com/mt/2012/01/modernperl-updates.html#comments</comments>
		<pubDate>Thu, 05 Jan 2012 20:34:04 +0000</pubDate>
		<dc:creator>chromatic</dc:creator>
				<category><![CDATA[books]]></category>
		<category><![CDATA[cpan]]></category>
		<category><![CDATA[modernperl]]></category>
		<category><![CDATA[perl]]></category>
		<category><![CDATA[perl5]]></category>

		<guid isPermaLink="false">http://perlblogs.com/?guid=e111c8530c409abb316f409fa5f73041</guid>
		<description><![CDATA[The Modern::Perl CPAN distribution is much more conservative than I think most people thought it would be when I first released it. (Count me in that group.) Where I once intended to collect a bunch of useful CPAN modules in...]]></description>
			<content:encoded><![CDATA[
        <p>The <a href="http://search.cpan.org/perldoc?Modern::Perl">Modern::Perl</a> CPAN distribution is much more conservative than I think most people thought it would be when I first released it. (Count me in that group.) Where I once intended to collect a bunch of useful CPAN modules in the style of <a href="http://search.cpan.org/perldoc?Task::Kensho">Task::Kensho</a> or <a href="http://search.cpan.org/perldoc?perl5i">perl5i</a>, both of those do what they do far better than I can do.</p>

<p>Instead, I see Modern::Perl as enabling the core features I wish were on out
of the box by default in Perl 5. While it'd be nice to pull in <a
href="http://search.cpan.org/perldoc?Try::Tiny">Try::Tiny</a> and sometimes I
might wish for fatal warnings, the former is not a core module and the second
isn't something I use in every program.</p>

<p>Consequently the module hasn't needed much maintenance. Yet I've added a couple of missing features that should keep it useful and usable into the
future. I uploaded a new version yesterday and will upload one more today with a little bit more polish.</p>

<p>First, it now requires <a
href="http://search.cpan.org/perldoc?autodie">autodie</a> as a distribution
dependency. It doesn't <em>load</em> <code>autodie</code>, but installing
Modern::Perl on 5.10.0 will also install <code>autodie</code>. (Anything 5.10.1
and newer includes <code>autodie</code> in the core.) You don't have to use it,
but now you can rely on any Perl considered modern to have <code>autodie</code>
available.</p>

<p>Second, it now loads <a
href="http://search.cpan.org/perldoc?IO::File">IO::File</a> and <a
href="http://search.cpan.org/perldoc?IO::Handle">IO::Handle</a> so that you can
call methods on lexical filehandles without having to load either manually.
Perl 5.14 fixed that usability niggle, but Modern::Perl fixes this for people
using 5.10 or 5.12. (Why both? I can never remember which one superseded the
other in 5.12, but better safe than sorry. I welcome a patch to load one over
the other with a version check&mdash;and please test carefully.)</p>

<p>Third, I added unimporting support so that you can write <code>no
Modern::Perl;</code> within a scope to disable strictures, warnings, and
language bundle features. It's an all or nothing switch and will remain that
way, but I can see this being useful in specific cases, especially when
updating older code in stages.</p>

<p>Finally I added date support to importing. If you write <code>use
Modern::Perl;</code> you'll get the features of Perl 5.10 (with the caveat that
if you're using Perl 5.11.3 or newer, you also get the
<code>unicode_strings</code> feature, of which all you're likely to notice is
that Unicode strings work better in more places).</p>

<p>Yet for forward compatibility, you should be using:</p>

<pre><code>use Modern::Perl 2012;</code></pre>

<p>... which enables 5.14 features. You can use 2009 and 2010 to get 5.10
features and 2011 to get 5.12 features. If you use the wrong date on the wrong
version of Perl 5, you'll get an error, which is as it should be.</p>

<p>Next year I'm likely to drop support for Perl 5.10, in which case you'll
probably get an error message that that year isn't modern enough, but I could
be convinced to do a version check instead. I haven't decided. The tradeoff is
between providing a minimal module suitable for use in programs which helps
people write better code from the start and between telling people what they
should and shouldn't use. Besides all that, the relevant code is only a couple of dozen lines of very simple Perl. Anyone reading this can reimplement it almost trivially.</p>

<p>Of course, this all comes about because the <a
href="http://onyxneon.com/books/modern_perl/index.html">Modern Perl book</a>
goes to the printer today. We're very proud of the new 2011-2012 edition which
concentrates on Perl 5.12 and Perl 5.14. It addresses all of the known typos
and confusing parts of the previous edition, covers new features in Perl 5.14,
and is, from all reports, even better than the first edition.</p>

<p>The book should be in stores in the next week or so, and we'll have
electronic editions up this month for free download and redistribution. (We
hope you tell lots of people to buy the print edition because it's great and
more people need it on their desks, but sharing is caring and we support
that.)</p>
        
    ]]></content:encoded>
			<wfw:commentRss>http://perlblogs.com/2012/01/05/modernperl-updates/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Do It Wrong Sometimes</title>
		<link>http://www.modernperlbooks.com/mt/2012/01/do-it-wrong-sometimes.html</link>
		<comments>http://www.modernperlbooks.com/mt/2012/01/do-it-wrong-sometimes.html#comments</comments>
		<pubDate>Tue, 03 Jan 2012 22:14:17 +0000</pubDate>
		<dc:creator>chromatic</dc:creator>
				<category><![CDATA[cpan]]></category>
		<category><![CDATA[modernperl]]></category>
		<category><![CDATA[perl]]></category>
		<category><![CDATA[skunkworks]]></category>

		<guid isPermaLink="false">http://perlblogs.com/?guid=0b504cc8284bd3b38992db8dc0ebfd6f</guid>
		<description><![CDATA[The YAPC::NA 2012 call for presentations has opened! As with every YAPC I've attended, this is a great opportunity to meet other programmers, learn things you know better and don't know yet, and to practice your presentation skills. A few...]]></description>
			<content:encoded><![CDATA[
        <p>The <a href="http://act.yapcna.org/2012/">YAPC::NA 2012</a> call for presentations has opened! As with every YAPC I've attended, this is a great opportunity to meet other programmers, learn things you know better and don't know yet, and to practice your presentation skills.</p>

<p>A few months ago I exchanged emails with <a href="http://www.plainblack.com/">JT Smith</a> about my idea for a talk this year. I've mentioned in passing a few times <a href="http://www.modernperlbooks.com/mt/2011/08/why-my-side-project-doesnt-use-perl-6.html">a small side project my business is investing in</a>. It's a side project, deliberately minimal, and&mdash;from the development side&mdash;definitely the kind of skunkworks, just get it working, maintain it as little as possible and let it run uninterrupted software that you're likely to find.</p>

<p>That doesn't mean it's quick or dirty. That doesn't mean it's not tested well, or that it has a slapdash design. All it means is that the most important criterion for any design or implementation decision is "is this the simplest thing that could possibly work" instead of "is this elegant" or "what's the standard modern Perl orthodoxy for this problem".</p>

<p>So far the results have been enlightening.</p>

<p>I don't want to give away too many of the details of my talk (if it's accepted), but here are two small hints which may or may not help you.</p>

<p>First, just because a good ORM such as <a href="http://search.cpan.org/perldoc?DBIx::Class">DBIx::Class</a> makes searching and manipulating existing data easy doesn't make it the best way to insert big batches of new data.</p>

<p>Second, while <a href="http://search.cpan.org/perldoc?LWP">LWP</a> and especially <a href="http://search.cpan.org/perldoc?WWW::Mechanize">WWW::Mechanize</a> are great tools for automating the behavior of a web client, sometimes <code>wget</code> or <code>curl</code> in a shell script is quicker, easier to parallelize, and more robust.</p>

<p>(As a bonus, consider also that if you're parsing semi-structured data out of HTML that removing <em>all</em> of the HTML is sometimes even easier than using a real HTML parser or even CSS selectors. Sure, semantic markup helps when you can rely on it, and sure, using a regex to remove HTML tags is a bad idea, but there are ways to turn HTML into plain text quickly and easily without doing anything on your own.)</p>
        
    ]]></content:encoded>
			<wfw:commentRss>http://perlblogs.com/2012/01/04/do-it-wrong-sometimes/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Perlbuzz news roundup for 2012-01-02</title>
		<link>http://feedproxy.google.com/~r/PerlBuzz/~3/gA8aIPIgJH8/perlbuzz-news-roundup-for-2012-01-02.html</link>
		<comments>http://feedproxy.google.com/~r/PerlBuzz/~3/gA8aIPIgJH8/perlbuzz-news-roundup-for-2012-01-02.html#comments</comments>
		<pubDate>Mon, 02 Jan 2012 20:55:43 +0000</pubDate>
		<dc:creator>Andy Lester</dc:creator>
				<category><![CDATA[conferences]]></category>
		<category><![CDATA[cpan]]></category>
		<category><![CDATA[Perl 5]]></category>

		<guid isPermaLink="false">http://perlblogs.com/?guid=d18f5aea3116187f2da5d9bfa35eca2f</guid>
		<description><![CDATA[These links are collected from the Perlbuzz Twitter feed. If you have suggestions for news bits, please mail me at andy@perlbuzz.com. Tracking users with Plack and Catalyst (modernperlbooks.com) FOSDEM 2012 in Brussels is looking for Perl speakers (nxadm.wordpress.com) Why...]]></description>
			<content:encoded><![CDATA[
        <p>
These links are collected from the
<a href="http://twitter.com/perlbuzz">Perlbuzz Twitter feed</a>.
If you have suggestions for news bits, please mail me at
<a href="mailto:andy@perlbuzz.com">andy@perlbuzz.com</a>.
</p>

<ul>

<li>Tracking users with Plack and Catalyst (<a href="http://modernperlbooks.com/mt/2011/12/how-would-you-track-user-behavior-with-plack-and-catalyst.html">modernperlbooks.com</a>)</li>
<li>FOSDEM 2012 in Brussels is looking for Perl speakers (<a href="http://nxadm.wordpress.com/2011/12/21/perlfosdem2012-cfs/">nxadm.wordpress.com</a>)</li>
<li>Why is ack packaged as ack-grep? (<a href="http://blogs.perl.org/users/alberto_simoes/2011/12/never-ever-trust-ubuntu.html">blogs.perl.org</a>)</li>
<li>DBIx::Connector reduces the technical friction of managing DBI connections (<a href="http://perladvent.org/2011/2011-12-22.html">perladvent.org</a>)</li>
<li>Minecraft-like game written in Perl and C (<a href="http://ue.o---o.eu/">ue.o---o.eu</a>)</li>
</ul>
        
    <div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/PerlBuzz?a=gA8aIPIgJH8:gKF8zJ2aBr4:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/PerlBuzz?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/PerlBuzz?a=gA8aIPIgJH8:gKF8zJ2aBr4:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/PerlBuzz?i=gA8aIPIgJH8:gKF8zJ2aBr4:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/PerlBuzz?a=gA8aIPIgJH8:gKF8zJ2aBr4:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/PerlBuzz?i=gA8aIPIgJH8:gKF8zJ2aBr4:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/PerlBuzz?a=gA8aIPIgJH8:gKF8zJ2aBr4:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/PerlBuzz?d=qj6IDK7rITs" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/PerlBuzz/~4/gA8aIPIgJH8" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://perlblogs.com/2012/01/02/perlbuzz-news-roundup-for-2012-01-02/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Perl Documentation in Terms of Tasks</title>
		<link>http://www.modernperlbooks.com/mt/2011/12/perl-documentation-in-terms-of-tasks.html</link>
		<comments>http://www.modernperlbooks.com/mt/2011/12/perl-documentation-in-terms-of-tasks.html#comments</comments>
		<pubDate>Mon, 26 Dec 2011 20:01:04 +0000</pubDate>
		<dc:creator>chromatic</dc:creator>
				<category><![CDATA[Community]]></category>
		<category><![CDATA[cpan]]></category>
		<category><![CDATA[documentation]]></category>
		<category><![CDATA[perl]]></category>

		<guid isPermaLink="false">http://perlblogs.com/?guid=f76220917c61da80c718771cf6d0f5e7</guid>
		<description><![CDATA[The core Perl community&#38;mdash;if you care to draw lines around a group of people who use Perl seriously and call that a community&#38;mdash;is like many other core F/OSS communities. Real work happens on mailing lists and IRC. I unsubscribed from...]]></description>
			<content:encoded><![CDATA[
        <p>The core Perl community&mdash;if you care to draw lines around a group of
people who use Perl seriously and call that a community&mdash;is like many
other core F/OSS communities. Real work happens on mailing lists and IRC. I
unsubscribed from several mailing lists and deliberately spent as little time
on IRC as possible this year, for various uninteresting reasons. (I haven't
even made it to the <a href="http://pdx.pm.org/">Portland Perl Mongers</a>
meetings for several months.)</p>

<p>While that's been good for my productivity, it's also produced an
interesting sense of disconnect, and that makes me wonder. Consider a thought
experiment. Suppose you have six months to build a new green-field project.
Your primary language is Perl. You're the only developer on the project, but
you do have coworkers to do some of the non-coding work. You don't have access
to IRC or mailing lists, but you do have access to the whole of the CPAN. In
other words, your social connections are limited but your technical decisions
are not.</p>

<p>In this situation, how do you find the best libraries and techniques to use
for your requirements and how do you solve problems and get your questions
answered?</p>

<p>Assume you have access to web forae such as PerlMonks and Stack Overflow and
of course Duck Duck Go.</p>

<p>I can answer this partially for me: thank goodness for the degree of
maturity the CPAN and its ecosystem encourages among its best projects. I have
a lot of confidence in the stack I've chosen of <a
href="http://moose.perl.org/">Moose</a>, <a
href="http://plackperl.org/">Plack</a>, <a
href="http://www.dbix-class.org/">DBIx::Class</a>, and <a
href="http://catalystframework.org/">Catalyst</a>, sprinkled liberally by great
new tools such as perlbrew, cpanm, and <c>Try::Tiny</c>&mdash;but even so, the
documentation and community support available without real-time discussion with
contributors and developers isn't always sufficient to solve problems
quickly.</p>

<p>(How interesting to note that all of these tools hew from a post-Perl 6
world, and how any Perl 6 implementation as it stands now only barely obviates
the need for part of two of the named projects and deigns even to consider the
others.)</p>

<p>For example, what's the best way to manage passwords and authentication in a
Perl-based web application? Do you handle it at the Plack level or the Catalyst
level? What if your user table doesn't match the example in the Catalyst
authentication plugin example? How much better is bcrypt than SHA-1 or SHA-256?
What if your business requirements mandate that users verify their accounts
before they can login? How do you modify/subclass/extend/advise the plugin you
use to meet this requirement?</p>

<p>Anyone who's done a few projects with this stack should be able to give a
good answer to these questions, as should anyone who's spent a few weeks in the
relevant IRC channels or a couple of months reading the right mailing lists.
They're not difficult questions, but they are detailed questions. You could ask
the same questions about the right way to manage DBIC schemas you expect to
deploy frequently while allowing for schema updates and changes.</p>

<p>The interesting question isn't <em>how</em> to accomplish these things, it's
<em>how someone finds this information</em> without mandating access to IRC or
the mailing list.</p>

<p>I make the assumption that it's valuable to have multiple sources of
information. We write copious documentation including <code>::Manual</code> and
<code>::Tutorial</code> PODs in our top-level distribution namespaces, after
all. We do an admirable job of producing <a
href="http://www.lowlevelmanager.com/2011/12/perl-advent-calendars-2011-edition.html">Perl
Advent Calendars</a> (thanks, Andrew Grangaard!), but I'm very glad to see <a
href="http://www.catalystframework.org/calendar/2011/24">Catalyst retiring its
calendar in favor of monthly articles</a>. Publishing on a schedule is
difficult, but the need for current information is present the other eleven
months of the year.</p>

<p>I wish I could say that Perl and project wikis were more useful, but they
seem neither popular nor currently useful to me. Maybe I looked in the wrong
places. (I know I promised to give Catalyst a list of questions about things
that weren't screechingly obvious; I have a list, but I haven't shown it yet. I
have patched a few parts of the Plack documentation.) Yet it seems to me that
for all of the energy and output of the core Perl community, the practical
non-code results tend to be directed in ephemeral directions. In the past
couple of months, people such as Gabor Szabo and Christian Walde spent a lot of time to improve the results for searching for
"<a href="http://szabgab.com/perl_tutorial.html">Perl tutorial</a>"
by creating a central place to list and evaluate <a
href="http://perl-tutorial.org/">Perl tutorials</a>.</p>

<p>Again, maybe I looked in the wrong places&mdash;but I'd like to see a 2012
focus on making the knowledge and experience of core project members available
further, in many other media. Perl.com always welcomes your submissions of
course, but that's not the only persistent and updated medium for project
knowledge.</p>

<p>If we want people to use our code and projects for real work, to solve real
problems, and to accomplish real tasks, we need to continue to provide
practical code and useful documentation at or above the high quality level we
currently enjoy. Yet we also have to work to approach this audience from their
point of view: in particular, in terms of the tasks they want to
accomplish.</p>

<p><em>That</em> is the resolution I suggest for the Perl community in
2012.</p>

        
    ]]></content:encoded>
			<wfw:commentRss>http://perlblogs.com/2011/12/26/perl-documentation-in-terms-of-tasks/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

