​
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
- Agents, Tasks and GenServers
- Encapsulating state within a process using the Agent module
- Process introspection using the Process and :sys modules
- Easy concurrency orchestration using the Task module
- GenServer deep dive
- Building a Cron Job Genserver
- Testing named GenServers
- Supervisors and GenServers Orchestration
- What is a Supervisor?
- Elixir and OTP Building Blocks
- The lifecycle of Supervisors and Processes
- Data buffering Supervision tree
- Scaling Up with Partition Supervisor
- Supervisor Initialization Patterns
- When can I use initialization processes?
- Running asynchronous initialization jobs
- Running synchronous initialization jobs
- Conditionally starting GenServers via Config
- Advanced GenServer Recipes
- Building a rate limiter
- Building a work delegation supervision tree
- Scalable Actor Model and the Adapter Pattern
- Scalable actor model architecture with caching support
- The adapter pattern
What will you get inside this RC version?
Before the book is fully launched, we're offering this release candidate (RC) version.
If you buy before launch, you'll get a big 38% discount! Instead of paying the full $79 price , you'll pay the $49 pre-launch price.
The RC version contains the complete book plus its accompanying Livebooks. That's a 310 pages book and their 20 accompanying Livebook notebooks.
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 a developer advocate at Livebook and the maintainer of Elixir Radar. Before that, he was one of the co-founders of Plataformatec, the company where the Elixir language was created.