Learning more about compilers is a great way to demystify what happens from the moment you start to build your code to its output. This demystification is a quite good step in becoming a better developer and expanding our horizons; not only this knowledge is important to understand how tools like Babel, virtual machines, and other stuff from our everyday routine work but it also allows us to see in-depth how code optimization, reverse engineering and other obscure techniques are done.
In this talk, I'll use as a case study a compiler that I'm currently working on to show you how to build one from scratch using Elixir–explaining each phase of a compilation process and how Elixir can help us on this challenge–and, in the end of the day, I'll have obtained your Compilers 101 degree.