Joe Armstrong and Robert Virding recall the events leading to Erlang and its later evolution. They mention the Prolog interpreter, JAM, VEE, Strand88, OTP, TEAM, BEAM, and other technologies.
Kresten Krab Thorup emphasizes existing problems with the Java concurrency model, explaining when to use Erjang, a JVM-based Erlang VM, built around the process and actor concepts.
Scott Lystig Fritchie presents the architecture and lessons learned implementing a webmail system in Erlang, using UBF and Hibari, a distributed key-value store, to accommodate a large user base.
Steve Vinoski talks about the media distribution market and how Erlang is used in a media distribution switch to control the video stream flow at speeds up to 200Gb/s and handling tens of thousands of open HTTP connections.
Joe Williams discusses how distributed systems, cloud computing and automated configuration management affect system’s availability. He exemplifies with a database service built on CouchDB, Erlang, Chef, all running on EC2.
Cliff Moon explains how to make Erlang programs faster by writing performance critical sections of the code in C using Native Implemented Function and by integrating libraries using the linked-in driver interface. He also shows how to safely use C drivers in the Erlang concurrent environment and how to debug them in a running VM.
Bjarne Däcker recounts the story of CSLab at Ericsson, the birthplace or Erlang, how it started, some of the projects leading to Erlang, and its eventual success inside Ericsson as Erlang/OTP.
John Hughes shows how to explore the possible bugs of a code by creating a series of tests in Erlang and using multiple test frameworks, discovering the faults through successive tests and evaluating the frameworks while doing it.
Ulf Wiger shows how concurrency can lead to accidental complexity if it is badly implemented in code, becoming a project’s point of failure. Wiger also advises on how concurrency should be addressed in order to avoid complexity.
Joe Armstrong explains through Erlang examples that message passage concurrency represents the foundation of scalable fault-tolerant systems. Some of his presentation’s nuggets are: using the wrong abstractions makes life artificially difficult; it’s not about objects, it’s about messages; no shared memory; messages enforce isolation if communication is asynchronous; it’s all about protocols.
Adam Wiggins believes that now is the time of horizontal scalability achieved by using resources that are transient, shardable and share nothing with other resources. He gives as example several applications and a language: memcached, CouchDB, Hadoop, Redis, Varnish, RabbitMQ, Erlang, detailing how each one applies those principles.
In this presentation from QCon London 2009, Steve Vinoski discusses what RPC means, the origin and history of RPC, RFC 707, the origins of Distributed Computing Environment (DCE), the growth of the Internet, standardization, distributed objects, CORBA, DCOM, Java, SOAP, WS-*, the fundamental flaws in RPC, REST properties and constraints, REST vs RPC philosophy, Erlang reliability and concurrency.