Before January ends I wanted to look back on my last year in Perl. I didn't have any particular reason for this: I didn't have any goals really. I had been away from Perl for over a year, so I just wanted to get back into things.

I did know that I needed to manage my Perl community time better. Randal told me that he gives himself about two hours a day for that, and I think I was doing more than that. It's not that I was being more productive: a good portion of it was probably just context-switching since I was involved in some many things.

So, I wanted to transfer a few modules, avoid writing new ones even if they were really cool and "would only take 15 minutes", and see what I could hand over to up-and-comers. I won't give myself a grade, but here are the highlights. I'd like to hear other people's highlights too. :)


I finally started reading Perlmonks. It started because I noticed that someone had asked about HTML::LinkExtor::Simple, which is one of my modules. I added the feature and responded to the poster, so I ended up with a Perlmonks account. Um, I'm supposed to have more free time, remember?

I've only been around about six months, but somehow three of my nodes ended up in Best Nodes of the Year: brian's Guide to Solving Any Perl Problem, Regrettable module names, and Programming is combat. I'm not sure they deserve to be there, but there they are.


I used to post a lot to the various Perl newsgroups. I wanted to cut that time sink out. I do look over the messages each day, but I keep telling myself "not my problem not my problem not my problem". I try to do that with Perlmonks too, but I think Perlmonks is just my new usenet, although I'm trying to create new content rather than answer questions.

It is amazingly hard not to answer questions though. I know the answers a lot of the time. Still, I need to reclaim that time. I might need Usenetaholics Anonymous if I feel a relapse coming on.


DBM::Deep is the most useful module to come along in a long time. There may be cooler modules, or more clever modules, but I find myself using DBM::Deep for a lot of things, even if I know I'm going to replace it later. No more futzing with different DBM implementations and libraries, knowing the limitations of each library, or selecting the right Perl module.


I wrote the first versions of Test::Pod, but Andy Lester was much more interested it than I was so I gave it to him. It's incredibly useful and easy to use, especially since Andy added some other interface points. That's a godo thing, because I don't have to maintain it any more. I'm just a normal user now.

Maintaining multiple projects

I didn't want to make a bunch of new modules last year, so I focussed on maintaining the ones I had, even if nobody was complaining about them. I updated all of my public modules and cleaned up their distributions so they had all the modern conveniences. I came up with some tools to help me manage all of my modules in one shot, and I described these in Parallel maintenance on many projects, part I and Parallel maintenance on many projects, part II: The Testing.

This stuff is like a Module::Release taken to the next level. A lot of this stuff I'm using all by myself, but maybe some of it will leak out someday when I find a lot of free time.


I couldn't completely cut out new modules, but the ones I created are really simple.

Net::MAC::Vendor isn't really a module so much as data with an interface. I was working on a project to deal with network topology and I wanted to turn MAC addresses into vendors. For instance, "Did Apple make that thing?". I downloaded the IEEE assignments and turned it into a big hash. I like it, but it was barely an afternoon's work.


I got a Garmin GPS add-on for my Handspring Edge and had a lot of fun walking around and plotting waypoints. I wanted to get that data into my programs, though, so I needed to turn the Palm data file into a data structure. So, I wrote Palm::Magellan::NavCompanion. It's not much of a module because all of the hard work is done by Palm::PDB. I just had to figure out how to parse each record, but that wasn't so hard.


Finally, someone fixed those annoying problems with CVS. It's pretty spiffy, but I still find myself typing "cvs status" a lot. I'm still getting use to subversion, but so far I like it.

The Perl Review

I put out two print issues of The Perl Review. Things are going well, and I'm still learning a lot. The first two issues were all about just getting things on paper and delivering it to subscribers. That was a lot of work, but things are getting easier.

There is actually a lot of interesting programming that goes along with TPR: I got to play with Business:: OnlinePayment, which is a heck of a lot simpler than credit-card processing in the olden days of the 1990s. I get to play with a lot of postal addresses too, which means I get to play with various post office web sites to verify addresses and normalize the form that goes on the label. I wrote about some of this in Perl, Authorize.Net, and Broken Kneecaps and Perl and Address labels, oh yeah!.

There is a lot more programming I need to do, too: most of them interesting problems too.

The Perl Journal

I'm back to writing a column for The Perl Journal, which Randal had taken over for me while I was away. I wrote a long post about "modulinos" (How a script becomes a module) which I rewrote and turned into a TPJ article. That article got the most response of any article I've written for them. A Perlmonks meditation is a great focus group for new articles. :)

The modules mailing list was mostly a way for people to register their namespacces and get them into the module list. The module list as most people know it is no longer supported. Still, I'm the person registering most namespaces and helping people choose good names. The other admins pick up when I slack off or disappear, and they handle all of the PAUSE ID issues now. To manage my time I don't approve any more PAUSE IDs because I don't have time to pay attention to it.

There was a problem with admins letting some module requests slip through the cracks, but José Castro wrote a nice little tool for us so we can track what we still need to pay attention to. It's a simple script and it's working. We didn't need RT or anything really fancy or complex.

PerlFAQ autoposter

The perlfaq autoposter is back in operation. It posts a new faq to comp.lang.perl.misc every six hours, and then the usenet masses tear it apart. It's the driving force behind the evolution and updating of the perlfaq, which I also mostly handle. I wanted to pass this off to someone else, but nobody has volunteered, so I'm still doing it. :)

The latest version of the FAQ is always at


Kwalitee is kinda cool, and it's a number. Give me a number and I'll try to make it better. I got a little crazy with that, but it did pressure me to improve and standardize a lot of my modules, even if the metrics were a bit silly.

Along the way I started using SQLite, which is also very cool, but I had to stop looking at my Kwalitee because I was spending too much time looking at my Kwalitee. :)

Randal's house

I finally got to visit Randal and crash at his house since OSCON was in Portland. I had only been to Portland once before, and then only long enough to find out I couldn't pump my own gas. It's still kinda odd that Randal pulls up to a gas pump and just keeps on with the conversation, making no move to get out of the car.

There are some fine steaks and prime-ribs to be had in Beavertown, let me tell you.

I also got to drive Randal's car. Very, very nice in the corners, and there is a nice, twisty road leading back to his house. :)

brian d foy <>

Replies are listed 'Best First'.
Re: My Year in Perl, 2004 edition
by zentara (Archbishop) on Jan 14, 2005 at 14:25 UTC
    DBM::Deep is the most useful module to come along in a long time

    I agree there. It is remarkable it took this long before someone made it.

    I'm not really a human, but I play one on earth. flash japh
Re: My Year in Perl, 2004 edition
by davis (Vicar) on Jan 14, 2005 at 15:47 UTC
    I also got to drive Randal's car. Very, very nice in the corners, and there is a nice, twisty road leading back to his house. :)
    Ok, I have to know: what car?

    It wasn't easy to juggle a pregnant wife and a troubled child, but somehow I managed to fit in eight hours of TV a day.
        What is so odd about Portland gas pumping? Inquiring minds want to know!
A reply falls below the community's threshold of quality. You may see it by logging in.