Awesome
Awesome Elixir Books
Contents
Books
Starter Books
Adopting Elixir
<img src="https://covers.oreillystatic.com/images/9781680502527/cat.gif" width="180px" title="Elixir logo" />Adoption is more than programming. Elixir is an exciting new language, but to successfully get your application from start to finish, you’re going to need to know more than just the language. You need the case studies and strategies in this book. Learn the best practices for the whole life of your application, from design and team-building, to managing stakeholders, to deployment and monitoring. Go beyond the syntax and the tools to learn the techniques you need to develop your Elixir application from concept to production.
Elixir Cookbook
<img src="https://m.media-amazon.com/images/I/81-ZwJtxOJL._AC_UY436_QL65_ML3_.jpg" width="120px"/>This book is a set of recipes grouped by topic that acts as a good reference to get ideas from or to quickly search for a solution to a problem. You will begin by launching an IEx session and using it to test some ideas. Next, you will perform various operations like loading and compiling modules, inspecting your system, generating a supervised app, and so on. Furthermore, you will be introduced to immutability, working with data structures, performing pattern matching, and using stream modules to generate infinite data sequences. You will learn about everything from joining strings to determining the word frequency in text. With respect to modules and functions, you will also discover how to load code from other modules and use guards and pattern matching in functions.
Elixir in Action
<img src="https://images.manning.com/255/340/resize/book/5/2e8efb1-9e6f-462c-9487-04eac07ea623/juric.png" width="120px"/>Elixir in Action teaches you how to solve practical problems of scalability, concurrency, fault tolerance, and high availability using Elixir. You'll start with the language, learning basic constructs and building blocks. Then, you'll learn to think about problems using Elixir's functional programming mindset. With that solid foundation, you'll confidently explore Elixir's seamless integration with BEAM and Erlang's powerful OTP framework of battle-tested abstractions you can use immediately. Finally, the book provides guidance on how to distribute a system over multiple machines and control it in production.
Elixir succinctly Free
<img src="https://cdn.syncfusion.com/content/images/downloads/ebook/ebook-cover/elixir-succinctly.png" width="120px"/>This is a introductionary book about Elixir and OTP, written to go straight to the point. Almost 100 pages to learn the language and the platform.
Études for Elixir Free
<img src="https://learning.oreilly.com/library/cover/9781491917640/250w/" width="120px"/>In this book, you will find descriptions of programs that you can write in Elixir. The programs will usually be short, and each one has been designed to provide practice material for a particular Elixir programming concept. These programs have not been designed to be of considerable difficulty, though they may ask you to stretch a bit beyond the immediate material and examples that you find in the book Introducing Elixir.
Getting Started Free
<img src="https://elixir-lang.org/images/logo/logo.png" width="180px" title="Elixir logo" />Official Elixir starting guide that will take you through the language foundations. You will also explore how to build projects with Mix and OTP, and it will introduce you to more advanvced techniques suchs as meta-programming.
Introducing Elixir
<img src="https://learning.oreilly.com/library/cover/9781449369989/250w/" width="120px"/>Elixir is an excellent language if you want to learn about functional programming, and with this hands-on introduction, you’ll discover just how powerful and fun Elixir can be. This language combines the robust functional programming of Erlang with a syntax similar to Ruby, and includes powerful features for metaprogramming.
Learn Functional Programming with Elixir
<img src="http://t3.gstatic.com/images?q=tbn:ANd9GcSKqtSJPiXGRxX140Y-BAXI7Bt7ja9965hL_Xo4CVVBbrVNOlbm" width="120px"/>Elixir’s straightforward syntax and this guided tour give you a clean, simple path to learn modern functional programming techniques. No previous functional programming experience required! This book walks you through the right concepts at the right pace, as you explore immutable values and explicit data transformation, functions, modules, recursive functions, pattern matching, high-order functions, polymorphism, and failure handling, all while avoiding side effects.
Learn You Some Erlang for Great Good
<img src="https://nostarch.com/sites/default/files/imagecache/product_main_page/erlang_newsmall.png" width="120px"/>Hey there! This is Learn You Some Erlang for great good! This book is for you if you’ve got some programming experience and if you’re not too familiar with functional programming. It can still be useful if you’re too good for that, as we progressively go into more and more advanced topics.
Learning Elixir
<img src="https://static.packt-cdn.com/products/9781785881749/cover/smaller" width="120px"/>Elixir, based on Erlang’s virtual machine and ecosystem, makes it easier to achieve scalability, concurrency, fault tolerance, and high availability goals that are pursued by developers using any programming language or programming paradigm. Elixir is a modern programming language that utilizes the benefits offered by Erlang VM without really incorporating the complex syntaxes of Erlang.
Programming Elixir ≥ 1.6
<img src="https://pragprog.com/titles/elixir16/programming-elixir-1-6/elixir16_hu6d5b8b63a4954cb696e89b39f929331b_1496817_500x0_resize_q75_box.jpg" width="120px"/>This book is the introduction to Elixir for experienced programmers, completely updated for Elixir 1.6 and beyond. Explore functional programming without the academic overtones (tell me about monads just one more time). Create concurrent applications, but get them right without all the locking and consistency headaches. Meet Elixir, a modern, functional, concurrent language built on the rock-solid Erlang VM. Elixir’s pragmatic syntax and built-in support for metaprogramming will make you productive and keep you interested for the long haul. Maybe the time is right for the Next Big Thing. Maybe it’s Elixir.
The Little Elixir & OTP Guidebook
<img src="https://images.manning.com/255/340/resize/book/2/cf70537-0068-4d76-b254-3082c3bc12a3/TanWeiHao_final.png" width="120px"/>The Little Elixir & OTP Guidebook gets you started programming applications with Elixir and OTP. You begin with a quick overview of the Elixir language syntax, along with just enough functional programming to use it effectively. Then, you'll dive straight into OTP and learn how it helps you build scalable, fault-tolerant and distributed applications through several fun examples. Come rediscover the joy of programming with Elixir and remember how it feels like to be a beginner again.
The Ultimate Guide For Making the Jump To Elixir
<img src="https://images-na.ssl-images-amazon.com/images/I/51Ipbs%2BRkOL.jpg" width="120px"/>Want to learn an up and coming functional programming language? Check out Elixir, designed by Ruby on Rails core team member Jose Valim. If you have a full-time day job, a family, or other pressing commitments, taking hours out of your week to read blog posts or spending the time to contribute to open source could be a deal breaker for you. This book helps to get you up to speed with what you need to know.
Advanced Books
Building Scalable Applications with Erlang
<img src="https://pictures.abebooks.com/isbn/9780321636461-us.jpg" width="120px"/>Erlang is emerging as a leading language for concurrent programming in mission-critical enterprise environments where applications must deliver exceptional reliability, availability, and scalability. It’s already used by organizations ranging from Facebook to Amazon, and many others are adopting or considering it. As a functional language, however, Erlang is radically different from conventional object-oriented languages like C++ and Java. This book quickly brings experienced object-oriented programmers up to speed with both Erlang and the principles of functional programming. Jerry Jackson thoroughly explains Erlang’s key concepts, principles, and features, bridging the conceptual gaps that often frustrate object developers. Next, he shows how to use Erlang to build massively-scalable real-world systems with up to “nine nines” availability: that is, up to 99.9999999% uptime.
Craft GraphQL APIs in Elixir with Absinthe
<img src="https://pragprog.com/titles/wwgraphql/craft-graphql-apis-in-elixir-with-absinthe/wwgraphql_hu6d5b8b63a4954cb696e89b39f929331b_360248_500x0_resize_q75_box.jpg" width="120px"/>Your domain is rich and interconnected, and your API should be too. Upgrade your web API to GraphQL, leveraging its flexible queries to empower your users, and its declarative structure to simplify your code. Absinthe is the GraphQL toolkit for Elixir, a functional programming language designed to enable massive concurrency atop robust application architectures. Written by the creators of Absinthe, this book will help you take full advantage of these two groundbreaking technologies. Build your own flexible, high-performance APIs using step-by-step guidance and expert advice you won’t find anywhere else.s
Designing Elixir Systems with OTP
<img src="https://pragprog.com/titles/jgotp/designing-elixir-systems-with-otp/jgotp_hu6d5b8b63a4954cb696e89b39f929331b_938959_500x0_resize_q75_box.jpg" width="120px"/>You know how to code in Elixir; now learn to think in it. Learn to design libraries with intelligent layers that shape the right data structures, flow from one function into the next,and present the right APIs. Embrace the same OTP that’s kept our telephone systems reliable and fast for over 30 years. Move beyond understanding the OTP functions to knowing what’s happening under the hood, and why that matters. Using that knowledge, instinctively know how to design systems that deliver fast and resilient services to your users, all with an Elixir focus.
Designing for Scalability with Erlang/OTP
<img src="https://learning.oreilly.com/library/cover/9781449361556/250w/" width="120px"/>If you need to build a scalable, fault tolerant system with requirements for high availability, discover why the Erlang/OTP platform stands out for the breadth, depth, and consistency of its features. This hands-on guide demonstrates how to use the Erlang programming language and its OTP framework of reusable libraries, tools, and design principles to develop complex commercial-grade systems that simply cannot fail.
Erlang and Elixir for Imperative Programmers
<img src="https://media.springernature.com/full/springer-static/cover-hires/book/978-1-4842-2394-9?as=webp" width="120px"/>Learn and understand Erlang and Elixir and develop a working knowledge of the concepts of functional programming that underpin them. This book takes the author’s experience of taking on a project that required functional programming and real-time systems, breaks it down, and organizes it. You will get the necessary knowledge about differences to the languages you know, where to start, and where to go next.
Erlang and OTP in Action
<img src="https://images.manning.com/255/340/resize/book/f/d21069b-7a05-4be7-bcd8-7d38aff03e34/logan.png" width="120px"/>Erlang and OTP in Action teaches you the concepts of concurrent programming and the use of Erlang's message-passing model. It walks you through progressively more interesting examples, building systems in Erlang and integrating them with C/C++, Java, and .NET applications, including SOA and web architectures.
Erlang In Anger
<img src="https://s3.us-east-2.amazonaws.com/ferd.erlang-in-anger/book-cover.png" width="120px"/>This book intends to be a little guide about how to be the Erlang medic in a time of war. It is first and foremost a collection of tips and tricks to help understand where failures come from, and a dictionary of different code snippets and practices that helped developers debug production systems that were built in Erlang.
Mastering Elixir
<img src="https://static.packt-cdn.com/products/9781788472678/cover/smaller" width="120px"/>In this book you will learn how to build a rock-solid file hosting service on top of both Erlang’s OTP and using Elixir own abstractions, that allow you to build applications that are easy to parallelize and distribute. You'll use GenStage to process file uploads, and you'll then simplify it by implementing a DSL. You will use Phoenix to expose your application to the world. Upon finishing implementation, you will learn how to take your application to the cloud, using Kubernetes to automatically deploy, scale and manage it. Last, but not least, you will keep your peace of mind by both learning how to thoroughly test and then monitor your application when it goes live.
Metaprogramming Elixir
<img src="https://pragprog.com/titles/cmelixir/metaprogramming-elixir/cmelixir_hu6d5b8b63a4954cb696e89b39f929331b_1494046_500x0_resize_q75_box.jpg" width="120px"/>Write code that writes code with Elixir macros. Macros make metaprogramming possible and define the language itself. In this book, you’ll learn how to use macros to extend the language with fast, maintainable code and share functionality in ways you never thought possible. You’ll discover how to extend Elixir with your own first-class features, optimize performance, and create domain-specific languages.
Programming Erlang
<img src="https://pragprog.com/titles/jaerlang2/programming-erlang-2nd-edition/jaerlang2_hu6d6484fd7d993fffccac9fd34a29e94f_1016144_500x0_resize_q75_box.jpg" width="120px"/>A multi-user game, web site, cloud application, or networked database can have thousands of users all interacting at the same time. You need a powerful, industrial-strength tool to handle the really hard problems inherent in parallel, concurrent environments. You need Erlang. In this second edition of the bestselling Programming Erlang, you’ll learn how to write parallel programs that scale effortlessly on multicore systems.
Property-Based Testing with PropEr, Erlang, and Elixir
<img src="https://pragprog.com/titles/fhproper/property-based-testing-with-proper-erlang-and-elixir/fhproper_hu6d5b8b63a4954cb696e89b39f929331b_998569_500x0_resize_q75_box.jpg" width="120px"/>Property-based testing helps you create better, more solid tests with little code. By using the PropEr framework in both Erlang and Elixir, this book teaches you how to automatically generate test cases, test stateful programs, and change how you design your software for more principled and reliable approaches. You will be able to better explore the problem space, validate the assumptions you make when coming up with program behavior, and expose unexpected weaknesses in your design. PropEr will even show you how to reproduce the bugs it found. With this book, you will be writing efficient property-based tests in no time.
Hands-on Elixir & OTP: Cryptocurrency trading bot Free
<img src="https://raw.githubusercontent.com/Cinderella-Man/hands-on-elixir-and-otp-cryptocurrency-trading-bot/main/images/cover.png" width="120px"/>Want to learn Elixir & OTP by creating a real-world project? With Hands-on Elixir & OTP: Cryptocurrency trading bot you will gain hands-on experience by working on an interesting software project. We will explore all the key abstractions and essential principles through iterative implementation improvements.
Web Development
Building Web Applications with Erlang
<img src="https://learning.oreilly.com/library/cover/9781449320621/250w/" width="120px"/>Why choose Erlang for web applications? Discover the answer hands-on by building a simple web service with this book. If you’re an experienced web developer who knows basic Erlang, you’ll learn how to work with REST, dynamic content, web sockets, and concurrency through several examples. In the process, you’ll see first-hand that Erlang is ideal for building business-critical services.
Elixir and Elm Tutorial
<img src="https://s3.amazonaws.com/titlepages.leanpub.com/elixir-elm-tutorial/hero?1518079280" width="120px"/>Welcome to the world of functional web programming! In this book, we'll learn how to create fun, scalable, and maintainable web applications. We'll use the latest ideas from emerging languages like Elixir and Elm to craft a fun experience. Rather than focusing on theory, we'll take a practical approach and build a real-world application.
Functional Web Development with Elixir, OTP, and Phoenix
<img src="https://pragprog.com/titles/lhelph/functional-web-development-with-elixir-otp-and-phoenix/lhelph_hu6d5b8b63a4954cb696e89b39f929331b_345845_500x0_resize_q75_box.jpg" width="120px"/>Elixir and Phoenix are generating tremendous excitement as an unbeatable platform for building modern web applications. Make the most of them as you build a stateful web app with Elixir and OTP. Model domain entities without an ORM or a database. Manage server state and keep your code clean with OTP Behaviours. Layer on a Phoenix web interface without coupling it to the business logic. Open doors to powerful new techniques that will get you thinking about web development in fundamentally new ways.
Phoenix in Action
<img src="https://images-na.ssl-images-amazon.com/images/I/41V2OUmPO8L._SX397_BO1,204,203,200_.jpg" width="120px"/>Phoenix is a modern web framework built for the Elixir programming language. Elegant, fault-tolerant, and performant, Phoenix is as easy to use as Rails and as rock-solid as Elixir's Erlang-based foundation. Phoenix in Action builds on your existing web dev skills, teaching you the unique benefits of Phoenix along with just enough Elixir to get the job done.
Programming Ecto
<img src="https://m.media-amazon.com/images/I/81U41AFtHeL._AC_UY218_SEARCH213888_ML3_.jpg" width="120px"/>Languages may come and go, but the relational database endures. Learn how to use Ecto, the premier database library for Elixir, to connect your Elixir and Phoenix apps to databases. Get a firm handle on Ecto fundamentals with a module-by-module tour of the critical parts of Ecto. Then move on to more advanced topics and advice on best practices with a series of recipes that provide clear,step-by-step instructions on scenarios commonly encountered by app developers. Co-authored by the creator of Ecto, this title provides all the essentials you need to use Ecto effectively.
Programming Phoenix
<img src="http://ecx.images-amazon.com/images/I/41pPn50VnvL._SX415_BO1,204,203,200_.jpg" width="120px"/>Don’t accept the compromise between fast and beautiful: you can have it all. Phoenix creator Chris McCord, Elixir creator José Valim, and award-winning author Bruce Tate walk you through building an application that’s fast and reliable. At every step, you’ll learn from the Phoenix creators not just what to do, but why. Packed with insider insights, this definitive guide will be your constant companion in your journey from Phoenix novice to expert, as you build the next generation of web applications.
Real-Time Phoenix
<img src="https://m.media-amazon.com/images/I/81zoKXoKFbL._AC_UY436_QL65_ML3_.jpg" width="120px"/>Give users the real-time experience they expect, by using Elixir and Phoenix Channels to build applications that instantly react to changes and reflect the application’s true state. Learn how Elixir and Phoenix make it easy and enjoyable to create real-time applications that scale to a large number of users. Apply system design and development best practices to create applications that are easy to maintain. Gain confidence by learning how to break your applications before your users do. Deploy applications with minimized resource use and maximized performance.
Testing Elixir
<img src="https://pragprog.com/titles/lmelixir/testing-elixir/lmelixir-500.jpg" width="120px"/>Elixir offers new paradigms, and challenges you to test in unconventional ways. Start with ExUnit: almost everything you need to write tests covering all levels of detail, from unit to integration, but only if you know how to use it to the fullest—we’ll show you how. Explore testing Elixir-specific challenges such as OTP-based modules, asynchronous code, Ecto-based applications, and Phoenix applications. Explore new tools like Mox for mocks and StreamData for property-based testing. Armed with this knowledge, you can create test suites that add value to your production cycle and guard you from regressions.
Exploring Graphs with Elixir
<img src="https://pragprog.com/titles/thgraphs/exploring-graphs-with-elixir/thgraphs-beta-500.jpg" width="120px"/>Data is everywhere—it’s just not very well connected, which makes it super hard to relate dataset to dataset. Using graphs as the underlying glue, you can readily join data together and create navigation paths across diverse sets of data. Add Elixir, with its awesome power of concurrency, and you’ll soon be mastering data networks. Learn how different graph models can be accessed and used from within Elixir and how you can build a robust semantics overlay on top of graph data structures. We’ll start from the basics and examine the main graph paradigms. Get ready to embrace the world of connected data!
Genetic Algorithms in Elixir
<img src="https://pragprog.com/titles/smgaelixir/genetic-algorithms-in-elixir/smgaelixir-500.jpg" width="120px"/>From finance to artificial intelligence, genetic algorithms are a powerful tool with a wide array of applications. But you don’t need an exotic new language or framework to get started; you can learn about genetic algorithms in a language you’re already familiar with. Join us for an in-depth look at the algorithms, techniques, and methods that go into writing a genetic algorithm. From introductory problems to real-world applications, you’ll learn the underlying principles of problem solving using genetic algorithms.
Programmer Passport: Elixir
<img src="https://pragprog.com/titles/passelixir/programmer-passport-elixir/passelixir-500.jpg" width="120px"/>Elixir is a functional language that crosses many boundaries. With a syntax borrowing heavily from Ruby, a runtime that is on the Erlang BEAM, a macro system like that in Lisp, and a streaming library like you might find in Haskell, Elixir takes the best features from many environments. Elixir borrows from Erlang’s “Let It Crash” philosophy, and adds significant improvements with structs, first-class hygienic macros, and abstractions such as protocols. Many of these ideas were borrowed from other communities, and they make a big difference in language adoption. This book gives you a quick guided tour through the fascinating world of Elixir!
Build a Binary Clock with Elixir and Nerves
<img src="https://pragprog.com/titles/thnerves/build-a-binary-clock-with-elixir-and-nerves/thnerves-500.jpg" width="120px"/>Want to get better at coding Elixir? Write a hardware project with Nerves. As you build this binary clock, you’ll build in resiliency using OTP, the same libraries powering many commercial phone switches. You’ll attack complexity the way the experts do, using a layered approach. You’ll sharpen your debugging skills by taking small, easily verified steps toward your goal. When you’re done, you’ll have a working binary clock and a good appreciation of the work that goes into a hardware system. You’ll also be able to apply that understanding to every new line of Elixir you write.
Build a Weather Station with Elixir and Nerves
<img src="https://pragprog.com/titles/passweather/build-a-weather-station-with-elixir-and-nerves/passweather-500.jpg" width="120px"/>The Elixir programming language has become a go-to tool for creating reliable, fault-tolerant, and robust server-side applications. Thanks to Nerves, those same exact benefits can be realized in embedded applications. This book will teach you how to structure, build, and deploy production grade Nerves applications to network-enabled devices. The weather station sensor hub project that you will be embarking upon will show you how to create a full stack IoT solution in record time. You will build everything from the embedded Nerves device to the Phoenix backend and even the Grafana time-series data visualizations.
Concurrent Data Processing in Elixir
<img src="https://pragprog.com/titles/sgdpelixir/concurrent-data-processing-in-elixir/sgdpelixir-500.jpg" width="120px"/>Learn different ways of writing concurrent code in Elixir and increase your application’s performance, without sacrificing scalability or fault-tolerance. Most projects benefit from running background tasks and processing data concurrently, but the world of OTP and various libraries can be challenging. Which Supervisor and what strategy to use? What about GenServer? Maybe you need back-pressure, but is GenStage, Flow, or Broadway a better choice? You will learn everything you need to know to answer these questions, start building highly concurrent applications in no time, and write code that’s not only fast, but also resilient to errors and easy to scale.
Programming Phoenix LiveView
<img src="https://pragprog.com/titles/liveview/programming-phoenix-liveview/liveview-beta-500.jpg" width="120px"/>The days of the traditional request-response web application are long gone, but you don’t have to wade through oceans of JavaScript to build the interactive applications today’s users crave. The innovative Phoenix LiveView library empowers you to build applications that are fast and highly interactive, without sacrificing reliability. This definitive guide to LiveView isn’t a reference manual. Learn to think in LiveView. Write your code layer by layer, the way the experts do. Explore techniques with experienced teachers to get the best possible performance.
Resources
- Joe Armstrong - A week with Elixir
- Elixir Sips
- LearnElixir.tv
- Stack Overflow
- Exercism.io
- Elixir Radar Newsletter
- Elixir Koans
- Awesome Elixir
- Discover Elixir & Phoenix
- Elixir School
- Elixir for Programmers
Contributing
Your contributions are always welcome, just follow the rules!
License
This work is licensed under a <a rel="license" href="https://creativecommons.org/licenses/by/4.0/">Creative Commons Attribution 4.0 International License</a>.