MapReduce is a programming model for large data processing popularized by, and in daily use at Google. The MapReduce model builds strongly on key tenets of functional programming such as higher-order functions and side-effect free execution. In this talk, we summarize this programming model and describe a didactic implementation in Erlang. Invented at Ericsson's research labs, Erlang is known for its massively concurrent programming model, and itself builds on a functional core language. We assume some minimal knowledge of Erlang, but will highlight key features of the language as needed to understand the MapReduce abstraction.

This hands on tutorial will give you an introduction to the Erlang programming language. You will learn the basics of how to read, write and structure Erlang programs.We start with an insight into the theory and concepts behind sequential and concurrent Erlang, allowing you to get acquainted with the Erlang syntax and semantics.

We conclude with an overview of the error handling mechanisms used to build fault tolerant systems with five nines availability.

Delegates who will benefit from this tutorial includes those want to learn more about Erlang and its concurrency model. Attending will put you on the right track in building distributed, fault tolerant massively concurrent soft real-time systems.

In order to get the most out of this tutorial, you must have a good grasp of other programming languages. This will be a hands on tutorial. You will need a laptop with Erlang installed and your favourite editor.

To be able to attend the tutorial, you must have Erlang working alongside your favourite editor. You can download binary snapshots for most OSes here.

It would be beneficial if you can get the Erlang mode running on your favourite editor. The most commonly used editors include Eclipse, emacs and vim, but you will find an Erlang support in most environments. To install Emacs, find the appropriate manu al page in the Erlang documentation. VIM should work out of the box. Eclipse users need the ErlIDE plugin.

If you have time to dabble with Erlang, a great site with simple tutorials is tryerlang.org

Target Audience: Delegates who will benefit from this tutorial includes those want to learn more about Erlang and its concurrency model. Attending will put you on the right track in building distributed, fault tolerant massively concurrent soft real-time systems

When evolving software we may introduce new corner cases that can pass
unnoticed through the test cases in our automated test suite. Since
developers rely on other's test suites when changing their code, the
more developers work on a module, the more likely it is they slip a bug
trough the test suite; that's something we though we had to live with.
However, property based testing is emerging as a new hope, our last
experiences say that it helps to create test suites more robust to
software evolution without forcing us to write tons of "just-in-case
test cases."

Riak is one of the new breed of no-SQL database management systems, which has begun to replace relational databases for some applications. Riak is a distributed key-value store, inspired by Amazon’s Dynamo, designed for applications where scalability, low latency and high availability are critical. Riak uses replication to provide fast access to data, even when multiple nodes or parts of the network fail. It supports concurrent access to the same data by multiple clients, even when the network is partitioned. All of this makes it very hard to test.

I will show how QuickCheck helped us to model Riak’s behavior, improving understanding and revealing the occasional bug.

The talk will introduce the efene programming language, describe it's history, evolution, reason of existence, current status and future plans.

Some examples of code and code comparisons with Erlang will be shown, together with instructions to fetch and build the project (from source or through rebar) and how you can contribute to the project.

The features that differentiate efene from Erlang will be discussed explaining the reasons of it's existence.

Finally some technical details of the implementation and tools will be described.