Master functional programming fundamentals with Elixir — from pattern matching to processes and beyond