Reviews by Alex White

cpanratings
 

RSS

Memory-Usage (0.201)

I didn't see it listed anywhere in the docs, but this only works on OSes that support procfs (/proc).

Date-ICal (1.72) **

I ran into some incompatibility between this module and iCal.app. When I schedule an event for 6pm in my local time zone, the time stamp generated is 20100219Z (no hh/mm/ss), but iCal.app ignores entries that are missing the time stamp, e.g. 20100219T000000Z. I emailed the author--he responded very quickly and explained to me that these two ISO dates mean very different things, the former refers to an entire day while the latter refers to a specific time. This seems to support the idea that this is a bug in Date::ICal since there it is impossible to generate a timestamp that refers to the time midnight in GMT.

The author was very hesitant to change this behavior since it has been in production environments for years. Instead he strongly encouraged me to use the DateTime module. For anyone else looking to do this, I've had some success doing this:

my $dt = DateTime->from_epoch( epoch => $due );

my $start = $dt->ymd('') . 'T' . $dt->hms('') . 'Z';

Other than this one bug, the module is great--I'm only rating it low so that other folks know to look to DateTime.

Chart-Clicker (2.58) *****

I've been watching this project and it keeps getting better. The prettiest plug-and-play data graphs on CPAN!

The docs are good but missing information on a number of the subtle tweaks. For example, I had troubles figuring out how to adjust the width of the line in a line chart (the default width is far too thick when there are thousands of points on the graph). It turns out to be easy enough ($ctx->renderer->brush->width(1)) but I couldn't find it in any the docs or tutorial. I ended up finding it in the examples, which are a fabulous resource:

github.com/gphat/chart-clicker-examples/

The time-series graphs are great, but bring your own date parsing of the source data. I'm looking forward to trying out the candlestick graphs.

Chart-Gnuplot (0.12) ****

A very useful module for dealing with Gnuplot.

I still prefer gnuplot over Chart::Clicker and SVG::TT::Graph::TimeSeries for graphing time series data. I've used gnuplot directly in the past and didn't have much trouble adapting to this module's interface.

My one issue was that it isn't possible to use the interactive x11 terminal (it displays the image for a fraction of a second and then it immediately disappears). I was able to get it working by including the code below in my script.

In case the code doesn't format well, see: gist.github.com/e90670b47aca7ad315c9

# interactive gnuplot terminal

use Hook::LexWrap;

wrap 'Chart::Gnuplot::_execute',

pre => sub { my ( $self ) = @_;

# if this isn't an x11 terminal, there's nothing to do

return unless $self->{terminal} eq "x11";

# add 'pause' command to script to keep image from immediately disappearing

open(GPH, ">>$self->{_script}") || confess("Can't write $self->{_script}");

print GPH "\npause mouse button1\n";

close(GPH);

# output is not a file, delete the 'output' param or we'll get an error in _execute

delete $self->{output};

};

GRID-Machine (0.101) *****

This module is similar to IPC::PerlSSH, but so much more powerful. All you need on the remote end is an ssh login and perl (GRID::Machine doesn't even need to be installed on the remote machine). Local modules can be sent to the remote end, callbacks on the remote end can invoke methods on the local end, and data structures are automatically serialized across the ssh connection. A really cool idea with a solid implementation.

The interface is well designed and the documentation is extensive and contains many useful examples. I was surprised how easy it was to get this up and running.

One thing to note when interacting with many remote machines is that the examples only illustrate non-blocking interaction with the remotes. If you want to call a slow blocking method on many machines in parallel, you'll need to take care of the forking yourself (e.g. combine with POE::Wheel::Run).

I contacted the author with a tiny bug fix and he responded to me very quickly and uploaded a new version incorporating my patch in a matter of hours.