Brought to you by
Workshop logo

Elixir & Phoenix Workshops

Learn how to build web apps of a new era.

Workshops will be held a few times a year in Europe and the US - sign up to be notified about locations and dates.

Please contact us for tailored, on-site workshops for teams.

Phoenix and Elixir

The Phoenix Framework allows developers to build robust, performant and scalable web applications faster than ever. By combining Elixir's modern language syntax and tried-and tested foundation, with many of the productivity benefits that made Ruby on Rails astonishingly popular, this new web framework promises to be great (dare I say, ideal?) option for a variety of projects.

The Workshop

In this workshop we'll begin by teaching you a little bit about Elixir - an easy-to-use functional programming language that runs on the BEAM (Erlang's virtual machine). We'll then dive into our first Phoenix app, tackling topics like data persistence, routing, authentication and error handling before the end of the first day.

On day two, we'll go back to learning about pure Elixir, tackling some more advanced topics like inter-process communication, distributed storage with ETS and security. After lunch, we'll put some of this knowledge to work in our Phoenix app by writing some tests, hashing passwords, encrypting database columns and more!

Time Schedule

Day 1
Morning, Elixir Basics
  • Welcome, and get everyone set up (15m)
  • Foundations & Origins (20m)
  • Basic types, operators, pattern matching and control flow (30m)
  • Exercise 1 (20m) - Write a magic 8 ball program in Elixir!
  • Lists, maps, structs, binaries (20m)
  • Exercise 2 (20m) - Enhance our magic 8 ball, using lists
  • Exercise 3 (20m) - Stream magic 8 ball responses from a text file
  • Modules, alias, require and import (15m)

Afternoon, Phoenix Basics
  • Phoenix origins & principles (20m)
  • Plugs, endpoint, routing, controllers (20m)
  • phoenix_html and basic views (20m)
  • Exercise 4 (30m) - Make the index.html view more dynamic, with queryParams!
  • Ecto models, validations, changesets, "where did my model lifecycle hooks go" (30m)
  • Really basic ecto querying (5m)
  • Exercise 5 (20m) - Returning a list of "active" users who have already been confirmed
  • More meaningful ecto querying (joins, related records, Queryable protocol) (20m)
  • Exercise 6 (20m) - Returning users and related records
  • Logging & Error handling (20m)
  • Exercise 7 (20m) - Building meaningful error pages for production
  • Channels (20m)
  • Exercise 8 (20m) - Beginnings of a chat room

Day 2
Morning, More wonderful Elixir
  • Genservers, agents, ETS (20m)
  • Exercise 9 (15m) - Genserver to talk to a third party API
  • Supervision Trees, poolboy for worker management (20m)
  • Exercise 10 (20m) - Supervising our genserver properly
  • Encryption, hashing & security best practices (40m)
  • Exercise 11 (40m) - Password hashing, AES encrypted DB columns, JWT
  • Processes & inter-process communication (30m)

Afternoon, More Phoenix
  • Sending Mail (10m)
  • Exercise 12 (30m) - Sending a user confirmation link via email
  • Login, logout (20m)
  • Exercise 13 (20m) - Register, login and logout routes
  • Building our own module plug (15m)
  • Exercise 13 (20m) - Authentication plug
  • Authentication w/ Tests, the painless way (20m)
  • Exercise 14 (30m) - Get our tests passing again
  • Exercise 15 (15m) - Chat from authenticated users only

Upcoming Dates

To be announced soon!

Workshops will be held a few times a year in Europe and the US - sign up above to be notified about locations and dates. Please contact us for tailored, on-site workshops for teams.

Mike North

Image of Marco Mike North

Mike is an opinionated framework and functional programming junkie, frontendmasters.com instructor, frequent open source contributor and global speaker on modern web technologies. He has taught developers all over the world how to use Phoenix, including at Ericsson Headquarters in Stockholm, Sweden - the birthplace of Erlang, and in Sao Paulo Brazil - the birthplace of Elixir.

https://twitter.com/MichaelLNorth https://github.com/mike-north