Elixir and Phoenix

Functional Programming Programming languages

Elixir makes sense for business, and waves of developers are falling in love the language and its web framework Phoenix. Why? Elixir is a modern and expressive functional programming language that delivers the productivity and "developer joy" of Ruby and all of the power of Erlang. Elixir was designed to take the best language qualities of Ruby, Clojure and Erlang then adds a pinch of F# and Python. Elixir code runs on the Erlang VM and compiles to the same binary format (BEAM file) as Erlang, so it has zero-penalty access to Erlang libraries including OTP. Just like Erlang, it supports hot code loading and scales beautifully (scales-up to many cores, scales-out to many machines). Phoenix builds on this to provide a super-productive, reliable, and performant alternative to Node.js or Rails.

In this course we will begin with a solid foundation. You will learn the fundamentals of the Elixir programming language, its tooling, OTP, the superpowers of the Erlang VM, and how to test-drive your code.

In the second day you will build web applications using Elixir and the Phoenix Framework. We will walk through the components of Phoenix in great detail, learning how to structure applications into a pipeline of small functions, each building upon the previous.

We'll explore a new functional approach to the traditional Model-View-Controller pattern. You will also learn how to integrate with databases through the Ecto library. And finally, we will explore channels, the feature that will enable you to build the next generation, highly concurrent, interactive applications.

Day one: Elixir Fundamentals

  • The What and Why of Elixir
  • The Language (basic types, data structures and lists, pattern-matching and control flow, protocols)
  • The Erlang VM and concurrency-oriented programming with processes and message passing
  • OTP for building fault-tolerant applications
  • Distributed Elixir
  • Metaprogramming
  • Testing in Elixir

Day two: The Phoenix Framework

  • Scaffolding application with Mix
  • Routing and Plug
  • Controllers, Views, and Templates
  • Data access with Ecto
  • Channels
  • Configuration and deployment


  • Comfortable with one or more programming language such as C#, JavaScript, or Ruby.
  • Familiarity with other web frameworks such as ASP.NET MVC, Ruby on Rails, or Django will be helpful.

Computer setup

This workshop requires that you bring a laptop with the following software installed:

  • A code editor (e.g. Sublime Text, Atom, Emacs, Vim)
  • A command line Git client and a GitHub user account


09:00 - 17:00