Elixir Patterns book free chapters

Download CHAPTER 1, 2 and

the accompanying Livebooks

for free!

    We respect your privacy. Unsubscribe at any time.

    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:

    1. The Erlang Standard Library Part 1
      1. What are immutable data structures
      2. Using Queues in Erlang
      3. The many Set implementations in Erlang
      4. Arrays...in Erlang?
      5. Using the Erlang module for everyday tasks
    2. The Erlang Standard Library Part 2
      1. Directed graphs with the Digraph module
      2. Fast Incrementers with Atomics and Counters
      3. Blazing fast data Reads with Persistent Term
      4. Using ETS and DETS for general purpose data storage
      5. Keeping things secret with the Crypto module
    3. The Elixir Standard Library
      1. Cleansing, massaging and summarizing data with the Enum module
      2. Processing data with an unknown length using the Stream module
    4. Agents, Tasks and GenServers
      1. Encapsulating state within a process using the Agent module
      2. Process introspection using the Process and :sys modules
      3. Easy concurrency orchestration using the Task module
      4. GenServer deep dive
      5. Building a Cron Job Genserver
      6. Testing named GenServers
    5. Supervisors and GenServers Orchestration
      1. What is a Supervisor?
      2. Elixir and OTP Building Blocks
      3. The lifecycle of Supervisors and Processes
      4. Data buffering Supervision tree
      5. Scaling Up with Partition Supervisor
    6. Supervisor Initialization Patterns
      1. When can I use initialization processes?
      2. Running asynchronous initialization jobs
      3. Running synchronous initialization jobs
      4. Conditionally starting GenServers via Config
    7. Advanced GenServer Recipes
      1. Building a rate limiter
      2. Building a work delegation supervision tree
    8. Scalable Actor Model and the Adapter Pattern
      1. Scalable actor model architecture with caching support
      2. The adapter pattern

    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 Barauna
    ​

    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.