25 March 2014
The Best Resources for Learning Elixir
I’ve had a ton of fun learning Elixir lately, and have been trying to consume as much content about it as I can. It is really a shame that my brain doesn’t have multiple cores and run on the Erlang VM, because I could probably get through a lot more content if it did.
Here are some of my favorite resources for getting started in Elixir. I hope it is helpful!
Resources:
Programming Elixir
https://pragprog.com/book/elixir/programming-elixir
I have found Dave Thomas’s “Programming Elixir” the most important resource for learning Elixir. This book is excellent! I bought it on a whim because I was going to have a day or so alone and wanted to read something technical and learn something new.
I became intrigued about Elixir and heard about this book while listening to a talk from Ryan Cromwell at the Cincinnati Functional Programming group. After I read the first few chapters of “Programming Elixir” Dave had me as excited about Elixir as I was when I was first learning Ruby.
One of the things I have loved about this book is how quickly Dave jumps right into the thick of it. He starts out by saying that he assumes you are a programmer, makes some assumptions about why you are here, and then does not bog you down with introductory material. Because of this, the book feels like a quick read.
Elixir Sips
https://elixirsips.com/
https://elixirsips.com/episodes/054_maps_part_1.html
https://elixirsips.com/episodes/055_maps_part_2.html
Elixir Sips has been a wonderful find for me. Having come from Ruby and learned a lot early on from Ryan Bates’s Railscasts, Elixir sips was well worth subscribing to.
Josh Adams adds new videos very frequently and does a good job of condensing Elixir/Erlang topics down into a small digestible videos. Something you will want to check out is Josh’s videos on Elixir’s new map syntax that is going to be replacing records in v0.13. Josh has put these videos up for free on his site and they are going to be important for migrating older Elixir code that makes use of records.
Elixir Dose
https://elixirdose.com/
https://elixirdose.com/elixir-deck/
Elixir Dose is a wonderful site dedicated to giving you “A dose of Elixir for your mind” Produced By: Riza Fahmi and Edited By: Augie De Blieck Jr.
There are several great Elixir articles on ElixirDose but, I found the post on building a deck of cards in Elixir to be a really good example of how Elixir can be used to elegantly solve a problem.
Virtuous Code
https://devblog.avdi.org/category/elixir/
https://devblog.avdi.org/2013/11/20/fpoo-ch-1-exercises-in-elixir/
Avdi Grimm has several good posts on elixir that have been helpful to me.
Of particular interest is his series of articles where he goes through Brian Marick’s “Functional Programming for the Object-Oriented Programmer” in Elixir.
Elixir Fountain
Peter Cooper with his numerous weekly newsletters has made me a big fan of email digests for keeping up with technology. Luckily there is a weekly digest for Elixir. It is called Elixir Fountain and is hosted by HashRocket.
It may seem corny but, I eagerly await this newsletter every week and get excited every time it arrives in my inbox.
Neo.com and The internet of Things
https://www.neo.com/2014/01/14/elixir-and-the-internet-of-things-handling-a-stampede
https://www.neo.com/2014/01/30/elixir-and-the-internet-of-things-part-2-what-s-in-a-process
https://www.neo.com/2014/03/06/elixir-and-the-internet-of-things-part-3-rabbits-rabbits-everywhere
Doug Rohrer from our friends over at Neo wrote an excellent 3 part blog series on “Elixir and the internet of things”. These articles are really good and I especially appreciated the detail Doug went into about why Elixir was a good design choice for their problem at hand. I also learned some good OTP tricks from these articles and I think you will like them.
Exercism.io
Exercism.io has been a great for me. Whenever you are learning a new language particularly a young language like Elixir, it can be hard to get good feedback on the code you are writing. The Elixir track for excercism has given me really good detailed feedback in the form of advice and help. Not just comments saying “you’re doing it wrong”.
It can intimidating to put code out there for criticism especially when that code is in a language you are just beginning to learn, but I highly recommend using exercism.io to do so.
Official Elixir docs / Dash
https://elixir-lang.org/docs/stable/
https://www.erlang.org/erldoc
https://kapeli.com/dash
It should go without saying that if you are looking for documentation on function, read the official docs.
RTFM jokes aside, I am going to go a step further and say if you are on a Mac you owe it to yourself to download, install and promptly purchase Dash.
Dash is a tool for quickly searching and displaying documentation for several different OpenSource languages and libraries. This is great for Elixir because not only can you search the Elixir docs but the Erlang docs too. Dash has been a huge timesaver for me.
EXPM
One of the great things about Open Source communities is the abundance of libraries at your disposal. Elixir being a very young language I assumed there would be very few. Even though the ecosystem is still young there are quite a few good libraries and packages out there, and they are easy to find thanks to Expm.
It is worth mentioning that because Elixir is build upon the Erlang VM you can call any Erlang/BEAM code from within Elixir. As a matter of fact Elixir has a principle of not including modules into it’s standard library that just wrap Erlang libraries. Instead you should just use the Erlang libraries inside your Elixir code. Because of this principle Expm also includes other BEAM language packages.
Social Media
Most of the major social networks have Elixir communities. The few that I have used and found useful information on are.
The Elixir subreddit https://www.reddit.com/r/elixir
The #elixir-lang irc channel on freenode
Stack Overflow
https://stackoverflow.com/questions/tagged/elixir
Last, but not least Stack Overflow. There is a a goood community asking questions and giving answers here.