We sent our core FarmBot OS software engineer, Connor Rigby, to the Erlang Factory 2017 conference in San Francisco. Here's what he had to say about the experience:
Erlang and Elixir factory was the first time they included "Elixir" in the title, so it's only fit that this was the first Erlang/Elixir conference I attended. As an Elixir developer by trade, I was a little worried that I wouldn't completely fit in with the Erlang crowd. It turns out there was nothing to worry about. The entire community has more or less merged as one. Elixir developers are learning some Erlang, and Erlang developers are learning some Elixir. I don't know of any other developer conferences that can focus on more than one one language, and make both communities feel at home. That being said, being the first Erlang Factory that "officially" included Elixir, there was definitely far more talks geared toward Erlang.
Some talks preferred one language over the other. Garrett Smith titled his talk accordingly: "Building a web app in Erlang, that's Right Erlang! (Not Elixir)", converse to Ari Lerner focused on Elixir with "How Elixir Made Us Better Programmers". The most amazing part is that both communities were attending talks of the others background. On the other hand though, there were many talks that focused primarily upon The Beam (the virtual machine underlying both languages).
Chris Cote's talk was title "Instrumenting the World with the Beam" where he talked how the Beam VM is perfect for embedded systems (regardless of language preference). Similarly, there was a presentation from Peer Stritzinger who is building a hardware platform to run Erlang in hard real time. This reflects on one of the most interesting observations from the Elixir and Erlang communities. While we have a thriving web developer community, there is a huge number of developers flocking back to the embedded world.
A Shift Back to Embedded
As primarily an embedded systems engineer, I don't get very much love in the way of development tools. I spend days reading mailing lists from the early 2000's looking for the solution to a compiler issue, I lose hours browsing various old, inactive forums looking for a driver, that sort of thing. Elixir and the Nerves Project are really changing the mindset that embedded software is only something that the most hardened developers can do. Everyone forgets that Erlang (and by extension Elixir) was originally built for Embedded Systems so it only makes sense that with the influx of "the internet of things" we take another look at how embedded-systems are designed, developed, and maintained.
After meeting up with Justin Schneck (one of the original Nerves-Project founders) at Erlang and Elixir Factory, we talked to many interested developers about embedded systems with Nerves. I got so many comments along the lines of "FarmBot is such a cool project! I had no idea it was written in Elixir/Erlang, how can I help?". I've been part of the Elixir community for about two years now, and I've always lived in the embedded world. It was so weird to go from being in such a small niche, to being someone that people actually know because the community is growing so large.
Prototype to Production
When I first started at FarmBot, our embedded software stack was written primarily in Ruby. It worked, but definitely had some pitfalls, the main one being deployment. We had no system of pushing updates and no system of installation. We had really well put together docs, but it was just a little complex. In just under a month I was able to recreate the Ruby project as an Elixir/Nerves Project. This shows just how fast you can prototype something with Elixir. Justin Schneck (whose official title is "Pan-galactic Nerves Overlord") let me come up on stage with him to show off the scale FarmBot (which we call FarmBot Jr.). Unfortunately after disassembling it, hauling it for 5 hours on the freeway in a sports car, and reassembling it in a haste, the bot didn't operate 100% correctly, but it still made a decent display, and was able to move around its plane pretty well for the demonstration.
Communities Coming Together
It's so refreshing to see so many communities coming together in the world of software development. I don't know of any other place in the world where you can get such a diverse group of developers in the same building. People like Joe Armstrong - one of the co-inventor of Erlang, and Dave Thomas - author of "Programming Ruby" and "Programming Elixir". There is no one obvious background other than a shared love for this relatively small community of developers. People are coming from around the globe just to meet up for a couple days and talk about coding and language, and I can't wait to do it all again next year.