Elixir & Phoenix Conference 2016 Recap
Some of us at Made by Many New York, recently took a trip down to the most infamous state in the union, Florida. Elixir (later renamed Elixir & Phoenix) Conference was set on the majestic backdrop that is, Walt Disney World in Orlando, Florida. This post will serve as a recap of our two days at ElixirConf — it will cover three main topics: conference logistics, talks and keynotes, and the Elixir community.
Here at Made by Many, we have been working on a project for Cava Grill that has an Admin Panel and an API built with Elixir and Phoenix. Chris Bell has been primarily responsible for this undertaking, with support from Elijah Kim. That being said, all the developers here at the New York office have glanced at Elixir code and concepts to varying capacities — I personally, have very little experience with the language. And before jumping into this article, I want to caveat the fact that my experience is both limited with regards to the language and that ElixirConf is my first large scale programming conference. In short, I am a total n00b.
1. Conference Logistics
I can empathize with Jim Freeze and the other conference organizers, 542 people are a lot to accommodate for. I imagine there are not a whole lot of venues that can accommodate for 500+ people. That being said, Walt Disney World offers very little — a hermetically sealed, manufactured town, is not my ideal conference experience.
In addition to facilities, the conference lacked a certain degree of polish. In some cases speakers were unaware of when to start and were provided little assistance with regards to setup. I can imagine, for speakers, this can add some additional and unnecessary stress. Also, there were no structured activities outside of conference talks. For the most part, people did their own thing, occasionally posting on the conference app about activities. The absence of social events, was a missed opportunity to provide some needed structure to help cultivate and grow a newer community.
With that aside, the conference consisted of three speaker tracks, which was awesome. This meant that at any point during the two day conference, there was almost always something interesting for everyone. Despite being a relatively new language, I found that many of the speakers were very knowledgable and eager to share their learnings. One thing is for sure, the enthusiasm around Elixir and Phoenix was palpable.
2. Talks & Keynotes
Big thank you to Lauren Elizabeth Tan, who did an awesome job of compiling a comprehensive list of all the talks and keynotes from ElixirConf. You can checkout the repo here. Apart from the keynote addresses (which are definitely worth watching), I recommend these three talks: Selling Food With Elixir (Chris Bell), pg2 and You: Getting Distributed with Elixir (Eric Entin), and Leveling Up With Ecto (Darin Wilson).
- Chris McCord kicked off ElixirConf with his keynote presentation about the current state of the Elixir/Phoenix community and the future of Phoenix, especially with regards to Phoenix 1.3. He talked about the rationale to move web/ inside your application directory (i.e. my_app/lib/my_app/web/) — emphasizing the fact that Phoenix is not some special application but rather the part of your Elixir application that communicates with the web. He also talked about the reasoning to swap the word model for schema, in an attempt to make structuring Phoenix applications more intuitive and to separate the business logic out of the models and controllers, into separate services. In addition, reiterating the fact that Elixir is simply a set of functions and modules. This ties in to the same theory around modularization and his mention of umbrella applications receiving better support. Again, emphasizing that Elixir applications can be easily comprised of multiple Phoenix applications using the umbrella flag. Another part of his keynote address was Phoenix Presence. Chris illustrates how Presence can work to identify multiple users, as well as, talks about how Presence is developed using CRDT to replicate data in a conflict-free way. The talk illuminated how considered and methodical Chris, José, and the core contributors are with Elixir and Phoenix. It was an inspiring talk and great way to kick-off the conference.
- The second day of ElixirConf was opened from the keynote address by José Valim. Because Chris addressed the Elixir and Phoenix community the day before, José was able to talk and give more tactical code examples around the thinking and progression of Elixir. The two main parts of his talk were about GenStage and Flow. José is a really brilliant guy, what makes that strikingly apparent is his ability to dissect complex concepts into palatable bites. José uses a small word counting problem to illustrate how Flow can be used. He breaks the problem into linear examples: eager to lazy to concurrent to distributed. He talks about the various trade-off and differences between each approach. José then introduces GenStage in the distributed portion of his talk. GenStage is a new behavior pattern for exchanging data transparently with back pressure. It consists of producers, consumers, and producer_consumers. I found the concept of back pressure to be really interesting. The idea that a consumer subscribes to a producer and sets subscribe options that contain a max_demand and min_demand, this way the consumer is always processing data and never idling.
- The closing remarks were delivered by Boyd Multerer. Boyd has had an esteemed career at Microsoft where he founded the development team for Xbox Live, amongst other things. In addition to being an inspirational speech, it served as a co-signature of the Elixir and Phoenix projects. Boyd’s talk was less about Elixir and more about the future and how Elixir is well positioned to capitalize on the future he envisions. His talk covered: power consumption costs and how BEAM is well suited for low power environments, FPGA’s and how they will change software design, global wireless networks and thinking about a world of truly distributed software, he mentioned physical devices (IoT) and the Nerves project, and pushed for next year to have more of a conversation around security. Ultimately, it was a fun talk to watch and inspiring to see the diversity of applications and industries Elixir/ the community can participate in.
- Despite my implicit bias, Chris gives a methodical and practical talk around structuring Elixir/OTP applications. He goes into detail explaining why and how he structured the project to leverage Elixir’s fault-tolerant and concurrent nature. Chris partitioned his talk into three main segments, with succinct and digestible slides. The presentation visuals really help to make his points more salient.
- Eric’s talk highlights a really interesting tool in the OTP toolbox called pg2. He walks us through pg2 by explaining how he reverse engineered pg2 into an Elixir translation called RePG2. Since I have no experience with distributed Elixir, I didn’t necessarily follow all the details of the talk but Eric highlighted some interesting concepts around distribution and naming group processes. His presentation really made me want to look into learning more about pg2 and distributed Elixir.
- Public speaking is hard and I commend anyone who has done it before; with that said, you can really tell when people have spoken in public before and Darin was no exception to that fact. He gave an insightful talk about Ecto (the way Elixir interacts with the database) but what I appreciate most was the clarity of his talk. In Darin’s talk, he uses a music database as an example project to illustrate Ecto’s four main properties: Repo, Query, Schema, and Changeset’s. His talk is a great primer, covering concepts such as, why Ecto will not fetch associated records without preloading queries (to reduce N+1 queries) and cool features such as schemaless queries using Ecto’s insert_all.
- Make things memorable; use visuals, stories, examples, etc.
- Succinct and linear presentations make for the best talks.
- Slower is better. And less is more. Over enunciate, make slides large and legible.
- Enthusiasm is infectious, the most enthusiastic speakers were some of the best.
- Public speaking is entertainment. You don’t have to be funny but your material should be palatable enough for audiences to digest.
- 30 minutes isn’t enough time for people to learn a ton. Look to inspire and leave your audience with a couple solid takeaways.
3. Elixir Community
One interesting observation I found is that the ElixirConf community seemed to skew towards older and more experienced developers. At most local conferences and Meetups here in New York City, seldom do I see a community with such a diverse age range. I also found interesting that many attendees came from a variety of industries. It is really cool to see how many different ways people are using Elixir.
The community in general seems to be enthusiastic and open. This is not by accident, it would be remiss of me if I did not mention how thoughtful and genuinely nice Chris McCord and José Valim seem. While not necessarily imperative, I do think this makes growing a healthy and supportive community easier when your community leaders set positive examples.
On the other hand, there were only 4 women and a significant lack of people of color speakers of the 41 speakers, trainers, and keynote presenters. And, the general complexion of conference goers unfortunately reflected the age-old critiques of programming conferences — mostly, 20 and 30 something white males. Although, these are not new critiques, this was the first time I experienced this on such a large scale. To be honest, it made me feel uncomfortable and that sucks, but it also gives room for improvement.
I don’t want this to be a condemnation on the conference, community, or organizers, I simply want to share my observations. It’s a nascent language and community — I am sure, with time these things will improve. In fact, I heard from attendees last year, that this years conference was a significant improvement. But it is important we continue to have a pro-active conversation around the construction of the community we all want to be apart of.
Elixir is such an inspiring project and community. It is cool to see a modern programming language so methodically and thoughtfully apply the research and experience from academic institutions and the Erlang community to use in modern web development and embedded software.
Even though, at times, I didn’t necessarily understand all the complexities of some talks, I walked away with some new programming paradigms, thought processes, and technologies to look into. One of the most compelling aspects about Elixir/OTP and functional programming, is that it is a different approach to developing and architecting software. As a developer, continually trying to improve my breadth and depth of knowledge, conferences like ElixirConf help do just that. Conferences allow developers to leverage a community of experiences to better share information and advice.
Finally, I want to give a big thank you to all who were involved. I’m sure next year in Bellevue, Washington will be even better. Here at Made by Many, we are making concerted efforts and investments in Elixir and Phoenix. Elixir and Phoenix, have quickly become some of our go to tools for client and personal projects. The studio is excited for the future of Elixir and will continue to and hope to be more involved in the language and community going forward.