This past September I took vacation time and paid out of pocket to drive to Orlando and attend ElixirConf with a few other programmers from Greenville who did the same thing. We weren't the only ones. Here is a belated recap from our combined notes and experiences.
You read that correctly. I took my own vacation time and paid out of pocket to attend a programming conference for a language that I don't use in my daily work. I never expected to do that, but I certainly never expected to be this excited about a language or community again in my life either.
What I found was that this is a very common experience. So many people in and around this community are just wildly excited by what they're seeing it's fun to be around. We met numerous other people who were doing the exact same thing. Elixir is a language that makes veteran programmers giddy because we all know exactly how it solves so many of the hard problems that happen over the course of a project's lifetime. Your typical conference stereotype tends to be guys in their 20's but at ElixirConf it was mostly people who were 35-60 grinning like they were kids at Disney World...who coincidentally were actually at Disney World.
With that, on with the conference. What follows is a collection of highlight notes and presentation links for the sessions attended by our group, consisting of Paul Sullivan of Benefit Focus, Andrew Lechowicz from Simply Binary and myself from ACS Technologies.
There were a lot of excellent talks that are broken out below, but the major news here was that the conference has been co-branded with Phoenix. Despite that co-branding, the other star of the show was Nerves, which I'd never even heard of prior to arriving. In terms of name placement and content, Nerves was a very significant focus of the conference. Nerves is a framework for using Elixir on embedded devices like Rasberry Pi's (full hardware list) and people couldn't stop raving about it. That's understandable based on the fault tolerance and response time consistency guarantees that the Erlang VM (BEAM) is able to produce, along with the extremely small footprint.
The other constant was the number of speakers who were awash in practicallity. Elixir and OTP are huge and there are a number of standout things that you can't do with other languages, which if used could completely change the way you develop projects. It was refreshing to see presenters emphasizing that just because you can doesn't mean you should. Things like; yes, you can transparently cluster to virtually infinite nodes around the globe that horizontally scale both server and database power while using hot-code deployments to avoid any semblance of downtime...but standard non-clustered blue-green deployments with Heroku on projects depending on Redis and PostgreSQL make sense for a huge volume of use cases. The nice thing to know is that when you do need any/all of those things to build the next WhatsApp, they're real and they're spectacular. When Joe Armstrong said Erlang was built to run forever...he wasn't kidding.
Here are the highlights from the sessions that we attended. All of them are available on ConFreaks. Also, conference sponsor Erlang Solutions - Wombat gave a nice overview of its BEAM native monitoring capabilities, but wasn't a session in itself.
Showed us Phoenix Presence with Realtime Drawing tool converting images on screen into ASCII images on the console, while discussing Phoenix's new emphasize on umbrella projects and logical separation for optimal long term architecture standards. Also, apparently "Model" is a four letter word because of the architectural habits that come with it. Think Schema.
Went in depth with the future of GenStage and Flow for self-optimizing, concurrent data injestion with backpressure.
If you take the time to watch one presentation here, make it this one. Boyd's analysis of the state of software, the trends affecting us, and why he's chosen Elixir & friends as my stack for the next 10 years. It's insightful, funny and on point from a widely successful industry veteran. Also, he was really interested in this cloaking package.
Talks about Erlang's pg2 module and Elixir's RePG2 for handling distributed process groups, which is a key part of Phoenix's stand out Channels API. Also, Jose Valim sings.
The creator of the Elixir's popular deployment tool exrm talks about Elixir's deployment future as well as exrm's replacement, Distillery. Paul highlights a lot of what Golang gets right about deployments and provides practical advice for hot deployments.
A walk through an assortment of tools and techniques for debugging with Elixir.
This was a great, in depth presentation demostrating a realtime chat solution over Phoenix using a Swift client on iOS. He's also a huge fan of Swift.
Renan shows us how to use Influx and Graafana with Plugs, in conjunction with Exometer / Elixometer, to collect metrics in your application.
Gary walks us through refactoring a sample Tic, Tac, Toe application written in Elixir. He covers everything from code structure to clarity and readability that you are able to gain with a lot of Elixir's pattern matching techniques. Then dives into using Ecto.Multi for database transactions. Why you should keep Repo out of your controller and simplicity by reduction.
We dove into some advanced Ecto techniques like nested inserts, schemaless changesets, virtual fields and using embedded_schema.
A great presentation on building a wifi hotspot for your kids using a Rasberry Pi, Nerves and Phoenix so that they can verify their chores are done before getting internet access. The code is available on Github. He also discussed using a very simplified storage system called PersistentStorage with Nerves.
This was one of my favorite presentations because it helped me understand the remarkable strengths that come from no overloading operators with Elixir and Erlang. Before I thought it was a bit tedious, but now that I understand that you essentially gain static type checking without before forced to use a fully statically typed language I absolutely love the new found power. Dialyzer is one of the keys to getting the best of static typing and dynamic typing at the same time, while avoiding the immense problems that come from hard enforcement of both. Mentioned both dialyxir and dialyz as well as the perk that using it comes with no downside.
Went deep into WebRTC for peer to peer communication with Phoenix. Discussed simple-peer, STUN/TURN/ICE for helping your browser figure out it's public IP and then proxying as well as some libraries for Elixir like processone/stun, Twilio's stun/turn service and other resources to learn, experiment, or try his sample Phoenix app.
Discussion on umbrella projects with Elixir. Umbrella projects are just a mixfile with an apps directory that can be started, stopped and configured as a unit or individually. Just an OTP application. Think microservices. Ddd `—umbrella` when creating a new mix project. You can create apps by cding into `apps/` and running `mix new`. Included AcmeBank sample application.
An assortment of interesting lightning talks on different topics. Most were good so I'd recommend watching them. The Confreaks page has the start times for each ones. The creator of Elm gave a great talk and offered an impromptu Elm session following the lightning talks, which was pretty cool of him. I didn't make the session because...well college football season was starting and I wanted to see if Tennessee could escape Appalachian State. They did, just barely, but it was fun watching the Tennessee fans panic at ESPN Zone.
My name is Barry Jones and Brightball, Inc was my contract development company from 2008-2012. Although I no longer do contract work this site has become my personal blog.
If you enjoy my writing and want to support the habit please use my referrals to help me pay for my servers with Digital Ocean, my DNS with DNS Made Easy, my email with Sendwithus and my focus with Freedom.
You're also welcome to buy some things that I highly recommend, such as the best movie ever made, a hilarious cookbook for microwave dependent men like myself, the best travel laptop backpack I've ever owned, an awesome lap desk, some of the best headphones out there for the money or maybe an iPad Mini for the kids?