Reviews by Gordon McCreight


Rose-DB (0.727)

This is the first review I've ever written without actually having used the module.

I just wanted to mention that while doing some reading on a flight, I came across two recommendations for using Rose::DB in two different Oct 06 Linux magazines, Linux Magazine and Linux Pro Magazine. In the Linux Magazine article, Randal Shwartz (Merlyn on Perl Monks) says about Rose::DB both that it's "heavenly sent" and when seeing its performance "my jaw dropped". He also gives some nice history on CDBI and mentions DBIC. Looks like he's planning on writing a second article about Rose::DB in next month's issue.

In the second article, in Linux Pro Magazine, Michael Schilli, a software developer at Yahoo, writes "You may remember me talking about Class::DBI, but just recently a new, and far more exciting framework was released: Rose."

Given that there are no ratings for Rose::DB currently, I thought I should mention these two articles.

Filter-Macro (0.11) *****

I took a look at the source code for this module, and it's not really the type of thing most of us would want to have to troubleshoot ourselves. (Think 10 lines of Audrey Tang code).

That being said, it works as advertised.

I have a directory full of about 40 test files and wanted to eliminate a bunch of the code at the top of each one. Think:

use strict;
use warnings;
use Test::More;
use Test::Exception;
use Perl6::Say;
use JSON;

I also have a piece which does a bit of filename munching to automatically figure out which module the test should be testing. I stuck this in the macro too.

Since the files I tried this on were test files, it was trivial to see if the Filter::Macro module worked correctly, which it did. Not every test file needed every one of the modules included by the macro, but since they're tests they don't affect the performance of the real application, so this seemed like a good use of the Filter::Macro module.

Yes, Filter::Macro is a source filter, but it uses Filter::Simple::Compile, which does apparently awesome things which are, unfortunately, beyond my comprehension.

--Gordon McCreight

Imager (0.51) *****

Imager mixes very nice high-level abstraction with the ability to get at the nitty gritty easily. While using Imager to write an image comparison module I quickly realized that itterating over every pixel was extremely slow. After looking at the documentation a bit, I discovered methods which appear to be custom designed for low level (fast) access without the overhead of per-pixel object instantiation. getsamples() and getscanline() sped up the comparison module immensly. Even if I hadn't found those two methods, there's a very nice CountColor.xs file which is a relatively straightforward introduction to programming Imager using xs, which could get you much the same results with just a little bit more effort. There are also some examples of using Inline::C (though I didn't look as closely at those.)

I guess what I'm getting at is that like Perl, Imager makes the easy things easy and the hard things possible. For that, Tony, I owe you a beer.

CGI-Ajax (0.31) *****

CGI-Ajax has very good browser support, which I consider to be of paramount importance. I've tried the example script with Firefox, Safari, Konqueror, IE 6.0, and Opera 8 and it works flawlessly.