Functional programming rah! OOP nah! Or how to know you're a zealot
-
@Applied-Mediocrity said in Functional programming rah! OOP nah! Or how to know you're a zealot:
@topspin said in Functional programming rah! OOP nah! Or how to know you're a zealot:
life critical things arenât written by the kind of people that bring you IoS devices.
Yes, and if those things were written as I said above, you wouldn't need "black hats" for this because it would kill you once leftpad is down, with no hackers involved.
-
@topspin ... reading =
-
@topspin said in Functional programming rah! OOP nah! Or how to know you're a zealot:
@Gribnit said in Functional programming rah! OOP nah! Or how to know you're a zealot:
@LaoC said in Functional programming rah! OOP nah! Or how to know you're a zealot:
depend on the reliability of your average Java application when I have to call 911.
When the world was young, Java was known for its reliability and uptime. Compared to C or Perl.
Well, just read his statement again and mentally replace Java with âJS or Perl.â
Personally Iâm glad that, so far, life critical things arenât written by the kind of people that bring you IoS devices.
They, totally are.
-
@ObjectMike said in Functional programming rah! OOP nah! Or how to know you're a zealot:
I like the idea of optionals but they're kind of annoying to work with. Plus the code looks kind of clunky
The rest of what you need with Optionals is a predicate type and a unary operator type.
-
@Mason_Wheeler said in Functional programming rah! OOP nah! Or how to know you're a zealot:
@LaoC Yes. And there's a reason it's almost entirely unknown outside of telecommunications. It may be possible to build robust systems with Erlang, (or with any other language, for that matter,) but that doesn't make it intuitive or easy to work with.
Apart from not having anything to do with the question of whether you're solving real-world problems (AKA ), what kind of a criterion is "intuitive" anyway? Intuitive as in "you can program in it without learning anything because it's just Common Sense"? Dozens of languages have had that ambition, and I think it's safe to say the amount of effort put into that design goal is proportional to the size of the resulting
-
@Zecc said in Functional programming rah! OOP nah! Or how to know you're a zealot:
@ObjectMike said in Functional programming rah! OOP nah! Or how to know you're a zealot:
I like the syntax from kotlin. All specified types are non-nullable unless you put the nullable indicator on the type, like String? to allow a null string.
C# uses the '?' suffix as well. They possibly they stole it from there, or from a common source.
But in C# for compadebility reasons all non-primitives are nullable by default unless you turn on the right flag.
Or start a new .NET6 project then it's also on by default.
-
@LaoC said in Functional programming rah! OOP nah! Or how to know you're a zealot:
@Mason_Wheeler said in Functional programming rah! OOP nah! Or how to know you're a zealot:
@LaoC Yes. And there's a reason it's almost entirely unknown outside of telecommunications. It may be possible to build robust systems with Erlang, (or with any other language, for that matter,) but that doesn't make it intuitive or easy to work with.
Apart from not having anything to do with the question of whether you're solving real-world problems (AKA ), what kind of a criterion is "intuitive" anyway? Intuitive as in "you can program in it without learning anything because it's just Common Sense"? Dozens of languages have had that ambition, and I think it's safe to say the amount of effort put into that design goal is proportional to the size of the resulting
FP cultists love to talk about Erlang and telecommunications. But why do they never talk about Erlang and anything else?
Erlang was written at a telecom company, specifically for building telecom systems. When it was released as an open-source language, they called it Erlang OTP, for "Open Telecom Platform."
This is not a system that solves real-world problems; this is a system purpose-built to solve one real-world problem, that virtually no one outside of that specific problem domain wants anything to do with. It's widely considered dead or dying. Meanwhile, traditional programming languages are used to build everything, because they do a much better job of it.
-
@Mason_Wheeler said in Functional programming rah! OOP nah! Or how to know you're a zealot:
@LaoC said in Functional programming rah! OOP nah! Or how to know you're a zealot:
@Mason_Wheeler said in Functional programming rah! OOP nah! Or how to know you're a zealot:
@LaoC Yes. And there's a reason it's almost entirely unknown outside of telecommunications. It may be possible to build robust systems with Erlang, (or with any other language, for that matter,) but that doesn't make it intuitive or easy to work with.
Apart from not having anything to do with the question of whether you're solving real-world problems (AKA ), what kind of a criterion is "intuitive" anyway? Intuitive as in "you can program in it without learning anything because it's just Common Sense"? Dozens of languages have had that ambition, and I think it's safe to say the amount of effort put into that design goal is proportional to the size of the resulting
FP cultists love to talk about Erlang and telecommunications. But why do they never talk about Erlang and anything else?
I was addressing your argument of "intuitive".
Erlang was written at a telecom company, specifically for building telecom systems. When it was released as an open-source language, they called it Erlang OTP, for "Open Telecom Platform."
This is not a system that solves real-world problems; this is a system purpose-built to solve one real-world problem, that virtually no one outside of that specific problem domain wants anything to do with.
And who uses stuff that communicates on the internet and needs to be scalable or use databases anyway? Now that's a tiny problem domain.
It's widely considered dead or dying.
If you want to use the likes of "it's higher on TIOBE" as an argument, let me remind you that VB is ranked #15 and #6. Do you want to argue VB is there because it solves real-world problems on WTDWTF?
-
@Rhywden said in Functional programming rah! OOP nah! Or how to know you're a zealot:
@Zecc said in Functional programming rah! OOP nah! Or how to know you're a zealot:
@ObjectMike said in Functional programming rah! OOP nah! Or how to know you're a zealot:
I like the syntax from kotlin. All specified types are non-nullable unless you put the nullable indicator on the type, like String? to allow a null string.
C# uses the '?' suffix as well. They possibly they stole it from there, or from a common source.
But in C# for compadebility reasons all non-primitives are nullable by default unless you turn on the right flag.
Or start a new .NET6 project then it's also on by default.
An MSDN page to which I'm going to link while it is still there says:
Beginning with .NET 6, new projects include the <Nullable>enable</Nullable> element in the project file.
I feel like they're conflating a framework version with its default project templates and a language version's supported features. They are correlated, so I guess it's okay.
-
@Applied-Mediocrity said in Functional programming rah! OOP nah! Or how to know you're a zealot:
@topspin said in Functional programming rah! OOP nah! Or how to know you're a zealot:
life critical things arenât written by the kind of people that bring you IoS devices.
Reminds me of a comic by Geek and Poke (which I just can't find...):
2 guys standing in front of a tomb, one saying: his last words were "Look, John, I can open a secure shell to my heart pace maker."
-
@Applied-Mediocrity That's why it's important to keep your software up-to-date. Old versions are more likely to be vulnerable.
"Please do not stand up while updates are installing. Your heart may restart multiple times during the update."
-
@cvi said in Functional programming rah! OOP nah! Or how to know you're a zealot:
@Applied-Mediocrity That's why it's important to keep your software up-to-date. Old versions are more likely to be vulnerable.
Except ⌠in this case updating was what could make you vulnerable. Because the vulnerability was that it failed to check the signature of the update package.
So, yeah, that bug in the 2090 programmers was a big blunder. But trying to exploit it would be a lot of effort for a fairly little mayhem. The problem was not in the pacemaker itselfâI don't think they can be updated at all, just configuredâbut the device providing interface for setting it up during the implantation, and there is always a trained technician operating it, because the cardio-surgeons have enough things to care about already to be asked to learn the technical details of the setup.
So it would may be set up one patient wrong, after which the device would be taken back for examination and it would quite probably be found that it was compromised.
"Please do not stand up while updates are installing. Your heart may restart multiple times during the update."
As far as I can tell the implantable devices themselves mostly lack any flashing circuitry and cannot be updated, only configured. Though some have a region of memory where some code can be downloaded that is used for doing various trials.
The older devices are mostly protected by it being some custom near-field communication, so you can't hack them at large. The newer use bluetooth low energy, but those do use encryption.
-
@Benjamin-Hall linked an article in Functional programming rah! OOP nah! Or how to know you're a zealot that said:
For the record, if you want to work in a sane programming language, there exists dozens of nice languages out there, such as for instance ...
- LISP
Lisp gets messy rather quickly as the project grows and you get lost in a maze of twisty little parenthesis, all alike. But it's a great as a language concept prototyping tool, in which capacity it was of course also used for OOPâcue CLOS.
Also, practical LISP programs tend to drop into procedural style pretty quickly, because the functional style turns out to be rather inefficient in most LISP implementations.
- GoLang (yup, no OO here)
I'd argue that:
- Go has pretty much all of OO, simplified and decoupled, but it's still mostly OO style.
- While FP is basically what it does not have. I don't write Go, but I didn't see much of a way of functors and combinators in Go code I read.
- F#
- Being a layer of combinators on top of C#, still very much OO under the hood.
- Or my personal favourite (shameless plug) of course Hyperlambda
I know nothing of that, but I seriously doubt it has sufficient community behind it to be of practical use.
So⌠he rants about OOP (I only skimmed the article; doing otherwise would be ) and praises FP, but then goes on to recommend a bunch of languages that are OO and not really FP.
Probably the most relevant critique of OOP, or rather the way it is realized in Java and C#, that I read already many years ago is this:
Now that guy also pushes his own flavour of LISP, Clojure, but he explains his complains against classes fairly well.
The main point is that classes are used for three purposesâpolymorphism, encapsulation and code reuseâand that this is confounding things instead of simplifying themâbecause simple means independent concepts are independent, and here they are not.
And this is pretty much what Go (and Rust and some other new languages) does: there are interfaces for polymorphism, modules for encapsulation, and composition instead of inheritance for code reuseâbecause inheritance was just a special kind of composition under the hood anyway.
I would still call that OO, or mostly OO, just cleaned up of some old cruft.
Now next on the line should be the go statement. Because
I like to note that the way async is done in Rust, async functions behave as scoped threads by defaultâthe reactor implementation may provide an option to âspawnâ them as independent threads, but normally they are automatically cancelled if dropped without awaiting.
-
@BernieTheBernie said in Functional programming rah! OOP nah! Or how to know you're a zealot:
Reminds me of a comic by Geek and Poke (which I just can't find...):
2 guys standing in front of a tomb, one saying: his last words were "Look, John, I can open a secure shell to my heart pace maker."Found it.
@BernieTheBernie said in Internet of shit:
@Gribnit Do you remember that comic by Geek and Poke back in 2011?
-
E: Only embed no worky
-
@Applied-Mediocrity said in Functional programming rah! OOP nah! Or how to know you're a zealot:
E: Only embed no worky
It's because their TLS no workey. Because:
$ openssl s_client -servername s3.media.squarespace.com -connect s3.media.squarespace.com:443 </dev/null CONNECTED(00000003) depth=2 C = IE, O = Baltimore, OU = CyberTrust, CN = Baltimore CyberTrust Root verify return:1 depth=1 C = US, O = DigiCert Inc, OU = www.digicert.com, CN = DigiCert Baltimore CA-2 G2 verify return:1 depth=0 C = US, ST = Washington, L = Seattle, O = "Amazon.com, Inc.", CN = *.s3.amazonaws.com verify return:1
See,
CN=*.s3.amazonaws.com
, no SAN, but the domain iss3.media.squarespace.com
.
-
@Zecc said in Functional programming rah! OOP nah! Or how to know you're a zealot:
@Rhywden said in Functional programming rah! OOP nah! Or how to know you're a zealot:
@Zecc said in Functional programming rah! OOP nah! Or how to know you're a zealot:
@ObjectMike said in Functional programming rah! OOP nah! Or how to know you're a zealot:
I like the syntax from kotlin. All specified types are non-nullable unless you put the nullable indicator on the type, like String? to allow a null string.
C# uses the '?' suffix as well. They possibly they stole it from there, or from a common source.
But in C# for compadebility reasons all non-primitives are nullable by default unless you turn on the right flag.
Or start a new .NET6 project then it's also on by default.
An MSDN page to which I'm going to link while it is still there says:
Beginning with .NET 6, new projects include the <Nullable>enable</Nullable> element in the project file.
I feel like they're conflating a framework version with its default project templates and a language version's supported features. They are correlated, so I guess it's okay.
It's not, but it's accepted in the MS world, as the brain-damage mensur of a brain-damaged school.
-
@LaoC said in Functional programming rah! OOP nah! Or how to know you're a zealot:
@Mason_Wheeler said in Functional programming rah! OOP nah! Or how to know you're a zealot:
@LaoC said in Functional programming rah! OOP nah! Or how to know you're a zealot:
@Mason_Wheeler said in Functional programming rah! OOP nah! Or how to know you're a zealot:
@LaoC Yes. And there's a reason it's almost entirely unknown outside of telecommunications. It may be possible to build robust systems with Erlang, (or with any other language, for that matter,) but that doesn't make it intuitive or easy to work with.
Apart from not having anything to do with the question of whether you're solving real-world problems (AKA ), what kind of a criterion is "intuitive" anyway? Intuitive as in "you can program in it without learning anything because it's just Common Sense"? Dozens of languages have had that ambition, and I think it's safe to say the amount of effort put into that design goal is proportional to the size of the resulting
FP cultists love to talk about Erlang and telecommunications. But why do they never talk about Erlang and anything else?
I was addressing your argument of "intuitive".
Probably the best practical definition of "intuitive" I've seen comes from the .NET team's concept of "the pit of success," the idea that, if you don't know what you're doing and just flailing around with minimal guidance, the design of the system should be such that you end up accidentally getting it right.
Erlang was written at a telecom company, specifically for building telecom systems. When it was released as an open-source language, they called it Erlang OTP, for "Open Telecom Platform."
This is not a system that solves real-world problems; this is a system purpose-built to solve one real-world problem, that virtually no one outside of that specific problem domain wants anything to do with.
And who uses stuff that communicates on the internet and needs to be scalable or use databases anyway? Now that's a tiny problem domain.
Plenty of people do that. No one's doing it with Erlang. That's literally the whole point.
It's widely considered dead or dying.
If you want to use the likes of "it's higher on TIOBE" as an argument, let me remind you that VB is ranked #15 and #6. Do you want to argue VB is there because it solves real-world problems on WTDWTF?
I said nothing about TIOBE. I posted multiple different sources consistently pointing out that Erlang is either on its way out or already done for. (Many of them say the same thing about VB, which you would have noticed had you actually read them.)
-
@Mason_Wheeler the systems that needed the massive modular redundancy of the Tandem Nonstop are, in general, still running. As with those Erlang systems not so far unplugged. Zero-error error tolerance is rare. Provable spaces are limited. The applications that need them still benefit from them. The pervasiveness of the general case makes no argument against the existence of the specific.
-
@Gribnit Yeah, I didn't mention that point but I probably should have: there's little demand for Erlang anymore because the stuff that Erlang would be really good for has already been written.
-
@Mason_Wheeler said in Functional programming rah! OOP nah! Or how to know you're a zealot:
@LaoC said in Functional programming rah! OOP nah! Or how to know you're a zealot:
@Mason_Wheeler said in Functional programming rah! OOP nah! Or how to know you're a zealot:
@LaoC said in Functional programming rah! OOP nah! Or how to know you're a zealot:
@Mason_Wheeler said in Functional programming rah! OOP nah! Or how to know you're a zealot:
@LaoC Yes. And there's a reason it's almost entirely unknown outside of telecommunications. It may be possible to build robust systems with Erlang, (or with any other language, for that matter,) but that doesn't make it intuitive or easy to work with.
Apart from not having anything to do with the question of whether you're solving real-world problems (AKA ), what kind of a criterion is "intuitive" anyway? Intuitive as in "you can program in it without learning anything because it's just Common Sense"? Dozens of languages have had that ambition, and I think it's safe to say the amount of effort put into that design goal is proportional to the size of the resulting
FP cultists love to talk about Erlang and telecommunications. But why do they never talk about Erlang and anything else?
I was addressing your argument of "intuitive".
Probably the best practical definition of "intuitive" I've seen comes from the .NET team's concept of "the pit of success," the idea that, if you don't know what you're doing and just flailing around with minimal guidance, the design of the system should be such that you end up accidentally getting it right.
So "novice friendly" as opposed to "user friendly". OK, Erlang probably isn't as well suited to writing programs while wildly flailing around as, say PHP.
Erlang was written at a telecom company, specifically for building telecom systems. When it was released as an open-source language, they called it Erlang OTP, for "Open Telecom Platform."
This is not a system that solves real-world problems; this is a system purpose-built to solve one real-world problem, that virtually no one outside of that specific problem domain wants anything to do with.
And who uses stuff that communicates on the internet and needs to be scalable or use databases anyway? Now that's a tiny problem domain.
Plenty of people do that. No one's doing it with Erlang. That's literally the whole point.
You mean no one like Facebook, Amazon, the RabbitMQ guys, the NHS, a whole bunch of ad servers and game companies?
It's widely considered dead or dying.
If you want to use the likes of "it's higher on TIOBE" as an argument, let me remind you that VB is ranked #15 and #6. Do you want to argue VB is there because it solves real-world problems on WTDWTF?
I said nothing about TIOBE. I posted multiple different sources consistently pointing out that Erlang is either on its way out or already done for. (Many of them say the same thing about VB, which you would have noticed had you actually read them.)
"The likes of", i.e. "something similar but not that exact thing". Although 3 of the 5 quote from it. TIOBE at least has a well-defined if primitive methodology, and yes, after the obviously superficial blah blah on first look (dude pronounced Ada as "ay-dee-ay", says "Perl is not portable", "the alternatives are just any modern programming language", "uses a lot of CPU and memory", goes on to recommend Ruby ; "erlang is a really hard language to set up in [sic] your computer because there is no proper package manager") I just skimmed them.
They don't even work as a proper appeal-to-popularity fallacy.
-
@Mason_Wheeler said in Functional programming rah! OOP nah! Or how to know you're a zealot:
@Gribnit Yeah, I didn't mention that point but I probably should have: there's little demand for Erlang anymore because the stuff that Erlang would be really good for has already been written.
Don't go full Francis Fukuyama.
-
@Mason_Wheeler said in Functional programming rah! OOP nah! Or how to know you're a zealot:
@Gribnit Yeah, I didn't mention that point but I probably should have: there's little demand for Erlang anymore because the stuff that Erlang would be really good for has already been written.
Eh... many businesses can encounter a zero-error-tolerance case for a distributed workflow. Erlang still didn't spread well, and not moving very far conceptually from the lambda-calculus domain is, tbf, probably why. However, if you want expressiveness along with provability things get very difficult.
-
@LaoC said in Functional programming rah! OOP nah! Or how to know you're a zealot:
@Mason_Wheeler said in Functional programming rah! OOP nah! Or how to know you're a zealot:
@Gribnit Yeah, I didn't mention that point but I probably should have: there's little demand for Erlang anymore because the stuff that Erlang would be really good for has already been written.
Don't go full Francis Fukuyama.
-
@Mason_Wheeler said in Functional programming rah! OOP nah! Or how to know you're a zealot:
@LaoC said in Functional programming rah! OOP nah! Or how to know you're a zealot:
@Mason_Wheeler said in Functional programming rah! OOP nah! Or how to know you're a zealot:
@Gribnit Yeah, I didn't mention that point but I probably should have: there's little demand for Erlang anymore because the stuff that Erlang would be really good for has already been written.
Don't go full Francis Fukuyama.
Bill Gates? Although, as Lincoln famously observed, many physics quotes are wrongly attributed to Einstein.
-
@Mason_Wheeler He wrote The End Of History. I haven't read the book but according to Wikipedia then main idea is that history is over and liberal democracy won. The book was written before 9/11 and the patiot act, before critical theory escaped from the ivory tower and before lung aids. Saying it hasn't aged well could be the understatement of the century.
-
-
@antiquarian said in Functional programming rah! OOP nah! Or how to know you're a zealot:
Saying it hasn't aged well could be the understatement of the century.
I believe that was @LaoC's point.
Another example would've been the (apocryphal?) statement of a patent officer that "everything that can be invented has been invented".
-
@topspin said in Functional programming rah! OOP nah! Or how to know you're a zealot:
@antiquarian said in Functional programming rah! OOP nah! Or how to know you're a zealot:
Saying it hasn't aged well could be the understatement of the century.
I believe that was @LaoC's point.
Another example would've been the (apocryphal?) statement of a patent officer that "everything that can be invented has been invented".
In the future, computers will be 10 times more powerful, 1000 times larger, and so expensive that only the 6 richest kings of Europe will be able to afford them.
-
@topspin And yet, the evidence suggests that it's true: much like COBOL, people are still using old software written in it but new Erlang development is as dead as disco. (And like disco itself, this does not mean "extinct." There are always a few weirdos out there who love it anyway. But the size of such a group is insignificant enough to treat as negligible.)
-
@Mason_Wheeler said in Functional programming rah! OOP nah! Or how to know you're a zealot:
@LaoC said in Functional programming rah! OOP nah! Or how to know you're a zealot:
Don't go full Francis Fukuyama.
That cartoon with the robot and the cyclop and the guy who isn't sure.
-
@Zecc said in Functional programming rah! OOP nah! Or how to know you're a zealot:
and the guy who isn't sure.
-
@topspin but that was a documentary, like
Squidbillies
inb4 anyone cuts their eyes at me
-
@Gribnit said in Functional programming rah! OOP nah! Or how to know you're a zealot:
@topspin said in Functional programming rah! OOP nah! Or how to know you're a zealot:
@antiquarian said in Functional programming rah! OOP nah! Or how to know you're a zealot:
Saying it hasn't aged well could be the understatement of the century.
I believe that was @LaoC's point.
Another example would've been the (apocryphal?) statement of a patent officer that "everything that can be invented has been invented".
In the future, computers will be 10 times more powerful, 1000 times larger, and so expensive that only the 6 richest kings of Europe will be able to afford them.
But the king's janitor will be able to program them!
-
@Mason_Wheeler said in Functional programming rah! OOP nah! Or how to know you're a zealot:
@LaoC said in Functional programming rah! OOP nah! Or how to know you're a zealot:
@Mason_Wheeler said in Functional programming rah! OOP nah! Or how to know you're a zealot:
Erlang was written at a telecom company, specifically for building telecom systems. When it was released as an open-source language, they called it Erlang OTP, for "Open Telecom Platform."
This is not a system that solves real-world problems; this is a system purpose-built to solve one real-world problem, that virtually no one outside of that specific problem domain wants anything to do with.
And who uses stuff that communicates on the internet and needs to be scalable or use databases anyway? Now that's a tiny problem domain.
Plenty of people do that. No one's doing it with Erlang. That's literally the whole point.
Plenty of people do that with Erlangâindirectly, because that's what RabbitMQ is written in.
Paradoxically, RabbitMQ is such a paragon of stability that it if you enable both horizontal scaling (that's what Erlang was designed for, right?) and message persistency, it won't be able to recover from a full restart. Or at least we never managed to get it to.
-
@Bulb said in Functional programming rah! OOP nah! Or how to know you're a zealot:
@Mason_Wheeler said in Functional programming rah! OOP nah! Or how to know you're a zealot:
@LaoC said in Functional programming rah! OOP nah! Or how to know you're a zealot:
@Mason_Wheeler said in Functional programming rah! OOP nah! Or how to know you're a zealot:
Erlang was written at a telecom company, specifically for building telecom systems. When it was released as an open-source language, they called it Erlang OTP, for "Open Telecom Platform."
This is not a system that solves real-world problems; this is a system purpose-built to solve one real-world problem, that virtually no one outside of that specific problem domain wants anything to do with.
And who uses stuff that communicates on the internet and needs to be scalable or use databases anyway? Now that's a tiny problem domain.
Plenty of people do that. No one's doing it with Erlang. That's literally the whole point.
Plenty of people do that with Erlangâindirectly, because that's what RabbitMQ is written in.
Paradoxically, RabbitMQ is such a paragon of stability that it if you enable both horizontal scaling (that's what Erlang was designed for, right?) and message persistency, it won't be able to recover from a full restart. Or at least we never managed to get it to.
I've encountered Rabbit at three different places I've worked at. In every single case, they were actively trying to migrate away from it, having tried it and found it to be a mistake.
-
@Mason_Wheeler thatâs not really an Erlang problem though.
-
@Mason_Wheeler said in Functional programming rah! OOP nah! Or how to know you're a zealot:
@Bulb said in Functional programming rah! OOP nah! Or how to know you're a zealot:
@Mason_Wheeler said in Functional programming rah! OOP nah! Or how to know you're a zealot:
@LaoC said in Functional programming rah! OOP nah! Or how to know you're a zealot:
@Mason_Wheeler said in Functional programming rah! OOP nah! Or how to know you're a zealot:
Erlang was written at a telecom company, specifically for building telecom systems. When it was released as an open-source language, they called it Erlang OTP, for "Open Telecom Platform."
This is not a system that solves real-world problems; this is a system purpose-built to solve one real-world problem, that virtually no one outside of that specific problem domain wants anything to do with.
And who uses stuff that communicates on the internet and needs to be scalable or use databases anyway? Now that's a tiny problem domain.
Plenty of people do that. No one's doing it with Erlang. That's literally the whole point.
Plenty of people do that with Erlangâindirectly, because that's what RabbitMQ is written in.
Paradoxically, RabbitMQ is such a paragon of stability that it if you enable both horizontal scaling (that's what Erlang was designed for, right?) and message persistency, it won't be able to recover from a full restart. Or at least we never managed to get it to.
I've encountered Rabbit at three different places I've worked at. In every single case, they were actively trying to migrate away from it, having tried it and found it to be a mistake.
I've usually seen queues used for digging people out of kurbetes holes where they can't communicate outside the cluster easily. I always imagined the conversation going like this.
Our cluster isn't vpc equipped and I can't figure out from google's documentation or support how to do it.
Just fire up another queue and we'll have a spring-boot app in a VM do it.
How does this make our lives easier and cheaper?
I just upped my day rate and corporate hasn't a fucking clue. Let's just get this done and wait for the idea to die.The most demented thing I came across was I had to set up a cronjob to put a message on a queue for another service to call an endpoint on our service to put the data into a database we had access to.
I used to think there was more than a sprinkle of creative license to some of @snoofle's stories until I worked corporate and got involved in the webby end of things. I could probably give the main site enough material for a story a week at my current gig.
-
@DogsB said in Functional programming rah! OOP nah! Or how to know you're a zealot:
I've usually seen queues used for digging people out of kurbetes holes where they can't communicate outside the cluster easily.
Calling from the cluster to the outside world shouldn't be a problem. Communicating from outside world into the cluster requires either something that can be tunnelled through a reverse http proxy, i.e. http or websockets, or mapping ports, which is a bit painful if you keep adding endpoints, hence the desire to use a common message bus.
@Mason_Wheeler said in Functional programming rah! OOP nah! Or how to know you're a zealot:
I've encountered Rabbit at three different places I've worked at. In every single case, they were actively trying to migrate away from it, having tried it and found it to be a mistake.
What were they migrating to?
⌠we just considered migrating to Azure event hub, because it's going in Azure anyway, but it does not seem to have message persistency.
@Arantor said in Functional programming rah! OOP nah! Or how to know you're a zealot:
@Mason_Wheeler thatâs not really an Erlang problem though.
It might be. It just might be.
-
@Mason_Wheeler said in Functional programming rah! OOP nah! Or how to know you're a zealot:
I've encountered Rabbit at three different places I've worked at. In every single case, they were actively trying to migrate away from it,
But it kept breeding faster than they could migrate?
-
@Bulb said in Functional programming rah! OOP nah! Or how to know you're a zealot:
What were they migrating to?
Kafka in one case, cloud queues in the others.
-
@Mason_Wheeler I don't think Kafka is a valid replacement. If you are switching to Kafka, Rabbit was a bad choice from the start.
For us the main purpose is to isolate the services from interruptions on the other side. With message broker, once the message arrives in the broker, the sending application can forget it and the receiving will get it when it comes back online if it was restarting or lost internet connection or something. It seems to me that Kafka does not support this pattern of reconnect and pick up where you dropped out. Or of dropping messages because they are confirmed processed.
We use Azure storage account queues in one project instead of Rabbit. But those are too dumb for the other project, and the Azure event-hub seems to be similar to Kafka, so not really suitable either.
-
@Bulb I wasnât convinced that âx is a bad tool because it is written in language yâ is inherently a misfeature of language y⌠it absolutely can be but my experience is that itâs far more likely that the problem was choosing tool x for a problem that x wasnât inherently a good fit for. I see it a little too often :(
-
@Arantor Problem is, what do you do when no non-terrible tool exists for a given problem space? (Issue tracking and automated testing of GUIs come to mind; every single product in both those areas are complete garbage.)
-
@Mason_Wheeler that sounds firmly in the category of to me⌠but the fact no non-terrible tools exist in a given space is not, as far as Iâm concerned inherently because the languages used to write said tools produced the bad tools.
As any fule kno, you can write bad apps in any language! E.g. JIRA isnât awful because itâs written in Java, itâs awful because itâs badly written.
-
@Arantor said in Functional programming rah! OOP nah! Or how to know you're a zealot:
As any fule kno, you can write bad apps in any language! E.g. JIRA isnât awful because itâs written in Java, itâs awful because itâs badly written.
True, but even if it was written well it would still be awful because it is written in Java.
-
@Dragoon Iâm sure something exists in Java that is not awful. Iâm not I have personally seen it but Iâm sure it existsâŚ
-
@DogsB boutique consultant firms can be pretty f-ed up. When the clients are compared by wallet depth especially.
-
People just don't know how to use it...
public class RunWithHttpUrl { public static void main(final String... args) { http://what.thedailywtf.com // semicolon optional } }
This, for instance, compiles and runs.
-
@Gribnit Interestingly, in C# the semicolon isn't optional.