Reviews by Andy Grundman


Compress-Zlib (2.015) *

Compress::Zlib used to be a nice XS wrapper around the zlib library, and it was fast and efficient. Now it has become a front-end to the pure-Perl IO::Compress::Zlib, uses twice the memory, and has almost certainly taken a performance hit. I do not understand the reason for this change, please consider going back to using just zlib.

Cache-Memcached-Fast (0.06) *****

This is an excellent module. It's between 150-350% faster than the pure-Perl Cache::Memcached, and so far has been flawless as a drop-in replacement on a server with heavy traffic. Good work!

Catalyst-Runtime (5.10) *****

Catalyst is a wonderful framework for quickly building complex web applications. It removes all the mundane tasks of handling parameters, file uploads, URL structures, database models, and templates, saving countless hours of development time. It's extremely flexible: you can follow the standard method of using Class::DBI::Loader and Template::Toolkit, or use your own database models and template library.

Numerous handy plugins make things even easier to use. 10-line login screens, 5 line form validations, built-in sessions, and so on, it doesn't get much better than this.

Another cool feature is the numerous different "engines" you can run your application under. The same code can run everywhere from a shell script or CGI script for development, to a screaming-fast 100% mod_perl app for production.

Apache-Session (1.6) ***

This module sounded great at first, but I have come to realize it's not what I wanted. I was using Apache::Session::MySQL to create a sessionId for every visitor of my website. I have several multi-page forms on the site, and the session worked pretty good at maintaining the data from each form post. However, this setup left me with a few problems:
1. Every single unique user to my website creates a new entry in the sessions table. This entry will never be deleted unless I write my own expiration code to remove old sessions. With a busy site my session table would grow to be extremely large.
2. There is no support for temporary session keys. I'd like to be able to set a key that expires in X minutes. This can be handled by writing your own wrapper that sets a special session key, but it would be nice to be in the API somewhere.

I've since switched my site over to using Data::Uniqid for session ID generation and Cache::FileCache for storing temporary form data. Data::Uniqid assures me that the ID it generates is very unique, so I don't have to store every session in my database. And FileCache has the expiration support I need for holding temporary form data.

Image-Info (1.15) *****

This is a great module. I needed something that could give me an image's width and height for a variety of different formats. This module makes it easy and as a bonus doesn't rely on any external libraries!

I gave a 4 for interface because the module isn't object-oriented and returns all image metadata in a hashref.

Algorithm-Bucketizer (0.10) *****

When I was faced with the daunting task of figuring out the most optimum way to store an arbitrary number of files on data CD and an arbitrary number of audio files on an audio CD, I was planning on spending several hours coming up with the proper algorithm. Luckily a short search came up with this great module, and it was EXACTLY what I needed! The module is fast and appears to work flawlessly with all sorts of data I've thrown at it.