Awesome! That’s huge. Thank you.
Not sure this is really moving away, but our Company was evaluation new technologies that we would be using for our new app. We looked into Elixir but then decided we will use Microsoft’s open source Orleans Framework instead, it implements virtual actors, event sourcing and distributed transactions http://dotnet.github.io/orleans/
Our company already used C# in our previous apps on server side. So that also played a big part in selection process and we could see what kind benefits this virtual actor model would be bringing compared to actor model in Elixir.
More info about virtual actor model in Orleans Framework in this video https://vimeo.com/190911340
Heh, same. Investigated Elixir and Orleans and we chose Orleans - better performance (.NET is plenty fast that you don’t have to go down the NIF rabbit hole), easier to find people, easier to onboard people, better support, bigger ecosystem.
And only plus for Elixir that we found - more fun to work with, mainly because it’s something new (and Orleans does have that proper enterprise framework smell). And since this isn’t a “fun” hobby project, but real project that we want to succeed - no Elixir.
Totally valid choice, and C# is a good language for getting work done. One advantage of a “fun” language in a work environment, is you’ll have a different pool to recruit from, and maybe even some really talented people who would not otherwise consider your company, will go there to work on Elixir. That is not to say though that recruiting for Elixir jobs is easy, but recruiting awesome talent is super hard everywhere you go.
Clearly many people would disagree with you - lots of very successful projects use Elixir and Erlang.
But good luck to you - if you’re happy with your choice that’s all that really matters.
I was in college when the first public release of Java happened. I asked the professor in charge of the Computer Science department what he thought about it. He said Java is a toy, will never be used for any real projects.
It’s all good, we just keep moving forward.
It does feel like it is a toy though, and that’s true to this day. It seems to be made to scale to big teams, not to be a good or expressive language. Try coding a deadlock-free parallel code in Java, it still requires you to be on all your toes to get it right, whereas runtimes as Erlang’s BEAM VM or Rust’s Actix-web do it transparently.
I can’t deny the JVM is a really solid runtime though, that much is very true. It’s no surprise that many people rediscovered LISP through Clojure, or that Scala and Kotlin live in the JVM as well.
My interest in this thread was galvanized as I came across an elixir developer in one of the k8s related slack channels having been away from elixir for a while now. The chat reminded me how much I miss elixir - and I really do miss elixir.
The reason I moved away from elixir was simple:
Lack of on-site work within a reasonable distance of where I live. This is just a reality.
Potential workarounds were:
- Work remote - note, most positions seemed to be early stage startups
- Move to a major metropolitan area - London or similar
In the end, I found a devops position in a smaller city relatively close and I’ve decided to run with that for the foreseeable future. It’s a good space to be in at the moment.
Going back to elixir is still a possibility but the likelihood probably diminishes over time.
I’d advise you to do any and all hobby projects in Elixir – or other tech you like and want to master. But go all the way, deploy it to a free hosting somewhere and try and test it well. That will give you invaluable insights.
As for work, keep trying! Finding good remote work is possible although far from easy. Trust me, it happens.
For me, job opportunities will be the reason, or the lack of opportunities, to be precise.
Couldn’t get adoption going at work and had enough work to not really have time for hobby projects
But after being away so many new cools things landed especially LiveView so now trying to come up with some project to try it on
I’m not “moving away” from Elixir but experimenting it, at the moment.
I’ve been learning and experimenting Clojure on a project last year.
I’m currently trying to write a client/server app to exchange files in a secured way with Elixir. As this is not a Web application, I don’t use Phoenix.
So, my 5 cts of Elixir newbie criticisms at first glance…
- Adoption: To be honest, no one knows Elixir around me and very few in my country (France). So, no recruiting in view…
- Learning curve: Beside its (misleading ?) clean syntax, Elixir is not an easy language to learn when you have to fully understand and correctly use all the OTP stuff (genservers, supervisors, …). And if you don’t use the OTP stuff, why choosing Elixir ?
- Erlang: If you want to do something a bit serious with Elixir then you ALSO HAVE TO LEARN Erlang and to juggle with both syntaxes. Not necessarily “for your great good” !
- Libraries: Some libraries are clearly oriented by the particulars needs of their authors and sometimes “forget” some parts of the domain covered. Sometimes too, some unwanted “scories” arise (such as polluting logger messages)
- Documentation: The Elixir official hexdoc is nice but some libraries hexdocs seriously lack exemples or explanations. And when you have to switch to erlang docs (point 2), that’s worst again: nearly unreadable by a neophyte like me and sometimes, incomplete (no ssh_sftpd_file_api doc for instance ?)
- Books: Some of them begin gently then, at the middle, a “big step” of complexity and… you are definitly lost ! For some others the “big step” comes directly at the beginning…
In conclusion, I would say that compared to most others languages that I learned, Elixir has to be earned !
Because great frameworks exist that take care of those details for you, so you get the benefits without the need to learn it. This is probably why Phoenix is so popular. If you aren’t developing for the web then yes, you will probably need to learn more about OTP upfront. Otherwise you can ease into it.