2.4 Understanding the type system
Modules and functions in the runtime
Matching bitstrings and binaries
Branching with multiclause functions
Classical branching expressions
4.2 Working with hierarchical data
Immutable hierarchical updates
Exercise: Importing from a file
4.3 Polymorphism with protocols
6.1 Building a generic server process
Supporting asynchronous requests
Exercise: Refactoring the to-do server
Exercise: GenServer-powered to-do server
7 Building a concurrent system
7.1 Working with the Mix project
7.2 Managing multiple to-do lists
Analyzing process dependencies
Addressing the process bottleneck
Exercise: Pooling and synchronizing
8.2 Errors in concurrent systems
Starting the supervisor process
Separating loosely dependent parts
Organizing the supervision tree
9.2 Starting processes dynamically
Using the temporary restart strategy
Processes that shouldn’t crash
Creating applications with the mix tool
Implementing the application callback
The application folder structure
11.2 Working with dependencies
12 Building a distributed system
12.2 Building a fault-tolerant cluster
Implementing a replicated database
13.1 Running a system with Elixir tools
Using the mix and elixir commands
Packaging in a Docker container