<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
    <title>brian d foy</title>
    <link rel="alternate" type="text/html" href="http://blogs.perl.org/users/brian_d_foy/" />
    <link rel="self" type="application/atom+xml" href="http://blogs.perl.org/users/brian_d_foy/atom.xml" />
    <id>tag:blogs.perl.org,2009-11-03:/users/brian_d_foy//178</id>
    <updated>2013-04-30T17:43:36Z</updated>
    <subtitle>A blog about the Perl programming language</subtitle>
    <generator uri="http://www.sixapart.com/movabletype/">Movable Type Pro 4.38</generator>

<entry>
    <title>Contribute to Pinto through Paypal or Flattr</title>
    <link rel="alternate" type="text/html" href="http://blogs.perl.org/users/brian_d_foy/2013/04/contribute-to-pinto-through-paypal-or-flattr.html" />
    <id>tag:blogs.perl.org,2013:/users/brian_d_foy//178.4631</id>

    <published>2013-04-30T16:53:39Z</published>
    <updated>2013-04-30T17:43:36Z</updated>

    <summary>My experiment to crowd fund Jeff Thalhammer&apos;s Pinto development is going well. It&apos;s 87% of the way there. We need $503 to reach the campaign minimum. We have a week left to get that remaining 13% to get the campaign...</summary>
    <author>
        <name>brian d foy</name>
        <uri>http://www.theperlreview.com</uri>
    </author>
    
    
    <content type="html" xml:lang="en" xml:base="http://blogs.perl.org/users/brian_d_foy/">
        <![CDATA[<p><a href="https://www.crowdtilt.com/campaigns/specify-module-version-ranges-in-pint">My experiment to crowd fund Jeff Thalhammer's Pinto development</a> is going well. It's 87% of the way there. We need $503 to reach the campaign minimum. We have a week left to get that remaining 13% to get the campaign to "tilt", and I think we can get even more than that. Our secondary money goal is $5,000, all of which goes to Jeff to work on open source features of Pinto. I like $6425 (two perfect squares next to each other). That's 0b0001100100011001 (repeats the bit pattern) or 0x1919 (repeated, and the same prime next to itself).</p>

<p>On Monday Sean Quinlan became the 100th contributor. We have a week left to get 128 contributors. Part of the experiment is to get as many people involved as we can, at any level. I don't care how much you donate: a $1 donation is just as good as $100 when we are counting contributors.</p>

<p>I've received lots of feedback. Some people want to contribute without creating a new account on yet another website. Some people don't mind a new account since they can login with Facebook, but they don't want to give their credit card to a site they haven't used before. Some people don't want to use a credit card, or the US-based payment processor doesn't like their non-US credit card.</p>

<p><a href="https://metacpan.org/author/THALJEF"><img alt="jeff_thalhammer.png" src="http://blogs.perl.org/users/brian_d_foy/jeff_thalhammer.png" width="140" height="396" class="mt-image-left" style="float: left; margin: 0 20px 20px 0;" /></a></p>

<p>For the final week of the experiment, we want to open this up to alternate means of funding. If you've been put off or excluded by the crowd funding site, you can <A href="https://metacpan.org/author/THALJEF">donate directly to Jeff through the PayPal or Flattr buttons on his MetaCPAN page</a>. Although this money won't show up on the Crowdtilt site, we can make a virtual donation to represent everything Jeff gets through the private channels so the Crowdtilt campaign still "tilts".</p>

<p>This also works for the people who want to make a semi-anonymous donation. Jeff will know who you are through your PayPal of Flattr account, but we won't list you as one of the contributors.</p>

<p>If none of these work for you and you'd still like to contribute, let me know what would work. Part of the experiment is to discover the ways that the Perl community would like to contribute directly to projects they like. There are other experiments I want to try once this one ends, and I'm collecting feedback and listening to what people have to say before I think about those. <br />
</p>]]>
        
    </content>
</entry>

<entry>
    <title>Diagnosing module installation problems in Heroku</title>
    <link rel="alternate" type="text/html" href="http://blogs.perl.org/users/brian_d_foy/2013/04/diagnosing-module-installation-problems-in-heroku.html" />
    <id>tag:blogs.perl.org,2013:/users/brian_d_foy//178.4599</id>

    <published>2013-04-22T15:25:14Z</published>
    <updated>2013-04-23T00:20:56Z</updated>

    <summary>I&apos;ve been playing with Heroku (a platform as a service) and Mojolicious, which works very well if all of the modules install. Greg Hinkle shows you how to do it. Create your mojo app and deploy it easily to Heroku....</summary>
    <author>
        <name>brian d foy</name>
        <uri>http://www.theperlreview.com</uri>
    </author>
    
    
    <content type="html" xml:lang="en" xml:base="http://blogs.perl.org/users/brian_d_foy/">
        <![CDATA[<p>I've been playing with <a href="https://www.heroku.com">Heroku</a> (a platform as a service) and <a href="http://mojolicio.us">Mojolicious</a>, which works very well if all of the modules install. <a href="http://tempire.github.io/mojolicious-command-deploy-heroku/">Greg Hinkle shows you how to do it</a>. Create your mojo app and deploy it easily to Heroku. As you do, it's dependencies are installed for you.</p>

<p>Pure Perl modules are usually fine, but Heroku is a limited Ubuntu environment that doesn't have all the libraries you probably expect to already be there. One of the modules I needed had <a href="http://www.metacpan.org/module/DB_File">DB_File</a> as a deep dependency, so deploying my app (with <A href="https://toolbelt.heroku.com">Heroku toolbelt</a> and <a href="http://www.metacpan.org/module/Mojolicious::Command::deploy::heroku">Mojolicious::Command::deploy::heroku</a>) fails. I get the rainbow barf from the uni-raptor.</p>

<div align="center">
<img alt="barfing-raptor.png" src="http://blogs.perl.org/users/brian_d_foy/barfing-raptor.png" width="500" height="450" class="mt-image-none" style="" />
</div>]]>
        <![CDATA[<p>Being new to Heroku, I didn't know how to diagnose this problem remotely and it took me a couple of hours of reading and experimenting before I ran across the various obvious <code>heroku run</code> which allows me to talk to the my Heroku console. </p>

<p>It's not as simple as running <a href="http://cpanmin.us/">cpanm</a> (once you know where it is) because there's a shebang line problem:</p>

<pre>
$ heroku run --app appname -- /app/vendor/perl/bin/cpanm --verbose --no-interactive DB_File
Running `/app/vendor/perl/bin/cpanm --verbose --no-interactive DB_File` attached to terminal... up, run.8045
bash: /app/vendor/perl/bin/cpanm: /tmp/perl/perls/perl-5.16.2/bin/perl: bad interpreter: No such file or directory
</pre>

<p>I can specify the <code>perl</code> path myself to fix that:</p>

<pre>
$ heroku run --app appname -- /app/vendor/perl/bin/perl /app/vendor/perl/bin/cpanm --verbose --no-interactive DB_File
</pre>

<p>Now I can watch the output to see that it's missing <i>libdb</i>:</p>

<pre>
Running `/app/vendor/perl/bin/perl /app/vendor/perl/bin/cpanm --verbose --no-interactive DB_File` attached to terminal... up, run.4646
cpanm (App::cpanminus) 1.5018 on perl 5.016002 built for x86_64-linux
...
--> Working on DB_File
Fetching http://www.cpan.org/authors/id/P/PM/PMQS/DB_File-1.827.tar.gz ... OK
Unpacking DB_File-1.827.tar.gz
...
cc -c  -I/usr/local/BerkeleyDB/include -fno-strict-aliasing -pipe -fstack-protector -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -O2   -DVERSION=\"1.827\" -DXS_VERSION=\"1.827\" -fPIC "-I/app/vendor/perl/lib/5.16.2/x86_64-linux/CORE"  -D_NOT_CORE  -DmDB_Prefix_t=size_t -DmDB_Hash_t=u_int32_t   version.c
version.c:30:16: error: db.h: No such file or directory
make: *** [version.o] Error 1
FAIL
! Installing DB_File failed. See /app/.cpanm/build.log for details.
</pre>

<p>This isn't a huge deal. I can compile <A href="http://www.metacpan.org/module/DB_File">DB_File</a> locally and include the result in my app, but now I know that's what I need to do.</p>]]>
    </content>
</entry>

<entry>
    <title>CPAN {Spring|Autumn} cleaning time again</title>
    <link rel="alternate" type="text/html" href="http://blogs.perl.org/users/brian_d_foy/2013/04/cpan-spring-cleaning-time-again.html" />
    <id>tag:blogs.perl.org,2013:/users/brian_d_foy//178.4571</id>

    <published>2013-04-15T07:32:00Z</published>
    <updated>2013-04-15T07:46:20Z</updated>

    <summary>Get rid of your old distributions on CPAN! A couple of years ago, I asked CPAN authors to visit their delete files PAUSE page to &quot;increase their Schwartz&quot;. Sadly, the use.Perl page has disappeared; the Schwartz Factor is the ratio...</summary>
    <author>
        <name>brian d foy</name>
        <uri>http://www.theperlreview.com</uri>
    </author>
    
    
    <content type="html" xml:lang="en" xml:base="http://blogs.perl.org/users/brian_d_foy/">
        <![CDATA[<p>Get rid of your old distributions on CPAN! A couple of years ago, I asked CPAN authors to visit their <A href="https://pause.perl.org/pause/authenquery?ACTION=delete_files">delete files</a> PAUSE page to "increase their Schwartz". Sadly, the use.Perl page has disappeared; the Schwartz Factor is the ratio of latest distros to the total size of CPAN. I named it after Randal Schwartz, who invented MiniCPAN.</p>

<p><a href="http://blogs.perl.org/users/wendy/2013/04/perl-qa-hackathon-2013-in-lancaster---notes-by-wendy-2.html">Wendy noted that deleting distros was a topic at the recent Lancaster QA workshop</a>. She didn't say much, but it sure sounded like people were looking to create policies and work to police something.</p>

<p>CPAN has never been curated, and that's by design. Let's keep it that way so the rules committees leave it alone. :)</p>]]>
        
    </content>
</entry>

<entry>
    <title>Crowd funding Pinto</title>
    <link rel="alternate" type="text/html" href="http://blogs.perl.org/users/brian_d_foy/2013/04/crowd-funding-pinto.html" />
    <id>tag:blogs.perl.org,2013:/users/brian_d_foy//178.4515</id>

    <published>2013-04-10T07:31:12Z</published>
    <updated>2013-04-10T08:27:57Z</updated>

    <summary>Can the Perl community directly fund a major project? I think we can, and we&apos;re 15% of the way there to funding Specify module version ranges in Pinto. There are some developers who are so valuable that I think the...</summary>
    <author>
        <name>brian d foy</name>
        <uri>http://www.theperlreview.com</uri>
    </author>
    
    
    <content type="html" xml:lang="en" xml:base="http://blogs.perl.org/users/brian_d_foy/">
        <![CDATA[<p>Can the Perl community directly fund a major project? I think we can, and we're 15% of the way there to funding <a href="https://www.crowdtilt.com/campaigns/specify-module-version-ranges-in-pint">Specify module version ranges in Pinto</a>. There are some developers who are so valuable that I think the community should step up to release them from the shackles of the day job.</p>

<p><img alt="pinto_crowdtilt_tweet.png" src="http://blogs.perl.org/users/brian_d_foy/Screen%20Shot%202013-04-10%20at%208.38.44%20AM.png" width="531" height="78" class="mt-image-none" style="" /></p>

<p>I've been playing with crowd funding tools, in Perl and in other areas. I posted a note to Twitter looking for volunteers, and Jeff suggested a particular Pinto feature which he needs for Stratopan</a>, a hosted Pinto service that manages private CPAN with exactly the versions of distros that you want. I set up <a href="https://www.crowdtilt.com/campaigns/specify-module-version-ranges-in-pint"></a> on Crowdtilt, a funding platform on top of Perl's Dancer framework. Jeff made the <a href="http://www.youtube.com/watch?v=y3sh0utaKH8">video to introduce himself</a>. Crowdtilt waived their fee because they love Perl.</p>

<div align="center">
<iframe width="560" height="315" src="http://www.youtube.com/embed/y3sh0utaKH8" frameborder="0" allowfullscreen></iframe>
</div>

<p><a href="https://metacpan.org/module/App::Pinto">Pinto</a> is Jeffrey Thalhammer's private CPAN management tool. If you don't recognize the name, think "The guy who invented Perl::Critic", which he gave the world for free.</p>

<p>Jeff wants to do this full time. My job (for which he offered me 10% of the company he's set up to do it) was to find him enough financial breathing room that he could spend a solid month working on turning the mostly done concept into a private beta. It's a bit magical that we calculated that number to be exactly $4096. My other job is to be the immodest one with the open guitar case. All of this money goes to Jeff so he can focus on the code.</p>

<p>We're already 15% of the way there, with me throwing in the first bit of money. If you want Stratopan, <A href="https://www.crowdtilt.com/campaigns/specify-module-version-ranges-in-pint">throw in any amount</a>. I'd rather have 512 people giving $8 than one person paying the whole thing. We want to turn this into a service for everyone, and 512 customers could be the right size to make a serious go of it.</p>

<p>If you don't need Stratopan or Pinto but you use Perl::Critic, a thank you donation would do quite a bit, too. Crowdtilt only gives us the money if we hit our target, but they also let us collect more than that. We aren't expecting <A href="http://www.kickstarter.com/projects/559914737/the-veronica-mars-movie-project">Veronica Mars</a> levels of funding, but we wouldn't complain about that either. </p>

<p>But, don't stop at giving money. Spread the word. Our secondary goal is to measure the reach of social media into Perl. Don't just retweet or link; tell your own story. Let people know how Pinto can make your life easier. Have a competition to see which Perl monger group can find the most money or the most participants.</p>]]>
        
    </content>
</entry>

<entry>
    <title>Mobrater and White Camel Nominations</title>
    <link rel="alternate" type="text/html" href="http://blogs.perl.org/users/brian_d_foy/2013/03/mobrater-and-white-camel-nominations.html" />
    <id>tag:blogs.perl.org,2013:/users/brian_d_foy//178.4457</id>

    <published>2013-03-25T06:04:00Z</published>
    <updated>2013-03-25T13:29:26Z</updated>

    <summary>I&apos;m looking for nominations for the 2013 White Camel Awards, and this year I&apos;m using MobRater, a PlainBlack service, to get those nominations at http://whitecamelawards.mobrater.com.We&apos;re looking for people who have made significant non-technical contributions to Perl and the Perl community....</summary>
    <author>
        <name>brian d foy</name>
        <uri>http://www.theperlreview.com</uri>
    </author>
    
    
    <content type="html" xml:lang="en" xml:base="http://blogs.perl.org/users/brian_d_foy/">
        <![CDATA[<p>I'm looking for nominations for the 2013 <a href="http://www.perl.org/advocacy/white_camel/">White Camel Awards</a>, and this year I'm using <A href="http://www.mobrater.com/">MobRater</a>, a PlainBlack service, to get those nominations at <a href="http://whitecamelawards.mobrater.com">http://whitecamelawards.mobrater.com</a>.We're looking for people who have made significant non-technical contributions to Perl and the Perl community. We typically divide that up into user groups, community, and advocacy, although the categories are a bit squishy.</p>

<p>Us using MobRater doesn't mean that the most voted nomination will get the award, but the committee will certainly take that into account. There might be a great nomination that comes in at the end and doesn't get that many votes. To help get around that, check back sometime to vote on the new people added.</p>

<p><A href="http://whitecamelawards.mobrater.com">You can vote on the names there and also add your own.</a> I'm really looking for new names, especially in the communities that might not overlap that well with the US and European communities that I knew much better. So far, we've had no one from India or Africa receive an award, and we've had very few recipients from Asia and South America. There might be people doing great things for their local communities that don't get much press far away.</p>]]>
        
    </content>
</entry>

<entry>
    <title>My Catincan funded cpan(1) fastest mirror enhancement</title>
    <link rel="alternate" type="text/html" href="http://blogs.perl.org/users/brian_d_foy/2013/03/my-catincan-funded-cpan1-fastest-mirror-enhancement.html" />
    <id>tag:blogs.perl.org,2013:/users/brian_d_foy//178.4456</id>

    <published>2013-03-23T00:57:06Z</published>
    <updated>2013-03-23T02:03:43Z</updated>

    <summary>I&apos;ve completed the cpan(1) fastest mirror enhancement I described in Perl in Catincan, an open source crowd funding proposal. I wanted to test this new crowd-funding system on something small. Everything worked out and &quot;Perl&quot; is the first project to...</summary>
    <author>
        <name>brian d foy</name>
        <uri>http://www.theperlreview.com</uri>
    </author>
    
    
    <content type="html" xml:lang="en" xml:base="http://blogs.perl.org/users/brian_d_foy/">
        <![CDATA[<p>I've completed the cpan(1) fastest mirror enhancement I described in <a href="http://blogs.perl.org/users/brian_d_foy/2013/02/perl-in-catincan-an-open-source-crowd-funding-proposal.html">Perl in Catincan, an open source crowd funding proposal</a>. I wanted to test this new crowd-funding system on something small. Everything worked out and "Perl" is the first project to have a fully funded feature implemented. There were some bumps because I was the first, but once I sent in my bank details, I had the money in a day. The code stuff is done, and once CPAN.pm releases a few things in my pull request, cpan(1) will have the new feature.</p>

<p>I specifically choose to work on my cpan script because it's part of core Perl, and I'd like to see other people who contribute directly to core try out some of their own features under "Perl". For those who aren't a contributor, I'm also interested in what you'd pay and how much you'd pay for a feature to be improved, implemented or whatever. Maybe you'd only pay $10, but maybe 1,000 other people would pay $10 too. </p>

<p>I'm also thinking of what I'd like to try next. I have a list of things I'd like to do, but I don't have any idea of the things that many other people would like me to do. </p>]]>
        
    </content>
</entry>

<entry>
    <title>Deprecated modules warn when they are used</title>
    <link rel="alternate" type="text/html" href="http://blogs.perl.org/users/brian_d_foy/2013/03/deprecated-modules-warn-when-they-are-used.html" />
    <id>tag:blogs.perl.org,2013:/users/brian_d_foy//178.4439</id>

    <published>2013-03-15T19:12:14Z</published>
    <updated>2013-03-15T19:26:19Z</updated>

    <summary>chris fedde asks How do we know when a CORE module is deprecated?. I don&apos;t know what was there originally, but it set off a lot of fingerpointing and posturing, and nobody answered the Perl question for the rest of...</summary>
    <author>
        <name>brian d foy</name>
        <uri>http://www.theperlreview.com</uri>
    </author>
    
    
    <content type="html" xml:lang="en" xml:base="http://blogs.perl.org/users/brian_d_foy/">
        <![CDATA[<p>chris fedde asks <a href="http://blogs.perl.org/users/chris_fedde/2013/03/how-do-we-know-when-a-module-is-depricated.html">How do we know when a CORE module is deprecated?</a>. I don't know what was there originally, but it set off a lot of fingerpointing and posturing, and <i>nobody</i> answered the Perl question for the rest of the universe that finds it that post through Google!</p>

<p><a href="http://perldoc.perl.org/perlpolicy.html#BACKWARD-COMPATIBILITY-AND-DEPRECATION">perlpolicy</a> says</p>

<blockquote>
As of Perl 5.12, deprecated features and modules warn the user as they're used.
</blockquote>

<p>There's the <a href="https://metacpan.org/module/deprecate">deprecate</a> module which provides this warning. A module is deprecated for at least one cycle before it's actually removed. That doesn't help much if you skip over several perl versions.</p>

<p><a href="http://www.metacpan.org/module/Module::CoreList">Module::CoreList</a> tracks deprecated modules too.</p>

<p>And, as one commenter, mentioned, the fallback is for people to read the <i>perldelta</i> pages to find the changes between the version they are using and the version they want to upgrade too.</p>

<p>The information is out there, and as programmers, we have everything we need to play with it however we like. :)</p>]]>
        
    </content>
</entry>

<entry>
    <title>What would Psychic::Ninja do?</title>
    <link rel="alternate" type="text/html" href="http://blogs.perl.org/users/brian_d_foy/2013/03/what-would-psychicninja-do.html" />
    <id>tag:blogs.perl.org,2013:/users/brian_d_foy//178.4418</id>

    <published>2013-03-12T17:40:11Z</published>
    <updated>2013-03-12T18:14:13Z</updated>

    <summary>I have the Psychic::Ninja namespace. I was making a new GitHub repository, and GitHub suggested that name. I took it, but I had no idea what to do with it. I created a distribution that doesn&apos;t do anything. I&apos;ve been...</summary>
    <author>
        <name>brian d foy</name>
        <uri>http://www.theperlreview.com</uri>
    </author>
    
    
    <content type="html" xml:lang="en" xml:base="http://blogs.perl.org/users/brian_d_foy/">
        <![CDATA[<p>I have the <a href="http://www.metacpan.org/module/Psychic::Ninja">Psychic::Ninja</a> namespace. I was making a new GitHub repository, and GitHub suggested that name. <a href="https://github.com/briandfoy/psychic-ninja">I took it</a>, but I had no idea what to do with it. I created a distribution that doesn't do anything.</p>

<p>I've been thinking about what a psychic ninja would actually do. He'd be a highly skilled worker who gets your work done without you knowing he did it, and he'd do it before you knew you wanted it done. If a psychic ninja was your gardener, you'd never know that grass actually grew, but you'd have the best lawn in the neighborhood.</p>

<p>How would that sort of thing show up in Perl? I haven't had many ideas about that yet, but I've been slowly hatching some idea where Perl can recognize structured data. We can play with XML, JSON, YAML, and all sorts of other formats, but we do that by loading a particular module and telling perl to use that module to parse the data we give it.</p>

<p>A bit more sophisticated are module families. We have several parsers for each of those types, and some *::Any modules to select the best one that's installed. Can we go ten steps further to make an Any::Any? Something detects the incoming data, knows the module family, and loads that. This technology already exists. It's <a href="http://www.metacpan.org/module/File::Magic">File::Magic</a>, which is just a Perl implementation of something we can do on the command line. I'm not talking about cheating with MIME types either. That's just Ninja. I have <a href="http://www.metacpan.org/module/Psychic::Ninja">Psychic::Ninja</a>.</p>

<p>The output side would be similar, but that's more complicated. If you start outputting HTML to a socket, it adds CGI or HTTP headers. If you output something that looks like CSV, you get an Excel spreadsheet. If you output XML, it directs it to /dev/null. Perhaps it looks at the directory you're in or where you are putting the data to figure out what you likely want for the output format. Some of this technology already exists in <a href="https://metacpan.org/module/IO::All">IO::All</a>.</p>

<p>Those two things I can imagine having lots of smarts and heuristics. We can train our psychic ninja to do all that. It's the stuff in the middle that I need to figure out. Is there enough information in the universe that the module can make a good guess at the task? Besides all the machine learning stuff to draw from previous runs, what other things can the psychic ninja observe? Command history? The rest of the command line, including previous and future commands in the pipeline? That is, can I just do this and have the right thing happen?</p>

<pre>
% pninja < input.xml > output.xls
</pre>

<p>It doesn't really matter what the answer is because it will end up on my list of all the other things I think about and do nothing with. I do like thinking about how much I can reduce user instructions to a program and still get what I want.</p>

<p>It might be easier to figure out what an <a href="https://github.com/briandfoy/glowing-octo-ironman">Glowing Octo Ironman</a> would do. That's just a triathlete who's drank too much Red Bull and happens to have extra arms and legs.</p>]]>
        
    </content>
</entry>

<entry>
    <title>Perl in Catincan, an open source crowd funding proposal</title>
    <link rel="alternate" type="text/html" href="http://blogs.perl.org/users/brian_d_foy/2013/02/perl-in-catincan-an-open-source-crowd-funding-proposal.html" />
    <id>tag:blogs.perl.org,2013:/users/brian_d_foy//178.4357</id>

    <published>2013-02-20T08:06:16Z</published>
    <updated>2013-02-20T09:36:18Z</updated>

    <summary>I&apos;ve proposed a &quot;Perl&quot; project on Catincan, a new crowd funding site targeted at open source software. They&apos;ve said that the first 25 projects to be fully funded have their fees waived for life. That is, if a Perl project...</summary>
    <author>
        <name>brian d foy</name>
        <uri>http://www.theperlreview.com</uri>
    </author>
    
    
    <content type="html" xml:lang="en" xml:base="http://blogs.perl.org/users/brian_d_foy/">
        <![CDATA[<p>I've proposed a <a href="https://www.catincan.com/proposal/perl/auto-fastest-mirror-configuration-cpanpm">"Perl" project on Catincan</a>, a new crowd funding site targeted at open source software. They've said that the <A href="http://www.nntp.perl.org/group/perl.advocacy/2013/02/msg2676.html">first 25 projects to be fully funded have their fees waived for life</a>. That is, if a Perl project gets funded, we have a crowd sourcing platform where the developer gets all the money.</p>

<p>That fee waiver is interesting. I've looked at many crowd funding sites. Most at least charge the credit card fees. <A href="http://www.facturedatlas.org">Fractured Atlas</a>, where I'm a board member, charges 7% for their fiscal sponsorship program. If TPF wanted to set up their own program, not only would they have to charge some fees, even to just cover costs, but they'd have to manage it as well. If there's already someone doing all that work and doing it for us for free, so much the better.</p>

<p>The only way I'm really a developer for Perl is through CPAN.pm, which bundles my cpan(1) program. It's a small thing. One of my to do items was easy fastest-mirror support. For the public, www.cpan.org acts as a global load balancer (thanks <A href="http://dyn.com/dns/">DynDNS</a>!). That's for the mirrors that the Perl NOC folks know about. My particular interest is private and local mirrors, whether for the real CPAN or the DarkPAN variety. It's a small feature that we can use as a test of the service before we think about using the service for larger projects. Maybe we like it and maybe we don't. Remember though, they are in beta, so we have a chance to help them improve their service and help other open source projects who don't have funding organizations.</p>

<p>I've already pledged to my own project. I don't particularly want anyone's money (after US taxes, I end up with so little anyway), but if you'd like to contribute a little bit to match me, I'll take my pledge and put it into the next Perl project. Perl developers: think about what you might want funded.</p>

<p>There are much bigger things we might fund for Perl through something like this, but I'll be the guinea pig. Any Perl developer (and you have to be a current contributor to propose a project) interested in funding through Catincan can talk to me privately if they like.</p>

<p>If you want to funding existing TPF projects, such as the general Perl Core Maintenance Fund, you can <a href="https://secure.donor.com/pf012/give">donate directly through TPF</a>.</p>

<p>David Golden also pointed me to <A href="http://www.Crowdtilt.com">Crowdtilt</a>, a social funding site running on Dancer. </p>]]>
        
    </content>
</entry>

<entry>
    <title>Mark your modules as adoptable if you don&apos;t want them</title>
    <link rel="alternate" type="text/html" href="http://blogs.perl.org/users/brian_d_foy/2013/02/mark-your-modules-as-adoptable-if-you-dont-want-them.html" />
    <id>tag:blogs.perl.org,2013:/users/brian_d_foy//178.4305</id>

    <published>2013-02-10T21:49:04Z</published>
    <updated>2013-02-10T22:28:49Z</updated>

    <summary>Signal that you&apos;d like to pass on your modules by giving the virtual PAUSE user ADOPTME permissions. I&apos;ve always been amazed at one of the least appreciated features of CPAN: people will step up to maintain or shepherd modules that...</summary>
    <author>
        <name>brian d foy</name>
        <uri>http://www.theperlreview.com</uri>
    </author>
    
    
    <content type="html" xml:lang="en" xml:base="http://blogs.perl.org/users/brian_d_foy/">
        <![CDATA[<p>Signal that you'd like to pass on your modules by giving the virtual PAUSE user ADOPTME permissions. I've always been amazed at one of the least appreciated features of CPAN: people will step up to maintain or shepherd modules that aren't scratching their itch. It's a different sort of activity than the long-term or drive-by participation that most open source projects rely on. There are a group of people who maintain CPAN projects that they don't even use. There are a few that I handle that I've never used in a program.</p>

<p>I think we can improve on this wonderful but underrated social feature. I created the ADOPTME user awhile ago to house the distributions from PAUSE authors who had passed away. I would modify the build file to give a warning, bump the version, and upload as ADOPTME. That's too much work, though.</p>

<p>Around the same time, Andreas started to provide the PAUSE permissions data as <a href="http://www.cpan.org/modules/06perms.txt">06perms.txt</a>. This example shows that I have "first-come" permissions (a quirk of PAUSE and me being an admin), Sinan has "module-list" permissions, and there are three comaintainers:</p>

<pre>
Crypt::SSLeay,BDFOY,f
Crypt::SSLeay,CHAMAS,c
Crypt::SSLeay,DLAND,c
Crypt::SSLeay,GAAS,c
Crypt::SSLeay,NANIS,m
</pre>

<p>If you give permissions to ADOPTME, those permissions will show up in<br />
the permissions list too:</p>

<pre>
Mac::FileSpec::Unixish,ADOPTME,c
Mac::RecentDocuments,ADOPTME,f
Mac::iPhoto::Shell,ADOPTME,m
Mac::iTunes,ADOPTME,m
Math::Cephes,ADOPTME,c
</pre>

<p>(New maintainers should kick out ADOPTME as a co-maintainer, though. I'm pretty sure <A href="https://www.metacpan.org/module/Math::Cephes">Math::Cephes</a> has a full time maintainer now).</p>

<p>There are several ways you can <a href="https://pause.perl.org/pause/authenquery?ACTION=share_perms">add ADOPTME as a maintainer</a>:</p>

<ul>
<li>If you've registered the namespace, you can edit "CPAN User-ID" field. You lose all control of the module this way.
<li>For all modules, you can pass primary maintainership to someone else.
<li>You can give a user co-maintainership
</ul>

<p><br />
Having done that, when someone comes to the PAUSE admins asking to take over a module, we can short circuit our normally conservative "announce publicly and wait" <A href="http://pause.perl.org/pause/query?ACTION=pause_04about#takeover">process to transfer</a> it immediately. Even active PAUSE contributors can use this to avoid having to respond to takeover requests for modules they no longer use. We might even be able to make this a no-human-contact process. You log into your PAUSE account, use a form to ask for permission for the adoptable namespace, and get permissions immediately. Of course, that depends on me actually building that into PAUSE myself, most likely. <a href="https://github.com/andk/pause">All the PAUSE code is in Github</a>, though, if someone wants to do it themselves.</p>

<p>Even better than that, though, is the list of adoptable modules that we can advertise to people who'd like to work on a project that they didn't start themselves; there are a surprising number of requests for that sort of thing. PAUSE also has module status flags that can indicate this. The support level "a" flag denotes "abandoned; volunteers welcome to take over maintainance". However, you have to <a href="https://pause.perl.org/pause/authenquery?ACTION=apply_mod">register the namespace</a> to use that, and someone (probably me) has to manually approve the registration. That's a bit of extra work you don't want if you're actually abandoning the module.</p>

<p>I'd really like to see someone hack MetaCPAN to show an "Adopt this module!" thingy in the search results and the various module pages. It's probably a long shot of anyone hacking RT to show people reporting or examining module bugs that the module is adoptable.</p>]]>
        
    </content>
</entry>

<entry>
    <title>perl.jobs summary for 2012</title>
    <link rel="alternate" type="text/html" href="http://blogs.perl.org/users/brian_d_foy/2013/02/perljobs-summary-for-2012.html" />
    <id>tag:blogs.perl.org,2013:/users/brian_d_foy//178.4294</id>

    <published>2013-02-09T07:45:51Z</published>
    <updated>2013-02-09T08:37:58Z</updated>

    <summary>Every year I count the number of jobs posted to jobs.perl.org (and sometime last year I put it all in github). I make no hard interpretation of these numbers and don&apos;t take them to mean anything. I think the rise...</summary>
    <author>
        <name>brian d foy</name>
        <uri>http://www.theperlreview.com</uri>
    </author>
    
    
    <content type="html" xml:lang="en" xml:base="http://blogs.perl.org/users/brian_d_foy/">
        <![CDATA[<p>Every year I count the number of jobs posted to <a href="http://jobs.perl.org">jobs.perl.org</a> (and sometime last year I put <a href="">it all in github</a>). I make no hard interpretation of these numbers and don't take them to mean anything. I think the rise in numbers up to 2006 are merely from people finding out about the service. I have no thoughts on the decline after that.</p>

<pre>
$ perl5.14.2 upj.pl
File count is 13130
Total posts is 10243
Duplicate count is 2677
Uncounted is 210
------------------------------------------------------------------------------------------
Year | Total |   Jan   Feb   Mar   Apr   May   Jun   Jul   Aug   Sep   Oct   Nov   Dec
------------------------------------------------------------------------------------------

<p>2001 |   154 |     0     0     0     0     2    24    26    21    25    16    29    11<br />
2002 |   357 |    26    30    33    14    39    21    29    43    29    33    27    33<br />
2003 |   512 |    36    35    50    46    19    36    40    59    50    48    49    44<br />
2004 |   847 |    60    52    76    73    68    82    67    80    57    81    77    74<br />
2005 |  1235 |    87   100   100   121   117   110    95    96    91   114   125    79<br />
2006 |  1499 |   134   122   121   115   135   134   111   153   114   138   142    80<br />
2007 |  1458 |   138   128   119   143   121   136   135   133    88   144   111    62<br />
2008 |  1058 |   114    99    99   125   122   107   110    82    64    57    50    29<br />
2009 |   617 |    44    44    48    63    70    40    51    45    39    63    60    50<br />
2010 |   883 |    63    69    56    98    95    64    89    79    64    85    59    62<br />
2011 |   868 |    83    79    96    62    67    71    64    87    71    66    68    54<br />
2012 |   679 |    61    63    83    58    62    58    42    60    48    63    37    44<br />
</pre></p>

<p><a href="http://jobs.perl.org">jobs.perl.org</a> provides <a href="http://jobs.perl.org/about/stats">its own counts</a>. I don't know how it's counting, but its data doesn't fit what I see from the postings. For instance, in January 2013 it counts 111 jobs but there were only 101 posts in that period. I also suspect that it's counting duplicates. <a href="http://www.mail-archive.com/jobs-discuss@perl.org/msg01476.html">I asked about this last year without an answer.</a></p>

<p>The 210 uncounted messages are people posting directly to the list, spam, and other non-job postings.</p>

<p>I only count the first instance of a posting by looking at it's URL. According to the nntp archive, many jobs have repeated posts. I don't know if these are for the same seat or the same position with multiple seats:</p>

<p><br />
<pre><br />
 43 http://jobs.perl.org/job/2308<br />
 26 http://jobs.perl.org/job/10810<br />
 23 http://jobs.perl.org/job/5231<br />
 19 http://jobs.perl.org/job/1129<br />
 19 http://jobs.perl.org/job/7420<br />
 16 http://jobs.perl.org/job/5206<br />
 15 http://jobs.perl.org/job/11684<br />
 14 http://jobs.perl.org/job/11634<br />
 14 http://jobs.perl.org/job/14088<br />
 13 http://jobs.perl.org/job/5848<br />
 12 http://jobs.perl.org/job/5086<br />
 11 http://jobs.perl.org/job/4096<br />
 11 http://jobs.perl.org/job/5167<br />
 11 http://jobs.perl.org/job/5580<br />
 11 http://jobs.perl.org/job/6799<br />
 11 http://jobs.perl.org/job/14730<br />
 10 http://jobs.perl.org/job/2843<br />
 10 http://jobs.perl.org/job/4559<br />
 10 http://jobs.perl.org/job/13608<br />
</pre></p>]]>
        
    </content>
</entry>

<entry>
    <title>A list of the Perl::Critic policies CERT recommends</title>
    <link rel="alternate" type="text/html" href="http://blogs.perl.org/users/brian_d_foy/2013/01/a-list-of-the-perlcritic-policies-cert-recommends.html" />
    <id>tag:blogs.perl.org,2013:/users/brian_d_foy//178.4196</id>

    <published>2013-01-13T20:40:26Z</published>
    <updated>2013-01-14T19:13:10Z</updated>

    <summary>I spent the morning collating the CERT recommendations and rules for secure Perl coding. Some of their policies recommend particular Perl::Critic policies. Here&apos;s that list: I put all the data in a JSON file. Jeff said it would be trivial...</summary>
    <author>
        <name>brian d foy</name>
        <uri>http://www.theperlreview.com</uri>
    </author>
    
    
    <content type="html" xml:lang="en" xml:base="http://blogs.perl.org/users/brian_d_foy/">
        <![CDATA[<p>I spent the morning collating the CERT recommendations and rules for secure Perl coding. Some of their policies recommend particular <a href="http://www.metacpan.org/module/Perl::Critic">Perl::Critic</a> policies. Here's <A href="https://gist.github.com/4525877">that list</a>:</p>

<p><script src="https://gist.github.com/4525877.js"></script></p>

<p>I put all the data in a <a href="https://gist.github.com/4525886">JSON file</a>.</p>

<p>Jeff said it would be trivial to make a <code>cert</code> theme, and now that I've collected all the data, it's someone else's turn to do that. :)</p>]]>
        
    </content>
</entry>

<entry>
    <title>The indirection benefits for Perl on LinkedIn</title>
    <link rel="alternate" type="text/html" href="http://blogs.perl.org/users/brian_d_foy/2012/12/the-indirection-benefits-for-perl-on-linkedin.html" />
    <id>tag:blogs.perl.org,2012:/users/brian_d_foy//178.4157</id>

    <published>2012-12-27T19:45:06Z</published>
    <updated>2012-12-27T21:29:42Z</updated>

    <summary>In response to one of my posts about the Advanced Perl Users Group, @belden asked me how I find LinkedIn useful: A better LinkedIn makes the world a slightly better place for me. Our ill-defined, disparate, and disperse community has...</summary>
    <author>
        <name>brian d foy</name>
        <uri>http://www.theperlreview.com</uri>
    </author>
    
    
    <content type="html" xml:lang="en" xml:base="http://blogs.perl.org/users/brian_d_foy/">
        <![CDATA[<p>In response to one of my posts about the <a href="http://www.linkedin.com/groups/Advanced-Perl-Users-JAPH-96421/about">Advanced Perl Users Group</a>, <a href="https://twitter.com/belden">@belden</a> asked me how I find LinkedIn useful:</p>

<p><img alt="belden-twitter.png" src="http://blogs.perl.org/users/brian_d_foy/belden-twitter.png" width="526" height="79" class="mt-image-none" style="" /></p>

<p>A better LinkedIn makes the world a slightly better place for me. Our ill-defined, disparate, and disperse community has many parts that can be improved and I spend a couple of minutes each morning moderating some LinkedIn stuff. Other people help out in other sites. There are a couple of things that I'd like to encourage.</p>

<p>I want to recruiters to see that <A href="http://www.linkedin.com/groups/CPAN-Developers-41338/about">CPAN Developer's Group</a> badge and ask candidates why they don't have it. Even if that means the person only ever uploaded one module, that means they've gone through the process once, which I think is the biggest obstacle to sharing. Once they get over that hump, even if just to get the badge, they are a slightly better Perler. And, it's all about a long journey where each step makes them slightly better. If they are hiring better Perlers, I'm dealing with better Perlers when I show up.</p>

<p>I want to put it in the mind of Perlers that they can make a better labor market for themselves, now or later, by showing recruiters that there are many people who are part of the Perl world. Even if most of the Perlers aren't looking for situations, a situation might find them. There's very little that someone can do to verify what happened tat some job otehr than asking a someone else they don't know (and anyone can find three good references). However, there are thousands of people who can testify to someone's CPAN activity, module usefulness, and so on.</p>

<p>Even people not looking for a situation affect the job market by the skills and associations they present. Recruiters have wonderful tools to find people now. They aren't limited to the self-selected set of submitted résumés or the word of mouth of the small group of people they know. They see information for people who aren't looking for jobs. They see patterns in profiles, and each profile slightly changes their view. The way I present myself makes another person think a little bit differently about what they expect from other Perlers in the same way that the way you present yourself affects how people may think about me.</p>

<p>Marketers might call all of this "brand maintenance". It's just unorganized and volunteer driven, just like some other stuff we like. I don't have to do it all. I just have to do a little and trust that other people will do a little somewhere else.</p>

<p></p>

<p><br />
</p>]]>
        
    </content>
</entry>

<entry>
    <title>Is there a list of CERT advisories keyed to fixed Perl versions?</title>
    <link rel="alternate" type="text/html" href="http://blogs.perl.org/users/brian_d_foy/2012/10/is-there-a-list-of-cert-advisories-keyed-to-fixed-perl-versions.html" />
    <id>tag:blogs.perl.org,2012:/users/brian_d_foy//178.3983</id>

    <published>2012-10-22T19:07:41Z</published>
    <updated>2012-10-22T20:09:55Z</updated>

    <summary>Is there a list of CERT advisories for Perl and the corresponding version in which p5p fixed them? I know that they have responded to almost all of the serious advisories with the patched versions for even the &quot;unmaintained&quot; versions....</summary>
    <author>
        <name>brian d foy</name>
        <uri>http://www.theperlreview.com</uri>
    </author>
    
    
    <content type="html" xml:lang="en" xml:base="http://blogs.perl.org/users/brian_d_foy/">
        <![CDATA[<p>Is there a list of CERT advisories for Perl and the corresponding version in which p5p fixed them? I know that they have responded to almost all of the serious advisories with the patched versions for even the "unmaintained" versions.</p>

<p>I was wondering about that last week as I was reviewing a code base that runs on v5.8, a common situation for companies with big Perl applications that have been around for awhile. I'd like to have some chart that shows which vulnerabilities you have based on your Perl version.</p>

<p>I figure someone might have this somewhere, so I haven't done the work to make the list myself.</p>

<p>Curiously, I found that <a href="https://www.securecoding.cert.org/confluence/display/perl/CERT+Perl+Secure+Coding+Standard">CERT has Perl programming standards</a>. Now I'd like a Perl::Critic plugin that checks all the CERT things. I think that would be a good candidate for a TPF grant, actually.</p>

<p>Who's invented the day extender so I can get twice the time each day to do all the things I want? :)</p>]]>
        
    </content>
</entry>

<entry>
    <title>Endorsing Perl skills</title>
    <link rel="alternate" type="text/html" href="http://blogs.perl.org/users/brian_d_foy/2012/10/endorsing-perl-skills.html" />
    <id>tag:blogs.perl.org,2012:/users/brian_d_foy//178.3913</id>

    <published>2012-10-04T00:47:27Z</published>
    <updated>2012-10-04T00:48:41Z</updated>

    <summary>LinkedIn recently changed its endorsements so that you can target specific skills in your connections. I was presented with some prompts that I found amusing, as if the entire universe already knew this: Of course, LinkedIn is a trust network....</summary>
    <author>
        <name>brian d foy</name>
        <uri>http://www.theperlreview.com</uri>
    </author>
    
    
    <content type="html" xml:lang="en" xml:base="http://blogs.perl.org/users/brian_d_foy/">
        <![CDATA[<p><a href="http://www.linkedin.com">LinkedIn</a> recently changed its endorsements so that you can target specific skills in your connections. I was presented with some prompts that I found amusing, as if the entire universe already knew this:</p>

<div align="center">
<img src="http://blogs.perl.org/users/brian_d_foy/linkedin_endorse_1.png"/>
</div>

<p>Of course, <a href="http://www.linkedin.com">LinkedIn</a> is a trust network. Things like these endorsements, or the <A href="http://www.linkedin.com/groups?viewMembers=&gid=41338&sik=1349300475475">CPAN Developers Group</a> and the <a href="http://www.linkedin.com/groups?home=&gid=96421&trk=anet_ug_hm">Advanced Perl Users Group</a>, let someone outside the Perl universe know one person inside then discover trustable people they don't know. With so many companies looking hard to find <i>good</i> Perl programmers, your endorsement might be able to help a friend who's a good programmer but not highly discoverable.</p>

<p>I was amused at a few other possible endorsements. Does Randal Schwartz know Perl?</p>

<div align="center">
<img src="http://blogs.perl.org/users/brian_d_foy/linkedin_endorse_3.png"/>
</div>

<p>Is Damian Conway good at public speaking? I can endorse him, although they don't have a button for "Everyone else should just give up":</p>

<div align="center">
<img src="http://blogs.perl.org/users/brian_d_foy/linkedin_endorse_4.png"/>
</div>

<p>Right after I finished my LinkedIn tasks, I watched Rachel Botsman's "The Currency of the New Economy is Trust" TED Talk, which just happened to be next in my podcast feed. She mentions <a href="http://www.stackoverflow.com/">Stackoverflow</a>:</p>

<div align="center">
<object width="526" height="374"><param name="movie" value="http://video.ted.com/assets/player/swf/EmbedPlayer.swf"></param><param name="allowFullScreen" value="true" /><param name="allowScriptAccess" value="always"/><param name="wmode" value="transparent"></param><param name="bgColor" value="#ffffff"></param><param name="flashvars" value="vu=http://video.ted.com/talk/stream/2012G/Blank/RachelBotsman_2012G-320k.mp4&su=http://images.ted.com/images/ted/tedindex/embed-posters/RachelBotsman_2012G-embed.jpg&vw=512&vh=288&ap=0&ti=1572&lang=en&introDuration=15330&adDuration=4000&postAdDuration=830&adKeys=talk=rachel_botsman_the_currency_of_the_new_economy_is_trust;year=2012;theme=not_business_as_usual;event=TEDGlobal+2012;tag=business;tag=collaboration;tag=community;tag=web;&preAdTag=tconf.ted/embed;tile=1;sz=512x288;" /><embed src="http://video.ted.com/assets/player/swf/EmbedPlayer.swf" pluginspace="http://www.macromedia.com/go/getflashplayer" type="application/x-shockwave-flash" wmode="transparent" bgColor="#ffffff" width="526" height="374" allowFullScreen="true" allowScriptAccess="always" flashvars="vu=http://video.ted.com/talk/stream/2012G/Blank/RachelBotsman_2012G-320k.mp4&su=http://images.ted.com/images/ted/tedindex/embed-posters/RachelBotsman_2012G-embed.jpg&vw=512&vh=288&ap=0&ti=1572&lang=en&introDuration=15330&adDuration=4000&postAdDuration=830&adKeys=talk=rachel_botsman_the_currency_of_the_new_economy_is_trust;year=2012;theme=not_business_as_usual;event=TEDGlobal+2012;tag=business;tag=collaboration;tag=community;tag=web;&preAdTag=tconf.ted/embed;tile=1;sz=512x288;"></embed></object>
</div>]]>
        
    </content>
</entry>

</feed>
