Learn Elixir
This collection of episodes is a great place to start learning Elixir. These tutorials guide you through the core concepts that make Elixir powerful and unique.
You'll start with functions and control flow fundamentals, then discover pattern matching - Elixir's elegant way to destructure data and control program flow.
You'll explore Elixir's renowned concurrency model through practical introductions to GenServers (for stateful processes), Agents (for state management), and Tasks (for running concurrent code).
For web development, we cover Plug - the foundation of Phoenix and other Elixir web frameworks, teaching both function and module plugs. You'll also explore guards, which add powerful conditional logic to your pattern matching.

#10: Intro to Elixir Functions
If you want to get started using Elixir, but don’t know where to begin - this is a great place to start. We’ll dive into how to create and call named and anonymous functions in Elixir.

#12: Intro to GenServer
Jump into the Elixir GenServer module. In this episode we’ll get started using GenServer to create a simple shopping list module that can we can use to add, remove, and view our groceries.

#19: Intro to Function Plugs
Plug is an essential tool when building web applications in Elixir. In this episode we’ll dive into function plugs by building one and using it in an existing Phoenix application.

#20: Intro to Module Plugs
In this episode we’ll get an intro to module plugs in Elixir. We’ll take an existing function plug and convert it into a module plug - highlighting the difference between the two.

#24: Pattern Matching in Elixir
Pattern matching is one of the fundamental features of Elixir. In this episode we get a simple introduction to it and some of the ways it’s used in Elixir.

#32: Intro to Agents
Elixir Agents are used to manage state. In this episode we’ll learn how we can use an Agent to update and retrieve some state of our own.

#33: Elixir Control Flow
In this episode we’ll learn about three different control structures in Elixir: if/else, case, and cond. If you’re new to Elixir or just learning programming this is a great episode to start with.

#34: Elixir Guards
In this episode we take a look at guards and how we can use them in Elixir. We’ll start by using guards with functions to see how they work. Then we’ll extract them into custom guards with defguard.

Alchemist's Edition
#63: Getting Started with Tasks
In this episode we’ll be exploring one of the key features of Elixir: tasks. Tasks make it easy to run Elixir code concurrently. In this episode we’ll look at some common ways Task is used.

#66: Pipe Operator
The pipe operator is one of the great features that makes it fun to write Elixir code. In this episode we’ll see how to use it to chain operations together in a way that’s easy to read.

Alchemist's Edition
#72: Intro to Elixir Streams
In this episode we’ll get an introduction to Elixir Streams. We’ll see why they’re called “lazy enumerables” and how they can be composed to perform more complex transformations.