If you're anything like me, you probably started to learn Elixir and wanted to skip to the shiny stuff right away. Sure there's some basics to sift through like the data types and specific syntax elements but after that, we can finally build a distributed, scalable, performant masterpiece of an application! - Riiigt? Granted, even if you're a bit more of a sane person, once you get to work with Supervisor, GenServer, Agent and other modules alike, you can't help but feel that things have been simplified a lot for you. That's great but sometimes, this comes at the cost of a framework doing complex magic that you have no hope of deciphering if something ever goes wrong.

I've read a few books on Elixir by now and yes, most of them will tell you that this is not the case in Elixir/OTP and things are actually really simple internally but... that's exactly what someone with lost of complex magic in their modules would say, eh! In short, You've probably read about this topic but you probably also didn't believe it. If you have not yet done your own research, this article is here to slap some code in your face to proof to you how thin of a layer a lot of the shiny stuff in Elixir is and provide some insight on why it works so nicely.

Read more →