A discussion of basic vs. applied research in the software domain and the creation of Erlang
| 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
| 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
| 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 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#
| 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
| 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
| 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
| 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
| 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
| 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
| 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
| 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
| 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
| 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
| 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
| 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
| 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
Functional Programming with a Mainstream Language
| 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
| 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
| 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
| 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.
| 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
| 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
Massively Scaleable Mobile Gateways
| 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
| 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
| 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!
| 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
| 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
| 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
| 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
| 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
| 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
| 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
| 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
| 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, Technical Director of Erlang Solutions Ltd - organisers of the Erlang Factory - opens the event
with a short address. |
Whitelabel Erlang
| 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. |