Here are a few notes about some of the talks that I really enjoyed at this Austin conference.
Keynote about Nerves
Justin Schneck spoke about his Nerves project, and they have been building some exciting things! Nerves is a toolchain which makes deploying Elixir applications (with linux) to embedded devices like Raspberry Pis a piece of cake. His talk discussed NervesHub, their new hosted or self-hosted solution for managing these built Nerves images. With this infrastructure, you can not only push and fetch these images, but also issue commands to deploy them to your live fleet of devices in a very secure fashion. He also mentioned NervesKey, a miniscule device which can be soldered to a device (or some are embedding it from the factory) which can serve as a hardware security token when interacting with NervesHub etc.
Cadre: Building reliable distributed stateful systems in Elixir
Paul Schoenfelder, known for his Distillery project among many others, spoke about his almost-finished project, Cadre. Cadre is a tool in a similar vein to Jepsen which provides a framework for testing applications which run in a distributed fashion. This is a tricky problem domain that requires tricky solutions. With his tool, you can randomize the failures (like nodes going down etc) that occur over the lifecycle of your application and tests a great many scenarios very quickly. When an issue is found, the same scenario can be repeated by using the same "seed", so the fix can be properly confirmed.
While our runtime does put distributed solutions within reach, they still remain on the more difficult end of the spectrum, and many teams do absolutely fine without clustering.
Ecto Without a DB
Greg Vaughn spoke about using the Ecto library's Schema and Changeset parts to do data structuring and validation without its Query and Repo parts which are used to actually build queries and interact with a database. He showed how the functionality provided can give developers a very nice API for validating inputs, whether coming from a form or anywhere, so that you can be sure data entering the next layer meets your requirements. Obviously, this is usually very important, when working with a DB or not.
I think the fact that this is a natural option follows from the fact that Elixir's functional approach leads to neatly decoupled solutions.
The Business Case for Elixir
Brian Cardarella, founder & chairman of DockYard, did a fantastic job of laying out our business case. I won't try and enumerate his points, but I would recommend this talk to anyone thinking about adopting Elixir from a company or enterprise level!
Keynote about OOP Hegemony
Osa Gaius-Obaseki made a really fantastic talk about the entrenched idea that OOP is how one builds software. With an upcoming interview with Google, he found it odd that they would require he use Java in the interview -- the position doesn't necessarily require Java! So, he found himself learning the language for the purpose of the interview. He spoke about the early days of Java, working with columnists to get "Java is a godsend which changes everything!" type articles written. These articles spoke to upper management types and less engineers. Java is largely credited for the ascension of OOP.
We're left today with a world in which OOP is the de-facto way build software and there seems to be little discussion of other options. For me, OOP seems to slow me down, lead me to introduce bugs, and make concurrent execution worlds more difficult.
Osa's talk was brilliant, and I would recommend it to folks looking for some discussion around this.
Keynote about LiveView
To learn more detail, I recommend checking out his recent article.
Hastega: Challenge for GPGPU on Elixir
Susumu Yamazaki came in from Japan to share his team's work on Hastega with us. It's a very interesting project which is using Rust code with the Rustler in order to leverage not just the CPU as we normally do, but the GPU as well in order to execute computations. As this strategy is refined, it may be a very powerful drop-in tool for doing big data processing, for instance, using all the strengths of Elixir, with execution faster than a compiled language (not using the GPU as is typical) could manage.
José Valim's Closing Keynote
José spent the first 10 minutes or so talking about the new Erlang Ecosystem Foundation that he's helping launch. This non-profit group of individuals, spanning many languages and specialties within the greater Erlang ecosystem, will be helping increase adoption by contributing to libraries, tools, and documentation.
GenStage is already a potent tool for setting up data processing pipelines over a cluster of nodes, but José spent the rest of his time discussing his newly released tool, Broadway. Having spent much time working with various companies on their GenStage setups, he found that certain issues continued to crop up. Broadway is a tool that will take some simple configuration parameters, and automatically start up a GenStage system in the ideal way.
I'm really interested to see how things develop with Elixir's role in the big data processing field. It's great to see it break into new areas, one by one.