Elixir Patterns (self-published) (handbook)


By @akoutmos and @hugobarauna

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
  2. What are Data Structures
  3. Using Queues in Erlang
  4. The Many Set Implementations in Erlang
  5. Arrays…in Erlang?
  6. Using the Erlang Module for Everyday Tasks
  7. The Erlang Standard Library Part 2
  8. Directed Graphs with the Digraph Module
  9. Fast Incrementers with Atomics and Counters
  10. Blazing Fast Data Reads with Persistent Term
  11. Using ETS and DETS for General Purpose Data Storage
  12. Keeping Things Secret with the Crypto Module
  13. The Elixir Standard Library
  14. Useful Enum Module Patterns
  15. Being Lazy with the Stream Module
  16. Massive Concurrency with the Task Module
  17. The Process Module
  18. GenServers and Supervisors
  19. Erlang Application Philosophy
  20. What is a GenServer?
  21. Understanding the Callbacks
  22. The Lifecycle of a GenServer
  23. What is a Supervisor
  24. Combining Supervisors and GenServers
  25. Basic GenServer Recipes
  26. Initializing an Application
  27. Message and Data Batching
  28. Running Cron Jobs
  29. Process Introspection with the Sys Module
  30. Advanced GenServer Recipes
  31. Rate Limiting
  32. Work Delegator
  33. Actor Model Design
  34. Testing Stateful Applications
  35. Application Release Packaging
  36. What is an Erlang Release
  37. Why Should you use Erlang Releases?
  38. Handling Application Configuration
  39. Behaviours and Protocols for Environment Specific Adapters
35 Likes

How to buy? I only see an option to download a free chapter…

1 Like

I think you may have to wait until the launch. This is pre-launch.

2 Likes

Maybe @akoutmos or @hugobarauna can shed some light on a possible release date :smiley:

We’re currently targeting a full book release for the Summer. We should be releasing chapter two this coming week, which will also be a free download. PDF and Livebooks included :smiley:

6 Likes

@hugobarauna and I just published chapter 2 of Elixir Patterns! In chapter 2 we cover some of the more advanced Erlang data structures available to us with some really helpful Livebooks to show you how they all work :).

Be sure to check it out: https://elixirpatterns.dev/

5 Likes

@hugobarauna and I excited to announce the the Elixir Patterns book is in beta release! Part one of the book is complete and we’re currently working on wrapping up part 2. Each chapter has a couple of accompanying Livebook files to help you learn and experiment with the concepts in the chapter. Check it out @ https://elixirpatterns.dev/ and if you are interested in picking up a copy, you get an early beta price :wink:

10 Likes

Just released the next round of content (PDF and Livebooks)!. We also got a fresh new cover :smiley:. Really excited about this release and happy to get it into readers hands!

We’re still running the beta price so be sure to get your copy if you haven’t already :wink:: https://elixirpatterns.dev/

7 Likes

Hello ! How to download the latest version ? I bought the book but I think I have missed the last email :frowning: very interesting book by the way !

Just wondering about the timescale for completion of all the chapters.

2 Likes

One of the authors currently focuses on some family health issues and will finish the work once these are overcome.

So there is no definitive timescale AFAIK :slight_smile:

1 Like

Apologies for the delay with the Elixir Patterns book. My wife and our newborn both fell very ill back in February and I had to put a pause on pretty much everything from the book, open source, blogging, podcasting and everything inbetween in order to take care of the family. My wife was fairly close to death’s door, but thank God she has recovered and is improving day by day. Still a long way to go but we’re getting there.

I am hoping that I will be back to writing the book in a few weeks. And after that hopefully back to doing some open source work. It’s been a long road for the family and I appreciate all the support from the Elixir community :heart:.

27 Likes

I’m very sorry to hear that. I’m glad to hear they are getting better and my thoughts are with you. I do hope you did not think my query was at all ‘pushy’ - this was not my intention at all. Your priority has got to be your family and I am grateful for authors like you in the Elixir community willing to spend the time to produce the brilliant resources that you do. All the best to you for the future.

4 Likes

Appreciate the kind words my friend :pray:. Didn’t take your comment as pushy at all, just wanted to let you know what was going on and when you can expect some updated content :slight_smile:.

2 Likes

@hugobarauna and I have some fantastic news…the Elixir Patterns books is complete and in release candidate!!

The eighth and final chapter dives into:

  • Building a Scalable Actor Model with Caching Support: Learn how to architect a high-performance, fault-tolerant system using GenServers, ETS, and DynamicSupervisor.
  • Implementing a Fault-Tolerant ETS Cache: Discover techniques to make your ETS caches resilient to failures, ensuring that your system can recover and maintain state even after unexpected process crashes.
  • Adapter Pattern in Elixir: Understand how to use Elixir’s behaviours to implement the adapter pattern, allowing you to easily swap out dependencies at run-time or compile-time.

Here is a sneak peak at the final boss supervision tree :smiley:

This is the first release candidate of Elixir Patterns which means that the book’s content is complete, but we expect minor adjustments and potential errata. If you haven’t so already, be sure to pick up your copy at: https://elixirpatterns.dev/

20 Likes

Just bought the book. I really liked the way content was outlined. Looking forward to reading this. Skimmed the first two chapters quickly and I like what I see :slight_smile:

Thank you for writing this.

Update: Just looked at some of the LiveBooks. I can see myself browsing the livebook after finishing a section, resulting in a pretty unique experience for a book. I hope more books follow this pattern.

2 Likes

Thank you for the kind words and we really appreciate the support!!

I’m happy to hear that you like the unique experience that the book + Livebooks offer. That was very much our intention when we kicked off this project and it’s nice to know that we placed the correct bet :wink:.

The Livebooks also make it super convenient for copying and pasting code into your own projects (very much inspired by the TailwindUI experience). Just the other day I needed the skeleton for a cron job GenServer and I copy and pasted right from the Elixir Patterns Livebook :smiley:.

4 Likes

How do we get the final release of the book?

@hugobarauna and I are in the process of collecting feedback during the Release Candidate phase and will be updating the content accordingly over the next few weeks.

If you purchased the book we’ll be sure to email you the final copy once it is released!

3 Likes

I was looking into buying the book. Will there be an epub version?

2 Likes