ESL

Google

Subscribe to our Erlang Factory newsletter to receive the latest updates and news

Automated testing with Erlang ("these go to eleven")

Ward Bekker
Ward Bekker

TTY
Erlang is designed for building massively scalable and highly available soft real-time systems. Unsurprisingly , Erlang provides us with powerful libraries for automated testing of these type of systems. In this talk, we take a look at three of the popular automated testing libraries for Erlang, discuss their individual strengths and weaknesses and illustrate the importance of continuous integration by deploying sample automated tests to Travis-CI, a free continuous integration service for the open source community.

Talk objectives: Describe and explain popular Erlang automated testinging libraries (EUnit, QuickCheck, Common Test) and the advantages of continuous integration.

Target audience: Test-conscious Erlang programmers.


Build an FTP server in 30 minutes with Ranch

Loïc Hoguin
Loïc Hoguin

Nine Nines
The Ranch TCP acceptors pool allows rapid development of network applications. But how fast is it really to write such an application and implement a protocol? How should the protocol be implemented? What are the traps to avoid?

This presentation will be a live demonstration of the implementation of an FTP server from scratch up to a working state using Ranch, binary pattern matching and a nice French accent.

Talk objectives: Learn how to use Ranch, Learn how to implement a text protocol using binary pattern matching.

Target audience: Network programmers and people willing to witness the incredible productivity that Erlang can offer.


CyLec - An Architecture for Electricity Smart Metering

Stephen Page
Stephen Page

Cyan
Matt Kern
Matt Kern

Cyan
Cyan is a systems company involved in two primary markets: public lighting control and smart metering.  This talk covers our CyLec architecture for electricity smart metering, from the wireless ISM-band nodes embedded in the meters via the GPRS gateways that link them to the internet and the Erlang cloud infrastructure that manages them to the rich web applications in the control rooms.

Talk objectives: Show off an innovative use of Erlang in the M2M space.


Erlang in global radio astronomy - monitoring and controlling custom built hardware at the bit level

Harro Verkouter
Harro Verkouter

Joint Institute for VLBI in Europe
In radio astronomy - the field I work in - data processing requirements are so large we have to build custom hardware to actually do it. In the talk I would like to introduce the observation technique we currently use, very long baseline interferometry, and the hardware that is currently being developed for expanding its capabilities. Feeding and controlling this FPGA powered device will require a distributed system also capable of controlling embedded devices remotely over a network. A primary objective was to produce a system where the hardware developers and VHDL programmers (not generally Erlang savvy programmers) should also be able to use the code to easily interact with their logic code running on the FPGAs.

Talk objectives: I would like to show that Erlang is really good at what it was written for: interacting with (embedded) systems, dealing with binary data, running a distributed system for monitoring and controlling it.

Target audience: Technology oriented people with an interest in low level programming or global high-speed network connections being used in a real time radio astronomical application. Talk may contain traces of physics.


Google APIs and Erlang

Ian Barber
Ian Barber

Google
Google has been providing webservices and APIs for over a decade, and the latest generation of these services is engineered around discoverability, REST, and JSON. In this talk we'll look at the architectural decisions that have lead us to this point, and at how to consumer and work with these APIS from Erlang, working with OAuth2 and JSON.
Talk objectives: The aim is to show consuming modern web APIs with Erlang, and to discuss the architectural principles and challenges that have lead us to the current design.

Target audience: People interested in interacting with Google's services, people developing large scale restful web services.


High Availability Erlang from the Trenches

Fabrice Nourisson
Fabrice Nourisson

Extreme Forge
Dominic Williams
Dominic Williams

Extreme Forge
Erlang is a simple language specially designed for robust, high availability (HA) systems. In six years of working on telco systems, we have learned the hard way that there are a few pitfalls. We present the most common problems and the coding guidelines and design idioms we have adopted to deal with issues such as the atom table, memory and the garbage collector, message queues, flow control, configuration and hot code upgrades.

Talk objectives: Warn developers of HA Erlang systems about common pitfalls and lessons learned, and provide coding guidelines and design idioms to avoid them.

Target audience: Developers and architects, aspiring Erlang experts, especially of high availability systems.


Hitchhiker's guide to the Erlang VM

Robert Virding
Robert Virding

Erlang Solutions
The BEAM is the standard Erlang implementation in use today. It was specially designed just to run Erlang. We will make a quick tour of the BEAM visiting the major sights to see what it looks like internally and how it functions. There will be no need of a towel on this short tour.

Target audience:
Developers and system architects who want to get a better understanding of how their applications will run.


Introduction to Webmachine

Matt Heitzenroder
Matt Heitzenroder

Basho Technologies
Matt Heitzenroder provides an introduction to Webmachine, a RESTful toolkit for writing well-behaved HTTP applications, helping developers to deal with the complexities of an HTTP-based application. 

Talk objectives: To introduce Webmachine as a good starting point for learning Erlang and as a tool to quickly build RESTful APIs

Target audience: Erlang Beginners and Web Developers


MeshUp and other Riak hacks

Jakob Sievers
Jakob Sievers

Klarna
MeshUp is our functional workflow engine. We like our business logic pure and our effects managed - this talk describes how we do it. While MeshUp was designed with Riak in mind, the approach should be of interest to anyone who wants to maintain some discipline in large, database-driven Erlang applications.

Talk objectives: Describe how we realize the two main goals of our application platform: 1) maintaining the benefits of functional programming in the presence of a shared database 2) making Dynamo-style databases easier to use.

Target audience: Hopefully functional programmers in general, but with a bias towards database nerds.



Profiling Erlang programs using Percept2

Simon Thompson
Simon Thompson

The University of Kent
Huiqing Li
Huiqing Li

The University of Kent
The number of cores in modern computer system is increasing rapidly, and Erlang's support for multi-core system is also being continuously improved. To take full advantage of the computing power provided by multi-core Erlang, new Erlang applications need to be written with more parallelism to assure that there are enough processes ready to run, and existing sequential Erlang applications can be refactored to introduce more parallelism and therefore scalability. However, very often one might find that an application does not scale as expected.

In this talk, we present the Erlang concurrency profiling tool Percept2, which is an enhanced version of the original Erlang concurrency profiling tool Percept.  Built on top of Percept, Percept2 provides not only process profiling information, but also scheduler and function profiling information. Visualisation and navigation through data is made easy in Percept2, and the performance has also been improved by the parallelisation of tool itself. We demonstrate how Percept2 can be used to find Erlang application level bottlenecks, and also how the tool can be used to provide guidance and feedback on the parallelisation of existing sequential Erlang applications.
The number of cores in modern computer system is increasing rapidly, and Erlang's support for multi-core system is also being continuously improved. To take full advantage of the computing power provided by multi-core Erlang, new Erlang applications need to be written with more parallelism to assure that there are enough processes ready to run, and existing sequential Erlang applications can be refactored to introduce more parallelism and therefore scalability. However, very often one might find that an application does not scale as expected.

In this talk, we present the Erlang concurrency profiling tool Percept2, which is an enhanced version of the original Erlang concurrency profiling tool Percept.  Built on top of Percept, Percept2 provides not only process profiling information, but also scheduler and function profiling information. Visualisation and navigation through data is made easy in Percept2, and the performance has also been improved by the parallelisation of tool itself. We demonstrate how Percept2 can be used to find Erlang application level bottlenecks, and also how the tool can be used to provide guidance and feedback on the parallelisation of existing sequential Erlang applications.
The number of cores in modern computer system is increasing rapidly, and Erlang's support for multi-core system is also being continuously improved. To take full advantage of the computing power provided by multi-core Erlang, new Erlang applications need to be written with more parallelism to assure that there are enough processes ready to run, and existing sequential Erlang applications can be refactored to introduce more parallelism and therefore scalability. However, very often one might find that an application does not scale as expected.

In this talk, we present the Erlang concurrency profiling tool Percept2, which is an enhanced version of the original Erlang concurrency profiling tool Percept.  Built on top of Percept, Percept2 provides not only process profiling information, but also scheduler and function profiling information. Visualisation and navigation through data is made easy in Percept2, and the performance has also been improved by the parallelisation of tool itself. We demonstrate how Percept2 can be used to find Erlang application level bottlenecks, and also how the tool can be used to provide guidance and feedback on the parallelisation of existing sequential Erlang applications.


Taming the Rabbit: Writing RabbitMQ Plugins

Alvaro Videla
Alvaro Videla

Cloud Foundry, VMWare
RabbitMQ is a Messaging and Queueing server that works with the AMQP protocol. But what happens if we want to use the server beyond AMQP? What if we want to replace its own storage engine or provide new authentication methods? All of that can be done why writing new plugins for RabbitMQ in Erlang.

In this talk we are going to present various plugins for RabbitMQ and we will show how to extend the broker by adding new routing algorithms with custom exchange types. The code examples will be in Erlang.


The Ideal Programmer - Why They Don't Exist and How to Manage Without Them?

Mike Williams
Mike Williams

Erlang Solutions Ltd.
For many years, I have been trying to define the "ideal programmer" only to come to the realisation that they don't exist. This talk will be about the people and skill you must have in your team if you are to run a successful project. It will also touch on what you need to avoid as well.