contents

foreword
preface
acknowledgments
about this book
introduction

Part 1 Getting past pure Erlang: the OTP basics

Chapter 1 The Erlang/OTP platform
Concurrent programming with processes
Erlang ’s fault tolerance infrastructure
Distributed Erlang
The Erlang runtime system and virtual machine
Functional programming: Erlang ’s face to the world
Summary
Chapter 2 Erlang language essentials
The Erlang shell
Data types in Erlang
Modules and functions
Variables and pattern matching
Functions and clauses
Case and if expressions
Funs
Exceptions, try, and catch
List comprehensions
Bit syntax and bitstring comprehensions
Record syntax
Preprocessing and include files
Processes
ETS tables
Recursion: it ’s how you loop
Erlang programming resources
Summary
Chapter 3 Writing a TCP-based RPC service
What you ’re creating
Implementing the RPC server
Running the RPC server
A few words on testing
Summary
Chapter 4 OTP applications and supervision
OTP applications
Adding fault tolerance with supervisors
Starting the application
Generating documentation with EDoc
Summary
Chapter 5 Using the main graphical introspection tools
Appmon
Pman
Debugger
TV, the Table Viewer
Toolbar
Summary

Part 2 Building a production system

Chapter 6 Implementing a caching system
The background story
The design of your cache
Creating the basic OTP application skeleton
From application skeleton to a working cache
Summary
Chapter 7 Logging and event handling the Erlang/OTP way
Logging in Erlang/OTP
A custom event handler with gen_event
Adding a custom event stream to the Simple Cache
Summary
Chapter 8 Introducing distributed Erlang/OTP
The fundamentals of Erlang distribution
Nodes and clustering
The nuts and bolts of resource discovery
Summary
Chapter 9 Adding distribution to the cache with Mnesia
Distributing the cache
Distributed data storage with Mnesia
Distributing the cache with Mnesia
Summary
Chapter 10 Packaging, services, and deployment
Applications from a system viewpoint
Making a release
Release packaging
Installing a release
Summary

Part 3 Integrating and refining

Chapter 11 Adding an HTTP interface to the cache
Implementing a TCP server
Building a web service from the ground up
Summary
Chapter 12 Integrating with foreign code using ports and NIFs
Ports and NIFs
Integrating with the parser through a port
Making a linked-in driver
Implementing the parser as a NIF
Summary
Chapter 13 Communication between Erlang and Java via Jinterface
Integrating Erlang with Java using Jinterface
Installing and configuring HBase
Building the bridge between Simple Cache and HBase
Integrating HBase with Simple Cache
Running the integrated system
Summary
Chapter 14 Optimization and performance
How to approach performance tuning
Profiling Erlang code
Erlang programming language caveats
Summary
appendix A Installing Erlang
appendix B Lists and referential transparency
                   index