Erlang & Elixir Factory San Francisco Tutorials

Idiomatic Elixir: Growing a Program (9-5pm, Marines Memorial Hotel)

Spend a day coding with Dave Thomas, exploring Elixir, its libraries, and his ideas on how to write idiomatic, functional programs.

  • Trainer: Dave Thomas

  • This course is for you if...
    • you know Erlang and want to try Elixir
    • you know some Elixir and need to get to the next level
    • you're a programmer who hasn't tried either, but wants to...


    The best way to get a feel for a language is to write lots of code in it, and that's what we'll do. Expect to be programming, ideally in pairs, for at least half the time. For the rest of the time, I'll present and lead discussions. We'll all aim to create an online game, but we'll take it in steps:

    • first we'll write some basic support code
    • then we'll implement a library the implements the game logic. Doing this will let us experiment with a functional style of coding.
    • we'll write a console interface to our game engine, so we can play it. But we'll write it as a separate application, so we'll learn how this kind of structuring enforces strict isolation of components.
    • our game engine needs to become a fully fledged server, so we'll do that. But we won't do it the way most people use. Instead, we'll play with my favorite way of arranging this kind of code.
    • once our game engine is a server, we can run it from multiple clients. You can even use your client code to play on someone else's server (network willing).
    • now we're going for the IPO—we'll put our game on the web. We won't write it as an HTML app, though. Instead we'll use Phoenix channels to drive a JavaScript client in the browser. And, as if by magic, that API will be identical to the one we used for the command line client.
    • if we have time, we'll play with Phoenix presence, for a true social multiplayer experience.

    The main idea is to show you how a functional approach leads to pure, clean, and reusable code. As we add more and more functionality, the code we've already written will just continue to work.

    • Bring:
    • A laptop with Elixir installed.