Steve Vinoski introduces Erlang’s OTP Frmework, outlining some of its main features, including several behaviors – implementations of common patterns useful for concurrent fault-tolerant applications.
Steve Vinoski is the author of "Toward Integration" by IEEE Internet Computing, and has written for magazines such as C/C++ Users Journal and C++ Report and is the co-author of Advanced CORBA Programming with C++ (APC) with Michi Henning. He is currently an architect at Basho Technologies. He previously worked as chief architect for IONA Technologies, HP, Apollo Computer and Texas Instruments.
Software is changing the world; QCon aims to empower software development by facilitating the spread of knowledge and innovation in the enterprise software development community; to achieve this, QCon is organized as a practitioner-driven conference designed for people influencing innovation in their teams: team leads, architects, project managers, engineering directors.
correcting an error in the presentation
Starting at about 19:05 into the presentation, while explaining recursion and different function clauses in the ping-pong example, I got a question from the audience regarding the ordering of the clauses of the functions. Specifically, the ping function clauses on slide 27 are intentionally out of order because I thought it would be easier to explain them that way, showing the general recursion case first and the recursion termination function second. When the audience member asked me if the order mattered, I said it didn't, but in this case that's definitely wrong. If you tried to compile the ping clauses as shown on the slide, the compiler would warn you that the second clause would never be reached, because the argument N in the first clause would always match before the argument 0 in the second clause. The proper answer to the question is that function clauses are matched in order, top to bottom. To be fair, there are cases where clause ordering doesn't really matter, such as having a non-empty list in one clause and an empty list in another so that matching is unambiguous, and that's what I was thinking of when I answered the question, but it doesn't apply in the ping function example.
Sorry for any confusion!