Hi, and welcome to the fifth edition of the Perl Advent Calendar.
The Perl Advent Calendar is an online advent calendar that features a different Perl module each day for the twenty four days of advent, and an extra module on Christmas day. Or if you're not Christian, it's a site that annually features descriptions of a new module for twenty five days starting on the first of December.
It all started three years ago on the 30th November, when the London Perl Mongers were having a quiet social drink in the pub. We were talking about online advent calendars and the impracticality of shipping chocolate through your web browser. I suggested that someone should do a Perl Advent calendar, where instead of chocolate or a pretty picture you get something Perl related each day.
Remembering this conversation the next day at lunchtime I quickly hacked together a Calendar and picked a module. For the first year I had nothing but links to each day and the module documentation - created with pod2html. I was surprised how popular this was. It got punted on from the London.pm mailing list to use.perl.org, NTK and even as far as the O'Reilly front page. Soon I was getting a lot of traffic - to put it in perspective more hits to my tiny little server than one of the UK's largest broadcasters was at the time.
So a year passed. And, Christmas, as it has a habit of doing, came round again. While I had decided to do another advent calendar, certain things it would seem were destined to thwart my efforts. The first of these was my stupidly scheduling a holiday in late November, just at the time when I needed to be working hard on improving the codebase. Still, given the choice again I think I'd still consider lying on the beach on a Caribbean island the sensible option. The second of these was a less pleasant distraction - while I was abroad the shared colo box was attacked by a cracker, meaning my friends had to do a reinstall just before the site meant to go live.
The long and the short of it was that 2001's calendar was almost as rushed as the previous year. I bodged the whole site together in a couple of days. Perl, of course, is powerful, so I got away with it and live to code another day. But this year, I was determined to do it better. I gave a quick talk of how I bodged the calendar together at a London.pm tech meet, if you're interested - the slides are online here
So, in 2002, I decided to try and make the calendar a bit better. One of the favoured sections from the slightly improved 2001 version was the little descriptions I added saying why I thought a module was good and why I'd picked it. In 2002 I decided to improve things by ditching the module documentation completely (since search.cpan.or has a shiny new interface now it make more sense to link to that) and improve these comments by providing a little more of my own documentation and/or tutorial on the page where it used to be.
The whole site is essentially static html that's generated every time someone makes a change. This is a much more limiting system than using a proper mod_perl based solution, but due to the way certain sections are done makes certain implementation details a lot quicker. Given that I expect the site to be viewed considerably more times than it's updated it makes sort of sense. The whole site is served by the thttpd webserver which has a very small memory footprint, and is quite efficient.
Paul 'blech' Mison wanted me to do an RSS feed so he could display it on their wall mounted terminal in their house (oh, and probably so infobot can access it.) I obliged him by using the XML::RSS module.
I decided that if people liked my comments, it'd be great if they could leave comments themselves. I thought about many ways I could create a user system and allow comments. When it all came down to it, I realised that I'd have to get people to sign up via email, and this would be tedious and no-one would really be bothered. Then I realised that most people would already have a use.perl.org account. And use.perl.org already had a set up comment system that I could create my own journals in. And I then realised I wouldn't have to do any coding, and being the lazy programmer I am, this seemed like a good thing.
Not much has been added this year - the calendar's maturing, and all the features that I have time to add have been added. This year I've tidied up the HTML, and got rid of most of the tables (it now uses divs for nearly all it's layout - suggestions on how to remove the last few tables would be great.)
Mainly this year, I've worked out that trying to do the advent calendar, while being really busy at work, while trying to help help organise a Perl conference, while trying to conduct the no small matter of planning a wedding is very exhausting. More features next year maybe then ;-).
Big thanks need to go out to all the people that have helped me with the calendar. First and foremost, thanks to M. for the wonderful camel graphic that is the calendar itself. After spending five hours trying to find copyright free images of the wise mens' camels, she came to the rescue and simple drew some for me. Thanks also to L. for the last minute work she put in doing quick alterations to the graphics. I owe you guys.
Thanks to the people that have helped me with the code that actually runs this site. I owe Andy Wardley big time for writing the Template Toolkit which this uses to create the static pages. Thanks to the various people that have helped me pick modules for these years.
Thanks, above all else to the people that wrote the modules themselves and the people who put all the hard work into developing perl itself. Without these people, there would be no advent calendar.
E, thanks for understanding when I spend all my spare time doing this.