Reviews by Hakim



Data-Rx (0.200006) ****

Powerful data validation library, that can be used in several different languages (in theory, though the Perl implementation is the most complete.)

I've been using Data::Rx to parse inputs and validate outputs for the Open311 spec, and the process has been mostly great. I didn't want to just use an XML validation library, as the spec allows output in both XML and JSON format, so this really hit the spot. Most concepts are quite easy to model, though some complex schemas can't be modelled with the basic building blocks, and need to be written as plugins in Perl (which turns out to be easier than expected, and quite good fun.)

The documentation is a weak point, given how sophisticated this kind of recursive typechecking can be, but hopefully latest release's contributed docs/examples help a little with that.

Devel-Declare-Lexer (0.014) *****

"Easier than Devel::Declare" is a rather modest goal to be fair, but I'm impressed with D::D::Lexer so far.

Documentation could do with some work, and the utility classes in ::Factory aren't quite complete, but working with this you mostly get a pleasant feeling of not banging your head against a confusing and fragile wall all the time. The debug output is also very helpful.

Perl-Tags (0.31)

The docs and structure has been significantly revised for recent releases.

Spreadsheet-WriteExcel (2.37)

I've used this module many times for working with the Horrible Spreadsheet Format, and am always impressed by it. The interface, while perhaps not perfect, does try to make most common tasks easy. Where that isn't the case, there may be a module in the CPAN ecosystem that handles things. And if not, the extensive documentation and examples probably have some advice or sample code to cadge.

Some examples:

* Unicode: just write the string with utf8, and it Just Works. (S::WE converts the data into Excel's required UTF16BE format, so you don't have to care). Really pleased with this useful attention to detail!

* Dates: this doesn't quite Just Work, but it's well documented, so you just have to make sure you issue a ->write_date_time call instead of the usual ->write.

* Formatting: S::WE::Styler lets you sensibly reuse styles. Ideally this could be merged into the release

* Autofit columns: that's a feature of the Excel client, not of the spreadsheet format. But the examples suggest how to replicate the functionality, by adding a write-handler that guesstimates and stores the maximum width for a given column.

bw-db (1.1.1) *

An amusing thin wrapper around DBI, with no useful tests, and the "silent failure on error" pattern. Yay.

Utterly ignorable, were it not for the author's "cheeky" 5* self-review.