Lunch Talks #3: Elixir, the good parts
Note : This is a post on the series "Lunch Talks". Each week, a member of our team selects a talk itinerary to watch after lunch, with the goal of keeping up-to-date and sharing knowledge.
At Codegram, we've been following closely the Elixir project since the early beginnings, mostly because José Valim (Rails core member & prominent open sourcerer at the Ruby world) was involved.
Even though we feel like it's an incredibly powerful technology and fits the general mindset of the company in terms of expressiveness, pragmatism & great community, truth is we've failed in making it part of our day-to-day so far.
In order to address that, I've selected some talks about some of the best parts of Elixir, focusing not only on what Elixir *does*, but in which kind of problems does it solve better. Coincidentally, some of the talks use Ruby to run some comparisons, probably because of the closeness of both communities.
So, without further ado:
1 - Elixir and OTP for Rubyists, from John Mosesman
This video is a great introduction to Elixir and goes deep enough to get a sense of why it runs on Erlang and extensively uses OTP to power frameworks like Phoenix.
2 - Processing 2.7 Million Images with Elixir vs Ruby, from David Padilla
In this talk, David explains how he tried to solve a problem - resizing 2.7 million images - in both Ruby and Elixir. While the final solution isn't that complex or difficult to achieve in other languages, the code he shows is nice and approachable, hopefully helping us get a hold on some of the language's nice constructs.
3 - Intermediate SQL with Ecto, from Dennis Beatty
Elixir has powerful metaprogramming capabilities, and that shows on Ecto - a library to interact with data persistency that uses a succint DSL, giving the developer absolute power on the underlying SQL queries (or any other kind of relational data).
4 - Should we useElixir?, from Rob Conery
This Keynote from Rob Conery really resonates with me. While I'm already on board with the goodness of Elixir, as a company, it's difficult to make the leap. I keep going back to "well, realistically, I can do that in Rails as well". So... should we use it?
In my research, I found other really interesting talks that I didn't end up putting in the list - although I find them really interesting:
- ActiveRecord vs Ecto, from Brad Urani.
- Ecto: Database Library for Elixir, from Eric Meadows Jöhnson
- Actor Model in Elixir, from Michał Muskała
- Intro to OTP in Elixir, from Jesse J. Anderson
- ElixirCasts: Quick, short screencasts about Elixir.
Elixir is a language that looks familiar to us as a company, having done Ruby for many years (and still do!). But the similarities are superficial; Elixir is a fundamental paradigm shift in many aspects - it's functional, immutable, and has a concurrency model (actors) that forces you to rethink the way you build software. On top of that, there's OTP, a whole framework with an enormous set of abstractions to wrap your mind around.
But that's precisely what's attractive about it. If you only have a hammer, everything looks like a nail - having more tools available on our toolbox empowers us to use the appropriate tool - Elixir - to solve a different category of problems in a more elegant way and, at the same time, we'll be able to see Ruby in perspective and learn to value its many strengths and identify its weaknesses.