SE Radio 89: Joe Armstrong on Erlang

Recording Venue: JAOO 2007
Guest(s): Joe Armstrong
Host(s): Markus
In this Episode we’re talking about Erlang with its creator Joe Armstrong. We started by looking at the history of the Erlang language and why it is so relevant today.

We then looked at Joe’s approach to Concurrency Oriented Programming and its main ingredients: share nothing, lightweight concurrency and pure message passing. We also compared this to the classic shared memory approach to concurrency. We then looked at other interesting aspects of Erlang, such as its functional nature (and why this is important to concurrency) and pattern matching. Next we discussed how to implement distribution and fault tolerance, and we took a look at OTP, the “application server” for Erlang.

We concluded the conversation with a littel discussion about how Erlang was designed, it’s current community as well as its future.

Show Notes


Join the discussion
  • Is it just me or does Joe speak in little “packets”.. I was really having trouble understanding him at first, and then I realized that his speech was broken down into little ummm shall we say “independent processes” or speech segments that were loosely connected (by proximity) to each other? Semantically the conversation flows, but the abrupt ups and downs at the sound level make it hard to understand. I don’t know how to explain it.

    The speech is really in fits and starts.. I find this fascinating.. maybe his brain thinks by starting multiple thinking sub-processes which coordinate with each other and then the speech centers serialize his speech?… It does not have continuity this way of speaking and it’s not that his english is not impeccable. The pauses, the continuations they’re all in unexpected places.

    I just wanted to observe this. Great interview btw.

    “No good deed ever goes unpunished”

  • Hey great episode.
    I did not notice that Joe spoke strangely. I was just surprised that the guy interviewing him laughed at prolog and called it wired language.
    Well… it’s not!
    I just recently learned prolog in a lecture about logical and functional programming, and I must admit, that I love prolog!
    Its just another level of programming!
    It’s so powerfull, declarative and expressive! Why?
    – it has meta programming features (one can implement erlang as a prolog meta intepreter)
    – it frees the programmer to write an explicit control flow(because it has built in backtracking)
    – it maintains a database with facts and rules
    – it models first order predicate logic
    – it has no mutable state
    – prolog programs are inherently parallel
    – most prologs also include constraints, wich make the language very expressive and allow for efficient implementation of algorithms
    – it has built in unification, a concept that includes i.e. stuff like pattern matching
    – there is no distinction between input and output when defining functors, because it provides the programmer with real unification AND backtracking, here is an example:
    lets say we want to write a program that let’s us take the last element of a list.
    Now erlang is a child of prolog and most syntactic rules in erlang stem from prolog, so everyone familiar with erlang should be able to understand the following code, except for the “:-” symbol, this symbol defines a rule, i.e. “will_die(X) :- human(X).” means every human will die.
    Ok now the example code for “mylast”. Lets define “mylast(E,L)” wich will put the last Element of L in E:

    mylast(E, [E]).

    mylast(E, [_|T]) :-
    mylast(E, T).

    I used mylast, because last is already defined in most prolog systems.
    Now GO AND GET gprolog. Start it in the commandline, when the promt occurs type “[user].”
    the copy and pase the code from above, then type enter and write “end_of_file.”.
    Now, back in the command line type “mylast(E, [1,2,3]).” .(The dots at the end are, as in erlang, very important!)
    This will print the expected result.
    Now I said there is no distinction between in/output of “functions”. If you define a function(like mylast) you automatically get the inverse “function”, now try it:
    write “mylast(4,L).” in the command line and press enter. What you will see then is probably not surprising, but if you press “;” instead of enter, you will see…
    Well if that ain’t cool!

    Anyway, after coming back to Java I it felt like assembly programming…

    good luck!


  • Hi Sven,

    the guy interviewing (that would be me :-)) didn’t laugh at Prolog per se, I was just really surprised that they used Prolog to implement a language, specifically one like Erlang. And as Joe pointed out, they went away from Prolog because it was too slow….

    Anyway, your comment prompted me that we probably need to do an Episode on Prolog at some point.

    Do you have a possible interviewee?


  • Well Sorry, I listened to the episode again, and yes you are right, you did not laugh at prolog, you were just surprised I guess 🙂
    anyway… I don’t know of any “prolog” guru. Maybe Joe again ? 🙂 I liked him, but I also use prolog and erlang(yes… even in a commercial product as a cti server!) so may be I am biased…

    I know of one big shop using prolog: it’s the


    Prolog was used to build “clasrissa” on the ISS. Clarissa is a voice user interface for browsing space station procedures. I don’t exactly know what it does and whether it’s great or not, or who the head of the project is.
    Well if you could get someone from the Nasa, that would be really really cool, from my point of view.

    Maybe chances aren’t that bad, these folks might like some attention from the big java dominated (outside) world.
    I think the quote from the sicstus (a commercial prolog implementation provider) says it all:
    “SICStus Prolog is a state-of-the-art, ISO standard compliant, Prolog development system, with over 10000 downloads since release 3.9.”
    Well 10k downloads is… well… yeah…
    But You can even build webapps with prolog. There is a thing called “PrologBeans” and it actually interoperates with Java.

    good Luck,


  • Markus,

    This was a fantastic interview. I’ve thoroughly enjoyed the last few interviews you’ve done. It is incredible that you can get guys like Joe to take time to do interviews. Greatly appreciated. Keep up the good work.


  • Hey, I’m relatively new here, and I’m traversing through all your episodes, and wanted to say, I’ve ordered his book, and I’m really interested in Erlang now!! Hopefully not just of the fact that my name being Eric has anything to do with it. 😉

    I enjoyed this one a lot, and now I’m learning Erlang to make just another tool for my mindbox, a tool I enjoy a lot so far 🙂

    Thanks man!

  • Nah, the problem is not in how Joe talks. It’s likely the silence suppression kicking in.
    The reason why it’s unusually unkind to Joe may be because he speaks with very
    crisp consonants, which normally should make it easier to hear what he’s saying. (:

  • Thank Joe Armstrong for bringing Erlang to us.

    As long as you start to use Erlang and get used to its syntax, you would absolutely love it. It is simple but powerful.

    I like Joe Armstrong’s speech in the interview. He is very nice


  • Writing Ruby code for a living, building a company in a foreign country, learning a human foreign language (Spanish) and a computer foreign language (Erlang) on the side hasn’t left a lot of time for blogging about Erlang consolidate debt. But in the past month we were able to spend a few minutes w/Joe Armstrong, creator of Erlang and certainly the language’s most famous ambassador.

  • BTW, Joe’s speech is a characteristic of Scandinavia. If like me you’ve met a lot of English-speaking Swedes/Norwegians, you’ll recongise it. Many from that region are bilingual and speak arguably better English than typical Brits or Americans. But the inflictions from their native languages do make their way into their English and can be a little difficult to get used to at first.

More from this show