+++
title = "Web Development with Clojure: Build Bulletproof Web Apps with Less Code - Dmitri Sotnikov"
date = 2017-06-22

category = "review"

[taxonomies]
tags = ["books", "en-au", "dmitri sotnikov"]
+++
{{ stars(stars=2) }}

First of all, this book suffers from the same mistakes every single Lisp-like language book I've read: They throw a truck at you, then slowly, while you're being crushed by it, explain each part that creates a truck -- In other words, they throw a large piece of code at you and then slowly explain each part of it.

Even worst, in the last parts, it's basically "here is truck, take it" -- very little explanation about the code itself, just "we'll do this" and code. What the pieces of code mean, that's entirely to you.

Another problem: no tests. The author prefers the REPL approach, which is okay for little projects, but for projects that should last longer than a weekend project. No only that, but even the tests are wrong, because it mocks the database -- Database is part of your project so it **should** be tested along all the other tests.

And, on top of that, there is a REST server with sessions, and a lot of code just to keep the frontend session in sync with the server session. That's actually **not** how a REST server works.

And while I usually don't comment the technology behind the book (because it's not the author's creation), I really have to ask if Clojure is the right tool for web servers. I mean, a lot about Clojure is about immutability and a lot about the shown code is forcing mutability -- one function even is composed with nothing but functions that force mutability.

So, not only the book itself doesn't give a clear picture about web development in Clojure, the language itself doesn't appear appropriate for such task.