ElixirConf 2023 was in Orlando, Florida this year. For those who couldn't make it, it was a great event. There was a solid set of talks, trainings, and hallway conversations that made this a worthwhile conference.
I'm only going to highlight a few of my favorites. (While at the time of writing only the keynotes are up, the rest of the talks should be joining this playlist in the coming days.)
Chris gave a great keynote highlighting the quality of life improvements coming to the next version of Phoenix.
Chris Nelson from LaunchScout gave a really interesting talk about taking and applying the concepts for building interactive web applications using a similar API to LiveView, but with the possibility of the interface living outside a single LiveView app using
Worth investigating if you're looking at or interested in products that might be embedded in websites.
MLOps in Elixir: Simplifying traditional MLOps with Elixir - Sean Moriarity
Sean continues to deliver and drive the machine learning ecosystem forward in Elixir. As things continue to progress I believe Elixir has a good shot of becoming a primary language for deploying machine learning and AI applications to production.
With how easy it is to serve up applications in a way that takes advantage of multiple nodes, it seems to me that the work going into Bumblebee and Nx.Serving Elixir will likely be a force for ML, especially for those attempting to deliver with a small team.
Lessons Learned Working with Ecto.Repo.put_dynamic_repo/1 - Sam McDavid
Sam's talk was interesting from a technical perspective, though it was funny to hear it end on the technical side with (paraphrased):
And then two days later Supabase released Supavisor, and you really probably ought to just use that to get you where you need to go, rather than doing what we did in this talk.
That said, I found a lot of the elements of building a solid software team culture great in this talk, and would value it more for that, than for the technical specifics of
Ash Framework 3.0 - Zach Daniel
Zach's philosophical discussion of Ash, and preview of some of the new and coming content was great, if you're at all interested in the Ash ecosystem. It was also exciting to hear about another member joining the Ash core team.
Important note: for those who are unfamiliar, Ash is a framework you use with Phoenix, to build applications quickly and productively. It doesn't replace Phoenix.
Ash and Phoenix are better together!
Using DDD concepts to create better Phoenix Contexts - German Velasco
Here German gives a great talk on Domain Driven Design (DDD) and applying those concepts in Elixir.
The way he highlights how contexts in DDD and then Phoenix relate, and then tie back to the ubiquitous language and can be used to clarify concepts and communication as you codify them was very clear in my mind.
Highlighting the token pattern, including three or four prominent places it's used in the Elixir ecosystem that hadn't previously registered as the token pattern for me, was also great. He also showcased how you could use it in your application.
Beyond Technical Prowess: Competency is Not Enough - Miki Rezentes
Miki gives a great talk on things that really drive a software engineer to level up, outside being able to write code.
Writing code is actually probably one of the easier parts of the job.
Breaking down problems coherently in a way that can be explained to others that makes sense, and teaching them to do the same, giving teams clarity in objectives and approaches, all of this takes a lot more work to teach.
Miki also does a good job highlighting some of the reasons these skills can be valuable with stories from the field, including some first hand experience from her daughter. (That part of the talk gets a bit clunky, but it's worth forgiving her on that.)
Rebuilding the Plane While It's Still Flying - Tyler Young
Tyler does a great job taking stock of all of the current best Elixir tools, writings, and frameworks for continuous delivery, and puts it all in one place. (Thanks for doing this so I can point folks to it, rather than having to do this myself!)
For those who are already operating in a continuous delivery environment there isn't going to be much that is earth-shattering here.
But this talk packages up a ton of great things to help folks understand the tools (including feature flagging and linters), processes (how to deploy migrations as part of a pipeline, and what parts of your migrations need consideration besides the actual database layer), and changes in mindset that you have to account for when moving into a continuous delivery environment.
A must watch for folks you're bringing onto a team that haven't operated in a continuous delivery environment before.
Regrettably, I wasn't able to attend any of the trainings beyond the one Andrew Lewin and I gave on building data driven workflows in Broadway.
That said there were a number I would have loved to attend, including:
- Ash Framework: The Fast Track to Full Stack
I haven't been as good about continuing my field notes series on it, but Ash is an incredibly interesting framework bringing the advantages of a declarative system to the application layer, rather than the infrastructure layer, where you can much more easily debug and extend it if needed.
I thought the talk I attended on
live_element- taking the ideas of LiveView and applying them to HTML that may live outside your application was very interesting, and so I'm sure this training to hit the ground running with them would have been great.
- Break Down - Better LiveView Components
Bruce Tate of grox.io always gives high quality training, and I'm sure this one was a great breakdown of some of the pitfalls of creating LiveView components and how to do them better.
The hallway track
The hallway track this year at ElixirConf was a lot of fun. There were a lot of new folks just getting started in Elixir or software development, in addition to the veterans who have been at it for years.
It was great hearing about what folks are up to, whether that's wrangling macros with Absinthe, thinking about how to improve IoT fleet deployment and management, or just avoiding reinventing the wheel, and keeping your team focused on building software that adds real world value.
As part of these conversations a few of the libraries and tools (that I didn't previously mention) that came up:
While catching up with Meks McClure they introduced me to
keycastr. It displays what keys you're pressing as part of your screen-share.
It has since joined my repertoire of remote collaboration tools, because without it having conversations around, learning, and picking up new hotkey combinations in order to learn to use your editor more effectively just isn't easy enough.
By having your keystrokes on the screen it makes it easier to facilitate that ambient knowledge transfer.
(Big thanks for introducing me to this one Meks!)
Andrew Moore introduced this library as a way to get started in, and potentially build accessibility testing into your CI pipeline, without really leaving the Elixir ecosystem which is a big win in my book.
I know accessibility is important, and it's often something that is sidelined. This could due to lack of knowledge about how to do it.
excessibility comes in and leverages Pa11y in order to give you a breakdown of what you're doing wrong, what it's running afoul of, why, and suggestions for how to fix it which is a big win.
The library still needs a bit of polish, but is a great starting point for adding this into your CI pipe, and could be a great place to start contributing to a meaningful open source project.
Thanks to Dr. Jim Freeze for continuing to host and facilitate the gathering of this great community year after year.