Last year, I needed to build an MQTT-HTTP bridge. Lots of concurrent long lived stateful connections.
Elixir’s “we ain’t never seen a thread count that scared us” attitude was intriguing. So I took a chance.
If you want a paradigm shift for a change, Elixir is fun. It will probably be a bumpier uphill climb than your run-of-the-mill-syntax-populism-mainstream languages that vie for your engagement now days. I had never realized before how much of my code in the Algol-wearing-the-ObjectOriented-vestry[1] languages is just there to navigate to code that does something. Half of the code is just to determine where the code goes next. Go around? Leave now? This way or that? How bout a three way! Goto! Jump!
Elixir doesn’t solve these problems in the traditional way, and it kind of messes with your brain. A bit like the Grinch standing atop Mount Crumpit: “They code it without loops, without (traditional) if blocks, without switches. And even without return statements, of all things!”
The Elixir slack group is one of my favorite. They helped me out a lot. The Dave Thomas book was OK; I haven’t tried any others yet.
The system runs pretty solid. It was a 6 month or so project. It uses OpenAPI, Bandit (http server), Finch (send http), and Tortoise (MQTT). Other than the library names, which I think the community draws out of a magic and random hat somewhere, it’s pretty straightforward. It’s the least of the worries in our petty varied stack. And it’s lived up to my hopes regarding its threading story.
If there’s a thing that worries me about Elixir, it is that—like the Ruby/Rails community that it draws a lot of individuals from—it’s sort of a one trick pony right now. It’s a backend web tech. That’s obviously where the money is. I just don’t/can’t use it for a desktop app (realistically), or mobile development, or front end web, or command line tools (yes there’s the escript thing, but I don’t see a big execute-in-Elixir movement) or embedded (yes there’s Nerves). All the job posts I see in the Elixir slack channel are for web stuff. I’d guess 95% equate Elixir and Phoenix together.
Still, if someone offered me a job furthering the use of Elixir in something other than “come help us change the world with yet another novel web service”, I’d probably be really tempted.
-1. My dis her is not OO itself, but on the crappy job many mainstream languages have done of executing it. A sort of “I invented the term OO and this isn’t what I had in mind” channeling.
> desktop
Elixir Desktop: https://github.com/elixir-desktop/desktop
> mobile development
LiveView Native: https://www.youtube.com/watch?v=dnDGh_Jmw-s
> front end web
LiveView?
> command line tools
Mix.Install: https://thinkingelixir.com/elixir-1-12-and-your-first-mix-in...
How about numerical computing / machine learning: https://github.com/elixir-nx/nx/tree/main/nx
Embedded: "yes there's Nerves". Exactly?