ElixirConf 2018: thoughts on Elixir from a Ruby developer
Elixir has had my attention for awhile now and my interest in the language and community hasn’t wavered. ElixirConf offered me an opportunity to translate that interest into action. As an experienced Rubyist, I am pleased with my development experience, community support, and the capabilities of Ruby. Elixir offers these same benefits and adds features such as concurrency, fault tolerance, and speed to the mix.
How does Elixir benefit application developers?
Real time notifications
We are becoming increasingly dependent on real time notifications. As a consumer, seldom do I use an application that does not have a notification system or some form of information sharing. Such features are expected to be timely and unobtrusive - I hope to receive useful information when and how I need it. As a developer, I apply a combination of state machines, background workers, and polling to solve this problem. This architecture introduces new dependencies and processes and, generally speaking, more complexity.
Elixir provides us with an alternative solution to these challenges while not sacrificing developer happiness. For example, the Task module is a perfect solution for offloading tasks like email delivery, image processing, and 3rd party communication to the background without the need for an external process.
The code you write makes you a programmer. The code you delete makes you a good one. The code you don’t have to write makes you a great one. – Mario Fusco
Immutability
As a functional language, Elixir has provided me with an opportunity to break from Object Oriented constructs. The differences between functional and OO is well documented so I’ll focus on one of my favorite distinctions. Immutability makes debugging simpler and results in more maintainable applications. In my experience, joining an established project involves both feature work and bug fixes. Both contribution types involve knowing the history of a project if you are to avoid regressions and I’ve found it challenging to follow objects through the stack when side effects are permitted. “No side effects” is a welcome side effect.
Pattern Matching
Although not unique to Erlang, pattern matching is quickly becoming one of my favorite features of the language. Pattern matching frees me to focus on a single state within my system and causes me to write more testable and maintainable code. Similar code written using a combination of conditionals and case and guard statements often leads to deeply nested logic and difficulty naming objects.
The benefits of Elixir for teams and clients
It has been said that more can be done with less code in Elixir. Less code does not imply less time-to-launch but it does provide hope that the application will be more maintainable and have fewer bugs which leads to more traffic.
Scalability
Elixir is scalable. No matter how big your client’s vision is, Elixir offers scalability, thanks to the BEAM, Erlang’s virtual machine. BEAM was originally known as “Turbo Erlang” and was created by Bogumil “Bogdan” Hausman. “Turbo Erlang” was renamed as “Bogdan’s Erlang Abstract Machine” or BEAM in order to satisfy legal concerns. More importantly, BEAM satisfied Ericsson’s telephony challenge dating back to 1986. The challenges Ericsson engineers faced was to support live upgrades and zero-down time applications, the same challenges we face today when writing Web and mobile applications. If Erlang successfully solved these challenges in the 80’s using much simpler hardware, surely it can apply today.
Stability
Erlang’s flagship project was built by Ericsson and is known as the AXD301. The AXD301 has over 2 million lines of Erlang and has achieved the elusive 9-nines of reliability. Considering that 5-nines or 99.999% uptime equates to 5.2 minutes of downtime per year and is widely seen as success, Erlang is capable.
ElixirConf 2018 keynote and presentations
My favorite presentation was the opening keynote from José Valim. José presented a clear vision and realizes that the future of Elixir needs to be driven by the community. The Core Team has set measurable goals, goals that encourage accountability and transparency. Consider the fact that version 2 is not expected to drop for some time and that there is only one breaking change planned. The steady rate of adoption and diverse set of use cases seen in the wild suggest the Core Team is making careful and deliberate decisions.
If we need a major language version to the change the language then we failed to build an extensible language – José Valim, Creator of Elixir
If you were unable to make the event, missed any of the presentations at ElixirConf 2018, or simply want to learn more about Elixir and the community, you can find the presentations on the ElixirConf YouTube Channel.
Is ElixirConf worth attending?
I plan to attend in the future and will recommend it to anyone interested in the language, whether beginning or experienced. The conference was well organized and designed in a way that encouraged discussion amongst conference goers. Sharing breakfast and lunch provided a good opportunity to network. The most interesting aspect of the conference, however, was seeing the diverse products being built with Elixir. The conference is a great opportunity to see the possibilities and to get inspired.