Highlights from ElixirConf US 2023

Highlights from ElixirConf 2023 in Orlando, including talks, trainings, and the hallway track!

Some of the great folks I met at ElixirConf US 2023, out at Disney Springs.
Some of the great folks I met at ElixirConf US 2023, out at Disney Springs.

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.

The talks

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.)

Phoenix Field Notes - Chris McCord

Chris gave a great keynote highlighting the quality of life improvements coming to the next version of Phoenix.

Beyond LiveView: Getting the javascript you need while keeping the Elixir you love - Chris Nelson

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 live_state and live_element.

This opened up some interesting application possibilities in my mind that would have previously required a JavaScript framework like React or Svelte, but now could have the same small team deliver in a single un-fragmented ecosystem.

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 Ecto.Repo.put_dynamic_repo/1.

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.

The trainings

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.
  • Beyond LiveView: Getting the Javascript you need while keeping the LiveView you love
    I thought the talk I attended on live_state and 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.

I was able to have some great conversations with the team at Vetspire, folks from dscout, felt, GridPoint, Launch Scout, and Alembic, among many others.

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:

keycaster

GitHub - keycastr/keycastr: KeyCastr, an open-source keystroke visualizer
KeyCastr, an open-source keystroke visualizer. Contribute to keycastr/keycastr development by creating an account on GitHub.

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!)

excessibility

GitHub - launchscout/excessibility: Library to aid in testing your application for WCAG compliance automatically using Pa11y and Wallaby.
Library to aid in testing your application for WCAG compliance automatically using Pa11y and Wallaby. - GitHub - launchscout/excessibility: Library to aid in testing your application for WCAG c...

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.

Wrapping up

Thanks to Dr. Jim Freeze for continuing to host and facilitate the gathering of this great community year after year.

If I missed you at ElixirConf this year, reach out via brittonbroderick@gmail.com or https://hachyderm.io/@brittonjb, I'd love to get in touch.