On April 22th and 23nd the Elixir Europe Conference took place in Krakow, Poland. It was a conference about a fairly new programming language Elixir, the first one to be organised in Europe (and 2nd worldwide). Elixir is a language built on top of the Erlang VM, which already exists for 20 years, with a syntax and tooling similar to Ruby.
Out of the ~150 attendees, most people (~90%) currently work with Ruby or have a Ruby background.
Although you can watch all talks online, I’d like to give a summary and some takeaways:
Joe Armstrong (co-creator of Erlang) presented us a picture of programming and computers for 20 years ahead, in which systems would be more dynamic.
Saša Jurić (author of Elixir in Action) shed some light on the inner working of the Erlang VM and explained why it’s well suited to build fault tolerant, distributed stuff. Coming from an OO background, one of his hardest challenges was to shift his mindset to the functional way. Main takeaway: although the Erlang VM is well suited for distributed systems, building a distributed system still isn’t easy.
Torben Hoffman (CTO of Erlang Solutions) shared his journey on programming with the Lego Mindstorms. Frustrated by the IDE/tooling Lego provided, which was hard to grasp even for a seasoned programmer, he set out to built his own tooling with Elixir. As a side effect he’s now using this experience to teach his and other kids to program, using Elixir as the base language.
Thomas Arts (CTO at Quviq) gave us an introduction in property testing using quickcheck. The idea behind property testing is to define the working of your system and let the computer/property testing tool come up with tests. He also showed how this way of testing could do things which are mostly hard with traditional Unit testing frameworks, for example testing for race conditions. I found this way of testing has several benefits:
- programmers have to do less boring stuff (having tests is a pleasure, but maintaining and writing them can be boring)
- you’ll have more test cases per tested part (since tests are generated)
- property testing also has a step called shrinking, in which it tries to find the smallest sample for which a test case failes, ie. it searches for boundaries in your failed test case
Viktória Fördõs & Francesco Cesarini (Erlang Solutions) talked about principles of good monitoring. Their take is to have tooling in place which will give you early warnings since you don’t want to fix problems, but prevent them. It’s an approach which I haven’t seen often, but hearing it actually makes a lot of sense. This sounded so straightforward, I wondered why don’t people do it more often. Main takeaway: make sure you have early alarms, which will indicate your system is nearing a danger zone. Make it easy to inspect your system from a single tool, ops shouldn’t have to dig through the system to get the needed info.
Miloš Mošić & Marco Herbst (Evercam) shared their story in search for a tool to build a scalable, distributed system. Their journey took them through 3 other languages/tools (.NET, Ruby & NodeJS) before they happily settled with Elixir. Fun fact: they were able to throw away different tech stack and use only Elixir.
"Our technology stack after starting using Elixir." - Miloš Mošić at #ElixirConf pic.twitter.com/7OKwi7mQN0— Lennart Fridén (@DevLCSC) 23 april 2015
Claudio Ortolina (developer @ New Bamboo) shared his story of a rewrite from a Ruby/Rails app into an Elixir version. They ended up with a huge savings cost, cutting the amount of server they used to a third.
José Valim (Elixir language creator) talked about ideas and roadmap for the near future (roughly until Elixir 1.3). Most ideas focus on better data processing. In the future it will be easier to build data pipelines to handle concurrent, lazy streams.
Chris McCord (creator of Phoenix framework) talked about the current state of Phoenix, its history and near future. It was nice to hear Chris’ team has a hard time to stress test Phoenix to it’s limits. Main focus for Phoenix team is getting to 1.0 which is a few months away.
Josh Adams (CTO Isotope11, Elixir Sips creator) showed how easy it is to make a web-based collaborative Tetris. It was a very fun presentation with a nice outcome: playing Tetris together without clear guidance is hard, some people tried to sabotage the game on purpose, resulting in my first witness of a Massive Multiplayer Online Trolling.
Martin Kavalar & Martin Schurrer (developers @ Bold Poker) shared their progress on edeliver, which is a Capistrano-like tool to release/deploy ones Elixir project. Main takeaway: although hot-code-upgrades sound nice, it’s not always easy. I think their tool is filling a currently existing need amongst newcomers to Elixir/Erlang world. Jeff Weiss (Engineer @ Puppet Labs) shared his exploration journey of using supervisors, nodes and processes to build a robust chat bot.
Michael Schaefermeyer (Engineer @ Bleacher Report) also shared his story (3rd one) of transitioning to Elixir and Phoenix. Like the similar talks, his team was mostly driven by a need for better performance of their system. From the 3 transition talks, his was the one with most impressive data, going from a system which needed caching and similar tools to squeeze 100ms response times, to a system without a need for caching,
Michał Ślaski (Branch Manager @ Erlang Solutions) shared his personal story/journey of becoming an Erlang enthousiast. Starting with a master seeking to build a prototype massively multiplayer online game, once he started using Erlang he never looked back. Fun fact: tracing a live/production system with 1K concurrent users is recommended (where 1K is a tiny number).
Eric Meadows-Jönsson (Elixir developer, Ecto creator) gave an introduction into Ecto talked about his efforts to build Ecto and some tools (like hex package manager) around it. He gave a nice overview of all the components that make up Ecto. The conference was concluded with fun lightning talks from attendees. The overall atmosphere was very positive, energetic. I’ve heard from several people they got the same feeling from this conference as they did when they started with Ruby. The feeling of a exciting novel tool.
Almost all talks can be found on the ElixirConf website. Hopefully see you next year at ElixirConf EU, which will be held in Berlin!
#ElixirConf has a similar vibe to Ruby confs of ~10yrs ago. Excitement. Cool stuff being hacked on. Very thought provoking and energising.— Matt Southerden (@mattsoutherden) 24 april 2015