Reviews by Christiaan Kras


Data-Page-Navigation (0.06) ****

I use this module to get the pagenumbers for pagination when using DBIx::Class. DBIx::Class returns a Data::Page object when using the pager() method but Data::Page can't return a segmentated output.

By simply loading this module Data::Page gets extended with a couple of methods that allow for easy implementation of pagination. The fact that it modifies the existing Data::Page module might not be the nicest thing and could lead to bugs if Data::Page would implement these methods. Still, it's a small extension so I wouldn't worry too much about it.

DBIx-Class (0.08200) *****

By far the best ORM available. Every time I've used an ORM for some other platform (such as Zend_Db_Table for PHP5) I always cringe to DBIx::Class. DBIx::Class makes database/SQL interaction so much more enjoyable.

The only thing I don't really like is how complex a relatively easy SQL query can become with SQL::Abstract. But once you figure that out and pass that hurdle you're good to go.

Mojolicious (3.41) *****

Mojolicious has become my favorite choice of web framework. It took me some time to get used to the EPL template syntax, but nowadays I prefer it over Template::Toolkit. Need a quick prototype? Use Mojolicious::Lite to get up and running fast. Converting from Lite to a full fledged Mojolicious application is very easy as well.

The router is very powerful as well and easy to configure. I always liked Catalyst's way of doing it but this works very nice as well.

I like both Catalyst and Mojolicious but prefer Mojolicious these days. It's lighter and for me easier to extend. With Catalyst it all feels a bit more complex.

Another plus are the friendly and helpful people on IRC.

Validation-Class (7.831) *****

Validation::Class has a very helpful and responsive author. Questions are answered fast and bugs get fixed fast as well.

My rating seems a bit off, overall I give it 5/5, but the specifics are rated at 4/5. That's because there's always room for improvement. The reason I'm rating it 5/5 overall is because Validation::Class is by far the nicest validation module available.

I mainly use it for HTML Form validation and I'm aware there's HTML::FormHandler as well that actually just does that. In fact, there's nothing wrong with HTML::FormHandler and it might me easier to use for form validation. But I need to be wary of memory usage and speed and since HTML::FormHandler uses Moose, and Validation::Class not it was easy for me to make a decision.

In my quest to find a validation module that doesn't use Moose Validation::Class works best for me. I've seen modules that try to validate as soon as data is being passed to it and generate a list of errors. This is not always desirable. For example, if you're editing an existing form you want the data in it, but only validate after the form has been submitted. With Validation::Class you can just do that: prefill the data, fill in the form, and validate after form submission.

Another neat feature I use all the time are profiles.

Daemon-Control (0.000009) ****

Just what I needed! I use it to create init.d scripts for my Catalyst webapplications. I find writing an init.d script tedious and rather dreadful, but Daemon::Control makes this a breeze. The common Perl webservers support the creation of pidfiles etc., but I found it easier to let Daemon::Control handle all this.

Not a full 5 out of 5 stars yet. I'd like to see the path variable be automatically discovered when generating the init file, but that's just a small thing really.

I'll be definitively using this module for more init.d scripts.

XML-Twig (3.38) *****

I ran into some memory limitations whilst using XML::LibXML. A 265MB sized document would take about 2GB of memory which wasn't what I had available, nor did I want my program to take up that much memory.

I was able to quickly switch to XML::Twig and doing so was a joy. Memory usage has gone down to 40MB. At a later point it turned out to be about 90MB. Even so, a HUGE improvement.

The documentation was easy enough to follow, although it would be nice if all the methods were available in the document index. Using this module makes using XML a lot easier. I'll probably be using this module for all my future XML parsing needs.