Once a week, every week

This year my new year’s resolution for 2012 will be to release a Perl distribution to the CPAN each and every week. And I think you, as a Perl developer, should do this too.

Why am I doing this? Because I’m trying to force myself into more iterative development. Note that I didn’t say a new distribution. Just a new release – of either an existing or new distribution – a week.

The simple fact of the matter is that false hubris is causing me to not be releasing as often as I should and consequently I’m seeing lots of problems.

  • Sometimes I’m tempted to do too much in one release. I’ve got lots of modules that could do with updating, but because I think they need massive amounts of work I don’t ever have the time to make all the changes. I’d be better off just improving them slightly each release and releasing them more often.
  • Sometimes I’m being a perfectionist with my first release. I’ve got a bunch of modules that I’ve got 90% done but because there’s theoretically a few more nice to have features I haven’t written yet, I’ve not shipped them. I should Release early release often. What extra features these modules need will soon become apparent once it has more real world users than just me, and hey, in the open source world someone else might write them for me.
  • Sometimes I don’t value my code enough and I don’t think the “simple” thing I spent a day or so coding would be useful for anyone else or it’s beneath me to release something so simple to the CPAN. This of course is nonsense – a day I can save someone else coding is a day they’ve saved, no matter how obvious or simple the code.

This all can pretty much be solved by forcing myself to release more often. So, here’s the challenge:

The Rules

Short version: Upload each week, every week.

Longer version:

  • Every week, as defined as the midnight between Saturday night / Sunday morning UTC to the midnight between the following Saturday night / Sunday morning UTC, I must release a new distribution to the CPAN. (Note that this gives me no extra or less allowance during daylight savings or time zone changes.)
  • For the purpose of disambiguation timings will be counted by PAUSE upload dates
  • Should an official PAUSE outage occur and I can, hand on my heart, claim that that stopped me uploading, I will give myself a grace period of forty eight hours after either the end of the outage or the end of the previous week (whichever is longer) to complete the upload. In this situation this upload will count for the previous week and an upload will still have to be made for the week that upload took place in.
  • Scoring for the year will be done by Seinfeld chain length, that is to say by counting the largest run of uninterrupted weeks, with ties decided by total number of weeks with uploads.

You Can Play Too

Of course, it would be great for the Perl world if every CPAN developer took up this challenge. More importantly, it’d be great for me because it’d give me someone to compete against and to make sure that I keep this self-set challenge up. So how about it? Fancy playing?

Posted in Uncategorized

Permalink 8 Comments

8 responses to “Once a week, every week

  1. Philippe Bruhat (BooK)

    So obviously the first release will be a tool to measure the chain length for any PAUSE ID, and the week after we’ll have a web site and a leaderboard. :-)

    Mmm, maybe someone could hack that in metacpan? (Too bad it wouldn’t count for the challenge…)

    • 2shortplanks

      Maybe not the first module, but soon…yes. In particular, having a module that can take a collection of DateTime objects and calculate the maximum chain length would actually be useful.

    • cjm

      And the website is up! I’m too cheap to spring for a domain name for this, so it’s at http://onceaweek.cjmweb.net/

      It’s pretty obvious I’m no graphic designer. If you’ve got design skills, fork it on GitHub and improve it.

      Mark, looks like you skipped a week already. Tsk tsk. (Or did I miss something when fetching the release data?)

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s


Get every new post delivered to your Inbox.

%d bloggers like this: