If you want me to come speak at your conference or user group event, here are some talks that I'd be happy to do. I've been presenting many times over the last decade on JAOO, GOTO, QCon, JavaZone, Erlang Factory, JVM Language Summit, and numerous user group events. You can email me at
Case Study: Riak on Drugs (and the Other Way Around)
I'm currently engaged in developing the next generation backend infrastructure for a notable national Danish healthcare service, the Shared Medicine Card; in which we are evaluating Riak as a foundation for providing both high availability, scalability and the ability to run off multiple data centers. In this talk I'll share our experiences, explain our approach, the pitfalls that we fell into on the way, the data designs we ended up with, and talk about which use cases are good fits for Riak.
The Shared Medicine Card (in Danish "Fælles Medicinkort" or FMK for short) provides access to Danish citizen's medication prescriptions, drug usage, as well as history, monitoring for those. In addition to being available as an online service both for human and systemic consumption, a large integration project is currently under rollout so that by the end of 2011 it will be the back bone for drug information for some 40+ systems across such diverse medical professional systems as general practitioners, hospitals, specialist doctors, and home nursing. The project is a noticeable success, and recently won the Digitization Prize as "best government IT project in Denmark" .
Bringing Riak to the Mobile Platform
The consistency model used by Riak is designed to continue operating well even when nodes in your Riak cluster are down or unreachable, a property which also makes it a good model for mobile data. To me, "down or unreachable" sounds a lot like "off or without-cell-phone-connectivity" - common states for a mobile device.
In this talk, I'll present Riak Mobile, a component that can be embedded into your iOS or Android application to make it a full Riak replication-aware peer. Typical usages for Riak Mobile is as a mobile content distribution platform using one-way sync; or with two-way sync to also push updated data back to your Riak cluster when the network is "eventually" available.
In the talk, I'll walk through how Riak Mobile works. The client-part of Riak Mobile does not require an Erlang VM. Rather, it comes as either a Java or an Objective-C component using SQLite for on-device storage, and thus integrates nicely into the native development environments. The server-part is an OTP application running with Riak. Riak Mobile uses a flow-based algorithm using Merkle trees and vector clocks optimized specifically for providing efficient incremental synchronization for slow, high-latency network conditions.
Erjang - A JVM-based Erlang VM
Starting a few years ago, I was meeting "Erlang people" more and more often, and I got the impression that they have some kind of magic ability to reason intuitively about concurrent systems in a way that I could not. That bothered me, so I wanted to learn Erlang. Being a language implementor, the most obvious way to do that is to just go ahead and implement an Erlang VM, right?
The result of this "little exercise" is Erjang, an open-source JVM-based Erlang VM. In technical terms, Erjang reads .beam files and compiles them to Java's equivalent .class files which are then read into the running JVM. It runs off a plain Erlang/OTP distribution - it only requires the beam files from there; Erjang itself is written in Java.
In this technical presentation I will talk about how Erjang is implemented, the challenges in mapping Erlang's language constructs to the Java platform, and what behavior to expect from Erlang programs running on top of Erjang.