Book review: Professional XMPP Programming with JavaScript and jQuery

Since the Jabber project officially became XMPP, this book is the second official tome of knowledge on the subject, and the first to specifically concentrate on XMPP development within the vein of leveraging the protocol to power low-latency web-based applications.  Author Jack Moffitt does a tremendous job of introducing, working with, and building systems based on the often-confusing but critically important topic of creating online experiences based on real-time. 

The book focuses on using Bidirectional streams Over Synchronous HTTP (BOSH) for empowering real-time communications over the web.  The basic layout of an infrastructure to support such systems over current web technologies is dissected, and in so doing being one of the better discussions on the topic.  This is helpful given the pushback many web devs typically have expressed in embracing a new technology stack.  
After well-written overviews of XMPP, its lifecycle and requirements, the book is all about using BOSH to build practical, real-world demos.  The examples are based on Strophe, a JavaScript library written by Moffitt, using a surprisingly simple and consistent pattern even beginning developers can pick up and be productive with in their own projects.  It's code you can easily understand and use for your own work.

The book is divided into 14 chapters that won't take you all day to read and follow along with.  Each chapter is about 20-30 pages, intelligently written, logically organized and appropriately enhanced with URLs, illustrations, screengrabs and syntactical explanations to support the subject.  Moffitt's voice is very friendly, and the chapters are long enough to give attention to the topic at-hand, but not drawn out to be boring.  You can tackle each demo at a single sitting, run the code, and then expand upon it.

The appendices are also extremely helpful, focusing on introduction to the jQuery framework, and working with BOSH connection managers.  Both are very concise and helpful (although I would have appreciated an additional appendix that gets more in-depth on working with Strophe).  

As far as the book's physical qualities, the Wrox binding is sturdy with thick paper, so it'll survive the process of violently flipping back and forth and forcing the book to lie flat as you work through the examples.

In short, Professional XMPP explores just a corner of the full range of services you can create with XMPP within the browser - not just merely IM for the web.  That serves to be the underlying theme and key message for this book: you can create great, powerful, push-based apps with the universally familiar toolset of HTML, CSS and JavaScript.

It's a great read for anyone wanting to get up and running with XMPP for the web, and will make a very welcome addition to any developmental library.