Enter your mobile number or email address below and we'll send you a link to download the free Kindle App. Then you can start reading Kindle books on your smartphone, tablet, or computer - no Kindle device required.
To get the free app, enter your mobile phone number.
Clojure Web Development Essentials Paperback – February 24, 2015
|New from||Used from|
The Amazon Book Review
Author interviews, book reviews, editors picks, and more. Read it now
Customers who viewed this item also viewed
Customers who bought this item also bought
What other items do customers buy after viewing this item?
About the Author
Ryan Baldwin is a theatre major turned computer science geek. Hailing from the prairies of Western Canada, Ryan has been developing software on a wide array of platforms and technologies since 2001. Once, he wrote a crazy system application that compiled XSD Schema Docs into XAML forms that performed two-way binding with underlying XML documents in .NET WPF. Why? Because it had to be done. Another time, he worked on a project that mashed many social networks into one gigantic thing that essentially allowed users to find out all of their indirect connections. It was eventually shelved. In 2012, he relocated to Toronto, where he works with the University Health Network, developing systems and tools that facilitate patient information exchange. You can often find him wearing headphones and jittering in coffee shops.
If you buy a new print edition of this book (or purchased one in the past), you can buy the Kindle edition for only $2.99 (Save 82%). Print edition purchase must be sold by Amazon. Learn more.
For thousands of qualifying books, your past, present, and future print-edition purchases now lets you buy the Kindle edition for $2.99 or less. (Textbooks available for $9.99 or less.)
Top customer reviews
There was a problem filtering reviews right now. Please try again later.
Rather than trying to survey all the tools and libraries available to the Clojure web developer, the author has made the very sensible decision to zero in on Luminus, a mature and well-crafted base project that provides you with the fully-functioning core of a web application, without locking you into a rigid framework. Starting from the Luminus defaults, Baldwin then walks you step by step through the process of configuring the server, configuring the logs (including the tricky bits!), handling forms, persisting data to a SQL database, handling logins, security, and sessions, and finally deploying to production. At each step, you have a fully operational (though incomplete) web application to play with, so the feedback is immediate and satisfying.
In keeping with the Essentials theme, the author sticks to the basics, and resists the temptation to drag in all the interesting related topics that so often muddy and confuse introductory tutorials. Anywhere Luminus offers the developer a wide range of choices, Baldwin picks a good one and runs with it, without falling down the rabbit hole of trying to consider the strengths and weaknesses of each option. This makes the book much easier to follow, retain, and apply, and keeps it from getting boring. Those other choices are out there, and you can learn them later if you're interested, but when you do, you'll already have the basic essentials down, and will be much better equipped to relate new information to what you already know.
As a web developer who uses exclusively MySQL (and/or MariaDB) in my day job, I was interested to see that Baldwin chose to focus on PostgreSQL as the database for this book. That's a good choice for anyone interested in deploying to Heroku or a similar platform, where Postgres services are easier to find than MySQL services, but it might surprise you if you're coming to this book from other web development environments like me. If you haven't played with Postgres before, this book might whet your appetite for more.
If I had to criticize this book for anything, it would be regarding two points. First of all, this book is written from the point of view of a developer working either in OS X or Linux, not Windows. That's understandable, since Clojure development involves a certain amount of command-line work, and Windows brings in a bit more complexity when it comes to getting everything up and running. The omission does make it easier for the book to stay focused on the Essentials of Clojure web development, but might prove frustrating to Windows-based developers trying to get their feet wet in Clojure for the first time.
My other complaint is that the book does not spend a lot of time on the topic of web security. This, again, is probably a tactical decision in the interests of keeping to the Essentials, but being the naturally paranoid person that I am, I wish the book had devoted more discussion to the topic. It does at least walk through the process of using bcrypt to secure passwords, instead of making the mistake of storing them in a decryptable form, so that's a big point in its favor. But an appendix, or at least a link or two, would not have been amiss.
Other than those two complaints, I was very impressed by this book. The writing style is lively and interesting, yet clear and to the point. The examples are easy to follow and do a good job of conveying the technology they are trying to explain. And I love his decision to implement his database interactions using YeSQL rather than a more complicated ORM or ORM-ish system. As someone who has to wrestle with ORM syntax every day (in PHP, no less), the simplicity of straight SQL-as-a-function is something I drool over.
I've got a number of Packt books and I keep going back because they're generally high quality and their e-book format is just right for the Kindle app on my iPad, but I have to say that Clojure Web Development Essentials looks like one of their best so far. Kudos to Ryan Baldwin on a great job, and I hope he decides to do a follow-up book on securing Clojure web applications. (Hint, hint.)
In line with the title, the author explains the nuts and bolts of Clojure Web Development but gives the links of the various libraries for the ones who want to examine in depth all the functions/parameters that each library has.
The first chapter starts by describing the chosen Clojure web framework: Luminus. It's quite an interesting framework that encompasses some libraries, among which Ring.
In the second chapter you can find a description of Ring and Ring server. The author makes you understand the basic blocks of Ring and how the Ring server works together with the components generated by luminus.
With the third chapter you can have an overall vision of Timbre logging system and the ways in which you can change Timbre configuration
The fourth chapter deals with URL Routing and template rendering in particular with Compojure and Selmer. You can test the way Compojure works with routes and you can build a template
In the Fifth chapter the author explains Form validation with the use of Validateur and noir.validation dealing with the most common rules of input validation
The author chooses to use clojure.test as the namespace for testing in the Sixth chapter. After a short introduction about TDD he explains that in Clojure he makes use of REPL , so it's possible to shorten the process of testing new functions. And with an editor such as Light Table with its InstaREPL things go even better. But if you develop in team there's always the need of use a more structured way of test.
In the seventh , eighth & ninth Chapters the book presents the ways in which you can interact with databases. The examples are based on Postgresql.
Migratus is the plugin that's used to manage the database migrations and YeSQL a tiny library that generates functions out of your own SQL since Ryan Baldwin
claims to be not convinced of the use of ORM. The examples guide you to write the code for routes, templates and to implement transactions with YeSQL and with jdbc
In the chapter titled "Sessions and cookies" the book deals also with the creation of a login form and with access restriction.
The last chapter speaks about the deployment of an application and the configuration of the environment
In the appendix you can find a crash course about Korma that's a clojure DSL for Sql.
I found this book very interesting. It's for people who want to start developing Web apps in Clojure. You must have a prior knowledge of Clojure syntax and if you have already worked with Clojure you'll be at ease.
First off, this book is not a Clojure fundamentals book. I think there are better titles out there if you want an intro to Clojure basics and fundamentals. If you've got some Clojure exposure, this book does a really good job at providing practical applications of Clojure for web development.
The book starts by introducing Luminus (notice the spelling, I didn't, it took me a while to realize I had been spelling it wrong). What I really liked was that it went into further details on Ring, which is really cool. It even covers testing which is usually just glossed over in some other books. All the basics of a web app are in here, including routing and handlers with a good appendix that covers Korma for doing SQL that I found really useful. I think this book does a really good job at covering web development with Clojure.