Actually, while I appreciate that "Programming Elixir" gets a lot of airtime, owning both books I believe that "Elixir in Action" is a much better resource than the former. "Programming Elixir" takes a pedantic, cover-all-bases, step-by-step approach with many of the gotchas not obvious at first, while the latter just dives in with idiomatic code and gets much more quickly to the "jewels" of the language, namely that which benefits from BEAM/OTP.
Not to denigrate Dave Thomas, just to say that being first is not always best. My personal experience, from an imperative background, is that the "Action" book is more terse, but ultimately offers a cleaner schema of the language.
True enough, I have read both (actually the 1st edition of "Programming Elixir"), and "Elixir in Action" is more hands-on. The reader ends up working on an actual project along the book, adding new functionalities.
However, since Elixir 1.2, some of "Elixir in Action" is now outdated, especially the use of HashDict replaced by Map.
I have not read the second edition of "Programming Elixir" though. Based on the table of contents it seems to be a bit more "applied" than the previous edition.
There is a post from the author that documents what has diverged between Elixir in Action and Elixir 1.2. More than simply updating code examples, it actually gives context around all of the changes.
Agreed - I was just today seeing that my edition of the book still pushes the hashdict. Perils of early adoption! Still, kudos to both and my advice to all peeps looking at Elixir (and you should!) is to buy both.
Should be noted that `Erlang in Anger` is available for free. It is a great book. And I agree, understanding Erlang is invaluable when working on real world projects with Elixir. The release process is still very 'erlangish', and knowing how the BEAM work is also important.
Elixirs IRC is also a great place to ask questions. Really warm and active community that have helped me quite a bit while I was learning Elixir (still am).
After 2 months using Elixir in a big project for a big company, I must say that I'm really enjoying what's going on. Some libraries are still young, but other than that, the main ones work as expected.
It's really awesome to see that Elixir is actually being used in the "real world". Do you mind sharing how you guys started using it? Did you start from scratch or were you an erlang shop prior to using Elixir?
We started right away from scratch on Elixir. No Erlang before, just Ruby and some other "best tools for the job". It's pretty cool to be able to select whatever technology fits what you want to achieve.
Also, just noticed that a relatively new but nice-seeming screen sharing app called CrankWheel put out a talk covering their realtime Erlang/Elixir-backed architecture: https://www.youtube.com/watch?v=6RGCPkdJBjI
Thank you for sharing this. If you are open to some constructive feedback, I'd say - The best help that Elixir can get at this moment is endorsements / detailed-examples from large and respected companies. That will help a lot of developers convince themselves and their teams that Elixir is ready to be considered seriously. So, although the brief mention (and some data) that Pinterest is using Elixir for Pinterest API and Ads API was helpful, more details about how Pinterest is using it and more details about what benefits it's getting because of that would help Elixir and its future users a lot!
The advantages are quite tangible, apparently (the best kind of argument, frankly). To excerpt some metrics from that link:
"So, we like Elixir and have seen some pretty big wins with it. The system that manages rate limits for both the Pinterest API and Ads API is built in Elixir. Its 50 percent response time is around 500 microseconds with a 90 percent response time of 800 microseconds. Yes, microseconds (millionths of a second). ...We’ve also seen an improvement in code clarity. We’re converting our notifications system from Java to Elixir. The Java version used an Actor system and weighed in at around 10,000 lines of code. The new Elixir system has shrunk this to around 1000 lines. The Elixir based system is also faster and more consistent than the Java one and runs on half the number of servers."
I'm not the kind of person to regularly use the exclamation, but I couldn't help saying "holy shit!" aloud when I first read that.
Are you referring to the LOC or the response times? If you're talking about the response times, then it totally depends on what the system was doing. Microsecond response times are achievable in any language, if e.g. you never had to talk to any external resources.
This just came up on my feed yesterday, might be interesting to you as well - post by a analytics company on moving parts of their system from MySQL-backed Ruby to a DB-free Elixir backed structure: https://moz.com/devblog/moz-analytics-db-free/
I am studying Elixir/Phoenix, and I am paralleling this with LFE (Lisp Flavored Erlang), a lisp front end to the Erlang compiler, created by Robert Virding, co-creator of Erlang. It seems like Elixir has the lion's share of popularity for the foreseeable future, but there are some differences to the approaches taken between the two besides syntax, and I am not choosing for work, since I do not make my living coding. See this response by Robert on being able to change the meaning of the Elixir constructs, but not actually add new functions, operators, etc... as can be done with a lisp, and therefore LFE [1].
I am also excited about how Pony for concurrency and messaging may address similar solutions[2].
Anyone interested in learning/speaking about Elixir and/or Phoenix should check out Empire City Elixir Conf, coming to New York City in May http://empex.co (I'm a co-organizer)