Elixir is known for being a language made for building distributed applications that scale, are massively concurrent, and have self-healing properties. But is Elixir good enough for the mundane scripts of this world?
When coming from object-oriented languages, I often hear people ask the question, “How do I organize my code? Modules are just bags of functions!”. That is a question I asked myself as well, but after using Elixir and Elm for a while, I have noticed that there is a principle of organization that I keep using and that I see in the wild. I like to think of it as the principle of attraction.
Concurrency is a first-class citizen in the Elixir platform. The concurrency
model is that of isolated, independent processes that share no memory
and communicate via asynchronous message passing. In other words, a process
can run concurrently without concern of others, and processes communicate
with each other only via send-and-forget messages.
Supervision trees are awesome. For a while I was a bit confused as to how to use the simple_one_for_one
supervision strategy. Let’s look at it step by step by creating a simple
bank account from which we can deposit and withdraw money.
When working on a feature, I often find pieces of code that I have not seen before. In order to better understand the class or method, I like to use tests as documentation and as a way to explore the code's functionality.