Event Sourcing and CQRS are design patterns that are great for some domains. The Incident library will help implement them without compromising other parts of your application.
I just came back from Lonestar Elixir Conf 2019 in Austin, Texas. The conference was a single track, 2 days, with an extra day for an optional training (that I didn’t attend this time). Even not been considered the most important conference in the Elixir ecosystem in the US, the lineup was really great, with 4 keynotes including José Valim (Elixir creator), Chris McCord (Phoenix creator) and Justin Schneck (Nerves co-creator) and great talks.
If you want to watch the talks and keynotes, they are available in the Lonestar Elixir Conf YouTube channel.
The same way happened in the latest editions of Elixir Conf (the main conference in the US), the keynotes were focused in the 3 main areas, the Elixir language itself, the Phoenix web framework and the Nerves project for embedded devices. Besides the keynotes, the talks were also mostly around these 3 subjects somehow.
As always, I like to take notes when attending conferences and these are my highlights for Lonestar Elixir Conf 2019:
Elixir, distributed systems and future
Following José Valim's statement in his keynote at Elixir Conf US 2018 when he said that Elixir 2.0 is not in the plans, Elixir is getting to a point of maturity and stability. With a stable language and platform, the efforts now are directed to:
- how we can show to companies that Elixir is a really strong option;
- how we can facilitate the adoption and keep teams moving forward;
- how we can solve hard problems, the ones not specific to Elixir, but in the high level, architecture way, such as distributed systems, data replication, and integration with other technologies;
José Valim introduced Broadway, a concurrent and multi-stage data ingestion and data processing. Broadway is based on GenStage and its goal is to facilitate integration with other data pipelines (SQS, Kafka and so on) and to leverage concurrency/performance that Elixir offers with controlled back-pressure.
In another part of José Valim's keynote he presented the Erlang Ecosystem Foundation. The main goal is to enhance the BEAM platform in areas such as interoperability , tools, documentation, embedded systems, and marketing, facilitating the general adoption. One of the foundation elements will be the working groups, allowing forward thinking and projects that can be community driven in some sense. Companies will be able to sponsor the foundation, and help the ecosystem funding projects, but the foundation teams are composed by individual members, projects will not be in the hands of a single company, for example.
Another common subject was Elixir in a distributed system with all the complexities regarding data synchronization, network issues and so on. Distributed systems are not new, and the common problems are known for anyone that experienced a distributed system environment.
Paul Schoenfelder, most know by its amazing contributions to the Elixir community with Distillery, Libcluster, Timex and many others, presented the challenges of a distributed system, how they are solved today in Elixir, and the important things to consider when implementing it. One of the challenges is how to test and ensure that the guarantees needed based on the desired solution are in place. He highlighted Raft consensus algorithm as a very good solution but in reality he is working on a library called Cadre that will concentrate in the guarantees you need and test them.
Another interesting talk was done by Dan Dresselhaus, his talk was more related with data replication and focused on questions we need to make before deciding what type of solution we will implement. As an example, things like where store data, how durable, how consistent, how performant, what is the data size, and what are the desired access patterns are really great to consider.
I attended Elixir Conf US last year when Chris McCord presented his library Phoenix LiveView, it is a really exciting project and it will open some many doors for applications that fit the context.
From last year to now, LiveView had very nice improvements in terms of templating through LiveEEx and the amount of data that is moved from the server to the client. Another great highlight is the LiveView.js library that is very lightweight if compared with React, Vue or Ember.
LiveView is coming up with lots of expectations and I am really interested in using it at FootBroker, my personal project using Event Sourcing.
In his keynote, Justin Schneck showed some details around the new version 1.4 and how a firmware updated happens behind the scenes. The ability now to update firmware in many ways opens a good path for manufacture a device in large scale, thanks to Nerves Hub, an open source service that can be self-managed by anyone if firmware privacy is a concern.
Another important news is around some libraries to interact with different board circuits such as GPIOs, I2C and SPI that are receiving some good polishing.
In another talk, Todd Resudek showed his personal project with Nerves to create a smart sprinkler controller for his home. Awesome talk showing his development process and the project evolution with a failover strategy in case something goes bad.
Besides some initial play with Nerves, I never built anything so far, however Nerves is in my list for this year for things to try.
Conferences are great, meeting some friends and making new connections are always an advantage if compared with only watching the talks at home after the fact.
I enjoyed every table and hallway conversation at Lonestar Elixir, and see you at Elixir Conf in Denver, CO.