10 ms·
What I mean when I say that machine learning in Elixir is production-ready
- ToJans 2y agoI'm a big fan of Erlang, Elixir, OTP and the BEAM vm. However, I only have very lightweight server needs for my SaaS, so it just doesn't make sense to switch to it, especially as my code is mostly client-based/typescript. If my core value prop would be around real-time messaging or streaming data, BEAM/OTP would be my first choice. Slightly OT: I'm still in dubio about Cloudflare pages, but I'm sure that the platform for the backend reboot that we're starting will be in Typescript. There's so much advantage in having one language for everything.
- davidw 2y agoWhat do you use instead, out of curiosity?
- TechDebtDevin 2y agoRead dude
- ajmurmann 2y agoI am really intrigued by the distributed systems capabilities that BEAM brings. I built a chat app using it and am also using Mnesia DB to store recent messages. However, my experience coding it has been terrible. I am using IntelliJ with an Elixir plugin and there is essence is no auto-complete. I used to write a ton of Ruby, but there RubyMine was really good at guessing what's available. Not so much here. On top of that more often than not the errors from Mnesia are just terrible. Most of the time I just get "TypeError" and a line number. Unclear what it expected to get and what it got passed instead. What IDE/editor have you found helpful? Are there any tricks to work around this? In Ruby I sometimes would use Pry Byebug to explore live what's actually available and iterate on my code in the REPL. Is there a similar approach you recommend here?
- lawn 2y agoI've had success with the ElixirLS language server. It should work with most editors I assume, but I use it with Neovim. Autocomplete, diagnostics, goto definition work as expected.
- sbrother 2y agoI'm glad I'm not the only one who has had awful luck with that IntelliJ Elixir plug-in. Maybe I'm doing something wrong, but it just doesn't work for me. I've been using emacs + elixir-mode + alchemist since Elixir came out and I have zero complaints, it all works beautifully complete with autocomplete, jump to definition and documentation popups. But obviously emacs isn't for everyone.
- kamma4434 2y agoVs Code with the default Elixir plugin is pretty solid. Not wonderful but you get all you need, including the debugger.
- ambicapter 2y agoI see so much breathless adoration for Erlang and Elixir, how come it hasn't taken over the world in all this time?
- wincy 2y agoBecause when you try to throw junior developers at it who had OO concepts in Python, Java, or C# drilled into them in college, switching to Elixir/Erlang feels like learning Martian. I had the fun experience of it being the second language I used in my career after PHP, and it definitely took strong mentorship and smart seniors who were really into Elixir for me to get up to speed. At least when we used Elixir about eight years ago, we had to also learn Erlang as many libraries running on the BEAM VM that Elixir and Erlang share were only written in Erlang. So that made my brain melt further. Once I got into the flow, I really liked it, and am glad I got the opportunity to learn it as a junior developer, but I've largely dropped it as there aren't many jobs in my area looking for Elixir.
- ttymck 2y agoBecause most developers struggle with functional programming.
- cultofmetatron 2y agowhich is a shame because I think elixir is probably one of the easiest functional programming languages to learn. most of the libraries use do blocks so you dont' usually think about lambdas unless you're using Enum or List modules and even then, its about as complicated as using reduce or map in javascript. if you know how to use a higher order function, tail recursion and map/reduce/filter, you know enough functional programming to do 99% of day to day elixir work.
- deleted 2y ago[deleted]
- macintux 2y agoInertia: curly braces rule the world. Imperative/OO programming are ubiquitous, FP not so much. Corporate sponsorship: even with curly braces and mutability, Go probably wouldn't have gained its mindshare without Google. Performance: It's getting much better, but the BEAM was never designed for maximum performance. People don't like slow platforms, despite the other advantages. Scale: much like one of the databases written in Erlang, Riak, you typically don't need a BEAM language until your solution is large enough that you've already written it in something else. I love Erlang, but I'm a lost cause.
- vvpan 2y agoWanted to add to the usual "why is BEAM not more popular" conversation that there is also Gleam [1], which is an up and coming typed language on top of BEAM. It has the more common C-like syntax and a growing ecosystem of libraries, for example Lustre [2]. Unlike Elixir it has a much tighter syntax without all the macro magic. It also does not wrap around Erlang processes and you have to use those directly. To myself I see it as more of a Go for BEAM, although I am sure people would criticize me for making such generalization. It sucks that syntax matters but it kind of does. I, for one, am somewhat put off by meta-programming and flexibility of Elixir. The idea of having to learn a syntax per-library I struggle to see the benefits of. I have never programmed Ruby or Lisp so perhaps I have not experienced the joy of what Elixir has to offer... [1] https://gleam.run/ https://gleam.run/ [2] https://github.com/lustre-labs/lustre https://github.com/lustre-labs/lustre
- OutOfHere 2y agoGleam is a tooling development language, not a concurrency language. It runs away from Erlang's concurrency ecosystem. Also, its documentation, especially wrt concurrency, is sorely lacking. In its current state it would be a mistake it to use it for any distributed work, but perhaps this can change in time.
- vvpan 2y agoAh, I did not realize that. What is the point then? Why have a language on top of Erlang that "runs away from Erlang's concurrency ecosystem"?
- OutOfHere 2y agoGleam has some third-party package(s) for concurrency, but I wouldn't consider them mature, and they wouldn't compare to anything like what Elixir has. It is not the primary or even the secondary focus of the Gleam language. I guess there is no point for me.
- kamma4434 2y agoFrom what I understand, you get all of OTP as it is now – You only use the experimental Gleam packages if you want types. So you should be able to use them right out of the box, with the same level of guarantees (or lack of) that you get in Ex/Erlang. Still, I have not yet found a compelling reason to switch over – or at least try – Gleam.
- sundalia 2y agoQuite frankly, I see a lot of text in this post and no numbers. For something to be production-ready I'd expect you to at least cover major things like "latency to serve x in Elixir instead of lang y is k% better" or "EMFU we got when training x in Elixir was comparable to lang y". These are two random metrics that are of course biased to my experience but the article just feels empty without numbers.
- deleted 2y ago[deleted]
- auraham 2y agoHave any of you used elixir-desktop [1]? It is a wxWidgets + LiveView bundle, pretty much like a Electron app. In [2], Wojtek Mach explains how the team behind Elixir build Livebook Desktop. He explains how the project started, some subtle bugs found when building the app for MacOS, some limitations of wxWidgets in Windows, and many other implementation details. It would be awesome if the Elixir team release something like elixir-desktop based on Livebook. That is, forking the Livebook repo and release an official template project for generating desktop applications based on LiveView. [1] https://github.com/elixir-desktop/desktop-example-app https://github.com/elixir-desktop/desktop-example-app [2] https://www.youtube.com/watch?v=Kiw6eWKcQbg https://www.youtube.com/watch?v=Kiw6eWKcQbg
- dorian-graph 2y agoTangential to this, there's also https://native.live/ https://native.live/.