Introduction
I wanted to experiment with the Erlang VM after hearing about WhatsApp’s scalability successes. At the same time, I wanted to get serious about pure functional programming.
Elixir was the obvious bridge: it runs on the Erlang VM, feels a lot like Ruby, and has a Rails‑like framework in Phoenix. After years of using Rails for prototypes, Phoenix felt like a natural experiment.
The Experiment
To exercise the stack, I built a small chat app (I know, I know). But the premise was different: chat apps lack a simple way to express nuance beyond UTF‑8 emojis. I wanted a lightweight, text‑first way to act out intent.
So I added slash‑command style actions with aliases. Example:
Aliases made it feel even lighter. :) Fred did the same thing as /smile Fred.
Takeaways
Using a functional language was a mindset shift, but it became natural quickly. The bigger surprise was how approachable Phoenix felt. It had the structure and convention I was used to, but with the resilience of the Erlang VM underneath.
I did not test Phoenix’s scalability limits, but the experiment convinced me the platform is real. If I ever need high‑concurrency chat or realtime features again, it is near the top of the list.
The repo is now open source: https://github.com/ryjen/emotext
I also ran into the painful reality of upgrading old Elixir/Erlang/Phoenix versions — AI helped a bit, but it was still messy. The UI is currently broken; the beautiful, minimal monospace Craigslist vibe with pastel colors is shattered for now.
In the meantime, here are a few solid tutorials:
Todo
- I did not get around to testing the scalability of Phoenix and the Erlang VM via simulated environments
- Slack addon?