<?xml version="1.0" encoding="utf-8"?>
<feed
    xmlns="http://www.w3.org/2005/Atom"
    xmlns:at="http://www.sixapart.com/ns/at"
    xmlns:icbm="http://postneo.com/icbm"
    xmlns:rvw="http://purl.org/NET/RVW/0.2/"
    xml:lang="en">
    <title>bricas’ blog</title>
    <link rel="self" type="application/atom+xml" title="bricas’ blog (Atom)" href="http://bricas.vox.com/library/posts/page/1/atom.xml" />
    <link rel="alternate" type="text/html" title="bricas’ blog" href="http://bricas.vox.com/library/posts/page/1/"/>

    <link rel="service.post" type="application/atom+xml" title="bricas’ blog" href="http://www.vox.com/services/atom/svc=post/collection_id=6a00d09e62f541be2b00d4142f23d13c7f" />

    <link rel="service.subscribe" type="application/atom+xml" title="bricas’ blog" href="http://bricas.vox.com/library/posts/atom.xml" />

    
    
        
    <link rel="next" type="application/atom+xml" title="bricas’ blog" href="http://bricas.vox.com/library/posts/page/2/atom.xml" />
    
    <link rel="last" type="application/atom+xml" title="bricas’ blog" href="http://bricas.vox.com/library/posts/page/16/atom.xml" />


    <generator uri="http://www.vox.com/">Vox</generator>
    <updated>2009-12-18T19:05:17Z</updated>

    <author>
        <name>Brian</name>
        <uri>http://bricas.vox.com/?_c=feed-atom-full</uri>
    </author>

    <id>tag:vox.com,2006:6p00d09e62f541be2b/</id>


    
    <entry>
        <title>The last five months</title>
    
    
    
        <link rel="alternate" type="text/html" title="The last five months" href="http://bricas.vox.com/library/post/the-last-five-months.html?_c=feed-atom-full" />
    
        
        <link rel="service.post" type="application/atom+xml" title="The last five months" href="http://bricas.vox.com/library/post/the-last-five-months.html?_c=feed-atom-full#comments" />
    
        <link rel="service.edit" type="application/atom+xml" title="The last five months" href="http://www.vox.com/atom/svc=post/asset_id=6a00d09e62f541be2b0123f1898ffd860f" /> 
                <id>tag:vox.com,2009-12-18:asset-6a00d09e62f541be2b0123f1898ffd860f</id>
        <published>2009-12-18T19:02:45Z</published>
        <updated>2009-12-18T19:05:17Z</updated>
    
        <author>
            <name>Brian</name>
            <uri>http://bricas.vox.com/?_c=feed-atom-full</uri>
        </author>
    
        
        <content type="html" xml:base="http://bricas.vox.com/?_c=feed-atom-full">
            <![CDATA[
                <div xmlns="http://www.w3.org/1999/xhtml" xmlns:at="http://www.sixapart.com/ns/at">
    
    
        
            
            <p>I haven&#39;t bothered to post anything in the last five months. With Christmas just around the corner, I figure this is as good a time as any to play catch up.</p><p><strong>Padre-Plugin-PerlTidy</strong><br /><ul><br /><li>A new release of this plugin -- changes made mostly by other people.</li><br /></ul><strong>Gedcom-FOAF</strong><br /><ul><br /><li>Rather than using a base url for the data, you can now specify a number of url templates. This makes the module actually useful. Thanks to Chris Prather for working through this with me.</li><br /></ul><strong>Geo-IPfree</strong><br /><ul><br /><li>A couple of releases with various refactoring bits and bug fixes. The folks at software77.net now produce a data file specifically for this module. I will ship an updated copy with every release. Refactoring this code has been pretty satisfying, though there are some parts of the module API which I detest but I will be unable to modify them.</li><br /></ul><strong>Image-Textmode/Image-Textmode-Reader-ANSI-XS</strong><br /><ul><br /><li>Various bug fixes thanks to some testing with a large dataset from Doug Moore and sixteencolors.net</li><br /></ul><strong>Config-Any</strong><br /><ul><br /><li>Released version 0.18, which prefers YAML::XS over any other YAML parser. This created a number of issues with the HTML::FormFu crowd as existing parsers allowed this sort of syntax &quot;auto_id: %n&quot; -- whereas YAML::XS complains about an exposed percent sign. The easy fix is to wrap the string in quotes &quot;auto_id: &#39;%n&#39;&quot;</li><br /></ul><strong>GD-Image-Scale2x</strong><br /><ul><br /><li>Fixed a nasty bug due to a missing my() which randomly broke the module on some platforms.</li><br /></ul><strong>CGI-Application-PhotoGallery</strong><br /><ul><br /><li>A tiny patch for max_height included in this release. This still has some pending issues in RT -- though I have a hard time justifying spending any time on them as I don&#39;t use this module at all.</li><br /></ul><strong>Catalyst-Model-WebService-Solr</strong><br /><ul><br /><li>Apparently, this module was basically broken. Fixed thanks to a supplied patch.</li><br /></ul><strong>Template-Provider</strong><br /><ul><br /><li>Another kind user supplied some patches/info to support mod_perl and fully qualified template names.</li><br /></ul><strong>CQL-Parser/SRU</strong><br /><ul><br /><li>Removing use of UNIVERSAL-&gt;import from these module. Not even sure why it was there to begin with.</li><br /></ul><strong>WebService-Solr</strong><br /><ul><br /><li>A couple of release of this module. Includes some bug fixes, feature additions and Solr 1.4 compatibility.</li><br /></ul><strong>Remove auto_install from my dists</strong><br /><ul><br /><li>Although, as I understand it, auto_install now works in newer versions of Module::Install, I&#39;ve decided to remove it from my dists to avoid any issues.</li><br /></ul>See you next year.<br /> </p>
        
    
                <p style="clear:both;">

    <a href="http://bricas.vox.com/library/post/the-last-five-months.html?_c=feed-atom-full#comments">Read and post comments</a>

 | 

    
    <a href="http://www.vox.com/share/6a00d09e62f541be2b0123f1898ffd860f?_c=feed-atom-full">Send to a friend</a>

</p>

                </div>
            ]]>
        </content>
    
    <category term="perl" scheme="http://bricas.vox.com/tags/perl/" label="perl" />
    
    </entry>

    
    <entry>
        <title>Adding a feature to Padre</title>
    
    
    
        <link rel="alternate" type="text/html" title="Adding a feature to Padre" href="http://bricas.vox.com/library/post/adding-a-feature-to-padre.html?_c=feed-atom-full" />
    
        
        <link rel="service.post" type="application/atom+xml" title="Adding a feature to Padre" href="http://bricas.vox.com/library/post/adding-a-feature-to-padre.html?_c=feed-atom-full#comments" />
    
        <link rel="service.edit" type="application/atom+xml" title="Adding a feature to Padre" href="http://www.vox.com/atom/svc=post/asset_id=6a00d09e62f541be2b011018580751860f" /> 
        
                        <id>tag:vox.com,2009-07-28:asset-6a00d09e62f541be2b011018580751860f</id>
        <published>2009-07-28T12:23:12Z</published>
        <updated>2009-11-12T13:46:08Z</updated>
    
        <author>
            <name>Brian</name>
            <uri>http://bricas.vox.com/?_c=feed-atom-full</uri>
        </author>
    
        
        <content type="html" xml:base="http://bricas.vox.com/?_c=feed-atom-full">
            <![CDATA[
                <div xmlns="http://www.w3.org/1999/xhtml" xmlns:at="http://www.sixapart.com/ns/at">
    
    
        
            
            <p>I&#39;ve been following (and even contributing to) the <a href="http://padre.perlide.org">Padre IDE</a> project from very early on. I&#39;ve watched it grow from very modest beginings into something quite impressive -- usable, even.</p><p>Its deep integration with Perl is such a killer feature. There are already a good <a href="http://search.cpan.org/search?query=Padre-Plugin&amp;mode=dist">two-dozen plugins</a>, one of which I&#39;ve been shepherding: <a href="http://search.cpan.org/dist/Padre-Plugin-PerlTidy">Padre-Plugin-PerlTidy</a>.</p><p>In light of Padre&#39;s first birthday, I decided I wanted to give something back into the Padre core rather than just an ancillary project.</p><p>I tend to use gedit on Ubuntu, and I rather liked the &quot;right margin&quot; option. This option puts a gray vertical line on whichever column you specify. It&#39;s an easy visual queue for long lines. It turns out that the Scintilla editor component supports this feature and all I had to do was enable the menus and dialogs to allow users to toggle the method.</p>
    
    
    

    
    
    
<div at:enclosure="asset" at:xid="6a00d09e62f541be2b01101638c2b0860b" at:format="large" at:align="center"
    class="enclosure enclosure-center enclosure-large photo-enclosure" 
     style="text-align: center;">
<div class="enclosure-inner"
    
        style="padding: 9px; border: 1px solid; width: px; margin: 10px auto;"
    >
    <div class="enclosure-list">
        <div class="enclosure-item photo-asset last">
    
            <div class="enclosure-image">
        
                <a href="http://bricas.vox.com/library/photo/6a00d09e62f541be2b01101638c2b0860b.html"><img src="http://a0.vox.com/6a00d09e62f541be2b01101638c2b0860b-320pi" alt="Padre with &quot;right margin&quot; option" title="Padre with &quot;right margin&quot; option" /></a>
        
            </div>
            <div class="enclosure-meta">
                <div class="enclosure-asset-name"><a href="http://bricas.vox.com/library/photo/6a00d09e62f541be2b01101638c2b0860b.html" title="Padre with &quot;right margin&quot; option">Padre with &quot;right margin&quot; option</a></div>
            </div>
    
        </div>
    </div>
</div>
</div><!-- end enclosure -->

<p></p><p>...and there you have it. It didn&#39;t take very long, and it&#39;s not exactly mind blowing, but it&#39;s something I&#39;ve found useful. <div><br /></div></p>
        
    
                <p style="clear:both;">

    <a href="http://bricas.vox.com/library/post/adding-a-feature-to-padre.html?_c=feed-atom-full#comments">Read and post comments</a>

 | 

    
    <a href="http://www.vox.com/share/6a00d09e62f541be2b011018580751860f?_c=feed-atom-full">Send to a friend</a>

</p>

                </div>
            ]]>
        </content>
    
    <category term="perl" scheme="http://bricas.vox.com/tags/perl/" label="perl" />
    
    <category term="padre" scheme="http://bricas.vox.com/tags/padre/" label="padre" />
    
    </entry>

    
    <entry>
        <title>Dear Module Author</title>
    
    
    
        <link rel="alternate" type="text/html" title="Dear Module Author" href="http://bricas.vox.com/library/post/dear-module-author.html?_c=feed-atom-full" />
    
        
        <link rel="service.post" type="application/atom+xml" title="Dear Module Author" href="http://bricas.vox.com/library/post/dear-module-author.html?_c=feed-atom-full#comments" />
    
        <link rel="service.edit" type="application/atom+xml" title="Dear Module Author" href="http://www.vox.com/atom/svc=post/asset_id=6a00d09e62f541be2b0110182fbb7e860f" /> 
                <id>tag:vox.com,2009-06-03:asset-6a00d09e62f541be2b0110182fbb7e860f</id>
        <published>2009-06-03T19:41:53Z</published>
        <updated>2009-06-03T19:42:25Z</updated>
    
        <author>
            <name>Brian</name>
            <uri>http://bricas.vox.com/?_c=feed-atom-full</uri>
        </author>
    
        
        <content type="html" xml:base="http://bricas.vox.com/?_c=feed-atom-full">
            <![CDATA[
                <div xmlns="http://www.w3.org/1999/xhtml" xmlns:at="http://www.sixapart.com/ns/at">
    
    
        
            
            <p>Dear Module Author,</p><p>When preparing to upload a new release of your module to PAUSE could you please review your Changes file?</p><p>Did you remember to update it? Does it contain something meaningful? Here are a couple of examples of Changes entries which mean very little to me at a glance:<br /><ul><br /><li>Bug Fixed<br /></li><li>Foo::Bar Fixed<br /></li><li>Fixed RT #12345<br /></li></ul>Also, your SCM revision log does not a good Changes file make.</p><p>Yes, this is old news. This is just a reminder. </p>
        
    
                <p style="clear:both;">

    <a href="http://bricas.vox.com/library/post/dear-module-author.html?_c=feed-atom-full#comments">Read and post comments</a>

 | 

    
    <a href="http://www.vox.com/share/6a00d09e62f541be2b0110182fbb7e860f?_c=feed-atom-full">Send to a friend</a>

</p>

                </div>
            ]]>
        </content>
    
    <category term="perl" scheme="http://bricas.vox.com/tags/perl/" label="perl" />
    
    </entry>

    
    <entry>
        <title>Elsewhere</title>
    
    
    
        <link rel="alternate" type="text/html" title="Elsewhere" href="http://bricas.vox.com/library/post/elsewhere.html?_c=feed-atom-full" />
    
        
        <link rel="service.post" type="application/atom+xml" title="Elsewhere" href="http://bricas.vox.com/library/post/elsewhere.html?_c=feed-atom-full#comments" />
    
        <link rel="service.edit" type="application/atom+xml" title="Elsewhere" href="http://www.vox.com/atom/svc=post/asset_id=6a00d09e62f541be2b0110165134a4860c" /> 
                <id>tag:vox.com,2009-05-26:asset-6a00d09e62f541be2b0110165134a4860c</id>
        <published>2009-05-26T17:56:42Z</published>
        <updated>2009-05-26T17:56:42Z</updated>
    
        <author>
            <name>Brian</name>
            <uri>http://bricas.vox.com/?_c=feed-atom-full</uri>
        </author>
    
        
        <content type="html" xml:base="http://bricas.vox.com/?_c=feed-atom-full">
            <![CDATA[
                <div xmlns="http://www.w3.org/1999/xhtml" xmlns:at="http://www.sixapart.com/ns/at">
    
    
        
            
            <p>This is just a quick note to let y&#39;all know that I now have a <a href="http://twitter.com/bricas/">twitter account</a> and an <a href="http://identi.ca/bricas/">identi.ca account</a>.</p><p>You have been warned.<br /> </p>
        
    
                <p style="clear:both;">

    <a href="http://bricas.vox.com/library/post/elsewhere.html?_c=feed-atom-full#comments">Read and post comments</a>

 | 

    
    <a href="http://www.vox.com/share/6a00d09e62f541be2b0110165134a4860c?_c=feed-atom-full">Send to a friend</a>

</p>

                </div>
            ]]>
        </content>
    
    <category term="perl" scheme="http://bricas.vox.com/tags/perl/" label="perl" />
    
    <category term="twitter" scheme="http://bricas.vox.com/tags/twitter/" label="twitter" />
    
    <category term="identi.ca" scheme="http://bricas.vox.com/tags/identi.ca/" label="identi.ca" />
    
    </entry>

    
    <entry>
        <title>Benchmark</title>
    
    
    
        <link rel="alternate" type="text/html" title="Benchmark" href="http://bricas.vox.com/library/post/benchmark.html?_c=feed-atom-full" />
    
        
        <link rel="service.post" type="application/atom+xml" title="Benchmark" href="http://bricas.vox.com/library/post/benchmark.html?_c=feed-atom-full#comments" />
    
        <link rel="service.edit" type="application/atom+xml" title="Benchmark" href="http://www.vox.com/atom/svc=post/asset_id=6a00d09e62f541be2b0110164dd677860c" /> 
                <id>tag:vox.com,2009-05-21:asset-6a00d09e62f541be2b0110164dd677860c</id>
        <published>2009-05-21T17:30:20Z</published>
        <updated>2009-05-21T17:32:12Z</updated>
    
        <author>
            <name>Brian</name>
            <uri>http://bricas.vox.com/?_c=feed-atom-full</uri>
        </author>
    
        
        <content type="html" xml:base="http://bricas.vox.com/?_c=feed-atom-full">
            <![CDATA[
                <div xmlns="http://www.w3.org/1999/xhtml" xmlns:at="http://www.sixapart.com/ns/at">
    
    
        
            
            <p>As noted in my <a href="http://bricas.vox.com/library/post/develnytprof.html">last post</a>, I was able to get a bit of a speed boost based on observations made as a result of code profiling.</p><p>In general, if I want to see if one piece of code is faster than another, I use <a href="http://search.cpan.org/perldoc?Benchmark">Benchmark</a>. Benchmark is shipped as part of the core set of modules, so there&#39;s no need to load up CPAN to get started. Its simplest usage, and the one i prefer looks something like this:</p><blockquote><p><br />&#160;&#160;&#160; use Benchmark ();<br />&#160;&#160; &#160;<br />&#160;&#160;&#160; Benchmark::cmpthese( $count, {<br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; Foo1 =&gt; sub {<br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; # code to do Foo1 here<br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; },<br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; Foo2 =&gt; sub {<br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; # code to do Foo1 here<br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; },<br />&#160;&#160;&#160; } );<br /></p></blockquote><p></p><p>Of note is that $count can be negative, which will then signify how many seconds to run instead of the number of times. The result looks like this:</p><blockquote><p><br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; Rate Foo1 Foo2<br />&#160;&#160;&#160; Foo1 108665/s&#160;&#160; -- -38%<br />&#160;&#160;&#160; Foo2 175460/s&#160; 61%&#160;&#160; --<br /></p></blockquote><p></p><p>It&#39;s pretty easy to see that Foo2 was faster. Using the above it was easy for me to test the XS-based ANSI parser vs the pure Perl version.</p><p>4k worth of ANSI over 10 seconds yields the following:</p><blockquote><p><br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; Rate&#160;&#160;&#160; PP&#160;&#160;&#160; XS<br />&#160;&#160;&#160; PP 15.7/s&#160;&#160;&#160; --&#160; -96%<br />&#160;&#160;&#160; XS&#160; 379/s 2316%&#160;&#160;&#160; --<br /></p></blockquote><p></p><p>For giggles, i tested it against a 33k ANSI, giving:</p><blockquote><p><br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; Rate&#160;&#160;&#160; PP&#160;&#160;&#160; XS<br />&#160;&#160;&#160; PP 2.23/s&#160;&#160;&#160; --&#160; -96%<br />&#160;&#160;&#160; XS 58.7/s 2528%&#160;&#160;&#160; --<br /></p></blockquote><p></p><p>Looks like a success to me!</p>
        
    
                <p style="clear:both;">

    <a href="http://bricas.vox.com/library/post/benchmark.html?_c=feed-atom-full#comments">Read and post comments</a>

 | 

    
    <a href="http://www.vox.com/share/6a00d09e62f541be2b0110164dd677860c?_c=feed-atom-full">Send to a friend</a>

</p>

                </div>
            ]]>
        </content>
    
    <category term="perl" scheme="http://bricas.vox.com/tags/perl/" label="perl" />
    
    <category term="perl-qa" scheme="http://bricas.vox.com/tags/perl-qa/" label="perl-qa" />
    
    </entry>

    
    <entry>
        <title>Devel::NYTProf</title>
    
    
    
        <link rel="alternate" type="text/html" title="Devel::NYTProf" href="http://bricas.vox.com/library/post/develnytprof.html?_c=feed-atom-full" />
    
        
        <link rel="service.post" type="application/atom+xml" title="Devel::NYTProf" href="http://bricas.vox.com/library/post/develnytprof.html?_c=feed-atom-full#comments" />
    
        <link rel="service.edit" type="application/atom+xml" title="Devel::NYTProf" href="http://www.vox.com/atom/svc=post/asset_id=6a00d09e62f541be2b01101822456a860f" /> 
        
                
                        <id>tag:vox.com,2009-05-11:asset-6a00d09e62f541be2b01101822456a860f</id>
        <published>2009-05-11T15:37:48Z</published>
        <updated>2009-05-11T15:37:48Z</updated>
    
        <author>
            <name>Brian</name>
            <uri>http://bricas.vox.com/?_c=feed-atom-full</uri>
        </author>
    
        
        <content type="html" xml:base="http://bricas.vox.com/?_c=feed-atom-full">
            <![CDATA[
                <div xmlns="http://www.w3.org/1999/xhtml" xmlns:at="http://www.sixapart.com/ns/at">
    
    
        
            
            <p>Another week another QA tool.</p><p>This week I&#39;m going to talk about <a href="http://search.cpan.org/dist/Devel-NYTProf/">Devel::NYTProf</a> (aka NYTProf).</p><p>To start, if you&#39;re interested in profilers, you should check out the brief <a href="http://search.cpan.org/dist/Devel-NYTProf/lib/Devel/NYTProf.pm#HISTORY">history section</a> of the pod, then take a glance at its <a href="http://search.cpan.org/dist/Devel-NYTProf/lib/Devel/NYTProf.pm#DESCRIPTION">features</a>. Until recently, I hadn&#39;t been very interested in profiling my code. I didn&#39;t really have anything that needed the profiling, and the tools just seemed a bit awkward to me. This changed for me when I saw the output from nytprofhtml (<a href="http://timbunce.files.wordpress.com/2008/07/nytprof-perlcritic-index.png">1</a>, <a href="http://timbunce.files.wordpress.com/2008/07/nytprof-perlcritic-all-perl-files.png">2</a>).</p><p>While working on Image-TextMode, I noticed that parsing large (~75k) ANSI files was getting to be pretty slow. I decided to run NYTProf on the parsing code, and here&#39;s what I got:</p>
    
    
    

    
    
    
<div at:enclosure="asset" at:xid="6a00d09e62f541be2b011016826a89860d" at:format="large" at:align="center"
    class="enclosure enclosure-center enclosure-large photo-enclosure" 
     style="text-align: center;">
<div class="enclosure-inner"
    
        style="padding: 9px; border: 1px solid; width: px; margin: 10px auto;"
    >
    <div class="enclosure-list">
        <div class="enclosure-item photo-asset last">
    
            <div class="enclosure-image">
        
                <a href="http://bricas.vox.com/library/photo/6a00d09e62f541be2b011016826a89860d.html"><img src="http://a1.vox.com/6a00d09e62f541be2b011016826a89860d-320pi" alt="Profiling - Before" title="Profiling - Before" /></a>
        
            </div>
            <div class="enclosure-meta">
                <div class="enclosure-asset-name"><a href="http://bricas.vox.com/library/photo/6a00d09e62f541be2b011016826a89860d.html" title="Profiling - Before">Profiling - Before</a></div>
            </div>
    
        </div>
    </div>
</div>
</div><!-- end enclosure -->

<p></p><p>The putpixel(), width() and height() methods are called for every character/attribute combo stored for the image. This turns out to be a really big inefficiency. I&#39;ve had some XS code in my back pocket for ANSI parsing, so I decided to whip up a replacement parser using that code and run the profiler again.</p>
    
    
    

    
    
    
<div at:enclosure="asset" at:xid="6a00d09e62f541be2b011016479126860c" at:format="large" at:align="center"
    class="enclosure enclosure-center enclosure-large photo-enclosure" 
     style="text-align: center;">
<div class="enclosure-inner"
    
        style="padding: 9px; border: 1px solid; width: px; margin: 10px auto;"
    >
    <div class="enclosure-list">
        <div class="enclosure-item photo-asset last">
    
            <div class="enclosure-image">
        
                <a href="http://bricas.vox.com/library/photo/6a00d09e62f541be2b011016479126860c.html"><img src="http://a6.vox.com/6a00d09e62f541be2b011016479126860c-320pi" alt="Profiling - After" title="Profiling - After" /></a>
        
            </div>
            <div class="enclosure-meta">
                <div class="enclosure-asset-name"><a href="http://bricas.vox.com/library/photo/6a00d09e62f541be2b011016479126860c.html" title="Profiling - After">Profiling - After</a></div>
            </div>
    
        </div>
    </div>
</div>
</div><!-- end enclosure -->

<p></p><p>Huge win! By moving _read() to XS (including putpixel, width, and height) I was able to shave over a second off of the total time (_read inclusive goes from 1.3 seconds to 0.03). Although working with XS was a bit of a pain, it was really great to see such a speed improvement.</p><p>I recommend everyone take a look at NYTProf if you&#39;re looking find speed inefficients in your code. <div><br /></div><div><br /></div></p>
        
    
                <p style="clear:both;">

    <a href="http://bricas.vox.com/library/post/develnytprof.html?_c=feed-atom-full#comments">Read and post comments</a>

 | 

    
    <a href="http://www.vox.com/share/6a00d09e62f541be2b01101822456a860f?_c=feed-atom-full">Send to a friend</a>

</p>

                </div>
            ]]>
        </content>
    
    <category term="perl" scheme="http://bricas.vox.com/tags/perl/" label="perl" />
    
    <category term="perl-qa" scheme="http://bricas.vox.com/tags/perl-qa/" label="perl-qa" />
    
    </entry>

    
    <entry>
        <title>Perl::Critic</title>
    
    
    
        <link rel="alternate" type="text/html" title="Perl::Critic" href="http://bricas.vox.com/library/post/perlcritic.html?_c=feed-atom-full" />
    
        
        <link rel="service.post" type="application/atom+xml" title="Perl::Critic" href="http://bricas.vox.com/library/post/perlcritic.html?_c=feed-atom-full#comments" />
    
        <link rel="service.edit" type="application/atom+xml" title="Perl::Critic" href="http://www.vox.com/atom/svc=post/asset_id=6a00d09e62f541be2b0110167eabf1860d" /> 
                <id>tag:vox.com,2009-05-01:asset-6a00d09e62f541be2b0110167eabf1860d</id>
        <published>2009-05-01T19:41:35Z</published>
        <updated>2009-05-01T19:41:35Z</updated>
    
        <author>
            <name>Brian</name>
            <uri>http://bricas.vox.com/?_c=feed-atom-full</uri>
        </author>
    
        
        <content type="html" xml:base="http://bricas.vox.com/?_c=feed-atom-full">
            <![CDATA[
                <div xmlns="http://www.w3.org/1999/xhtml" xmlns:at="http://www.sixapart.com/ns/at">
    
    
        
            
            <p>Holy -- this weekly thing goes by way too fast!</p><p>Anyway, as promised, I&#39;m making my first QA tool post. This week, we&#39;re chatting about <a href="http://search.cpan.org/dist/Perl-Critic">Perl::Critic</a>.</p><p>Perl::Critic has been around since late 2005. I was able to resist its icy gaze until last fall. So, why wouldn&#39;t I want to jump right in with Perl::Critic early on? Mostly what I imagined was putting a significant amount of time in to bend Perl::Critic policies to my will so I wouldn&#39;t have to change how I code. This is, of course, the wrong way to look at it.</p><p>There&#39;s nothing wrong with having a tool that confirms you&#39;re doing the right thing -- but what I really wanted was a tool that showed me the bad habits I&#39;ve learned and gave me a slap on the wrist every time I tried to use them. The easiest way to get started was to copy someone else&#39;s polcy file. RJBS was nice enough to comply.</p><p>For the Image::TextMode project, after adding my own tweaks to the policies, <a href="http://github.com/bricas/image-textmode/blob/0889b780fb657359c3494dbc85c200d8434b6e90/xt/perlcriticrc">this is the result</a>. A simple <a href="http://github.com/bricas/image-textmode/blob/0889b780fb657359c3494dbc85c200d8434b6e90/xt/author/critic.t">automated test</a> integrates it into my development cycle.</p><p>After running it against my code, it found some issues -- most of my which were pretty tame: 2-arg open, lack of pod, plus a few regex and character matching niggles.</p><p>In my policy file, I have two sections: Things I don&#39;t agree with and things I&#39;ve had to disable temporarily. I hope to eventually go back and clean up my code so I can remove the remainder of the temporarily disabled policies. The policies I don&#39;t agree with may change over time, but this is my current list of preferences.</p><p>I have yet to use this setup in any other project, but I think the tool is useful enough that I could put it into place from the very beginning of a project or go back and run it against all of my old projects over time.</p><p>Until next time...</p><p><br /></p>
        
    
                <p style="clear:both;">

    <a href="http://bricas.vox.com/library/post/perlcritic.html?_c=feed-atom-full#comments">Read and post comments</a>

 | 

    
    <a href="http://www.vox.com/share/6a00d09e62f541be2b0110167eabf1860d?_c=feed-atom-full">Send to a friend</a>

</p>

                </div>
            ]]>
        </content>
    
    <category term="perl" scheme="http://bricas.vox.com/tags/perl/" label="perl" />
    
    <category term="perl-qa" scheme="http://bricas.vox.com/tags/perl-qa/" label="perl-qa" />
    
    </entry>

    
    <entry>
        <title>Projects Updates and QA Tools</title>
    
    
    
        <link rel="alternate" type="text/html" title="Projects Updates and QA Tools" href="http://bricas.vox.com/library/post/projects-updates-and-qa-tools.html?_c=feed-atom-full" />
    
        
        <link rel="service.post" type="application/atom+xml" title="Projects Updates and QA Tools" href="http://bricas.vox.com/library/post/projects-updates-and-qa-tools.html?_c=feed-atom-full#comments" />
    
        <link rel="service.edit" type="application/atom+xml" title="Projects Updates and QA Tools" href="http://www.vox.com/atom/svc=post/asset_id=6a00d09e62f541be2b0110167be06a860d" /> 
                <id>tag:vox.com,2009-04-22:asset-6a00d09e62f541be2b0110167be06a860d</id>
        <published>2009-04-22T18:04:14Z</published>
        <updated>2009-04-22T18:51:21Z</updated>
    
        <author>
            <name>Brian</name>
            <uri>http://bricas.vox.com/?_c=feed-atom-full</uri>
        </author>
    
        
        <content type="html" xml:base="http://bricas.vox.com/?_c=feed-atom-full">
            <![CDATA[
                <div xmlns="http://www.w3.org/1999/xhtml" xmlns:at="http://www.sixapart.com/ns/at">
    
    
        
            
            <p>NB: This is my first post in the <a href="http://www.shadowcat.co.uk/blog/matt-s-trout/iron-man/#compo">EPO Iron Man challenge</a>. (Warning: contains some expletives)</p><p>First and foremost, the long awaited <a href="http://search.cpan.org/dist/Catalyst-Runtime-5.80001/">Catalyst 5.8</a> is out! My mind-share has primarily been with the 5.7x series so I&#39;ve been pretty much out of the loop on everything that&#39;s going on. Luckily enough, everything is basically backwards compatible (less any necessary module upgrades).</p><p>Besides the usual round of bug fixes, this release is built on top of <a href="http://search.cpan.org/dist/Moose/">Moose</a>. I&#39;m a big fan of Moose and the ease with which it lets me code, so I&#39;m very excited to see this feature. Be sure to check the <a href="http://cpansearch.perl.org/src/FLORA/Catalyst-Runtime-5.80001/Changes">Changelog</a> for all of the details.</p><p>As far as my personal projects go, I&#39;ve finally been able to deprecate two of my oldest modules (Image::ANSI and Image::XBin) with the latest release of <a href="http://search.cpan.org/dist/Image-TextMode-0.05/">Image::TextMode</a>. This release now mirrors all features provided by the two before it (and then some). It can now write each format (not 100% complete, but release-worthy) -- I&#39;ve even included a little bit of naive RLE compression.</p><p>Personal projects let me explore some new/different technologies which may not fit in do my daily $work. One of those would be Moose, as mentioned above (which is now part of our standard &quot;toolkit&quot;). Another would be XS. Writing <a href="http://search.cpan.org/dist/Image-TextMode-Reader-ANSI-XS">Image::TextMode::Reader::ANSI::XS</a> was very eye opening as far as hooking Perl and C code together and illuminating the Perl internals for me.</p><p>Recently, I&#39;ve been in tune with adding new QA tools to my repertoire, such as: Benchmark (high time I learned more about it), Perl::Critic (again, about time) and Devel::NYTProf.</p><p>If I&#39;m going to keep up with this &quot;Iron Man Challenge,&quot; then maybe I will save my favorite QA tools for their own post. Stay tuned!<br /> </p>
        
    
                <p style="clear:both;">

    <a href="http://bricas.vox.com/library/post/projects-updates-and-qa-tools.html?_c=feed-atom-full#comments">Read and post comments</a>

 | 

    
    <a href="http://www.vox.com/share/6a00d09e62f541be2b0110167be06a860d?_c=feed-atom-full">Send to a friend</a>

</p>

                </div>
            ]]>
        </content>
    
    <category term="perl" scheme="http://bricas.vox.com/tags/perl/" label="perl" />
    
    <category term="catalyst" scheme="http://bricas.vox.com/tags/catalyst/" label="catalyst" />
    
    <category term="text mode" scheme="http://bricas.vox.com/tags/text+mode/" label="text mode" />
    
    <category term="perl-qa" scheme="http://bricas.vox.com/tags/perl-qa/" label="perl-qa" />
    
    </entry>

    
    <entry>
        <title>github</title>
    
    
    
        <link rel="alternate" type="text/html" title="github" href="http://bricas.vox.com/library/post/github.html?_c=feed-atom-full" />
    
        
        <link rel="service.post" type="application/atom+xml" title="github" href="http://bricas.vox.com/library/post/github.html?_c=feed-atom-full#comments" />
    
        <link rel="service.edit" type="application/atom+xml" title="github" href="http://www.vox.com/atom/svc=post/asset_id=6a00d09e62f541be2b0110181398e5860f" /> 
                <id>tag:vox.com,2009-03-24:asset-6a00d09e62f541be2b0110181398e5860f</id>
        <published>2009-03-24T14:49:34Z</published>
        <updated>2009-03-24T14:49:34Z</updated>
    
        <author>
            <name>Brian</name>
            <uri>http://bricas.vox.com/?_c=feed-atom-full</uri>
        </author>
    
        
        <content type="html" xml:base="http://bricas.vox.com/?_c=feed-atom-full">
            <![CDATA[
                <div xmlns="http://www.w3.org/1999/xhtml" xmlns:at="http://www.sixapart.com/ns/at">
    
    
        
            
            <p>Like so many before me, I have now joined the github cabal.</p><p><a href="http://github.com/bricas">Check out my projects</a>.</p><p>One of the more interesting parts of github is their breakdown of <a href="http://github.com/languages">projects by language</a>. At the time of this post, Perl has 6% of the projects -- tied with C, 1% more than PHP, 3% less than Python and most surprisingly 1% less than &quot;Shell&quot;.</p><p>Obviously, given the origin of github, Ruby is way in the lead with 30%. But, I have a feeling that as people get more savvy about SCM tools, especially distributed SCM tools, Perl will make a significant dent in that.<br /> </p>
        
    
                <p style="clear:both;">

    <a href="http://bricas.vox.com/library/post/github.html?_c=feed-atom-full#comments">Read and post comments</a>

 | 

    
    <a href="http://www.vox.com/share/6a00d09e62f541be2b0110181398e5860f?_c=feed-atom-full">Send to a friend</a>

</p>

                </div>
            ]]>
        </content>
    
    <category term="perl" scheme="http://bricas.vox.com/tags/perl/" label="perl" />
    
    <category term="git" scheme="http://bricas.vox.com/tags/git/" label="git" />
    
    </entry>

    
    <entry>
        <title>Catalyst 5.71000</title>
    
    
    
        <link rel="alternate" type="text/html" title="Catalyst 5.71000" href="http://bricas.vox.com/library/post/catalyst-571000.html?_c=feed-atom-full" />
    
        
        <link rel="service.post" type="application/atom+xml" title="Catalyst 5.71000" href="http://bricas.vox.com/library/post/catalyst-571000.html?_c=feed-atom-full#comments" />
    
        <link rel="service.edit" type="application/atom+xml" title="Catalyst 5.71000" href="http://www.vox.com/atom/svc=post/asset_id=6a00d09e62f541be2b0109d07dfe19000e" /> 
                <id>tag:vox.com,2009-01-19:asset-6a00d09e62f541be2b0109d07dfe19000e</id>
        <published>2009-01-19T21:04:02Z</published>
        <updated>2009-04-06T12:36:12Z</updated>
    
        <author>
            <name>Brian</name>
            <uri>http://bricas.vox.com/?_c=feed-atom-full</uri>
        </author>
    
        
        <content type="html" xml:base="http://bricas.vox.com/?_c=feed-atom-full">
            <![CDATA[
                <div xmlns="http://www.w3.org/1999/xhtml" xmlns:at="http://www.sixapart.com/ns/at">
    
    
        
            
            <p>Like i said back in <a href="http://bricas.vox.com/library/post/catalyst-571-is-nigh.html">July</a>, Catalyst 5.71000 would happen before the moose-ified 5.80 gets shipped. That day is <a href="http://search.cpan.org/dist/Catalys-Runtime-5.71000/">here</a>. Here&#39;s the basics on what&#39;s new since 5.7015:<br /><ul>&#160;&#160;&#160; <li>Relatively chained actions&#160;&#160;&#160; </li><li>PathPrefix (I only mentioned that, oh, <a href="http://bricas.vox.com/library/post/catalyst-tip-generic-base-controllers.html">2 years ago</a> :)&#160;&#160;&#160; </li><li>$c-&gt;go and $c-&gt;visit (they do a full dispatch to the action; this should kill the <a href="http://search.cpan.org/dist/Catalyst-Plugin-SubRequest/">SubRequest plugin</a>)&#160;&#160;&#160; </li><li>Refactored component resolution (which is something else <a href="http://bricas.vox.com/library/post/component-resolution-in-57100.html">I worked on</a>)&#160;&#160;&#160; </li><li>Documentation improvements&#160;&#160;&#160; </li><li>Misc bug fixes<br /></li></ul>There&#39;s a <a href="http://cpansearch.perl.org/src/MRAMBERG/Catalyst-Runtime-5.71000/Changes">full changelog</a> available. You might also browse the <a href="http://search.cpan.org/diff?from=Catalyst-Runtime-5.7015&amp;to=Catalyst-Runtime-5.71000">search.cpan diff from 5.7015 to 5.7100</a>.</p><p>Enjoy! </p>
        
    
                <p style="clear:both;">

    <a href="http://bricas.vox.com/library/post/catalyst-571000.html?_c=feed-atom-full#comments">Read and post comments</a>

 | 

    
    <a href="http://www.vox.com/share/6a00d09e62f541be2b0109d07dfe19000e?_c=feed-atom-full">Send to a friend</a>

</p>

                </div>
            ]]>
        </content>
    
    <category term="catalyst" scheme="http://bricas.vox.com/tags/catalyst/" label="catalyst" />
    
    </entry>

</feed>


