Great introductory book on Clojure. The breadth of topics covered was large, and the authors wrote in a clear and communicative way. The early chapters cover wide swaths of ground in short time, striking a perfect balance between concise and thorough. I especially liked the discussion of different reference types Clojure offers. Elucidating examples and scenarios clarified the landscape perfectly.
I also liked the later practical parts, involving some staples of Clojure ecosystem such as Ring, Compojure and Korma. This is something that I really missed in Learn You A Haskell for Great Good for example. Even deployment to AWS was covered, something that is nearly universally absent even from other hands-on books.
On to the nitpicks.
The book suffers a little bit from the constant overuse of forward (and backward!) references, sometimes pointing to the very next page. The order of the chapters is also weird: macros are handled really early, well before records or types for instance. Perhaps this is right from the perspective that macros really are fundamental to Clojure and to the Lisp family in general, but it is unfamiliar ground for most programmers and I feel the topic requires more than a single isolated chapter to be fully covered.
The nonrelational database chapter covers CouchDB, which I feel is a weird choice for a book written in 2011, given the dominance of MongoDB in the field and the fair deal of turmoil in CouchDB vs Couchbase division. I can understand that one of the authors has extensive experience with CouchDB and so it was natural for him to write the chapter, but I would have appreciated at least cursory glance at other players such as MongoDB, Riak, Redis, Cassandra etc. instead of focusing solely on one of the options.
Early on the book suffers from a weird defensive writing style with uninvited comparisons to Java, Ruby and Python. Clojure is good enough on its own, it certainly does not require belittling other languages to make it shine. Comparisons against Java in particular are intelligently dishonest. If there needs to be a pissing match, it should be between other functional programming languages such as Haskell and Scala, who compete for attention with Clojure. The book remains strangely silent on that front.