I had the chance to attend LoneStar ElixirConf in Austin, Texas this year. The conference was a two day event, full of many great talks. I just wanted to take a moment and highlight a few things that stood out to me.
Brisket is meat that comes from the front of a cow. I usually don't eat stuff like that, but I must say, this was good. I also had two servings of mac 'n cheese.
Questions to ask your program
Dave Thomas shared a simple question we should be asking our programs. The question is, What do you do? If the answer that comes back contains a conjunction of some sort ("or", "but", "and", etc.) then it should probably be refactored. This applies to all levels of an application, from the overall big-picture down to the functions. The idea is nothing new but I enjoyed how he delivered the message.
In general, functions are more reusable, understandable, and easier to test when they do just one thing. However, it's also important to not go overboard and break up every single statement in your code into a separate function. Many times the answer to What do you do? will involve a few "and" conjunctions, which is totally fine. Programmers should consider the logical levels of abstraction within their code to help deal with those kinds of situations.
I got three really cool stickers.
Why does Elixir matter?
Osa Gaius organizes Elixir meetups in Atlanta. He recounted a time where a programming bootcamp student attended his meetup and wanted to know why he should learn Elixir. We often attempt to answer that question from a technical perspective. But a technical answer about functional programming, fault-tolerance, or concurrency will fall flat to someone whose primary goal is to land their first job, and begin their career as a software developer. Osa argues "that answering this question, as a community, will define the success or failure of the language."
Osa included a sort of "call to action" along with his talk. We should consider ways to evangelize the language. This can be done though the development of packages and tooling. Languages like Python or Ruby have an amazing ecosystem of community-managed packages for nearly anything. Elixir is young and there is still a lot of work to be done to improve the ecosystem.
Another thing he mentioned was to "infiltrate" other programming communities. I was at a Ruby conference last year, and I think nearly every speaker ended up at least mentioning Elixir. There's already a lot of love for Elixir in the Ruby community. Those who are passionate about Elixir should also find ways to spread their excitement to other communities as well.
Changing the world
Tim Mecklem was the final keynote speaker. He shared an inspiring example of how he's using code to improve the lives of people with diabetes - namely, his wife. Tim shared a project he's working on which monitors, tracks, and predicts a person's blood sugar levels (hope I got that right…) The application has significantly improved his wife's quality of life, and he has gained more empathy and understanding of what it's like to try and cope with such a disease.
I really enjoyed his presentation because he pointed out the opportunity we have as software developers to make an impact on people. Discovering and solving meaningful problems gives us a heightened ability to to empathize with those around us, and an ability to change the world (or at least one person's world.)
The main reason I went to this conference was for the T-shirt. ✅
Managing application state
One thing I like about Phoenix is that it seems like a web framework that is well prepared for the future. There are web applications that no longer fit the mold of the traditional HTTP request, response flow of data. Phoenix is exciting to learn and to program with because it comes with realtime capabilities right out of the box. Chris McCord opened up the conference by talking about some of the things they are working on and considering when it comes to managing state for different types of applications.
For example, a Tic-Tac-Toe application needs to manage state differently than a traditional CMS would. Chris shared different options that they have explored for managing ephemeral (short lived) versus persistent state. I feel like Chris, and others who are working on Phoenix, are doing a great job about considering and designing the framework in a way that encourages good development practices. Context was recently added to version 1.3, and now it sounds like there are even more great things in store for the next release which will help us write all kinds of cool web applications.
All of Aaron Patterson's jokes. He also implemented
false using only functions. I am still trying to wrap my head around that one.