Book Reviews

Erlang and OTP in Action by Martin Logan, Eric Merritt and Richard Carlsson

ISBN: 978-1933988788
Publisher: Manning Publications
Pages: 500

Learning Erlang is an experience that alters how you view software. Technical challenges, traditionally viewed as hard, suddenly come within reach. You might even find that Erlang's radically different approach makes them non-issues and solved problems. Challenges like scaling on multi-cores and writing reliable distributed applications all fall in this category. Within it's domain of soft real-time systems, Erlang is unparalleled in power. It's minimalistic approach and simplicity makes Erlang a true joy to code in.

I wrote my first Erlang code four years ago. Initially I was surprised by the elegance and simplicity of the core language. As I went beyond simple prototypes I soon realized I needed to utilize the common process-oriented patterns collected in the OTP library. After all, the promised reusability and stability of OTP is one of the selling points behind Erlang. But OTP turned out to be much more challenging than the core language. While the individual OTP behaviours are fairly well documented in isolation, the Erlang documentation was sparse on how to combine them and create complete systems. I spent plenty of time digging around in forums and poking into the (thankfully) open source of the behaviours. Even if I finally got the big picture, I always had doubts. Did I miss out on something? What are the best practices and idiomatic usages of the OTP framework? And how do you really structure a large Erlang system?

With the release of this book, such struggles are finally a a memory of the past. Erlang and OTP in Action picks up at a high pace. The book is oriented at intermediate developers with a decent grasp of Erlang. After a whirlwind tour of the core language the authors dive directly into a non-trivial TCP-based RPC service. No hello world soft start here. More advanced topics like process supervision, persistence and distribution are introduced using real-world examples. This is one of the absolute strengths of the book: what we see here are idioms and industry best practices. The authors provide a wealth of information ranging from large topics to small and useful tips. The realistic examples set the book apart from many other programming books. Such an approach is particularly fruitful in Erlang where pretty advanced applications can be written with a minimum of boiler plate code.

To sum it up, had this book existed four years ago I would have saved countless hours of experimentation and prototyping. If you're into Erlang this is a must read. If you're just interested in the technology and wants to get an idea of what programming Erlang is like, I would recommend Joe Armstrong's book as a starter. Joe's book will give you a solid introduction to the core of Erlang and it's philosophy. Once you're ready to start writing production code, Erlang and OTP in Action is invaluable.

Reviewed August 2012