I fell in love with this book after reading about half of it and previewing the rest.
Erlang is quite radically different from O-O/Imperative languages such as C# and Java, and I expected a steep learning curve, when I started reading Joe Armstrong's book Programming Erlang: Software for a Concurrent World. It is overall a good book, but some parts of Joe's book were not very clear to me even in the earlier several chapters, so I also got the O'Reilly Erlang book Erlang Programming. It was a bit of an easier read, but I still had some issues. [[And all this despite some background from graduate school in the late 80s and early 90s in the underlying CompSci topics such as Unification and Deductive Databases, Functional Programming, Lambda Calculus, Gul Agha's Actors Concurrent programming and Distributed Databases]]. In particular, the OTP coverage in the last 2 books left me a bit perplexed. Then I got this, Logan et al's book, and started from the first chapter, and I must say I admire the authors' ability to serve up concise yet clear explanations with a more practical tone and real world examples. Now all makes sense, both OTP and Erlang, in just a few days! Chapter 2 was a quick but great introduction to Erlang programming. And the OTP and tool introduction chapters have been even better. This is the book to get if you intend to use Erlang for real-world production applications as opposed to a passing 'academic interest'.
Now if you will indulge me in straying a bit beyond the review of this book: Having sampled Erlang/OTP and its suite of related tools and utilities such as Mnesia, Ejabberd XMPP server with EXMPP library, Mochiweb and YAWS web servers, etc. (the LYME platform); I think they constitute a great (imhop and dare i say - probably the best) platform for developing robust, world class application systems quickly and with less hassle. Many people eulogise about their performance, scalability, concurrency, distribution, fault-tolerance and integration advantages; but for me personally it is more about the overriding productivity advantages as all these architectural attributes are obtainable with lots of difficulty, time and cost on other platforms such as Java EE, LAMP and .NET. When a large portion of a development platform can be so well covered in under 400 pages, it surely must be not just the book authors' ability but more the platform's own compactness and expressive power. Try that for .NET or Java EE!!
But, then you ask yourself, with all the evidence, why has the open source LYME stack not taken the development world by storm after two or so decades of existence, given how costly, difficult and failure-prone development projects are? In particular, it would seem to be the likeliest choice for 1-man and small development teams and software entrepreneurs, with resource and time-to-market constraints. And you realise there is quite a steep entry barrier due to its functional and unusual nature and relative lack of literature. I think this concise, but excellent book will facilitate entry by the average programmer and finally a larger cross section of the software development community can leverage the power and productivity advantages of the awesome LYME. Sounds like I gulped down the Erlang koolade? Well, do yourself a favour and get this book and see for yourself or try out Ejabberd, CouchDB and other noSQL databases YAWS, etc.; compare them to better known alternatives and see for yourself.
Finally, if you're like me now entering Erlang/OTP, please do yourself another favour and additionally read Mitchell Hashimoto's Erlang blog articles series, [[...]] on OTP which greatly complement this book in covering aspects of OTP that Logan, et al have not prioritised for coverage, but rather refer the reader to the online Erlang documentation.