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

A discussion of basic vs. applied research in the software domain and the creation of Erlang

Bjarne Däcker
Bjarne Däcker

This talk will present some of the thinking behind the creation of the Computer Science Laboratory at Ericsson - one of the technology oriented labs within Ericsson Research. The talk will also describe some projects before and after Erlang and also the technology transfer process to create the Erlang/OTP unit.


A service fail over and take over system for Erlang/OTP

Lennart Öhman
Lennart Öhman

Sjöland & Thyselius Telecom AB
Erlang/OTP positions itself in the niche for building fault tolerant software systems with redundancy over two or more independent nodes. However Erlang/OTP comes with surprisingly little built in support to make failover and takeover/migration of responsibilities between nodes in a safe way. The Fail Over and Take Over System (FOTOS) presented in this paper offers mechanisms to keep a consistent state over several nodes, and also detect partial network failures preventing individual nodes from making premature decisions. Applications cooperating over the network can make use of the guaranteed consistent information to make unanimous decisions when having to decide on to where now failed services shall be failed-over, and also in a potentially ongoing procedure where to resume the service.


About Erlang/OTP and Multi-core performance in particular

Kenneth Lundin
Kenneth Lundin

Ericsson AB
The speech will give an update on the current development of Erlang/OTP direct from the source i.e. the Erlang/OTP team at Ericsson. You will get info of new features  in the latest release, a detailed section about multi core performance, how it is implemented and how it scales and finishing up with some info about future plans.



An Erlang Content Management System

Michal Slaski
Michal Slaski

Erlang Solutions Ltd
Michal Slaski will be discussing the development of an Erlang CMS (Content Management System) designed to make website management easy and intuitive. The talk will demonstrate how Erlang Web framework can facilitate a task of building CMS by providing a system of reusable components. Michal will present a short demo of building an Erlang Web component and integrating it with an Erlang Web based project.


An Introduction to F#

Don Syme
Don Syme

Microsoft
F# is a succinct and expressive typed functional programming language for the .NET platform, and Microsoft will be supporting F# as a first class language in Visual Studio 2010. We'll take a look at what you need to know to start having fun with F#, and how to use it productively. We'll also look at some sample applications of F# and functional programming and cover aspects of parallel, reactive and asynchronous programming with F#.


Automatic Assessment of Failure Recovery in Erlang Applications

Jan Henry Nystrom
Jan Henry Nystrom

Erlang Training and Consulting Ltd
Erlang is a concurrent functional language, well suited for distributed, highly concurrent and fault-tolerant software. An important part of Erlang is its support for failure recovery. Fault tolerance is provided by organising the processes of an Erlang application into tree structures. In these structures, parent processes monitor failures of their children and are responsible for their restart. Libraries support the creation of such structures during system initialisation. A technique to automatically analyse that the process structure of an Erlang application from the source code is presented. The analysis exposes shortcomings in the fault tolerance properties of the application. First, the process structure is extracted through static analysis of the initialisation code of the application. Thereafter, analysis of the process structure checks that it will recover from any process failure. The technique has been implemented in a tool, and applied it to several OTP library applications and to a subsystem of the AXD 301 ATM switch.


Building Multi-Language Web Architectures using Erlang and Thrift

Todd Lipcon
Todd Lipcon

Cloudera
Erlang was designed to make building reliable, correct, and highly available systems easy, but struggles in other areas like string processing, templating, and the widespread availability of useful libraries for web development. Other languages like PHP, Python, and Ruby excel in their ability to quickly develop web applications, but, lacking features like hot code upgrade, strong multi-threading support, and built-in multi-node distribution, are not well suited to developing highly available stateful server applications. In this talk I will describe Apache Thrift, a project that provides an RPC and serialization framework that has bindings in many languages, including Erlang, PHP, Ruby, Python, C++, and Java. I will describe some real-world architectures and show some quick examples of how using Thrift to combine Erlang with other languages is a boon for web development.


Campfire Loves Erlang

Mark Imbriaco
Mark Imbriaco

37signals
Campfire is the popular web based group chat application created by 37signals. This talk will cover the architecture of Campfire and the decisions which led to replacing a functional C based polling service with an Erlang version. I will compare three implementations: a Ruby prototype, the former production C version, and the current Erlang version on the basis of code complexity, deployment and manageability, and performance. Using the right tool for the job makes all the difference and Erlang turned out to be the right tool. We will discuss some other areas at 37signals where it might also be a good fit.


Cleaning up Erlang code is a dirty job but somebody's gotta do it

Kostis Sagonas
Kostis Sagonas

National Technical University of Athens, Greece
The talk will present the design goals and current status of tidier, a software tool that tidies Erlang source code, making it cleaner, simpler, and often also more efficient. In contrast to other refactoring tools for Erlang, tidier is completely automatic and comes with a suite of code transformations that can be selected by its user via command-line options and applied in bulk on a set of modules or entire applications using a simple command. Alternatively, users can use tidier's GUI to inspect one by one the transformations that will be performed on their source code and manually select only those that they fancy. We have had lots of fun trying out tidier on many open source Erlang code bases of significant size. In this talk I will report our experiences and show opportunities for tidier's current set of transformations on existing Erlang code out there -- possibly also on your code too! We will also describe programming guidelines for what we believe are good coding practices for Erlang.Tidier is a joint project with Thanassis Avgerinos.


Connecting QuickCheck and Rose/RT to test Radio Base Stations

Hans Svensson
Hans Svensson

Quviq AB and Chalmers University of Technology
Strangely enough, not all code is written in Erlang. Some companies use low level C or high level modeling languages like UML to create their products. This doesn't stop them from having fun! One can still write test code in Erlang or even use QuickCheck to test the product. We demonstrate how we connected QuickCheck to Rose/RT in order to enable testing of radio base stations. There were three main challenges on top of the normal challenge of modeling the system and implement properties, namely: (1) isolating a self contained part of the Rose/RT model, (2) extending the Rose/RT model to connect it to Erlang, and (3) to marshal data between Erlang and C++.




CouchDB - what it is, how it works and why everyone is talking about it

Chris Anderson
Chris Anderson

CouchDB Ltd
We know good things happen when users control their data and have access to application source code. The web gave us an incredibly simple model for application development, but the downside was code locked up on servers, with users feeling out-of-control of their data. Maybe we trust Flickr, but if my network connection drops unexpectedly when I'm in the middle of showing baby photos to Grandma, the fact that Flickr holds my data remotely can't be denied. Standalone CouchDB applications give users control over their data in a way that we've never seen on the web or the desktop before. CouchDB serves Ajax applications directly to the browser, and can manage vast databases using map reduce views. The combination of simple web applications with powerful queries is exciting on its own, but what really sets CouchDB apart is it's peer based replication. Using replication your data can be anywhere: your laptop, the cloud, your phone. Grandma will be happy about CouchDB's transparent offline mode, but the bigger win is that users have their data and the applications together on their own machines, giving them the opportunity to view and modify the source code. I sincerely believe that an ecosystem of CouchDB web apps will do more to further the open source cause than anything else we've seen in the web era. In my Erlang Factory talk I'll give an introduction to CouchDB, explain the way it makes data portability and open source the default, and show a few example applications to inspire you to build your own.


CouchDB for Erlang Developers

Jan Lehnardt
Jan Lehnardt

CouchDB Ltd
This talk shows what it takes to become a CouchDB developer. We'll show you how to find you way around the sources and write your first patch. We'll explain what you need to do to contribute your patch to the open source project. Our Tour de Source explains the general architecture and shows areas that need work that you could then pick up. Contributing to a high profile open source project looks good on your resumé and leads to all sorts of happiness. Erlang knowledge required.


CouchDB for Web applications

Jason Davies
Jason Davies

CouchDB is built "of the Web" and it's very exciting to convert the immense power that CouchDB provides into a usable, real-world Web application. In this talk I'll cover case studies of real-world applications that use CouchDB, including some that can be served from CouchDB itself, and how CouchDB can shape your Web applications to be highly scalable and flexible by embracing HTTP philosophies, JavaScript and schemaless documents.


Developing a Set Top Box Middleware in Erlang

Samuel Rivas
Samuel Rivas

LambdaStream
Erlang is the appropriate tool to build control systems, so it is suited perfectly for middleware. In LambdaStream we've been developing an Erlang based solution for embedded devices to control the interaction between web-based interfaces and video processing and streaming hardware. The result is an Erlang middleware with two interfaces, one to control low level drivers written in C and other to control an embedded browser where GUI programmers can develop the user interface using standard javascript techniques. One of the goals related to the project is a consumer electronics device for home entertainment, so we are closer to our goal of having one Erlang VM in each living room.


Erlang and Eclipse

Jakob Cederlund
Jakob Cederlund

Ericsson AB
Eclipse is the open source, java-based IDE from IBM with support for many languages. In my talk I will demonstrate ErlIde, the Erlang IDE in Eclipse, and show how Eclipse can be used to do Erlang development. Some of the nice features will be demonstrated: debugging and tracing, multi-language development, using Wrangler to do Erlang refactoring within Eclipse. I will also compare ErlIde with other enviroments, and point out future development.


Erlang at hover.in

Bhasker V.  Kode
Bhasker V. Kode

hover.in
From our experiences at 'hover.in' I'd like to present how we first chose erlang late 2007, and got about using it as our bridge across our multi-node cluster. In particular the architectural decisions that went into making our distributed python crawler backend running off mnesia with its sharding & fragmentation strategies for tables that span several millions of rows, load-balancing to our 3-node yaws web servers, tweaks to serve more requests, trade-offs in efficiency vs cost, experiments in DHT's,  our cache worker implementations  & messaging queues, cron's & dispatching jobs while  throwing light on design choices that can fit in distributed and heterogeneous environments. We have also recently built and intend to opensource our own in-memory cache workers, persistent stats & logging system, and in the process of now deploying an A/B testing framework,  that we'd love to talk about. The talk will also bring in some interesting metaphors from bacteria and its group dynamics, as well as the human brain in handling concurrency & memory.


Erlang at the BBC

Enda Farrell
Enda Farrell

BBC
The BBC is building a new environment that allows cost-effective building of dynamic content platforms. A key component of the new RESTful service-based platform is a Key Value store - an API which uses 32 CouchDB storage nodes in two datacentres. We have a Java/Tomcat API which handles SSL-based user authorisation and sharding, independent (of each other) CouchDB nodes which are replicated with (replication mapped nodes) between our datacentres. We can also show results from a load/stress/soak test to see what - on our servers - is the long-term maximum throughput of an individual node.


Finding Race Conditions during Unit Testing with QuickCheck

John Hughes
John Hughes

QuviQ AB


Functional Programming with a Mainstream Language

Sadek Drobi
Sadek Drobi

Valtech
Using functional programming (FP) in enterprise software development is often quite a challenge. In this presentation, Sadek Drobi will talk about his experience of applying functional programming principles on a real-world project in relation with existing non-functional frameworks. In the year 2008 and just on the release of C# 3.0 and Linq, which is basically several FP concepts implemented on C# language, Sadek Drobi worked as a tech lead on a project where functional programming approach was used to meet performance requirements and to achieve desired response time. Facing similar issues, a mainstream architect would strive to instantiate less objects and to use mutation for optimization. Considering the big amount of data that had to be processed on each request, Sadek chose to do it otherwise: no mutation, used memoization, laziness, recursion, functions, curry, monads, list comprehensions and, then, parallelization to yield an almost purely functional core domain model. Sadek Drobi will talk more about this experience and elaborate on the good and the bad of going almost extreme through a functional programming approach from different perspectives.


Getting Some REST with Erlang and Webmachine

Kevin Smith
Kevin Smith

Hypothetical Labs, Inc.
Providing RESTful interfaces is quickly becoming the norm for modern websites. There's more to REST than handling GETs and POSTs, though. This talk will illustrate how the combination of Erlang and webmachine simplifies and speeds the development of REST resources.


Hands-on refactoring with Wrangler

Simon Thompson
Simon Thompson

University of Kent
Wrangler supports refactoring for Erlang projects, and is embedded in emacs and Erlide, the Erlang plugin for Eclipse. With Wrangler you can perform basic refactorings, such as renaming a function across a project, or extracting a function from a piece of Erlang code.

Wrangler also allows you to find duplicate or "similar" code across a project, and to refactor this to eliminate these code clones. This has proved to be very useful particularly in examining test code. You can also spot "bad smells" in code using the Wrangler code inspector.

Please bring along your laptop so that you can get started with Wrangler. Also please bring code that you'd like to refactor, and particularly where you want to see what sort of clones the code may contain.


How the Cloud Got Its Groove Back

Blake Mizerany
Blake Mizerany

Heroku
Orion Henry
Orion Henry

How Heroku built their Routing Mesh (http://heroku.com/how), a fair-loadbalancer/proxy/router, with MochiWeb that out performs nginx! This will be a paired-talk with Orion Henry and Blake Mizerany


Keynote: Erlang - The Good, the Bad and the Ugly.

Joe Armstrong
Joe Armstrong

Some things in Erlang are good, other things are bad and some things are downright ugly. In this lecture I'll present a personal view of some of the things that are missing from Erlang. I'll talk about what should be removed from the language and what should be added. I'll talk about design flaws in the libraries, and how they can be fixed. I'll talk about what is beautiful and what is not.


Keynote: Haskell and Erlang: growing up together

Simon Peyton-Jones
Simon Peyton-Jones

Microsoft
Haskell and Erlang are childhood friends, now approaching their 20th birthdays. Both were born around 1990, with a common commitment to functional programming.  Although they have very different genealogies, and subsequent evolution paths, they are both gaining increasing mind-share as 2010 approaches.  In his talk, Simon will contrast the two languages, paying particular attention to types and concurrency.


Lessons Learned from using Erlang in RabbitMQ

Alexis Richardson
Alexis Richardson

Rabbit Technologies Ltd.
Matthew Sackman
Matthew Sackman

L-Shift


Massively Scaleable Mobile Gateways

Alon Klein
Alon Klein

IXI Mobile
Lahav Savir
Lahav Savir

Erlang is the perfect language to handle applications such as mobile gateways that are required to handle hundreds of thousands of simultaneous connections. This talk will discuss the ways that led towards the selection of Erlang as the appropriate technology for a mobile Email and IM gateway, describe implementation phases, and describe selected solutions addressing the extreme requirements up to its successful deployment. The system is currently providing instant messaging and E-mail services to major mobile operators.


OneTeam Media Server: Adding Video to Instant Messaging with Erlang

Mickaël Rémond
Mickaël Rémond

Process One
OneTeam Media Server is a new project launched by ProcessOne which is a Media server for Flash clients implementing the FLV and RTMP protocol. The project is designed so that it can work hand in hand with ejabberd, ProcessOne Instant Messaging platform. This presentation presents the goal and the architecture of the project and demonstrates the video platform. We will give performance feedback on Erlang use for binary processing in a highly demanding context.


QuickCheck Case Studies

Ulf Norell
Ulf Norell

QuviQ AB
Huiqing Li
Huiqing Li

University of Kent
Adam Lindberg
Adam Lindberg

Erlang Solutions Ltd
Hans Svensson
Hans Svensson

Quviq AB and Chalmers University of Technology
QuickCheck has proven itself across a range of applications. Here four speakers give short review of how they have applied QuickCheck in different environments, namely:
  • Adam Linberg - Using QuickCheck for testing a domain specific languages
  • Ulf Norell - Using QuickCheck for testing C code
  • Huiqing Li - Testing Wrangler with QuickCheck
  • Hans Svensson - Connecting QuickCheck and Rose/RT to test Radio Base Stations


RainUp - The Biggest Cloud Computing ever built!

Jon Vlachoyiannis
Jon Vlachoyiannis

Emotionull
Jim Myhrberg
Jim Myhrberg

Build the biggest cloud computing project man has ever seen and use it for scientific reasons. We plan to run on Clouds (Amazon / Mosso) and set Erlang to scale to infinity breaking the world record of TerraFlops! We are an OpenSource/NonProfit team destined to stretch technology in order to serve mankind.


Refactoring and Analysis with RefactorErl

László Lövei
László Lövei

Eötvös Loránd University of Budapest
RefactorErl is a source code analyser and transformer tool aimed at refactoring Erlang software. The tool itself is written in Erlang with a unique approach: semantic analysis results are stored in a Mnesia database to avoid repeated analysis of the same source code, and simple, syntax-based manipulations are available that hide the details of handling separators, comments, and code layout.

This talk introduces the main features of RefactorErl: how you can use it simply as a refactoring tool, and how analysis results can help you during software development and maintenance.


Smarkets platform

Hunter Morris
Hunter Morris

Smarkets was built using many open source Erlang tools, including CouchDB and RabbitMQ.  The core transaction engine is written in Erlang and provides a resource-oriented API.  This talk will show how the Smarkets platform was built, an overview of the architecture, and why Erlang was the right choice for us.


Testing - but not your patience

Dr. Erik Stenman
Dr. Erik Stenman

Kreditor is providing financial services for internet shops and millions of Scandinavians each year, through a system completely written in Erlang. The system is continuously updated with new features and services. In this talk Erik will present some of the techniques and tools for automated testing and monitoring that Kreditor is using in order to provide high availability in the presence of frequent releases.


Testing Wrangler with QuickCheck

Huiqing Li
Huiqing Li

University of Kent
Refactoring tools ought to allow program developers to quickly and safely refactor their programs, especially large programs. However, a robust and safe refactoring tool is hard to develop, and most refactoring tools still contain bugs even after extensive testing.
While unit testing does help to find bugs to refactoring tools, it is tedious to manually write test programs, and the coverage of the test cases is hard to guarantee because of all the possible programs you can potentially refactor, and it is even harder to test refactoring tools on large systems.

In this talk, we present the technique of using Quviq QuickCheck to
automate the testing of Wrangler, the Erlang refactoring tool developed by University of Kent, and summarise our experience so far.


The Nitrogen Web Framework

Rusty Klophaus
Rusty Klophaus

Nitrogen is an exciting framework not just for what it brings to the table, but also for what it leaves behind. By leveraging Erlang records as a surprisingly elegant markup language, discarding MVC in favor of an event-driven architecture, and only supporting Javascript-based forms, Nitrogen challenges many existing notions about what an Erlang application/web framework should do, and has invigorated others in the Erlang community to think unorthodox thoughts while building their own projects. Rusty will present a high level overview of Nitrogen, dive down to walk through a sample Nitrogen application, and then discuss the future of this rapidly maturing framework.


The worlds energy consumption is going to triple by 2030

Kimmo Gläborg
Kimmo Gläborg

Streamfile
What can we, as systems owners and developers do to minimize power consumption in our data centers and offices? I'm going to cover what I believe are the biggest issues for the growing energy needs in the IT-industry,and on how Erlang could help to improve the world. I'll talk about the following:
  • Power consumption stats
  • Where does the power come from?
  • Bandwidth as a natural resource
  • The nature of data centers
  • Do more, with less hardware
  • Effect
You'll find me twittering @streamfile.


Using QuickCheck for testing C code

Ulf Norell
Ulf Norell

QuviQ AB
The Quviq testing tool QuickCheck provides an excellent platform for testing Erlang programs, but so far, applying it to programs written in other languages such as C has been cumbersome. In this talk I will show a brand new library from Quviq which allows C functions to be called from Erlang as if they were Erlang functions. This makes testing C code with QuickCheck just as easy as testing Erlang code.


Using QuickCheck for testing a domain specific language

Adam Lindberg
Adam Lindberg

Erlang Solutions Ltd
High quality products require extensive testing. The increased complexity of the products that telecommunication companies develop requires a change in testing methodology. Therefore, a large Swedish telecommunication company is adapting Eunit and QuickCheck in their test process. The result is more efficient testing. We show a few examples of QuickCheck specifications used to test a domain specific language in the Session Border Gateway and explain how they can replace conventional test cases.


Welcome

Francesco Cesarini
Francesco Cesarini

Erlang Solutions Ltd
Francesco Cesarini, Technical Director of Erlang Solutions Ltd - organisers of the Erlang Factory - opens the event with a short address.


Whitelabel Erlang

Geoff Cant
Geoff Cant

Process One
Whitelabel Erlang covers the trials, tribulations and technologies used in building a whitelabel ejabberd hosting service.

The talk explains the rationale behind the choices of web server, templating system, email module, page optimizers and other web framework components. The talk also covers the documented and undocumented DNS query and caching modules in OTP and introduces 'dns' - a convenient new API for using them. Finally, the talk describes some tips and tricks useful for whitelabel hosting solutions that require customer DNS updates.