Delightful UX for Distributed Systems
Tutorial: Phoenix

Mike North
CTO of Levanto Financial

In a distributed system, the complexity and challenges that accompany asynchrony, consistency, connectivity and concurrency make it particularly difficult to build a user experience that “wows” your users. Desktop and mobile developers have been wrestling problems like these for years, and finally web apps are catching up! Phoenix and Elixir give us a wonderful set of primitives tools to help tackle these challenges, but we still have to use them properly.

I’ll go over some UI and software architecture patterns involving long-running processes, concurrent editing, and operations that require user intervention, to show that with a small adjustment in how one thinks about these things, building a first class user experience is not a herculean task.

Talk objectives:

Developers spend so much time working in their dev environment, that they often don't give proper consideration to how things will behave (and ultimately, FEEL to the user) in more real-world circumstance. I hope to help developers learn that they should "think outside the dev box", and consider how long things may really take, how often a given snag may be encountered, and what all of this ends up feeling like to a user in a non-ideal scenario.

Target audience:

This talk focuses on the "full product" experience, and so would probably be most targeted toward those who deal with (or at least have an appreciation for) full-stack engineering with Phoenix.


Phoenix is a framework written in Elixir, that enables developers to quickly and easily build real-time systems for the web. Leveraging the incredible scalability of the Erlang Virtual Machine, and combining it with the modern language features and syntax of Elixir opens up a huge range of new possibilities. 

In this workshop, we'll build a small API using Phoenix. This will include discussion and/or use of:

  • PLUGS - a composeable module spec used in Elixir
  • The phoenix middleware stack (think: rack)
  • ECTO - a lightweight persistence framework
  • CHANNELS - a robust real-time communication mechanism, and a first-class citizen in Phoenix
  • AUTHENTICATION - We'll align with the JSON Web Token (JWT) specification, and quickly roll our own authentication
  • MIGRATION - How to incrementally start adding a little Phoenix to your Rails app

Along the way, I'll point out some of the many parallels to the Ruby & Rails world. By the end of the workshop, attendees should have a solid understanding of the important similarities and differences between Rails and Phoenix. Additionally, attendees understand how easy it is for an experienced Rails developer to become proficient with Elixir and Phoenix.

Attendees should arrive at the workshop with elixir already installed, should already have signed up for a mailgun account and have a heroku account ready to go (no credit card required).


Phoenix is a powerful, but simple web framework that allows developers to leverage the power of Erlang and Elixir with an unprecedented level of ease and productivity.

Target Audience:

Attendees should have some rudimentary experience working with Elixir (i.e., read a book, completed a workshop or tutorial, etc...), and should be interested in building web apps.

Mike is the CTO of Levanto Financial, and before that he was the UI Architect for Yahoo's Ads & Data division. He's an opinionated framework addict, and considers himself to be "a product guy who happens to code". One of his passions is improving developers productivity, and empowering people to get something usable out to customers in a matter of days instead of weeks. He loves to travel, and lives as a Digital Nomad, mostly working out of coffee shops all over the world!

GitHub: mike-north

Twitter: @MichaelLNorth

Back to conference page