Reviews by JT Smith


CSS-Simple (3211) *****

Great little module. Doesn't get in your way. Just easily parses CSS.

Log-Any (0.14) *****

Love love love love love this module. Makes it so easy to add unobtrusive logging to your module.

pQuery (0.07) *****

The only bad thing I have to say about this is that it could use more examples in the docs. Beyond that, I'm not sure how this hasn't been labeled one of the critical tools of Perl web development.

Spawn-Safe (2.001) *****

Works like a charm.

I would probably add a few more notes to the docs about caveats. For example if you're passing args to your program, you need to do it the right way (an array of args, rather than a string containing the program and args). And I'd probably add some more examples. That said, this module works like a dream so it's not really possible to complain about anything.

Text-CSV_XS (0.82) *****

This is my favorite way of handling CSV files and CSV inputs for DSLs. It's handled many cases that the other modules I tried couldn't handle. And it's pretty fast too.

URI (1.58) *****

I use this module everywhere. Gone are the painful days of manually constructing and deconstructing URLs

Email-Sender (0.110001) *****

If you send mail from Perl, then this is the module you should be using. It's easy to get started with, flexible thanks to things like the "transport" attribute, and "it just works"!

App-cpanminus (1.4007) *****

A must have app if you use CPAN for as much stuff as you should be using it.

Email-MIME-Kit (2.102010) *****

This is a fantastic module. Thanks to it, I'm doing email in my apps correctly for the first time in 15 years of using Perl.

ElasticSearch (0.37) *****

It works as advertised and makes things simpler than just calling ES with LWP yourself. Can't ask for better than that.

Moose (2.0000) *****

I started out as one of the biggest opponents of Moose. I hated everything about it, and I cast more than a few dispersions at those who said otherwise. I said all that because I hadn't really done anything with it other than read some articles about it.

I've now built a few hundred modules using it, and several major applications, including The Lacuna Expanse. I can't imagine going back to the old way of development in Perl. And honestly, whenever that comes up I cringe and try to find a way to convert that old code to Moose. The only "problem" with Moose is a slight startup time when running command line scripts that use Moose modules. However, that's becoming less of a problem due to performance tweaks in Moose itself and due to the availability of Any::Moose.

I cannot recommend the Moose ecosystem highly enough. Use it.

Net-FTPServer (1.122) ****

I've used this module twice now to write two different kinds of FTP servers:
- Once that was a normal server, and I just overrode the authentication mechanisms.
- Once that was a completely virtual server, virtual filesystem, etc.

Though not always straightforward, this module makes it much easier to write an FTP server than normally would be possible. It takes care of all the FTP protocol stuff and let's you get down to the business of writing your custom functionality. Great module!

Net-Amazon-S3 (0.53) ***

The only thing this module has going for it is that it actually works. Well, that and the code is actually tidy.

The documentation recommends that you use Net::Amazon::S3::Client, which is meant as a sugar layer for the module. However, instead of being sugar it just gets in the way. Avoid it like the plague. Instead restrict yourself to Net::Amazon::S3 and Net::Amazon::S3::Bucket and you'll likely get anything you need, albeit perhaps with a bit of a struggle.

Overall I think the code is much easier to read than the documentation. The design of the module is obtuse and often gets in the way of what you really want to do. But if you can get past that, the module works, so it's hard to complain about that. Therefore I'm giving it 1 bonus star because for all it's faults, it works.

SOAP-Amazon-S3 (0.0401) ***

After working with Net::Amazon::S3 for about an hour and failing miserably, I decided to give this module a try. I was up and running in less than 5 minutes.

That said, later on I found that I needed more than SOAP::Amazon::S3 could offer. I needed to set HTTP headers, but for some reason SAS limits you to only setting content type. I also needed to upload large files, but the way that SAS uploads stuff doesn't work with large files. So I resorted back to Net::Amazon::S3, and finally got it working.

If you're needs are small, use SOAP::Amazon::S3, as it's easy as pie to use.

XML-FeedPP (0.41) *****

This is easily the best RSS/Atom processor on CPAN. It's easy to install, portable, fast, flexible, and ridiculously easy to use both for reading and creating feeds. This module should be the defacto standard for feed management in Perl.

Dist-Zilla (1.093400) *****

I've used, I think, all of the various packages there are for producing a package to upload to CPAN. None of them can hold a candle to Dist::Zilla. I will be switching all my current and future modules to use Dist::Zilla.

In addition, I had a problem with trying to exclude some files from my package. I didn't know if it was a bug or just me being a noob with Dist::Zilla. I posted to the mailing list, and Ricardo and I went back and forth a bit and discovered it was a bug. And that very same day he released a new version that fixed the problem. Absolutely amazing.

If there were anything to ding about this module it's simply that the plugins don't provide much in the way of documentation. Not that they need a lot, but they could use a bit more than they have. That's probably something users of Dist::Zilla (like myself) could easily contribute.

Overall, Dist::Zilla is an amazing package, and should be used by everybody going forward.

Net-DNS (0.63) ****

I found this module to be an amazingly useful tool, but a bit obtuse to get started with, perhaps just because it's so large. However, some of the examples helped tremendously. This module would rate 5 stars in my book if it had some more example scripts or perhaps improved documentation.

Some things weren't immediately obvious like what to do with a Net::DNS::Packet returned from Net::DNS::Resolver->new->search. Which said it was returning a $packet, but made no reference to Net::DNS::Packet. A few more hyperlinks here and there and a few more examples could have saved me a little time. Other than that, great module.

Data-Validate-Domain (0.09) *****

This module is simple and does its one task exceptionally well. The interface is simple and easy to use. And best of all I was able to replace a whole boatload of ugly regex with is_domain($domain). Can't ask for more than that.

DateManip-5.42a (DateManip-5.42a) *****

Although Date::Manip is slower than the other Date modules, it's simply the best. It's the best documented, the most portable, the most functional, and the best maintained.