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.

    Register for Tutorial

Deep Learning with TensorFlow and Guild AI (9-12.30pm, Marines Memorial Hotel)

The field of Artificial Intelligence has made amazing strides over the last few years. The driving force behind its success is Deep Learning, an approach to machines intelligence that uses complex multi-layer neural networks.

In this workshop we'll explore deep learning using TensorFlow, Google's recently released library for numerical computations. We'll also use Guild AI, an open source tool that supports collaboration on deep learning experiments.

By the end of the workshop you will have participated in a complete workflow of deep learning and have a basic understanding of how the process can be used to build applications.

  • Workshop Goals:
  • Introduce deep learning
  • Train a neural network
  • Tweak network hyper parameters
  • Put a network into production


This is an introduction to deep learning using TensorFlow. You should install TensorFlow and Guild AI on your laptop in preparation for the workshop.

  • TensorFlow:
  • Guild AI:

Some experience with Python will let you to dive deeper into the TensorFlow code but is not strictly required.

About Garrett

Garrett was a software engineer at CloudBees and is responsible for building scalable, er, that is, awesome software! At CloudBees Garrett led the development of the RUN platform-as-a-service that provided reliable, performant application hosting to tens of thousands of customers, which in turn served tens of millions of end-users!

Garrett's weapon of choice for the development of awesome software is Erlang - a highly concurrent functional programming language that use used by companies like Facebook, WhatsApp and Machine Zone to build the world's largest messaging systems. Garrett is an international speaker and instructor. He organizes the Chicago Erlang User Group which sponsors Chicago Erlang - an annual Erlang conference in the heart of the US. He is the author of several Erlang projects including e2, Psycho, and LambdaPad. He is the creator of the satirical videos MongoDB Is Web Scale, Node.js Is Bad Ass Rock Star Tech, and Erlang The Movie II, The Sequel.

Garrett maintains his blog at

Twitter: @gar1t
Github: gar1t

Register for Tutorial

Building Chatbots and Chatty Things (9-5pm, Marines Memorial Hotel)

Target Audience:

Software Developers & Engineers


Knowledge and experience of any programming language that has XMPP or HTTP client libraries, e.g. Erlang or Elixir.


A better understanding of tools for building and maintaining messaging systems based on the MongooseIM platform. Understand the basics of chatbots and MongooseIM APIs.

Course Outline:

This one-day course presents tools for building and maintaining messaging systems with MongooseIM platform. It gives insight into the deployment and configuration of a fully featured messaging server, and also monitoring tools which allow support engineers to inspect and monitor running system. It exercises installing client libraries on devices like RaspberryPi as well as implementing chatbots that can run on such devices.

The course contains the following topics:

  • Introduction to MongooseIM Platform
  • Installing the messaging service with MongooseIM Deploy
  • Monitoring MongooseIM server
  • Installing MongooseIM client libraries on RaspberryPi
  • Developing MongooseIM chatbots

About Michal

Michał Ślaski started programming in Erlang at the AGH - University of Science and Technology in Krakow, Poland, when working on his Masters prototyping massively multiplayer online games. After graduating, he joined Erlang Solutions on key projects around the world. He is currently heading Erlang Solutions' Krakow office in Poland, keeping the Erlang flag up high.

Twitter: @michalslaski
Github: michalslaski

Register for Tutorial