Monday, June 27, 2005

Review - Head First Design Patterns

Head First Design PatternsHead First Design Patterns
by Elisabeth Freeman, Eric Freeman, Bert Bates, Kathy Sierra

5 out of 5 stars

Disclaimer: I served as a technical reviewer for several chapters of this book.

Understanding design patterns and how they are used in developing an application is a critical skill. It is important that developers be able to make use of the same lexicon when discussing application architecture. Books like "Design Patterns" by Eric Gamma, et al (affectionately referred to as the gang of Four, or GoF) do well to catalog design patterns and provide this lexicon but they are difficult to use as a guide to learning and understanding design patterns, especially for the less-experience developer. "Head First Design Patterns" provides the skills required to learn and understand what design patterns are and how to use them and does it in a fun, easy-to-read way.

Although this book does present many of the patterns found in the GoF book, it is not a design pattern catalog. Its real goal is to help the reader look at their applications in new ways to discover how design patterns can simplify their development efforts. Patterns are covered in great deal, some may say in almost too much detail, but the end result is a thorough understanding of the patterns under discussion as well as the whole reasoning behind using patterns in the first place.

Each pattern is discussed in a similar way. It generally starts with a programming problem that has been handed to the development team. They look at a typical, non-design pattern solution and point out the problems with this solution, usually involving issues with making future changes. The team then starts looking for alternate solutions and discovers a design pattern. The application is then refactored using the design pattern. Simplified UML diagrams and easy to follow Java programs are used throughout the book. All of this is done is an amusing way that will keep the reader interested and not distracted.

I can strongly recommend this book for any developer with a sense of humor who wishes to understand design patterns. Even if you are not a Java programmer, the programs are simple enough for any developer using an object oriented language to understand. The book does a great job of explaining object oriented design goals and showing how each pattern fits into those goals. You won't find a discussion of every design pattern known but you will find a highly instructive discussion of some of the most common patterns. Reading this book will provide you with the skills to understand design patterns and to understand why you should be using them.

This earned 5 stars on Amazon. The book is published by O'Reilly.

This review and all my other reviews can be seen on My Amazon Reviews page.

Friday, June 24, 2005

Review - XML 1.1 Bible - 3rd Edition

XML 1.1 BibleXML 1.1 Bible
by Elliotte Rusty Harold

5 out of 5 stars

Elliotte Rusty Harold is that rare technical author who can write about anything and make it interesting. In this case, he has written 1,000 pages on XML providing us with an excellent guide book to this technology. Whether you are a beginner or advanced user of XML, there will be something in this book for you.

The book is divided into five parts. The first part discusses the basics of XML giving us an introduction to what XML is, what it is used for, and explaining the basics of creating a well-formed XML document. Part two discusses DTDs and explains how namespaces are used. Part three looks at various style languages including CSS and XSL. The section on CSS will be useful to anyone wishing to use CSS to format their HTML documents. Part four gives us a tour of some supplemental XML technologies including XLinks, XPointers, XInclude, and Schemas. The chapter that most interested me was on Schemas and the explanations were clear and complete, leaving no mystery about how to use this technology. The final part looks at a few XML applications including XHTML, RDDL, and SVG. The book does not cover writing programs to process XML documents using SAX or DOM, for example. The author has another book on that topic if that is of interest to you.

Each part of the book does an exceptional job of explaining the topic. The author gives us plenty of examples to make the text crystal clear. The author writes as a colleague helping out fellow programmers and not as an instructor droning away at a blackboard. You really get the idea that the author enjoys XML and enjoys explaining it. If you are interested in working with XML this book is truly an indispensable guide.

This earned 5 stars on Amazon. The book is published by Wiley.

This review and all my other reviews can be seen on My Amazon Reviews page.

Wednesday, June 22, 2005

Review - Lucene in Action

Lucene in ActionLucene in Action
by Erik Hatcher, Otis Gospodnetic

5 out of 5 stars

Lucene is an open source, search engine library that provides a sophisticated API that can be used to index documents and provide advanced search capabilities. Although using Lucene is not particularly difficult, like many open source projects, the available documentation leaves something to be desired. This book nicely fills that missing area.

The book starts with an introduction explaining both what Lucene is and also what it isn't. The next couple of chapters show us how to use the Lucene classes to index documents and then search for those documents. The authors next show us how to improve our searches by using different analyzers including how to write our own custom analyzers. Custom analyzers can allow, for example, searches using common misspellings or words that sound alike. The book moves on to look at the advanced search features that are available to the developer as well as explaining how to add your own features into Lucene. Since Lucene works only with text data, the authors next show us how to convert various data formats such as Word documents, HTML documents, and PDFs into text formats to allow Lucene to index and search them. The authors wrap up the main portion of the book with a look at some of the tools and extensions available that can provide some nice additional functionality such as highlighting search words in the found documents. The final chapter is a look at some real-life case studies of Lucene contributed by various authors. Some of the writing here is rather weak and seems, at least in some cases, to be little more than ads for the various sites and products.

The book is very well written and gives a good in-depth exploration of Lucene. The authors give plenty of code snippets showing the features of Lucene and provide a complete application to review as well. Anyone interested in using Lucene and wants more than the little documentation available should consider getting this book. One thing that annoyed me about the book was the constant pushing of JUnit. Most of the code samples include some traces of unit testing and seeing blocks of code with "assertEquals" everywhere was distracting to say the least. The authors should have considered that not everyone is using JUnit and that when you are trying to understand code, additional off-topic lines are simply confusing.

This earned 5 stars on Amazon. The book is published by Manning.

This review and all my other reviews can be seen on My Amazon Reviews page.