I'm a front-end developer / ClojureScript engineer by trade. When it came time to choose a backend technology, I needed one that was foolproof, had excellent support for working with vector embeddings, and could train a few models.
I didn't trust myself not to blow both my feet off with Clojure, so I originally went with Python. After 8 months of using Python everyday, I can honestly say there wasn't a single programming session I didn't actively rue Python. Combine that with the hard switch from immutable functional paradigms in ClojureScript to mutable state object-oriented paradigms in Python, and I was thoroughly unhappy.
Elixir is immutable and functional, they've made great strides in ML tooling (especially with Nx & Nx.Serving), and Phoenix is absolutely foolproof.
I bit the bullet and moved my webserver to Elixir. Ever since, when something needs updating on the python side, I just migrate that feature to Elixir. After the initial setup, with the exception of one or two features, it's often faster than debugging it in python.
It definitely will make hiring more challenging, but it has 10xed my enjoyment of working on the project. Plus, surely there are some Elixir devs out there aspiring to be ML engineers :)
> I didn't trust myself not to blow both my feet off with Clojure
But you are clojure engineer(by trade).
Kinda weird, cause on the other end, I myself do backend in clojure but in frontend i much prefer js/svelte. (cljs tooling is making me cry, almost always)
Heh the woes of a hosted language! I've always been interested in svelte, but it's incompatibility with ClojureScript always made it a non starter for me.
If you haven't given shadow-cljs a try though, it's worked wonders for me. Can be a little heavy to set up, and the configuration a little mind bending at times, but besides normally 1 rough day a year it works flawlessly the other 364 (a pretty good win ratio as far as js build tooling goes).
I had the pleasure of meeting Ben in real life and watch him work — he's just really good at what he does, and his experience with ClojureScript is deep and wide.
One thing that sets him apart from myself and other engineers I've seen is *speed*: while I'm still thinking about a problem, Ben has implemented multiple prototypes, learned more about the problem and picked the best solution.