December 2012 Archives

Graphing CPAN author's number of distributions over time

Script: graph-cpan-dists-over-time

One glaring deficiency: does not take PAUSE deletions into account (is there a MetaCPAN API for this?) Thus, the number of actual dists on the graph is monotonically increasing and might be higher than the number of actual dists on CPAN.

Generated graph is still rough and number of authors is limited at three because I'm too lazy to tweak the sample script from Chart::Lines.

Sample graph:

Personal end-of-year report for 2012

Previous end-of-year report for 2011. Previous quarterly report: Apr-Jul 2012.

2012 is my most productive year yet in my "CPAN career": 943 releases (compared to 495 in 2011). That's about 2.5 releases per day! So far I have about 215 distributions under my account, almost half of them (96) are new modules in 2012. The reasons the number of distributions is high include: Perinci modules family being split into many distributions (and then some, to avoid recursive dependencies problems that I seem to keep bumping into), the various Task distributions, and also the fact that releasing CPAN modules is so darn fun! A little too much fun, I'm afraid.

Oh Carp!

Recently got hit with this error:

Goto undefined subroutine &Carp::shortmess_real at /usr/share/perl/5.10/Carp.pm line 41.

What's going on?

CGI is dead, long live CGI

Yesterday's (not so pleasant) experience of trying to deploy Pastedance *) on an internal web server at work makes me appreciate the simplicity of CGI. CGI might be out of favor for production sites, but for personal and internal applications, it's still the best choice for me.

  • There's no daemon. No slowly-but-ever-growing process that eventually gets killed or thrashes the server (thus, no need to configure ulimit/rlimit, or write another script to monitor this, or add a condition in code to exit periodically). No …

Nicer dumping of data structure in Log::Any

When you log data structures with Log::Any, e.g.:

% DEBUG=1 perl -MLog::Any::App='$log' -e '... $log->debugf("ccls=%s", $ccls); ...'

do you often see something like this?

[38] ccls=[{fmt => ['integer','integers'],text => ['integer','integers'],type => 'noun'},{expr => 1,fmt => 
'default value %s',text => 'default value 1',type => 'clause'},{expr => 1,fmt => '%(modal_verb)s be divisi
ble by %s',multi => 1,text => 'must be divisible by 2 and 3',type => 'clause'},{expr => 1,fmt => '%(…

About Steven Haryanto

user-pic A programmer (mostly Perl 5 nowadays). My CPAN ID: SHARYANTO. I'm sedusedan on perlmonks. My twitter is stevenharyanto (but I don't tweet much). Follow me on github: sharyanto.