Impressions From My First ElixirConf
I spent the past 3 days in Orlando at Elixir & Phoenix Conference 2016. I first learned of Elixir a little bit more than a year ago. I read some docs but not much more than that. I remember telling people at Dev Workshop Indy that they should keep their ears out for it, because it’s going to start growing. But then I put it on a shelf. I picked it back up off the shelf around May/June of this year. My first exercise on exercism.io was June 1.
Impression 1 – People Like It
When I saw there was a conference just for Elixir, I decided I was going. Thankfully my company was willing to pay for me to go. But I met a few people that foot the bill themselves. That’s the first thing that I noticed about Elixir. I hadn’t even caught the airport shuttle before I met 2 people that paid for themselves to come to ElixirConf, and I met a few more at the actual conference.
When I speak at conferences, some of my favorite talks are the ones that are on Saturday, even if there are only 4 people. Because I know those 4 people are really interested in the topic. Because they could be doing just about anything else in the world, but instead, they’re at a conference. I felt the same way at Elixir Conf, the number of people that paid out of their own pocket meant that the people there really wanted to be there. It wasn’t just that their company was going to send them to a conference and so Orlando seemed as good as any. Instead they want to learn Elixir that much that they’re willing to pay close to $1000 to learn it.
Impression 2 – The Community is Welcoming
Elixir is pretty young as a language, it’s only a few years old. Since it’s so young, it might be easy to think that only guys like Jose Valim (creator of Elixir) or Chris McCord (creator of Phoenix) are speaking. But that wasn’t the case. Sure they both spoke, and they both gave great talks. But a lot of the breakout sessions started this way “Hi, I’m ______ and I’ve been doing Elixir since the beginning of the year.” I saw a talk on Ecto (Elixir’s ORM) that was done by someone with about 10 months of Elixir experience. Had he not said that, I would have had no idea. He knew his stuff. But the great thing was that in order to be speaking at Elixir Conf, he had to submit a talk after working on Elixir for about 6 or 7 months, and they took his talk! That’s awesome.
In fact, some of the people had been doing Elixir for such a short time that there was no way that they were selected just because they’re friends with the core contributors. Additionally, these rooms were packed for people that nobody really knew, solely because they were interested in the topic.
Impression 3 – Those Who Know Love to Share
While it was awesome that the conference accepted new people, the folks at the other end of the spectrum were also very willing to share. I did a hands on lab with Sonny Scroggin who is one of the core contributors to Phoenix (the Elixir web framework.) He’s been using Elixir for quite some time, in fact, I believe he gave this class last year at the conference. When he started the talk he asked “How many people have been working on Elixir for a year or more.” Nobody in the 40 person class raised their hand. When he asked how many had done Elixir for more than 6 months. This time maybe 4 people raised their hand. So approximately 35 of us had been doing Elixir less than 6 months. It turns out later that some people hadn’t done any Elixir before coming to the conference. That slowed down the class a bit, as we spent the morning going over some of the basics of Elixir. What impressed me with Sonny was that he didn’t get frustrate or agitated. Instead he took time to answer every question, often times walking over to a laptop to help someone with a specific issue.
It wasn’t just Sonny, though. I wanted to meet Jim Freeze who is the organizer of the conference. I went up and talked to him, just to say “Hi” and “Thanks.” He saw a patch on my backpack and asked me about it. We talked for 3-5 minutes about Brazilian Jiu Jitsu. He doesn’t train BJJ, but I do, and he was asking genuine questions about it. Then we talked about some of the things going on with Elixir & Phoenix. It was great.
Impression 4 – I’m a Sojourner in the Land of Elixir
I knew that Jose was writing Ruby before he created Elixir. I knew, from reading, that there were some similarities with Ruby. But I’ve never really written Ruby. I once wrote a to-do list in Sinatra & Backbone (circa 2011.) I also watched Uncle Bob’s Midwest Ruby keynote from 2011. That’s the extent of Ruby that I’ve done. (I don’t hate Ruby, I even have a friend who does Ruby!) But my career has been marked by C++, C# and NodeJs. The two biggest projects I’ve been on have been a C++ and C# project.
This means that I don’t necessarily have the same problems that the vast majority of people using Elixir do. Three examples come to mind. First, in the hands-on class, Sonny was talking about one of the reasons that Phoenix is so fast is because it compiles the views on the server and then serves the HTML up to the client with a simple function call. That’s similar to what ASP.NET MVC has been doing since 2008 (as a side note, apart from SPAs, the only web applications I’ve written have been ASP.NET MVC.) So I was a bit confused about why that was a “big deal.” Or rather, I didn’t understand why that was revolutionary.
The second example is umbrella applications. I went to a talk on them which was really well done. One of the best talks at the conference, in my opinion. I went to the talk because I wanted to learn about umbrella applications because everyone was saying how great they are. While the talk was great, and I understood why they were awesome, I left a little underwhelmed. To a degree, .Net has had “umbrella applications” since day one. They’re called solutions in the .Net world. Now I know that solutions don’t equal umbrella projects. For one, an umbrella application has many children applications that can all be run in-and-of-themselves. Whereas often in .Net the projects are DLLs or Class Libraries. They’re not executable by themselves, they can be consumed by applications but are not applications.
Third, I heard multiple times that “Phoenix is not your application.” Phoenix is a web framework that is similar to Ruby on Rails. Apparently a lot of people will create a Phoenix application and then put all their logic in that one application, instead of having Phoenix make calls to other OTP applications that do the business logic & processing. I’m glad that they kept emphasizing that point. At the same time, I wish it wasn’t necessary. Now, don’t get me wrong, I’m not saying nobody in .Net does things that way, but it’s not a point you’d have to make a lot at a .Net conference. (You might be better served to tell .Net devs “You don’t need that many assemblies.”)
Impression 5 – I Really Like This Community
While I might have sounded very curmudgeonly in my previous impression, I do really enjoy the community. By saying I’m a sojourner, I’m not saying that I already know the problems they’re solving now. Far from it. I just have different problems that need to be solved, and are being solved by Elixir.
I can’t wait to see the list of talks for Elixir & Phoenix Conf 2017, in fact, I’ll be submitting. It’s exciting to see a community at this stage. There’s a ton of opportunities for growth. There were more than 500 people there this year. Most of whom were not there last year. Most of whom will go home excited & energized by what they learned and will be telling their coworkers about what they’ve learned and building excitement. It would not surprised me if next year there aren’t 750 or 1000 people at Elixir Conf.
If it does get to be that big, I think they’ve got the right leaders in place. In Chris’ keynote he demonstrated new changes coming to Phoenix. Changes that came about from feedback from the community. Chris and Jose could have easily decided that how things are currently implemented are right and resist change, but they didn’t. They accepted feedback and listened to that feedback and made changes.
A community like that has a lot of appeal.