Chicago.PM Planning a One-Day Perl Workshop - Interested?

Chicago.PM is planning a small, one-day Perl workshop. Depending on interest, it will either be an "Intermediate Workshop", for people who've gotten started with Perl and want to learn the skills to turn them into a Perl Programmer, or it will have two tracks: Beginner and Intermediate.

The cost is undetermined, but right now we are shooting for "Free". If there ends up being a cost to Chicago.PM, I am hoping that some generous Chicago.PM members will be willing to help defray the cost to the end-user (and I will be one of them), or some generous corporate benefactor might be interested in funding a little in return for some recognition and thanks.

Chicago.PM New Website! New Meetup URL! New Presentations Project!

Lots of news for the Chicago.PM group! We've got a new Chicago.PM website, powered by Github, up at The website is completely editable via Github using the Octopress system. We hope to start sharing resources about Perl on our website, increasing the exposure of the good tutorials and learning sites.

Chicago.PM - Beyond grep - Expanding the Programmer Toolset

Last week, Andy Lester (author of Land the Tech Job You Love) came to talk about tools to help programmers work more efficiently and the 2.0 release of his Ack search tool.

I Bless You in the Name of the Stringified Object

A co-worker came to me today with a curious error message:

use DateTime;
my $date = DateTime->new( year => 2013, month => 4, day => 15 );
print $date->today;'

This code gives the error Can't locate object method "_normalize_nanoseconds" via package "2013-04-15T00:00:00" at /usr2/local/perlbrew/perls/perl-5.16.3/lib/site_perl/5.16.3/x86_64-linux-thread-multi/ line 252.

The package "2013-04-15T00:00:00" is the curious part: It looks like a stringified DateTime, but who could possibly be stringifying a DateTime object and then using that as a package name?

Thoughts while changing the API of a massive framework...

At the Bank we have a home-grown ETL framework that we've been using for quite some time. We recently completed a total rewrite, but unfortunately we left out a few changes. Had I gotten those changes in 5 months ago, I would have only had to break the API of about 10 modules. Today, in order to make those changes, I have to break the API of 122 modules.

What follows is an account of this ordeal, provided for entertainment value only. There will be a future post that explains some of the things I did to make this task surmountable.