You already know the basics of Elixir. Maybe you have even shipped something to production. That's awesome! But how can you go one step further in your Elixir developer journey?
This book will help you to become a better Elixir developer by teaching you how to leverage the power of the BEAM runtime with recipes and patterns specific to Elixir/OTP.
About the book
The idea of having a "go-to" toolbox of patterns that you can leverage is an enticing one. That's what design patterns are about. But, design patterns are usually abstract and do not leverage unique properties of your specific run-time or language. That's how this book is different.
This book aims to surface the powerful and unique characteristics of the Erlang virtual machine (or BEAM for short) and show you how you can go about solving everyday problems in a simple yet scalable way.
Not only will you learn how to better leverage the tools that are at your disposal courtesy of Erlang and the BEAM, but you will also learn how to better utilize Functional Programming in order to achieve your goals in a clear and concise way. You'll start off by learning about some of the Erlang standard library utilities that are available to you right out of the box, and then you'll learn how to put those to use in your stateful GenServer powered applications.
What you'll learn in this book
Here's the book's table of contents:
- The Erlang Standard Library Part 1
- What are immutable data structures
- Using Queues in Erlang
- The many Set implementations in Erlang
- Arrays...in Erlang?
- Using the Erlang module for everyday tasks
- The Erlang Standard Library Part 2
- Directed graphs with the Digraph module
- Fast Incrementers with Atomics and Counters
- Blazing fast data Reads with Persistent Term
- Using ETS and DETS for general purpose data storage
- Keeping things secret with the Crypto module
- The Elixir Standard Library
- Cleansing, massaging and summarizing data with the Enum module
- Processing data with an unknown length using the Stream module
- Processes, GenServers and Supervisors
- Encapsulating state within a process using the Agent module
- Process introspection using the Process and :sys modules
- Easy concurrency orchestration using the Task module
- Erlang Application Philosophy
- What is a GenServer?
- Understanding the Callbacks
- The Lifecycle of a GenServer
- What is a Supervisor
- Combining Supervisors and GenServers
- Basic GenServer Recipes
- Initializing an Application
- Message and Data Batching
- Running Cron Jobs
- Process Introspection with the Sys Module
- Advanced GenServer Recipes
- Rate Limiting
- Work Delegator
- Actor Model Design
- Testing Stateful Applications
- Application Release Packaging
- What is an Erlang Release
- Why Should you use Erlang Releases?
- Handling Application Configuration
- Behaviours and Protocols for Environment Specific Adapters
What will you get inside this beta version?
Before the book is fully launched, we're offering a beta version.
Because it's beta, you'll get a big 38% discount! Instead of paying the full after launch $79 price , you'll pay the beta $49 price.
The beta version contains all the finished chapters plus its accompanying Livebooks. As of this moment, that's chapter, 1, 2, 3 and the first 3 sections of chapter 4 (that's 109 pages in total so far), their 7 accompanying Livebooks.
Every time we finish a new chapter, you'll receive an email with a link to download the newest version.
What people are saying about our book
About Alex Koutmos
Alexander Koutmos has been writing software professionally for over a decade and started working primarily with Elixir back in 2016. He currently maintains a few Elixir libraries on Hex, is a host on the BEAM Radio podcast, and wrote a book about building a weather station with Nerves and Elixir.
About Hugo Baraúna
Hugo Baraúna is the maintainer of Elixir Radar, one of the most popular newsletters and job boards for Elixir developers. Before that, he was one of the co-founders of Plataformatec, the company where the Elixir language was created.