4 ms·
Just because you read it in a HN comment doesn't mean it works in the real world. It has to deal with lots of third party interfaces, websockets, webhooks, etc
by qop 8y ago
Just because you read it in a HN comment doesn't mean it works in the real world.
It has to deal with lots of third party interfaces, websockets, webhooks, etc. Erlang is notoriously bad for modern web stuff, with elixir making the ecosystem more brittle and lower quality. If you're building a system that needs to do a lot of back-and-forth, go is a much more usable tool.
Have you ever tried to debug a giant erlang clusterfuck, calling out to a dozen different service gateways, varying tuple msging nonsense all over the place, jankedy ass comment annotations that aren't even accurate half the time, and all the while trying to fix things with hot swaps?
It all sounds very good when Joe writes those weird little lewis carroll love letters about how magical erlang is, but I've worked on a system like that and I'll never touch erlang again except for small single-shot services. It's completely cancerous as a language ideology.
Not that go is all that much a panacea, but it's definitely the perfect fit for this sort of thing.
Hope this doesn't come across as too harsh, but what you're describing is a rabbit hellhole I've already crawled through.
Also, with projects this size, abstracting db details isn't wise. This kind of scale necessitates more precision in what schemas you choose and what configuration your dbms has. Crap like ecto will ultimately cost you in efficiency. Elixir can get away with it because beam works hard to do supervision thoroughly, but there are multiple performance penalties that beam imposes on itself by choosing abstraction instead of specialization, and again, this problem would demand a specialiZed approach to be efficient as it scales up.
- vimal7370 8y ago"Erlang is notoriously bad for modern web stuff" Care to put some stats? Having used Erlang/OTP for several years, I find this very silly.
- qop 8y agoI'm not an evangelist, so no. I don't particularly care what you think about what I've experienced firsthand. Erlang is a language that doesn't have strings, for fucks sake. I'm sure something simple like parsing json is way easier and more convenient when dealing with lists of chars /s Honestly! BEAM is cool. I'll concede that point any day of the week. But a person who says erlang is suitable for modern web development is not living in the real world. An axe can be sharpened enough to shave with, but should an axe really be that close to your face? Edit: I did find an erlang lib called jiffy that has NIFs for pasting json. That's probably the least obnoxious solution to that particular issue, but my point stands that modern web demands a different model of problem solving than let-it-crash 90s telecom hackery provides
- agency 8y agoElixir is widely used for "modern web stuff." The OP said a few "Erlang VMs", not "the Erlang language"
- qop 8y agoWhoa, elixir is not even remotely widely used. Again, strong signs on HN-itis. A few silicon valley corps experiment with it, maybe a couple major players have a service built with it. But in terms of actual mind share in the webdev sphere, it's a tip of the tip of the iceberg. I already mentioned that beam is cool. I'm not making a point that beam can't be made to do things, only that it isn't suitable for some other things. In the sense of sending bytes from one place to another and having mechanisms for recovering from faults in a network where that communication is happening, erlang is good. But in dealing with complex page requests, structured data from json or webpages or user input or third party apis, it's not a good tool. A modern web developer is thinking about scalability, interopability with tools written in potentially dozens of different languages or variants of js, etc. Elixir is cashing in on disgruntled shops frustrated with ruby but too incompetent to do scala/f#/clojure or potentially they were misled by uninformed hackers reading too much HN about how wonderful elixir is. They are going to find that while there are benefits to using a telephony system with decades of work out into it, they are inheriting decades of cruft as well. A luxury with ruby was that the past few years practically abandoned all sects of usage other than rails, so while performance was lacking, ergonomics were excellent and developer availability was unmatched even by today's standards where js is ubiquitous. You ever tried to use dialyzer for an app where the source lives on forty different machines? It's not fun. You ever had an actor that just randomly fails every now and then? You hunt and hunt, and in the end, locking it to a certain machine makes it go away and you realize that a machine somewhere else is causing good code to fail... Randomly. BEAM for the web is a ticking time bomb. I may seem bitter, but believe me, I'm not. In infosec, developer stupidity pays my bills. I used to think that I could do my job so well that someday stupid devs would all become defensive coders. But I've become a bit jaded, I suppose. Btw, There is no such thing as erlang vm. The beam vm is the product, erlang composes otp, which generates beam byte code. At least, not an official one. Maybe there is one somewhere. I meant what he knew