Computing Reviews
Today's Issue Hot Topics Search Browse Recommended My Account Log In
Review Help
Search
Web development with Clojure (2nd ed.)
Sotnikov D., Pragmatic Bookshelf, Raleigh, NC, 2016. Type: Book (9781680500820)
Date Reviewed: Jul 17 2017

The Clojure ecosystem is still rapidly evolving. Tools and libraries degrade quickly from cutting edge to best practice to abandoned by the wayside. The Clojure development culture highlights this problem, because there is a strong preference for using many small libraries rather than coalescing them into monolithic frameworks.

The first edition of this book [1] appeared only two years earlier, but the author has rightly moved to a mostly new set of libraries. The result is a book that is useful and current today, but as time sweeps on is likely to be obsolete again in another year or two.

This second edition does retain many good elements of the first, including a clear and friendly writing style, a fairly small number of typographical errors, and an excellent index and table of contents.

This book (in both editions) has a very focused audience. It is aimed at developers who are coming to Clojure with experience in other web frameworks. It assumes knowledge of Hypertext Markup Language (HTML) and cascading style sheets (CSS), and seems to expect familiarity of more specific tools and methodologies such as cross-site request forgery (CSRF), Java’s Maven, and Facebook’s React. On the plus side, there are copious footnotes, making it easy to find the needed background information online.

The book is structured as a series of examples, building the client and server side of toy apps including a chat site, report generator, and multi-user picture gallery.

On each of these skeletons, Sotnikov presents solutions to common challenges such as creating traditional web pages and single page applications (SPAs), using WebSockets, creating RESTful application programming interfaces (APIs), interacting with databases, login/registration, and deployment strategies. This is done primarily through the use of relevant libraries. The pace is breakneck; in the less than 200 pages of the main body of the book, I counted close to 30 libraries that were used in significant ways.

It should be no surprise that the coverage of each is perfunctory. In one extreme case, a library received three sentences of mention--just enough to say, “Use this,” without explaining what it does. (Luckily, the library’s name gave enough clues!)

This sounds terrible, but is actually not so bad. Each library is introduced with a footnote linking to its source or documentation. Anyone using this book for more than cookie-cutter recipes will need to follow the links and read additional documents. But, given the fast-changing Clojure landscape, this is probably better than trying to capture dozens of moving targets directly in this book.

The book is also generally good about listing alternative libraries and briefly describing their pros and cons. My only disappointment in this regard is that the book focuses on the Luminus framework, totally ignoring significant alternatives such as Pedestal.

I generally liked this book, and think it does a great job for its target audience. But it is not totally without faults. It should have at least briefly discussed editor integration--a critical set of tools in a language that depends on interactive (REPL-based) development and debugging.

I also would have liked a more modern discussion of authentication. The main example relied on basic authentication, and a brief appendix on oAuth used a library that appears to support only long-deprecated oAuth 1.0a.

I was disappointed, too, by the editorial arrangement of the online source directories provided by Pragmatic. The zip file is divided into 24 project directories, with names that are only loosely tied to the corresponding book chapters. It is possible to match up the pieces, but this could have been made much more straightforward.

That said, I highly recommend this book to anyone looking for an introduction to the many libraries needed to build a Clojure web application today.

More reviews about this item: Amazon, Goodreads

Reviewer:  David Goldfarb Review #: CR145429 (1709-0579)
1) Sotnikov, D. Web development with Clojure (1st ed.). Pragmatic, Raleigh, NC, 2014. See CR, Rev. No. 142876 (1502-0112).
Bookmark and Share
  Featured Reviewer  
 
Applicative (Functional) Languages (D.3.2 ... )
 
 
Applicative (Functional) Programming (D.1.1 )
 
 
Language Constructs and Features (D.3.3 )
 
Would you recommend this review?
yes
no
Other reviews under "Applicative (Functional) Languages": Date
Implementation of non-strict functional programming languages
Traub K., MIT Press, Cambridge, MA, 1991. Type: Book (9780262700429)
Jun 1 1992
Understanding Russell–a first attempt
Hook J.  Semantics of data types (, Sophia-Antipolis, France, Jun 27-29, 1984)851984. Type: Proceedings
Jun 1 1985
Implementing functional languages
Peyton Jones S., Lester D., Prentice-Hall, Inc., Upper Saddle River, NJ, 1992. Type: Book (9780137219520)
Apr 1 1993
more...

E-Mail This Printer-Friendly
Send Your Comments
Contact Us
Reproduction in whole or in part without permission is prohibited.   Copyright 1999-2024 ThinkLoud®
Terms of Use
| Privacy Policy