Email the Author

You can use this page to email Paul Schoenfelder about The Alchemist's Guide To OTP.

Please include an email address so the author can respond to your query

This message will be sent to Paul Schoenfelder

This site is protected by reCAPTCHA and the Google  Privacy Policy and  Terms of Service apply.

About the Book

I’ve been using Elixir for projects since sometime around 2012-2013, and the one thing that I always wanted was the programming equivalent of a field manual - a handbook intended for use while practicing your craft; concise, visual, and practical. I wanted it oriented around examples which were non-trivial, which would enable you to understand the tools at your disposal in a context closer to reality. This book is my take on what that looks like.

The Alchemist’s Guide to OTP is intended for Elixir programmers who are already somewhat comfortable with the language, and have a basic grasp of OTP concepts (i.e. applications, supervisors, etc.); this provides us room for looking at these concepts in detail, going all the way down to how they work internally. The book also covers a number of topics which are tangential to OTP, but which are an important element in the structure and design of efficient Elixir systems.

The book uses an application, Autofactory, to keep the topics grounded in a real project. The full source code of this application is included with the book, and is intended to be extended and experimented with for putting the patterns and ideas in this book to practice. Autofactory is a simulated manufacturing facility, which receives orders via API, and simulates the entire manufacturing process in detail. This provides us a practical foundation for discussing concepts like flow control, load shedding, circuit breakers and more, with just enough complexity to illustrate the issues and their solutions.

Some of the topics covered:

  • Designing applications by examining the problem domain and how it breaks down into concepts which map well to Elixir architectural patterns
  • How to determine application boundaries
  • How to design modular applications by building against protocols/behaviours, abstracting implementations from interfaces, and injecting implementations via configuration rather than directly calling them
  • Investigating OTP primitives in detail (applications, supervisors, special processes, etc.), including common pitfalls and how to avoid them
  • Effective use of finite state machines (via GenStateMachine)
  • Effective use of macros for reducing boilerplate without going "macro crazy"
  • Flow control, load shedding, circuit breakers
  • A variety of architectural patterns both large and small ("process as message", error kernels, stacking theory, etc.)
  • Everything about releases: configuration, migrations, hot upgrades, appups
  • Operations: troubleshooting in production, tracing and debugging tools, metrics, alarms
  • Writing efficient Elixir programs

About the Author

Paul Schoenfelder’s avatar Paul Schoenfelder

@gotbones

I'm a software engineer passionate about open source. I'm heavily involved in the Elixir/Erlang community, have contributed to both languages and am the author and maintainer of Distillery, as well as a number of other libraries.

Logo white 96 67 2x

Publish Early, Publish Often

  • Path
  • There are many paths, but the one you're on right now on Leanpub is:
  • The-alchemists-guide-to-otp › Email Author › New
    • READERS
    • Newsletters
    • Weekly Sale
    • Monthly Sale
    • Store
    • Home
    • Redeem a Token
    • Search
    • Support
    • Leanpub FAQ
    • Leanpub Author FAQ
    • Search our Help Center
    • How to Contact Us
    • FRONTMATTER PODCAST
    • Featured Episode
    • Episode List
    • MEMBERSHIPS
    • Reader Memberships
    • Department Reader Memberships
    • Author Memberships
    • Your Membership
    • COMPANY
    • About
    • About Leanpub
    • Blog
    • Contact
    • Press
    • Essays
    • AI Services
    • Imagine a world...
    • Manifesto
    • More
    • Partner Program
    • Causes
    • Accessibility
    • AUTHORS
    • Write and Publish on Leanpub
    • Create a Book
    • Create a Bundle
    • Create a Course
    • Create a Track
    • Testimonials
    • Why Leanpub
    • Services
    • TranslateAI
    • TranslateWord
    • TranslateEPUB
    • PublishWord
    • Publish on Amazon
    • CourseAI
    • GlobalAuthor
    • Marketing Packages
    • IndexAI
    • Author Newsletter
    • The Leanpub Author Update
    • Author Support
    • Author Help Center
    • Leanpub Authors Forum
    • The Leanpub Manual
    • Supported Languages
    • The LFM Manual
    • Markua Manual
    • API Docs
    • Organizations
    • Learn More
    • Sign Up
    • LEGAL
    • Terms of Service
    • Copyright Policy
    • Privacy Policy
    • Refund Policy

*   *   *

Leanpub is copyright © 2010-2025 Ruboss Technology Corp.
All rights reserved.

This site is protected by reCAPTCHA
and the Google  Privacy Policy and  Terms of Service apply.

Leanpub requires cookies in order to provide you the best experience. Dismiss