Most Helpful Customer Reviews
|
|
24 of 26 people found the following review helpful:
2.0 out of 5 stars
Very Disappointing, February 25, 2008
Catalyst is a flexible and powerful framework for writing web-based applications in Perl. But with power and flexibility you'll always get a certain amount of complexity and on the occasions that I have looked at Catalyst for a project, the complexity has got the better of me and I've always turned to a less complex (and therefore less flexible and powerful) system. I knew that Catalyst was something that I should take the time to learn, but it always seemed like such a daunting task.
For that reason, I was really looking forward to reading this book. I'm the kind of person who learns best from reading a book and I hoped that with a few tube rides reading this book, coupled with a few practical sessions in front of the computer, I'd soon have Catalyst. I'm sorry to report that having read the book, Catalyst is almost as confusing to me now as it was before.
I don't think that much of the blame can be laid at the feet of the author. Jonathan Rockway is a member of the core Catalyst development team. I've read his blog and his contributions to various mailing lists. He obviously knows his stuff. I think he's been badly let down by his editors.
The problems are at two levels. Firstly there are many typos and errors that should have been picked up at the copy-editing stage, and secondly (and more importantly) I don't think that enough thought has been put into the organisation of the book.
Let's start by looking at the typos. The problems start before the book really gets going. On the "About the Reviewers" page, each of the two reviewers gets a paragraph to say thank you to various people. For the first reviewer this is typeset as a blockquote, for the other it's a normal paragraph. You might think that it's too nit-picking to point this out, but I see it as an indication of either poor copyediting or as rushed production process. And neither of those options exactly inspires confidence in a book.
At other points, the typos are more serious. On page 32, it says "We'll also need two more CPAN modules for this chapter. These can be created using the following". An experienced Perl programmer will almost certainly mean that the author meant "installed" instead of "created", but a newcomer to the language might well find it confusing. There are also errors in code examples, so I strongly recommend keeping a close eye on the book's errata page.
All of these are simple enough errors that could have been put right with another couple of rounds of proofreading. There are, however, deeper issues that would be harder to fix.
The book takes the reader through a number of Catalyst projects of increasing complexity. But I don't think that anyone ever really sat down and planned how these projects work together to give a coherent introduction to Catalyst. A lot of the time it reads like a collection of completely unrelated articles about Catalyst. Good articles. Interesting articles. But completely unrelated to each other.
There are also important things missing from the book. The introduction to Model View Controller architecture is minimal to say the least. It might work to reconfirm what the reader already knows, but it certainly wouldn't be much use to someone who is coming to the concept completely new. The same is true of a lot of the Perl in book. Catalyst uses a lot of pretty advanced Perl syntax but none of it is explained in any detail. You can argue that a discussion of function attributes would be out of place here, but surely there's room for a mention of the right section of the Perl documentation.
In fact external references are almost completely missing from the book.There are no pointers to other books that might help you use Catalyst more effectively. If you look at all of the best Perl books, they have many references oto other Perl books and web sites. This book mentions the Catalyst web site and mailing list at the start, but that's about it.
The obvious rival to Catalyst is Ruby on Rails. And if you read books about Ruby on Rails, they are all friendly books which do all they can to draw the reader into their way of doing things. This book isn't going to convince anyone who isn't already a Perl programmer who understands MVC. I can't recommend this book to anyone outside of that group.p
|
|
|
25 of 28 people found the following review helpful:
2.0 out of 5 stars
no better than the free docs, February 16, 2008
In the index for "Catalyst" book, you'll find no entry for model, controller, action, dispatch, or ActionClass. These are some of the most fundamental concepts in Catalyst.
Many technical books suffer most because of those elements that are outside of the author's direct control: weird layouts, weird typographical conventions, and lousy indices. Knowing that, I'd never base my criticism of a technical book on the failings of its index. The failings of "Catalyst's" index, however, are telling about the failings of the book as a whole.
If it were only the index that lacked this information, it would be a minor problem. Unfortunately, there really is no comprehensive explanation of any of these topics. Though there is an entry for "View," it is explained in as little detail as the rest of these concepts.
Pages 6 and 7 provide about one paragraph each for the concepts of MVC, Model, View, and Controller. From there on, the book focuses on implementing specific tasks without explaining much of the concepts that are used to do so. Actions aren't so much explained as implied to be subroutines with attributes. While nearly all of dispatch in a simple Catalyst application is determined by a few named and attribute-laden subroutines, these are not even presented in a bullet list, let alone explained in any detail.
Instead of starting with an explanation of how the fundamentals works, Rockway works through specific, practical examples of application implementation. These provide a demonstration of quite a few of the things that one can do with Catalyst, and occasionally some explanation of why it works. The explanations are not systematic, however, and concepts are presented out of order rather than in a logical progression. By the end of chapter two, the first chapter with any specific examples, the reader is installing and using Template Toolkit, SQLite, and DBIx::Class. Views are defined as bits of code that produce output based on the content of the "stash" on page 20, but the stash itself is not given any explanation until five pages later. This kind of confusing presentation prevails through most of the book, and is sometimes rendered more confusing by the inclusion of huge code samples, some of which dominate three consecutive pages.
Some concepts are well explained. The section on chained dispatch was clear and concise, though basic actions and dispatch remained unexplained. The section on the REST ActionClass was clear, and I found it to be the most interesting section of the book.
The book desperately needs reorganization, both by inclusion of an explanation of the fundamental concepts used in Catalyst design and by reordering the presentation of material to present concepts in a logical order with no long gaps between items that belong together. Finally, a few segments could probably be dropped entirely, or at least moved further back into the book. Explanations of FormBuilder and BindLex, for example, might have been interesting and useful for the creation of serious web applications, but they are instead presented without much explanation in chapter three, where they just serve to further confuse the subject at hand.
The Catalyst::Manual documents seem to provide much of the same information, and at no cost. They also include some of the concepts that are missing from the book. Although I think a second edition of "Catalyst," or a second book on the topic, could be a very useful book to introduce new users to Catalyst, I don't think this book has much value beyond that of the existing free documentation.
|
|
|
14 of 16 people found the following review helpful:
4.0 out of 5 stars
Essential reading by one of Catalyst's core developers, January 17, 2008
Catalyst is a Web development framework that should not need an introduction. Thanks to Catalyst you no longer have to look towards Ruby on Rails if you want to develop Web applications in a flexible, efficient and effective way.
Personally I've stayed away from writing Web applications because it involved a lot of repetition, didn't produce very reusable code and was overall quite boring. Catalyst has changed that for me. It is well designed, encourages reusable code, extendable - everyone likes to write plugins -, and leads to fast application development.
This is the first book on Catalyst. The book author, Jonathan Rockway, is one of the main developers on the Catalyst project, so he knows what he's talking about. He takes you through a series of step-by-step tutorials in which you learn about how to develop ever more ambitious Web applications.
First of all, you learn how to install and set up Catalyst. This is a relatively straightforward process. Catalyst's core concept of MVC (Model-View-Controller) is explained next, and afterwards you're already creating a bare-bones Catalyst application and generating dynamic web pages. By the end of chapter two you've already created a simple database, used it as a model and set up a controller to forward the data to a Template Toolkit-based view. All of this took me less than fifteen minutes to read, write, setup, run, test and sort-of understand.
The next chapter shows you how to build a more ambitious address book application with basic CRUD (create, retrieve, update, delete) functionality, again in a series of easy-to-understand steps. Then you add sessions, authentication and authorization to the address book application.
You also learn how to write your own model classes, how to effectively test your Web application and how to deploy it to your web server. None of this is particularly difficult. Along the way, the author also introduces us to DBIx::Class, a flexible object-relation mapper that is held in high regard within the Perl community.
Catalyst is also Web 2.0 buzzword-compliant. One chapter of the book shows you how to add a REST API, how to interact with AJAX for a more responsive user interface, and how to create an RSS feed for your application's data.
You need to know a fair bit about the underlying technologies such as Perl or the Template Toolkit already; this book is a guide for competent developers to get into the Catalyst state of mind. It does not babysit you through every last step, which, for the record, I think is a good thing.
It is a relatively thin book - based on the table of contents I've read online I would have expected a much heavier volume. But after working through the book, I'm impressed about how many topics are covered in an easy-to-understand format. Like Perl, Catalyst makes easy things easy, and hard things possible. A lot of interesting topics are only touched upon, though; again, you're expected to explore on your own, using Catalyst's own documentation, its tutorials, and the CPAN, where you will find loads of plugins to extend every aspect of Catalyst.
The layout of the book isn't overly inspiring, but it also doesn't get in your way.
To conclude, if you're interested in what Catalyst has to offer, you need to read this book. It contains more information, and in a lot more coherent form, than can be found in Catalyst's own documentation.
|
|
|
Most Recent Customer Reviews
|