It's not just a Haskell problem, but I think that Haskellers would rather care about stuff like cryptocurrency, which is obviously unctuous graft, rather than fix the other social problems in their community, like sexism or overly-strict versioning.
What is it about Haskell that makes it a hot candidate for use in cryptocurrency applications? Can someone here shed some light? Read the article but it mostly seems to be a diatribe against crypto on philosophical grounds. I wish it were meatier on the technical reasons for this alleged relationship between Haskell and crypto industry.
There's no actual technical reason. People fell into this as typesafe = "code must safe & secure". Its also a difficult language to understand unless you've trained under it compared to others. There's an innate obfuscation as a result.
There’s a deep connection between Types and Logical Proofs (Curry Howard Correspondence). Haskell has a rich type system that allows you to “prove” (i.e. typecheck) many properties of your program. This is valuable when getting right the first time is important such as smart contracts. I put prove in quotations because all type systems of Turing complete languages are unsound, but this doesn’t matter too much in practice. If you wanted to be really sure, you’d use a total language like Idris or Coq.
That's not true... all turing complete type systems are unsound (where the type metalanguage itself is a turing complete language), but you can have a sound type system of a turing complete language, and in fact haskel itself has such a type system.
I think it's the possibility of nontermination that leads to unsoundness. You can construct a well-typed program that never produces a result, which means the fact that a program has a particular type does not mean you've proved a particular proposition.
Haskell's type system is unsound. Here's an example, where we can prove that 1 + 1 = 1:
{-# LANGUAGE GADTs, TypeFamilies #-}
-- Peano arithmetic: these types represent '0' and '1+n'
data Zero
data Succ n
-- We can define 1 as '1+0', 2 as '1+1', and so on
type One = Succ Zero
type Two = Succ One
-- A closed type family is a function at the type level.
-- This function implements addition of the above Peano numbers.
type family Add x y where
Add Zero y = y
Add (Succ x) y = Succ (Add x y)
-- 'Equal a b' is a proof that types 'a' and 'b' are the same.
-- It works by forcing the type variable 'x' in 'Refl' to unify with both.
data Equal a b where
Refl :: Equal x x
-- The type checker will accept this proof that 1 + 1 = 2, giving:
-- >[1 of 1] Compiling Main
-- Ok, one module loaded.
truePositive :: Equal (Add One One) Two
truePositive = Refl
-- The type checker will reject this proof that 1 + 1 = 1, giving:
-- >[1 of 1] Compiling Main
-- x.hs:24:16: error:
-- • Couldn't match type ‘Zero’ with ‘Succ Zero’
-- Expected type: Equal (Add One One) One
-- Actual type: Equal One One
-- • In the expression: Refl
-- In an equation for ‘trueNegative’: trueNegative = Refl
-- |
-- 24 | trueNegative = Refl
-- |
--trueNegative :: Equal (Add One One) One
--trueNegative = Refl
-- However, the type checker will accept this (unsound) proof
-- that 1 + 1 = 1, giving:
-- >[1 of 1] Compiling Main ( x.hs, interpreted )
-- Ok, one module loaded.
falsePositive :: Equal (Add One One) One
falsePositive = falsePositive
The unsound proof works because our type 'Equal a b' doesn't only contain proofs that a = b (AKA 'Refl'); it also contains infinite loops, like 'falsePositive = falsePositive' (AKA "bottom"). We can use this to undermine any guarantee we try to enforce using Haskell's type system. In fact, we can make a generic version, which can be used to satisfy any type constraint:
loop :: forall a. a
loop = loop
In theory, any time we actually try to use 'loop' our program will freeze; so we might think we're safe from any bad consequences; e.g. if we have 'launchTheMissiles :: PresidentialApproval -> IO ()' we can trick it with 'launchTheMissiles loop', but we're safe since that program contains an infinite loop, right?
Wrong! Haskell is lazy, so it won't bother evaluating arguments which aren't needed. Even if we try forcing the value, we can't be sure that the compiler won't optimise it away! In practice this means that we can't rely on the mere existence of well-typed values as proof of their types; we can be sure that our data dependencies exist (i.e. those values which are forced as part of our computation, which can't be optimised away), but we still won't know that beforehand (i.e. the program may crash or freeze at any point before a particular expression, due to the presence of "bottom" somewhere).
Is this what people mean when they say, Haskell's type system is sound?
We know Haskell's type system includes bottom as an inhabitant of every type which enables us to shrug and hand-wave away proofs of termination. As long as one understands that consequence doesn't it pass Milner's definition?
I'm happy writing proofs in Lean or Agda but having to avoid or prove termination would be a pain in the rear end for most large programs. And in practice I still think of Haskell's type system as sound. I always thought of "unsound" as programs with terms that are logically inconsistent with respect to the theorems proposed by the types, eg: early version of TypeScript or Java. Put another way, that you could write a proposition in they type system that wasn't satisfied by the program (proof).
> Is this what people mean when they say, Haskell's type system is sound?
It depends on the context, but it's certainly in common use (e.g. see https://stackoverflow.com/questions/21437015/soundness-and-c... although I switched 'positive' and 'negative' in my example: e.g. I treat 'true positive' as 'correct program was accepted', that link treats 'true positive' as 'error message was justified')
> As long as one understands that consequence doesn't it pass Milner's definition?
Milner's definition is usually summarised as "well-typed programs have well-defined behaviour". Haskell does fit this description, although certain optimisations may be unsound (e.g. library-supplied rewrite rules).
To me, the key deficiency is that Haskell can't ignore 'absurd' branches. For example, let's say we have a function like this:
foo :: a -> b -> LessThan a b -> Foo
foo Zero (Succ y) _ = bar y
foo (Succ x) (Succ (Succ y)) _ = baz x y
If 'a' and 'b' represent numbers (with singleton values), and 'LessThan a b' describes proofs that a < b (see e.g. http://chriswarbo.net/blog/2014-12-04-Nat_like_types.html for how to encode such proofs), then these two branches form a complete definition of 'foo': the combinations 'foo _ Zero _' and 'foo (Succ x) (Succ Zero) _' can't occur, if we trust the 'LessThan a b' proof. In Agda, Coq, etc. we can either leave out those absurd branches (if the compiler can spot their absurdity), or in more complicated cases we can satisfy the type checker by proving they lead to a contradiction.
In Haskell we can't do this: the type of one argument can't rule-out values of another. Hence we must define those branches (or else leave the implicit "unmatched pattern" error, which is a "bottom"), and we need them to return values of type 'Foo' (which may be impossible to construct, unless we return "bottom"). This satisfies Milner's definition, but also goes too far: we're specifying well-defined behaviour for programs which aren't well-typed! In practice, this leads to redundant branches like 'Nothing -> error "Shouldn't happen"', which (a) introduce potential crashes and (b) are so close to being statically avoided!
> having to avoid or prove termination would be a pain in the rear end for most large programs
All types in Turing complete languages are inhabited by non terminating terms (looping forever, throwing exceptions), which means all propositions are provable.
For instance in Typescript,
const absurd = <A>(): A => absurd()
const unimplemented = <A>(): A => { throw new Error(“Unimplemented”) }
const uninhabited: string & number = absurd()
Intuitively you can think of it like, “Yeah sure, I can build you a term of any possible type, as soon as I get back to you.”, but then the function just ghosts you by looping forever. But it hasn’t lied. However, so long as you’re aware of these gotcha’s they don’t come up much in practice which is why viewing types as proofs is still useful. Just don’t stake your career on one.
Haskell always struck me as a language you'd want to use to feel superior to the people who code in JS and python, and crypto always struck me as a field you'd want to work in to feel superior to the people who work in industries that actually generate profits.
Also, another possible reason is that many crypto people tend to confuse complexity with ingenuity. While the bitcoin whitepaper tries to make a complex topic as simple as possible, a great many crypto companies and people purposely use language that is needlessly convoluted and verbose.
Perhaps they're doing it on purpose to seem smarter?
Do you even know what "verbose" means? Haskell is obviously the exact opposite of verbose. In fact some more verbosity often makes it easier to understand.
In context, the "language" GP was referring to was the (presumably English) language in crypto currency white papers which is "needlessly convoluted and verbose". This was being contrasted with the concise language of the original Bitcoin white paper. It's not about programming languages.
Just say you don't want to learn more than the absolute minimum when it comes to programming language theory. No one will give you shit if you are honest about it.
I was at a hackathon and this big shot legal person from NY was telling me about a hot crypto company and them using Haskell was like the first thing he told me. In fact, all he told me was they raised a bunch of money in an ICO and they use Haskell. And then he sat there waiting for me to be impressed
Every company that has the ability to do this as a recruiting tool will do it. We're using Elixir / we're using OCaml / we're using Clojure (we're using NLP / we're using ML). In every case there will be some "business" guy who understands just enough to try to impress some potential recruit. If you don't understand the domain and their actual usage of the tool or language enough to fall for this and not ask further questions, it's kind of a problem on your part.
> What is it about Haskell that makes it a hot candidate for use in cryptocurrency applications?
The community opinion is that Haskell is good for building robust and correctly behaving applications. There's some evidence that very strong type systems can help with this.
Financial software is an area where people typically want deep correctness guarantees, another good example area being cryptography.
Between these I think it's probably a good thing that crypto-currency applications and applications like exchanges are being built with "safe" technology like Haskell, rather than technologies that provide much less safety (many Ethereum hacks have boiled down to Solidity contracts being relatively loosely typed).
This is however not an opinion on what crypto is doing to the Haskell ecosystem. I don't know about that.
Apparently there's "right wing" people in Haskell now. This is such a paper thin threat on unspecified persons who must know they're being targeted.
Seriously, I don't think the readership of HN is in any disagreement about how new cryptocurrencies are "short long con" jobs, but the author teases that the influx of this money is toxic to the Haskell community because... right wing people?
Are you saying that cryptoscammers are "right wing", or that threatening cryptoscammers to get rid of them is "right wing"? In what sense dealing with "unsavory varieties" can be considered a partisan issue?
The influx of money is toxic because Haskell's traditional reputation (roughly: difficult to learn, but fast, smart & correct) is being co-opted to add a veneer of legitimacy to crypto scams.
I also wouldn't say the problem is to do with "right wing people". Nobody's born with a political affiliation: we learn and digest information and experience all through our lives, swinging towards and away from different values at different times. This can especially depend on our social circles, our information-bubbles, what benefits us personally, etc.
The crypto-bubble tends to discourage regulation, accountability, etc. which makes it attractive to right-wing politics, whether as a libertarian free-for-all; or money-laundering for the gentry; or whatever. When this sector has an outsized influence on a particular community, the political gradient will be tilted accordingly, and bias people's random walks to the right.
Haskell may be great at solving the technical problems with crypto, but that doesn't solve its ethical or philosophical problems. Yet, as the old saying goes, "It is difficult to get a man to understand something, when his salary depends on his not understanding it".
There is a certain class of computer programs that can best be described as a really big table. Basically, an input taken from a finite set, you get an output taken from a finite set. This type of program is really easy to write in Haskel because you can prove that both the conplete input set and output set are covered using the type system. In other words you can prove that you deal with every possible case (though you can't prove that you deal with every possible case correctly!!!), and that there is no ambiguity (one input has multiple correct outputs)
A good example of such a program is an insurance contract (or a derivitive contract in a bank)
That's basically a DAG - directed acyclical graph. Data is transformed from inputs to outputs with no state or branching on the macro level of the transform. Lots of programs have parts that map to this very well. The cracks show when someone realizes this and thinks it is a silver bullet to build an architecture that ONLY does this. Then the parts that inevitably do need branching, state, and complex loops become a big problem. Combined with resource management (which can be thought of as mixing in branching and state) and the simplistic approach that seemed like a silver bullet turns into a nightmare once the realities of real software set in.
If you build a language that is based around doing everything with stateless data transformations but doesn't address state and branching, it will eventually be a problem, because the reality is that the vast majority of non trivial software needs to deal with plenty of state and branching, not to mention the state and branching that will go in to managing resources.
There are a lot of domain specific tools that are used for specific tasks where the main software is taking care of architecture, high level decisions and resources. Shaders are one example of this. Trying to write non trivial software like this is problematic because the structure you are using is so disconnected from what the software needs to do.
> If you build a language that is based around doing everything with stateless data transformations but doesn't address state and branching, it will eventually be a problem
I'm assuming you are referring to Haskell? It's a general purpose programming language so of course it handles state, branching, etc...
data Tree a = Empty | Leaf a | Node a [Tree a]
deriving stock (Show, Functor, Foldable, Traversable)
label :: Tree a -> Tree (a, Int)
label t = evalState (traverse f t) 0 where
f t' = state (\c -> ((t', c), c + 1))
The above code labels nodes of a multiway tree using a counter. State and branching.
That's not state or branching on a high level of a program. It is in some ways the opposite of what I was talking about and a good representation of the problem.
This looks like it is lazily evaluating parts of a tree, which means that you aren't controlling that state, you are hoping that everything works out when you query it with regards to resources, caching, memory layout, memory freeing, etc.
In a non-trivial program that either will need to optimize memory and cpu usage to scale or be careful about how things are structured to maintain interactivity, something like this is likely to be a big problem if that tree gets big.
To someone not familiar with Haskell funding, can anybody explain the quote below?
"For a while it has been a public secret the Haskell ecosystem has become increasingly entangled with an unsavoury variety in the cryptocurrency sector as one of primary mechanisms for funding development."
I mean, what exactly is this "unsavoury variety in the cryptocurrency sector" and how is Haskell tied to it?
This sheds some light on the topic - thanks. Still, the author states that Haskell's reputation is used to legitimize bad business. It seems to me that shady companies using the language internally is not enough to raise alarm about it.
Is there some kind of (un-)official sponsorship from (supposedly) shady actors?
Haskell isn't that large of a language. I'm not confident if the heavy usage by shady crpyto companies is enough to ruin the image of a language but I think at the very least the advice to not depend on it financially to grow the community is a sound one.
Worked at a Haskell crypto startup. Your analysis of cause and effect is wrong -- crypto people are attracted to Haskell because it has features that are excellent for the domain, not because they are interested in "copping shine" from it or whatever.
the morality and potentially negative effects of finance are real but if Haskell wants a gold-niche to appear worthy for the mainstream world then it's a very potent one.
It doesn't really have anything to do with the article though. It's just an anti-bitcoin article of which there are many.
The article here is about cryptocurrencies that pull in money through ICOs and that turn out to be fraudulent and that use Haskell and sprinkle some right wing politics on top. In the end the article doesn't really say anything if you ask me and I don't really see the link with Haskell. Haskell just has properties well suited for cryptocurrencies so it gets used more than certain other programming languages for this specific purpose. This seems more like the author disagreeing with consultants, who happen to use Haskell, that take on (according to him) dubious jobs.
Most people can read "unsavoury variety in the cryptocurrency sector" as everything except bitcoin. A minority of people will read it as "all crypto", and if you're reading it as "only shitcoins" you're probably a little unsavoury yourself.
”For a while it has been a public secret the Haskell ecosystem has become increasingly entangled with an unsavoury variety in the cryptocurrency sector as one of primary mechanisms for funding development.”
And those would be? I code in Haskell every day and I have no idea what he’s talking about.
This is one of those articles that attempts to talk about some situation to make it more common knowledge, but is written in such an incredibly abstract way that all you can really take away from it is 'some unknown people are upset about some unknown issue'.
I feel like this 'elephant in the room' article doesn't tell me what the elephant is, why it's in the room, or why people don't want it to be in the room.
> Painfully, some of the very founding contributors to Haskell itself are the ones deepest involved in this ring.
> In this new era the Haskell community itself has simply become a tool to buy legitimacy and pump token values. The reputation of our community is now used to defraud the public and convince non-technical users of the soundness of an utterly unsound investment.
> I have avoided names ... however core Haskell companies such as Well-Typed, Tweag and FP Complete have been deeply complicit in building up this crypto industry for years now.
The article isn't easy to skim, and I think that's the point. The author wants to focus more on why cryptocurrency is a scam, and less on who's guilty.
Maybe it's just me, but these sentences are so vague and indirect as to mean nothing to me.
I think it's a shame because if you're going to accuse someone of something, at least make your accusation clear and direct so they can respond to it specifically.
I'm not an expert and I don't do value judgments, but I think he's talking about something called 'smart contracts'.
Haskell would make it easier to verify smart contracts.
I thought he was talking about use cases like those as Cardano and with "some of the very founding contributors" he meant Philip Wadler (amongst others).
EDIT: didn't want to imply that Cardano is a shady company.
No, he's not talking about the technical features of blockchain. He's talking about the general shadiness of a nontrivial number of actors in the cryptocurrency sector itself, which have had a propensity for deceptive marketing, and even outright fraud.
His concern is that if Haskell gets the reputation of being beholden to these interests it will make the Haskell ecosystem undesirable to legitimate actors.
But... who actually thinks this way when they select technologies? If Go was used for a lot of crypto scam, I wouldn’t spend a second thinking about it when I’m deciding to use it for my non-scam, non-crypto’s project.
I have difficulty to understand how it is an issue that a programming language is used for a niche that has bad reputation.
From my view, its less about using the technology for side projects, and more about job prospects using that language. If Haskell jobs are overwhelmingly associated with crypto, and that’s a negative association for most people, they might be less likely to invest time into learning Haskell, as they’re not interested in joining the crypto industry.
Anecdotally, almost every Haskell job posting I've ever seen is for a bank or some kind of cryptocurrency thing. I've never done a real analysis and I don't have any numbers to back that up, that's just what it feels like as someone who passively watches the Haskell job market.
Very much a generic anti-cryptocurrency rant, and very little haskell-specific clarifications. I understand not wanting to name specific projects (Cardano comes to mind; "Cardano is a blockchain platform built on the groundbreaking Ouroboros proof-of-stake consensus protocol, and developed using the Haskell programming language: a functional programming language that enables Cardano to pursue evidence-based development, for unparalleled security and stability."), however it would be interesting to have some examples of haskell developments that are fueled specifically by cryptocurrency applications. FTA: "the economic machinery that shapes everything we do and informs the problems we chose to spend our cycles on"; what are these specific problems?
The author mentions at least three Haskell-related companies, such as FP Complete, and says he wants to avoid naming specific people for the time being.
If the only charge is that haskell consulting companies are writing code for cryptocurrency projects, then I have misunderstood the article first time around. I assumed the problem was with developments in the haskell language itself.
Exactly this. The article is not about the Haskell language itself -- i.e. not a rant about technical issues -- but about its community and consulting companies getting (allegedly) entangled with crypto businesses. "Making a deal with the devil".
That's why the author rants about crypto and not about Haskell itself.
I am not sure what is "alleged" about Haskell consultancies getting cryptocurrency money. It is pretty easy to confirm. Both Well-Typed and FP Complete got money from Cardano and posted to their blog what amount to advertisements for Cardano. Google a bit if you care.
"Alleged" as in "the article claims this, but I personally haven't double-checked it so don't want to make my post sound as I myself were sure this was the case". "Alleged" doesn't mean "unfounded".
I've written enough comments on HN to know that if I don't word it this way, someone will inevitably start arguing with me as if the assertion was mine.
It doesn't work to talk about an "elephant in the room" and then not name names. The whole point of the idiom is that you're criticizing other people for not concretely naming things.
Key word here is Asterius. Cardano is funding Asterius, Haskell to WebAssembly compiler, Asterius is based on GHC, and changes convenient for Asterius are being merged to GHC.
> however it would be interesting to have some examples of haskell developments that are fueled specifically by cryptocurrency applications
An article saying "this sector of our community is bad and scamming retail investors" is already burning MAD BRIDGES and putting an enormous target on your back.
"Bob Smith and Joe Brown, specifically, are scamming retail investors" is going even a little beyond that. It's just not necessary.
EDIT: For the writer of the article, that is. We in the peanut gallery obviously want all the details, which is why a little detective work is often required in these cases.
This is an article about a giant pot of questionably earned money buying influence in a software ecosystem that he's been a big part of. But this is hardly the first time for this, in other cases the pot of questionably earned money came from selling people's data for ads or from Windows licenses.
The question in all of these cases is what specific bad influences the money can have on the software ecosystem and how community standards and governance can mitigate them. I don't really see a lot of answers in this article besides ill-defined ethical compromise of developers. I skimmed the book he mentioned (The Politics of Bitcoin: Software as Right-Wing Extremism) which sounds interesting but it doesn't really make its own case very well: half of the "extremist" citations are from anonymous online commenters and you can't go 2 paragraphs without straight up name-calling and ham-fisted guilt by association.
It's not buying influence, it's "blood money" -- profiting from crime by selling things to criminals. When Prada sells luxury clothes to drug lords, the problem isn't that the drug lords influence Prada
I've been concerned about this for Rust too, as a lot of the published jobs and high profile projects (including Libra) are in the cryptocurrency sector. For example, one of the most promising rival GUI toolkits, iced, is being sponsored by Cryptowatch. Fortunately, the growth of other sectors is robust enough that if all cryptocurrency were to fall into the ocean, Rust would be impacted but not massively so.
Rust's adoption in the cryptocurrency sector is massive indeed. Parity Technologies and OpenEthereum is the most well known, but both Stellar Development Foundation and Zcash Foundation (both are among top 30 cryptocurrencies) are rewriting their main node implementation in Rust. I'd say at this point Rust has more adoption than both Haskell (Cardano) and OCaml (Tezos).
Grin is perhaps the first cryptocurrency to be written in Rust, starting in October 2016. Its constant 1 Grin per second emission tries to keep speculators at bay.
In addition to iced, I need to point out that Debian's Rust packaging is effectively funded by Web3 Foundation. Cryptocurrency money also funded RustCon Asia (held in Beijing).
Crypto in particular has lots of requirements that would be served by Rust and Haskell that might make them more appealing; where a traditional web startup that mainly serves web traffic can easily choose between Ruby, Python, Javascript, Elixir, etc.
There was definitely a minor controversy one year where a well known community figure listed "less cryptocurrency" as part of their hopes for Rust in one of the "Rust in $year" posts. Sadly I can't find the details right now.
There are also a lot of traditional finance companies using Haskell[1]. And, historically some of the people who created the language itself and have worked on GHC (and other compilers), or contributed heavily to the ecosystem have worked for traditional banks[2].
I don't mention them to encourage people to attack these people, but it comes off as a bit selective to focus on the people using your language for cryptocurrency when it's also used heavily by traditional fintech companies, as well as defense contractors, and even for large retail chains (Target uses it for data analysis). Facebook also uses it for their spam detection system. Why are all of these uses fine and cryptocurrency is not? And if they also aren't fine, then how should we solve this problem? Start non-profits/charities that specifically use Haskell, and somehow make those the majority of the available jobs that use it? That seems pretty infeasible unless you want to solve the broader problem of these jobs existing in the first place.
The "What is happening?" and "How is it happening?" sections of the article spend 900 words differentiating legal financial services from cryptocurrency scams.
I disagree with the idea that traditional legal financial services commit less fraud than cryptocurrency scams do. They just get away with it easier.
> Normally these frauds are recognized for what they are quite quickly and the courts and regulatory bodies can clean up the mess and rectify the damages to those who have been misled
That just comes off as total BS to me. How many regular people were awarded damages after the 2008 meltdown, which was due to massive fraud in the mortgage industry?
What exactly are you referring to? Can you link an article to explain, as it sounds like you're saying Ethereum was bailed out by the federal government.
I mean, you ask a lot of questions, but the first one is answered by the article and the others aren't really that important given the answer to the first.
The only solution to what the article is ranting about is to grow the ecosystem. Move it beyond all kinds of banking. Move it beyond all kinds of finance. Move it beyond all kinds of any specific industry or endeavor. Otherwise, we'll continue to have people ranting about cars because people drive to and from some kinds of jobs the article writers think are bad.
My rough understanding is that the focus is not on who is using the language, but rather who is funding the language, which of course is a huge distinction.
But banks (particularly Standard Chartered as an example) seem to have also funded a lot of the really early work on Haskell if I'm not mistaken. At least indirectly by hiring people who also work on the core tooling/libraries/etc. Haskell, and functional programming in general has a history of being used and developed heavily in the fintech industry (see Jane Street for OCaml as another example). It's no surprise that cryptocurrency startups would find it attractive and continue that trend. So it really boils down to how ethical you think one group is vs the other, which I think is a ridiculous argument to have. If a specific company or group is doing something unethical/illegal, then name and shame them, but that doesn't seem to be the issue here.
yes, good point, it's been around since the 90s when all of the work done on it was funded by purely academic institutions. I'm 29 years old, and I started using Haskell in about 2009, and I think that's around the time when it started picking up a larger userbase too.
They are likely all in-house tools. Take a look at github projects of this Haskell-using bank for example: https://github.com/barclays
Not sure if this counts, but IIRC in one of the talks, Edward Kmett was describing row-polymorphic language they implemented in Scala to be used internally at S&P (or wherever he was working).
There are also a lot of traditional finance companies using Haskell[1]
This list is misleading. Sure, there are probably a few people at any of these companies dabbling with Haskell. But the only major financial company where it is mainstream is StanChart.
Also, FTA, Isle of Man, not Mann. How seriously can we take a rant about a place that doesn’t even know how to spell it (source: am in Wales, that Isle is just off our coast).
Fun fact: when Scots say “och aye the noo”, noo is the Manx word for “saint”. English people think noo is “news”. It gives a totally different meaning.
It may well be "pretty infeasible" in the short run but having a morally* solid background for technological development is paramount for it's long-term well-being.
Otherwise the foundations will rot while the establishment thrive and the creative driving forces will find new "cleaner" playgrounds within which to express themselves.
*not talking about absolutist "this must have equal outcome for everyone" style morals but rather the harder kind that deals with the long term societal impact of a given thing. And in this context I totally believe the discussion brought up by Stephen Diehl is exceptionally important!
I agree with your premise. I think we should divest from scammy cryptocurrency companies. I also think we should divest from scammy banks, and companies that supply weapons to be used for killing people overseas as well (specifically referring there to companies like Raytheon), and companies that violate our privacy and manipulate our society negatively (i.e. Facebook).
Obviously if you release something with an open source or FOSS license, then anyone is free to use it though. I'm against any kind of morality clause for free software.
> Obviously if you release something with an open source or FOSS license, then anyone is free to use it though. I'm against any kind of morality clause for free software.
Absolutely, it's the organisation /& community that needs to have the moral compass in proper order. In my optics it is about fostering the right sort of positive culture for use of a given tech rather than try to enforce it via totalitarian/legal means - the latter is bound to fail.
I knew Stephen Diehl rang a bell! He is the author of this very useful primer on tools & basics of the Haskell dev environment: "What I Wish I Knew When Learning Haskell"(http://dev.stephendiehl.com/hask/). I recommend it as a practical overview, though of course it doesn't replace actually learning Haskell.
That's not a technical term nor a "term of art" in economics. Google Scholar returns results from management and accounting journals, as well as some pseudo-economics ("heterodox") pamphlets.
Economics is a science. You get an idea what's 'pseudo' or not by working in or familiarizing yourself with the field. Say, The New neoclassical synthesis is very much as standard as it gets, whereas Marxist or Austrian economics exist on the fringes.
In general something is pseudo-scientific if it operates outside of the formalisms or tools of that particular discipline, especially if it pretends that it does not.
"Modern mainstream economics is sure very rigorous — but if it’s rigorously wrong, who cares?
Instead of making formal logical argumentation based on deductive-axiomatic models the message, we are better served by economists who more than anything else try to contribute to solving real problems. "
I'm not sure what that critique has to do with the original question about the distinction between science and pseudo-science, but I'll respond anyway.
The purpose of science is the generation of knowledge, it's to have a formal understanding of a system and essentially a language and methodologies to make inquiries.
Economics as a science does solve real world problems, but it's not the dominant purpose of a science as such. It's the task of problem solvers to take scientific results and then turn those say, into actionable policies. Scientific work does not exist for the purpose of solving 'real problems' in the sense of being subjected to that goal. Scientists are not engineers. When Computer Scientists talk about Big-O complexity they often do so in a way that's not really applicable to real-world software development, but that isn't their job.
That said economic theory actually does very much factor sucessfully into decision making. Be that macro-economic policy, central banking, the design of markets and incentives, and so on.
Economics is not something that can be tested easily on a large scale, so most of it becomes about trying to explain why things happened in retrospect.
There's something called "economics", much like there is something called "psychiatry". [Maybe we need more sociology in policy-making. Maybe economics is too narrow a view on the world. But it is a specific field of study.]
There are good reasons to be critical of psychiatry, but it's a red flag if someone tries to pass palmistry off as psychiatry.
The problem here is that economics does have some prestige still, which is why predatory political activists try to pass their "heterodox" writings as belonging to it.
I feel like the only elephant in the room with Haskell is that Haskell people are obsessed with jumping in on any other FP language and trying to turn it into Haskell. Scala was/is awash with it, much to the detriment of the community.
I don't think Cardano is running a shady exchange, but Cardano sure is traded in shady exchanges and people are losing money trading Cardano. I don't think that's a controversial statement.
People are losing money trading a lot of things, including but not limited to stocks, commodities and cryptocurrencies such as Cardano. I don't really see the issue with that?
I'm guessing it's the shady exchanges. There are several exchanges that have been around for a few years now, do you take issue with all of them or are you thinking of a specific one?
The accusation is that the whole crypto space is shady. There is no value being created, instead investors are being defrauded. And part of the con game is pretending to have very intelligent people keep making progress building very complicated things. Haskell works great to give that impression, though Rust seems to work just fine these days, too.
I get why he doesn't like crypto currency stuff. Why is it so toxic if haskell is used for it? Is there a suggestion that those that participate in coin related projects should be persona non grata.
Is there really no discussion about software as a dual use technology?
The issue the author is worried about is that the crypto companies are taking advantage of Haskell's public prestige to imply a level of robustness and rigor that doesn't actually exist: this incredibly incredibly shady company can't be that shady since they're using such fancy technology.
> In this new era the Haskell community itself has simply become a tool to buy legitimacy and pump token values. The reputation of our community is now used to defraud the public and convince non-technical users of the soundness of an utterly unsound investment.
So when people realize that 50% of crypto entrepreneurs are scammers and the other 50% are deluded, and the bubble pops, there is a serious concern that Haskell will be publicly understood as a "cryptocurrency" language and will suffer a reputational hit.
I see this problem with formal methods, which are also increasingly used in the cryptocurrency world. I compare their use there to the claim that a tightrope is safe because it's anchored to towers assembled from cards made of the strongest titanium alloy.
Having said that, I doubt the impact of Haskell's reputation on cryptocurrency users, technical or otherwise. The myth that Haskell results in more correct programs might still be alive in portions of the Haskell community despite the failure to support the claim with any evidence, but few outside that community have ever heard of that myth, let alone believe it.
At this point, the entire financial sector is decoupled from actual productivity, and to pass moral judgement of one highly exploitative industry over another solely due to one's ability to be regulated seems myopic, at best.
I found the description of the cryptocurrency-space as a religion well-written and interesting.
Of course, comparisons such as that are relatively common and has been made many times for the free software movement as well for example.
However, his criticisms of cryptocurrencies are quite off IMO.
> However cryptocurrency companies do not produce anything, instead they offer synthetic financial products which are marketing to the generic public as investments
MakerDAO is basically a decentralized lending facility (i.e. "banks") and Compound is a decentralized money market.
These are actual financial products, they serve real purposes that can also be found in the legacy financial system.
Cryptocurrency engineers are building an alternative, decentralized financial system that cuts out middle men and allows anyone access to financial services (such as accepting money from anywhere in the world, or being able to lend out your capital) that were previously only available to select people.
In one month, July 2020, the Federal Reserve printed more money than the first 200 years of the existence of the USA.
There are serious problems with the legacy financial system, and it's good that people are building systems in parallel.
Out of a thousand cryptocurrencies you found two that are not harmful; congratulations. It's virtually impossible for people to discover the good stuff without being radicalized by the bad stuff.
It's funny, I remember looking at Quorum's anonymity layer Constellation and thinking to myself how odd it was they wrote it in Haskell; generally a sign there are no adults in the room when coming from a JPMC tier company where actual money will be piped through it. It turned out they had to rewrite it in Java to get it to function reliably.
I have no opinion on Cardano,but obviously something from the ML family is useful if you want to build smart contracts.
I don't really care for how naïve this description of "how economy works" is or isn't, but being upset that instead of Haskell being used virtually nowhere, it is finally used somewhere is pretty hilarious.
Haskell's unofficial motto is "avoid 'success at all costs'", which is referenced near the end of the article. Piggybacking on crypto fraud would be a cost that's worth avoiding.
Fortran has been extensively used for nuclear weapons development. Let's stay away from Fortran!
C was and is widely used in weapons control systems. Let's stop using C!
Computers themselves were initially designed for artillery fire control, with an explicit intention of killing people. Let's not touch the technology with such a foul pedigree.
This can be continued ad nauseam, until the whole of the civilization is marked as indecent. Nearly every scientific discovery and techology achievement has been used, or attempted to be used, for some purpose one might find objectionable.
Instead we could realize that tools are outside morals. A knife could be used to cut bread or to cut throats, and it's not the knife's decision, but that of its user. The very same thing applies to everything, from nuclear fission to functional programming.
If you know what's the right, virtuous thing to do in the world, do not hesitate, go and do it. Use the most fitting tool for that job. Do not mind if that tool is used for whatever other, less noble purpose, it's not the tool's fault.
If you're trying to say that IBM invented the home computer or the personal computer, you are off by about 6 years. (Home computers became available around 1975; home computers that didn't not need any assembly by the buyer became available in 1976 or 1977; the IBM PC became available in 1981.)
If you're trying to say that IBM was the first to officially name a personal computer "PC", I'll give you that one.
It did create a personal computer which was (1) easy to clone and (2) easy to extend with ISA cards. This openness made it a huge success, leading to an explosion of PC-compatible machines.
Most other makers, from Apple to Amiga, vigorously protected their small private markets where they dominated. The original Macintosh has explicitly removed all the expansion capabilities that e.g. Apple II had.
It accidentally made it easy to clone by rushing to market, making false assumptions and hoping the enterprise market would soon lose interest in personal computers.
Rushing to market led to the decision to license the OS from Bill Gates instead of buying the OS or writing it in-house.
An example of a false assumption would be believing that holding the copyright on the BIOS would be enough prevent clones.
Werner von Braun bombed London with V-2s during WWII and was a Nazi party member above the rank-and-file level.
Werner von Braun has lead the US space program to launching humans to LEO, and then to the Moon.
Again, technology is morally oblivious. A sword that only serves a noble aim is strictly the stuff of fairy tales, and is not implementable in the real world (no, not even with an AGI, since humans are a reasonably good approximation of an AGI).
Some technology has only one purpose, and is used only for immoral acts. An example of this would be any device invented for torture.
While those examples are uncommon, more technology is built expressly for evil acts, even if it has the capacity for good. If you are distributing plans and technology to make "dirty bombs" - devices intended to disperse lethal amounts of radiation - it's impossible for a reasonable person to believe that it is not intended to murder people via radiation. Furthermore, in the context of today's world, you know that the most likely users of such a device would be terrorist organizations who will target innocent civilians.
An even greater percentage of technology is developed to support people doing evil acts. If you provide software or hardware to people doing evil acts (in this case, the Holocaust), you are giving them material aid. The software written to tabulate Jewish residents in Germany was developed for the Nazi party. Technical support and sales continued well after Nazi Germany had invaded Poland.
The fact that a man (or company) enriched himself by doing both bad and good things does not mean that his actions were morally neutral. Most people alive have done both bad and good things.
The same firearm can be user to assault an innocent person and to protect an innocent person (in the hands of said person or law enforcement / army).
There are certain devices, like napalm bombs, that have a narrow and specific purpose of destruction. But the technologies used to make the bomb shells or the napalm are not specific, and have all kinds of peaceful and constructive uses.
Equally, there can be bad, evil-pursuing programs in a particular general purpose language, but this does not taint that language.
One of the few takeaways I remember from my engineering ethics class is one way to think about the ethical implications of a tool: if you have a situation, and you introduce a tool, how do the possible outcomes of the situation change?
For example, if you have two people arguing without weapons, the likely outcomes of the situation aren't strongly weighted towards one or both of the participants being maimed or killed --- it's difficult and requires commitment to really cause horrific damage if you're just hitting each other.
If you introduce a (supposedly value-neutral) tool, like a gun, into the situation, the outcomes become much more strongly weighted towards someone being maimed or killed.
Even though it's always a human using the tool, the tool itself can be seen as having an ethical character.
SS-Sturmbannführer. About the same as a Major. Yes, in the SS.
I may be the only one who giggles when driving past the Werner von Braun Center on Redstone Arsenal. It a very attractive, very new part of Army Missile Command.
No. Personal computers were around for quite a while before IBM decided to enter the market (with a not very good and very expensive machine, I should add).
The PC mantle probably goes to Processor Technology, or maybe someone a little earlier. I'm counting 8-bit chipsets, the date gets pushed back a LOT farther if you're talking PDP-8s or earlier systems (much less commonly available to the public). Or you could take it forward to 1977/78 and give the title to Apple.
Doesn't stop people from trying to have the cake and eat it too. I think I remember reading about a FOSS project on GitHub that put a clause in the license that said something along the lines of "this software is free to use except for purposes we deem immoral in which case you can't use it" (sorry, I can't remember which project it was)
Yes, there's a nice funny joke of this nature in the JSON license: "The Software shall be used for Good, not Evil." [1]
I remember IBM had to obtain a separate license without this clause, to insure themselves against potential nice funny lawsuits claiming the breach of that clause.
I realize the article is very vaguely written, but I don't think the argument is "Haskell has been used for cryptocurrency and that taints it forever."
I read it as "A significant portion of jobs and funding in the Haskell ecosystem come from cryptocurrency organizations, giving them a lot of influence over the future of the language and the community." It's about who controls development of the tool right now, not how the tool might be used, or who has been involved in the past.
Can mathematics be developed for nefarious purposes?
What kind of taint the current influence of the crypto-currency industry could leave on the technical side of the language?
If these guys are toxic within the development community, then, well, we have to somehow handle it — but again, we've seen highly prolific and highly toxic OSS contributors who wielded very different, "more noble" values, in the past. The problem may be the attitude, not the industry affiliation.
Interesting that you brought up mathematics. My shallow view of the haskell community is that they think haskell is/should be as theoretically solid as mathematics. And based on this, my interpretation of the underlying fear in the article is analogous to the Russian government somehow duping all the world's mathematicians to only work on the problem domain of breaking cryptos (and incidentally primarily the type of cryptos used by "enemy" nations) and all the mathematicians dropping everything and going "yeah, that sound super cool let's do that, maybe someone else will pick up my work in combinatorial topography"
Why the Russian government specifically? Plenty of nations do encourage this of (some of) their mathematicians and this practice is also poorly regarded by some.
The analogy I would make is that there are many mathematicians and computer scientists who are unwilling to work for the CIA, but would be thrilled if a university gave them a lot of funding to research the exact same stuff. The math itself is not nefarious, but the community is.
If Haskell became known as "the crypto people's language", many talented computer scientists and engineers would be unwilling to join the community or invest anything in the language. Partly out of a sense of "I don't want to directly help them", and partly just "I don't know those people and I don't really want to go to their conferences, and all my friends in academia are working on <new language x>, what's that all about".
For someone like Stephen Diehl who is deeply embedded in the Haskell community and has invested a lot in it, that would be a personal and professional loss. You're right that the language itself and its technical features would not be nefarious, and would be replicated in 100 other languages.
If you want to use Fortran today, the jobs are essentially all government contracting. If you want to use Haskell today, the jobs are essentially all cryptocurrency. If you don't want to get into government contracting (which is hard to get out of), or if you don't want to do cryptocurrency, you don't get to use Fortran or Haskell.
What happens if the bottom falls out of the cryptocurrency job market? Does Haskell become Scheme, a language used only for language research?
Fortran is used all over for high performance computing, not just in government contracting. Scheme is not only used for language research. A large part of Julia, a pragmatic language for technical computing, is written in Scheme.
> A large part of Julia, a pragmatic language for technical computing, is written in Scheme.
No, not really. The parser is written in FemtoLisp (a Scheme dialect), but that's it. It's not actually doing anything other than the parsing, and there's actually work being done to replace that with a pure julia parser.
That's from 2012 when the language was in version 0.1. We're now in version 1.4 (1.5 launching soon!). At this point, 3.1% of the julia git repo is femptlisp (scheme), but I can assure you that is not being used for any heavy lifting or scientific computations. It's for the parser.
I think it is too much a reductionist thinking to think it’s the users, not the tools. Math and programming languages (and media like tv or videogames) can easily stand on the sidelines, outside of the range of criticism, by making the claim that it is not the medium, but the users.
But I would argue that knowledge about something is not necessarily within that thing, but around that thing as well. A handle is a handle because we have hands that can grasp the handle. No system in this world is closed (perhaps the universe itself but still doubtful), so any knowledge pertaining to a system (or a tool) must be dependent on its context. A handle acquires meaning because of humans. Same with mathematics, programming, or otherwise.
So I would argue that yes, mathematics can be developed for nefarious purposes. Anything can be. Just because something is more pure and seemingly neutral than others does not mean that thing will stay independent of its context. The outlier example is the statistical farcity and bias in scientific experiments. Take it a step further in the direction of objectivity, and you could also notice that bias plays a role in mathematical experiments.
Another interesting question might be: is uranium evil? Or are videogames evil? Are these seemingly neutral things, containers of things, evil? Or are common manifestations of them, or the way that the medium encourages its content (and the way that Haskell and its ecosystem encourage their application) relevant to the judgment of that particular “container”?
I believe a lot of this has to do with seemingly emotion-less quality of abstractions (i.e. containers). In the abstractions-land, the mathematics land, the “pure” land, only the relevant essence of the thing at hand is extracted, thus the compression seemingly occurs losslessly. However, in the compression from the real to the abstract, we have also lost the sensual, the tactile, the emotional. We go from a soul to a 4.5 million deaths. We go from the wet texture of water to H2O. By compressing, we gain, but also we lose.
A bit sidetracked, but I think any medium can appreciate being examined in such a way.
I have re-read the blog post and I can't find what you mention.
The blog post is basically telling us that cryptocurrencies and its leaders are a giant scam and they don't contribute anything of value to society.
Your interpretation is very generous if you ask me. A blog post with that angle would be interesting to read though. It would have more to do with the Haskell ecosystem than this one and it would be good to have that discussion if the cryptocurrency influence on the ecosystem is too big.
Well yes, if the author didn't think cryptocurrencies were a problem, then he probably wouldn't be bothered by crypto currencies influencing the community. There are always going to be large organizations influencing Haskell, like the UK government and Microsoft in the past. I'm guessing this blog post is aimed at people who work with Haskell and know about the crypto companies in the community, but see them like any other organization that funds open source development.
I agree it would be great to have more details about how big this influence is and how it manifests itself.
Cardano was funded with an ICO in Japan, one of the most restrictive country about crypto-currencies. The amount was 64M$ which is not that much for developing a blockchain for 5 years with almost 100 researchers & devs. It's not a scam.
There’s no PoW Haskell chains I’m aware of, they’re POS chains which are far more energy efficient- therefore they reduce energy usage as people move over to them.
Author does not mention energy usage at all. Main problem is that he thinks that crypto is a scam where a lot of people are being tricked. Would you like your language development to be funded by drug cartels or from blood diamonds profits?
Does anyone have any notion of what language decisions might be affected, especially for the worse, by factoring cryptocurrency considerations into it?
I don't think the concern is that the language is going to get worse, but that funding will be concentrated on the few niches that benefit crypto applications, and that people might start saying "I don't really want to work with these people, I'm gonna go do something else."
Recently a casino was built near me, and they repaved a lot of roads and added bike lanes and stuff as part of the construction. The roads are objectively better now, but I don't want to live next to a casino no matter how good the roads are, and I would have preferred if the city government had funded that work instead, since I trust them more and I have some say in how they spend their money. If you were looking for a neighborhood to move into, the first thing you noticed wouldn't be the smooth bike lanes, it would be the huge casino you can see from anywhere in a 3 mile radius.
I think you're misunderstanding the author here. He doesn't argue that people shouldn't use Haskell because it's used in crypto currencies, quite the opposite he seems to love Haskell and want people to use it. His worry is that being associated with crooks will make the Haskell community less attractive.
My point is exactly that: a technology itself can't be tainted by crooks using it.
Have innumerable script kiddies, scammers, doorway site creators, etc, used PHP for doing bad things? Did / do they constitute a significant part of the user community? Yes.
Has PHP been used to create wonderful and world-changing things, like Wikipedia? Does PHP have great, very nicely designed tools that help people develop good things faster, like Laravel? Has the PHP community done a tremendous work to make the language much better, and its stdlib much nicer? Yes.
Crooks using your favorite tool can be a nuisance in the community, but noble-intentioned people can be jerks, too, which has many times been observed. If the community has a problem with its being nice, welcoming, constructive place, it's usually not because of people's business and even political affiliation.
I'll hazard to link to [1] as a supplementary reading on the topic.
Quality of a language's community does affect the experience of using it. PHP is great example to use though - just because people are doing nefarious things doesn't make them unpleasant people.
The difference between this and the PHP case is one of economics. Economic input gives you influence (usually). If people who's approach to life you don't agree with assume influence over the direction of a project, that can be a source of worry.
I'm not sure I think it would be in this case, I think a source of finance is probably going to outweigh it, but I see the logic.
Scott Alexander himself is a borderline crook, together with people like Peter Thiel, tainting people's perception of Silicon Valley and computer tech as a whole. So crooks do harm technology.
"Have innumerable script kiddies, scammers, doorway site creators, etc, used PHP for doing bad things? Did / do they constitute a significant part of the user community? Yes."
Does PHP have a significant taint to the rest of the development community? Yes. Are its "nicely designed tools" recognized and used outside the PHP community? Not that I've seen.
Wikipedia is a web site I use and sometimes poke at. Am I going to go looking at its code? Nope. In fact, there are several tools that I decided not to fix bugs in, but also not to use myself, when I realized they were PHP.
(Aside: have they ever removed, or even deprecated, any of the layers of hideously broken interfaces in the stdlib? Or are they still lying there as a trap for the unwary?)
> My point is exactly that: a technology itself can't be tainted by crooks using it.
Reportedly Lisp was hit pretty hard by its association with AI hype collapse ("The AI Winter"). Of course this doesn't change the merits of a language per se, but it can be a blow to the community and investments around it.
Being associated with broad-brush slander is also a negative. The attack on cryptocurrency broadly was extremely unbalanced, and not even factually correct on some pivotal points. I concede that it a sector rife with opportunism, scammers, and obvious criminal fraud. The core premise that the creation of an economy and system of trade, the codification of contract law in code, is without fundamental value or productive effect is, however, risible, and tightly coupling cryptocurrency with right-wing nuttery is a smear.
Nope. This is a call to the Haskell developer community to stop cooperation with crypto projects, not a general call to stop using Haskell.
I.e., it's a call to the knife makers to stop making their knifes to the specs of mob bosses, not a call to ban knifes.
There are plenty of precedents for this kind of action, e.g. pharmaceutical companies refusing to supply chemicals for executions. (If were already going all life-and-death with the analogies)
This sounds quite reasonable! But if all a knife needs is a sharp blade, there's little to be done in the way of limiting its specific uses.
Also, do cryptocurrency bosses ask the community to shape Haskell in the way suitable for them, e.g. in the core libraries or extensions? Or do they just produce libraries for their own use?
Its more like, would you enjoy your weekend foodball game if you knew that stadium was build by slaves. Theres nothing bad in stadium it self, but the circumstances how it came to be are not acceptable for you.
I consider Stephen to be an extremist when it comes to stuff like this. I follow him on twitter, and he frequently tweets things like:
"More programmers should have the moral fortitude to stand up to the Facebook employees in their communities. This is not a socially acceptable career. Facebook employees have chosen to turn their skills on poisoning the very communities that gave them opportunities to thrive." [0]
"Palantir and Facebook are the largest employers of Rust engineers in the world. Rust Community: What exactly is the point of all of your long codes of conduct and community guidelines if the primary use for your language is the creation of a nightmare surveillance state?" [1]
Well, to be honest, the negative beliefs about Facebook and Palantir are pretty common; I suspect rather a lot of people here would agree that Facebook is "poisoning the very communities that gave them opportunities to thrive" and Palantir is creating "a nightmare surveillance state".
If that is the case, it seems like Stephen would be just a little less hypocritical than most, trying to convince programmers to actually follow through.
A short while back, I mentioned here that Henry Petroski said that the origin of engineering ethics is that engineers shouldn't compete solely on price. That hasn't been the case for a long time, not since some bridge fell down and killed a bunch of people. Now, engineering ethics involves saying "no" when you boss wants you to do something you feel is unethical, illegal, or just plain stupid. Nobody wants to do that. It hurts. But some people think it's a part of professional behavior.
I'm certainly not going to argue against your points here, since I agree with them, by and large. I personally am not a fan of FB or Palantir, and I suspect I dislike the surveillance state more than the average HN reader. My comment was more on his word choice (which I find to be a bit hyperbolic)
twitter isnt the place for reasonable nuanced discussion, if you think facebook et al. are bad then you are supposed to agree with the hyperbolic black and white language.
although this isnt twitter, i sometimes feel like the commenters on HN have spent too much time on twitter. i cant stand opinionated twitter "personalities" that tweet more than they code, and it's been bleeding over to other places as well.
> "What exactly is the point of all of your long codes of conduct and community guidelines if the primary use for your language is the creation of a nightmare surveillance state?"
That is a weird point of view, but unfortunately not all that uncommon (when applied as a general worldview) right now. I think it's worth noting that it's generally anti-open source and free software, as it generally boils down to "you should control this thing you created as a group" as opposed to "we all created this and anyone can use it for anything, but maybe we require you to share changes so it's self perpetuating".
In my personal opinion, it's the worst type of small community social pressure taken to unhealthy extremes brought wholesale to the internet age. That is, poorly rationalized, aimed people that associate with the target rather than the target, and in this case "associate" is so tenuous as include the people that made a better hammer because someone used it to build something objectionable.
When I find this I find myself wondering if these people even really believe this, or they just express this as a strategy to influence people? I don't know enough about Dielh to know what I think is more likely.
> include the people that made a better hammer because someone used it to build something objectionable.
This is exactly why I find his argument absurd. Programming languages are just tools, there is no moral judgement attached to them. You don't get mad at people who manufacture other tools that are used for nefarious purposes.
I find it ironic that he should criticize Plantir and Facebook for creating a surveillance state, yet also crypto for allowing anonymous monetary transactions.
I didn't see in this article any criticism of cryptocurrency for _allowing anonymous monetary transactions_.
The criticisms that are made are:
1) That cryptocurrency's "entire existence is purely predicated on the appeal as a speculative investment first and not on its efficacy to transmit value".
2) That crypto exchanges are "effectively digital gambling sites, in which unsophisticated investors trade unregulated products on markets that are directly manipulated by exchanges with no oversight".
That's very relevant context. I had an impression that he considers Cardano worse than Facebook, while IMO it's mostly harmless project compared to major software employers.
Tools are not inherently morally neutral, and I wish that people would stop repeating this lie.
Slot machines are expressly designed to feed on a person's gambling addiction and to take their money.
Dirty bombs are designed to murder thousands or millions of innocent civilians.
The Nazi gas chambers were designed to slaughter millions of innocent civilians.
Using a programming language benefits that programming language. This is pretty transparently obvious - a larger community means more skilled professionals, more support on stack overflow, more funding for development, and more open-source contributions.
If you strongly believe that the crypto-currency people are doing evil, it makes sense not to aid them. Whether "using Haskell" is worth worrying about is something for individuals to decide on their own. But it's absurd to say that there is no ethical dilemma in incentivizing the development of a tool that is used for evil.
Where in the article did the author give any advice on using or not using Haskell? The article was criticizing the Haskell community, of which the author is a member, not Haskell as a tool.
"The first fully functioning electronic digital computer to be built in the U.S. was ENIAC, constructed at the Moore School of Electrical Engineering, University of Pennsylvania, for the Army Ordnance Department, by J. Presper Eckert and John Mauchly. Completed in 1945, ENIAC was somewhat similar to the earlier Colossus, but considerably larger and more flexible (although far from general-purpose). The primary function for which ENIAC was designed was the calculation of tables used in aiming artillery. ENIAC was not a stored-program computer, and setting it up for a new job involved reconfiguring the machine by means of plugs and switches. For many years, ENIAC was believed to have been the first functioning electronic digital computer, Colossus being unknown to all but a few."[1]
That is not the core argument though? Nobody uses C in order to make their nukes more marketable.
Crypto uses the academic big-brain alpha-nerd reputation of Haskell to make their platform appear more reputable. „Look, written by 100% organic PHD-certified FP programmers, raised on our free-range Monad Farm. Oh btw our whitepapers are Very Legit and definitely not just decorum for an ICO scam.“
These examples are not similar to what is being discussed. Each of those were more commonly used in areas other than the cited ones.
The current discussion is more similar to how Python has become strongly associated with machine learning.
Anyone who cares about the Haskell language and ecosystem should do what they can to avoid it gaining a strong association with questionable crypto or other areas that will negatively impact wider adoption. This will also become a personal association whether warranted or not. This can be through promoting use in those wider areas or as this post does call attention to specific ones that the community should carefully consider rather than participate, because hey Haskell. It's like Haskell's Manhattan Project--choose wisely with eyes open.
I'm not sure you understand what "elephant in the room" means? The fact that Haskell has a GC is not an uncomfortable truth that everyone avoids discussing.
If you have ethical concerns with this, but still love FP, just come over to OCaml. You get 80-90% of what you love about Haskell, and there is an established industry in many sectors. Big players here like Ahrefs, Jane Street, and, of course, Messanger and Facebook.
Tezos uses Ocaml; doesn't the same argument apply? (I don't agree with the argument, personally, and I'm a big fan of Ocaml... I just don't see how it deserves an "ethical concern" exception here.)
I would agree. :) Is that the case with Haskell? The OP only says that "some of the very founding contributors to Haskell itself" are deeply involved in this.
I am ignorant of the primary users of Tezos, but I imagine given it's low value relative to other coins, it isn't the prime target for black market deals, money launderers, and other criminals.
I love Tezos, personally, and think it's one of the more technically superior blockchains, and can see it having a better chance than other stable coins of having broad applicability to more than one or two industries.
You're right. Let's all abandon our frivolous jobs, live in a communal and sing kumbayah around the 100% eco-friendly heat source, congratulate ourselves for abolishing the evils of capitalism, and stand in our bread lines.
339 comments
[ 3.2 ms ] story [ 236 ms ] threadWrong! Haskell is lazy, so it won't bother evaluating arguments which aren't needed. Even if we try forcing the value, we can't be sure that the compiler won't optimise it away! In practice this means that we can't rely on the mere existence of well-typed values as proof of their types; we can be sure that our data dependencies exist (i.e. those values which are forced as part of our computation, which can't be optimised away), but we still won't know that beforehand (i.e. the program may crash or freeze at any point before a particular expression, due to the presence of "bottom" somewhere).
We know Haskell's type system includes bottom as an inhabitant of every type which enables us to shrug and hand-wave away proofs of termination. As long as one understands that consequence doesn't it pass Milner's definition?
I'm happy writing proofs in Lean or Agda but having to avoid or prove termination would be a pain in the rear end for most large programs. And in practice I still think of Haskell's type system as sound. I always thought of "unsound" as programs with terms that are logically inconsistent with respect to the theorems proposed by the types, eg: early version of TypeScript or Java. Put another way, that you could write a proposition in they type system that wasn't satisfied by the program (proof).
It depends on the context, but it's certainly in common use (e.g. see https://stackoverflow.com/questions/21437015/soundness-and-c... although I switched 'positive' and 'negative' in my example: e.g. I treat 'true positive' as 'correct program was accepted', that link treats 'true positive' as 'error message was justified')
> As long as one understands that consequence doesn't it pass Milner's definition?
Milner's definition is usually summarised as "well-typed programs have well-defined behaviour". Haskell does fit this description, although certain optimisations may be unsound (e.g. library-supplied rewrite rules).
To me, the key deficiency is that Haskell can't ignore 'absurd' branches. For example, let's say we have a function like this:
If 'a' and 'b' represent numbers (with singleton values), and 'LessThan a b' describes proofs that a < b (see e.g. http://chriswarbo.net/blog/2014-12-04-Nat_like_types.html for how to encode such proofs), then these two branches form a complete definition of 'foo': the combinations 'foo _ Zero _' and 'foo (Succ x) (Succ Zero) _' can't occur, if we trust the 'LessThan a b' proof. In Agda, Coq, etc. we can either leave out those absurd branches (if the compiler can spot their absurdity), or in more complicated cases we can satisfy the type checker by proving they lead to a contradiction.In Haskell we can't do this: the type of one argument can't rule-out values of another. Hence we must define those branches (or else leave the implicit "unmatched pattern" error, which is a "bottom"), and we need them to return values of type 'Foo' (which may be impossible to construct, unless we return "bottom"). This satisfies Milner's definition, but also goes too far: we're specifying well-defined behaviour for programs which aren't well-typed! In practice, this leads to redundant branches like 'Nothing -> error "Shouldn't happen"', which (a) introduce potential crashes and (b) are so close to being statically avoided!
> having to avoid or prove termination would be a pain in the rear end for most large programs
It can be. If we're being lazy, we can just wrap things in a 'Delay'/'Partial' type (described a little in the above "nat-like types" link, and also at https://news.ycombinator.com/item?id=17472926) or run proofs in Coq's Mtac language ( https://plv.mpi-sws.org/mtac )
> And in practice I still think of Haskell's type system as sound.
Me too. This tends to be called "fast and loose reasoning" https://www.cs.ox.ac.uk/jeremy.gibbons/publications/fast+loo...
For instance in Typescript,
Intuitively you can think of it like, “Yeah sure, I can build you a term of any possible type, as soon as I get back to you.”, but then the function just ghosts you by looping forever. But it hasn’t lied. However, so long as you’re aware of these gotcha’s they don’t come up much in practice which is why viewing types as proofs is still useful. Just don’t stake your career on one.Also, another possible reason is that many crypto people tend to confuse complexity with ingenuity. While the bitcoin whitepaper tries to make a complex topic as simple as possible, a great many crypto companies and people purposely use language that is needlessly convoluted and verbose.
Perhaps they're doing it on purpose to seem smarter?
"the Haskell community itself has simply become a tool to buy legitimacy and pump token values."
Add in "and every dev gets dual monitors" and it would have been 1999.
The community opinion is that Haskell is good for building robust and correctly behaving applications. There's some evidence that very strong type systems can help with this.
Financial software is an area where people typically want deep correctness guarantees, another good example area being cryptography.
Between these I think it's probably a good thing that crypto-currency applications and applications like exchanges are being built with "safe" technology like Haskell, rather than technologies that provide much less safety (many Ethereum hacks have boiled down to Solidity contracts being relatively loosely typed).
This is however not an opinion on what crypto is doing to the Haskell ecosystem. I don't know about that.
Seriously, I don't think the readership of HN is in any disagreement about how new cryptocurrencies are "short long con" jobs, but the author teases that the influx of this money is toxic to the Haskell community because... right wing people?
I also wouldn't say the problem is to do with "right wing people". Nobody's born with a political affiliation: we learn and digest information and experience all through our lives, swinging towards and away from different values at different times. This can especially depend on our social circles, our information-bubbles, what benefits us personally, etc.
The crypto-bubble tends to discourage regulation, accountability, etc. which makes it attractive to right-wing politics, whether as a libertarian free-for-all; or money-laundering for the gentry; or whatever. When this sector has an outsized influence on a particular community, the political gradient will be tilted accordingly, and bias people's random walks to the right.
Haskell may be great at solving the technical problems with crypto, but that doesn't solve its ethical or philosophical problems. Yet, as the old saying goes, "It is difficult to get a man to understand something, when his salary depends on his not understanding it".
There are a lot of domain specific tools that are used for specific tasks where the main software is taking care of architecture, high level decisions and resources. Shaders are one example of this. Trying to write non trivial software like this is problematic because the structure you are using is so disconnected from what the software needs to do.
I'm assuming you are referring to Haskell? It's a general purpose programming language so of course it handles state, branching, etc...
The above code labels nodes of a multiway tree using a counter. State and branching.This looks like it is lazily evaluating parts of a tree, which means that you aren't controlling that state, you are hoping that everything works out when you query it with regards to resources, caching, memory layout, memory freeing, etc.
In a non-trivial program that either will need to optimize memory and cpu usage to scale or be careful about how things are structured to maintain interactivity, something like this is likely to be a big problem if that tree gets big.
It's like a double-whammy.
"For a while it has been a public secret the Haskell ecosystem has become increasingly entangled with an unsavoury variety in the cryptocurrency sector as one of primary mechanisms for funding development."
I mean, what exactly is this "unsavoury variety in the cryptocurrency sector" and how is Haskell tied to it?
Is there some kind of (un-)official sponsorship from (supposedly) shady actors?
https://blog.habets.se/2017/11/Why-bitcoin-is-terrible.html
It's about bitcoin, and not everything applies to other cryptocurrencies, but most of these arguments do apply.
And those would be? I code in Haskell every day and I have no idea what he’s talking about.
I feel like this 'elephant in the room' article doesn't tell me what the elephant is, why it's in the room, or why people don't want it to be in the room.
> Painfully, some of the very founding contributors to Haskell itself are the ones deepest involved in this ring.
> In this new era the Haskell community itself has simply become a tool to buy legitimacy and pump token values. The reputation of our community is now used to defraud the public and convince non-technical users of the soundness of an utterly unsound investment.
> I have avoided names ... however core Haskell companies such as Well-Typed, Tweag and FP Complete have been deeply complicit in building up this crypto industry for years now.
The article isn't easy to skim, and I think that's the point. The author wants to focus more on why cryptocurrency is a scam, and less on who's guilty.
I think it's a shame because if you're going to accuse someone of something, at least make your accusation clear and direct so they can respond to it specifically.
EDIT: didn't want to imply that Cardano is a shady company.
His concern is that if Haskell gets the reputation of being beholden to these interests it will make the Haskell ecosystem undesirable to legitimate actors.
I have difficulty to understand how it is an issue that a programming language is used for a niche that has bad reputation.
This is about Haskell-the-ecosystem, not Haskell-the-technology. In that way I think it's a valuable contribution.
Stephen is a well known and respected part of the Haskell ecosystem, and has written many popular blog posts about the language and ecosystem.
Pact (a not complete Turing language for blockchain) is also interesting Haskell code to read and to learn from.
The author mentions at least three Haskell-related companies, such as FP Complete, and says he wants to avoid naming specific people for the time being.
That's why the author rants about crypto and not about Haskell itself.
I've written enough comments on HN to know that if I don't word it this way, someone will inevitably start arguing with me as if the assertion was mine.
And that would seem to be exactly what Stephen is complaining about.
Namely Well-typed, FPComplete and Tweag.io who are all consultancy companies working on the Cardano project
is an example.
An article saying "this sector of our community is bad and scamming retail investors" is already burning MAD BRIDGES and putting an enormous target on your back.
"Bob Smith and Joe Brown, specifically, are scamming retail investors" is going even a little beyond that. It's just not necessary.
EDIT: For the writer of the article, that is. We in the peanut gallery obviously want all the details, which is why a little detective work is often required in these cases.
The question in all of these cases is what specific bad influences the money can have on the software ecosystem and how community standards and governance can mitigate them. I don't really see a lot of answers in this article besides ill-defined ethical compromise of developers. I skimmed the book he mentioned (The Politics of Bitcoin: Software as Right-Wing Extremism) which sounds interesting but it doesn't really make its own case very well: half of the "extremist" citations are from anonymous online commenters and you can't go 2 paragraphs without straight up name-calling and ham-fisted guilt by association.
ETA, and here's the discussion thread on the original post: https://www.reddit.com/r/rust/comments/dpakxq/rust_2020_more...
I don't mention them to encourage people to attack these people, but it comes off as a bit selective to focus on the people using your language for cryptocurrency when it's also used heavily by traditional fintech companies, as well as defense contractors, and even for large retail chains (Target uses it for data analysis). Facebook also uses it for their spam detection system. Why are all of these uses fine and cryptocurrency is not? And if they also aren't fine, then how should we solve this problem? Start non-profits/charities that specifically use Haskell, and somehow make those the majority of the available jobs that use it? That seems pretty infeasible unless you want to solve the broader problem of these jobs existing in the first place.
[1] https://www.reddit.com/r/haskell/comments/6p2x0p/list_of_com... [2] https://en.wikipedia.org/wiki/Lennart_Augustsson, https://www.linkedin.com/in/ekmett/, https://stackoverflow.com/users/83805/don-stewart
> Normally these frauds are recognized for what they are quite quickly and the courts and regulatory bodies can clean up the mess and rectify the damages to those who have been misled
That just comes off as total BS to me. How many regular people were awarded damages after the 2008 meltdown, which was due to massive fraud in the mortgage industry?
That seems true. The system relevant banks got their bailout. Regular people OTOHS are not system relevant. So everything's fine. /s
Capitalism for the poor, socialism for those close to the core developers.
Only if you are very young.
Not sure if this counts, but IIRC in one of the talks, Edward Kmett was describing row-polymorphic language they implemented in Scala to be used internally at S&P (or wherever he was working).
This list is misleading. Sure, there are probably a few people at any of these companies dabbling with Haskell. But the only major financial company where it is mainstream is StanChart.
Also, FTA, Isle of Man, not Mann. How seriously can we take a rant about a place that doesn’t even know how to spell it (source: am in Wales, that Isle is just off our coast).
Fun fact: when Scots say “och aye the noo”, noo is the Manx word for “saint”. English people think noo is “news”. It gives a totally different meaning.
Otherwise the foundations will rot while the establishment thrive and the creative driving forces will find new "cleaner" playgrounds within which to express themselves.
*not talking about absolutist "this must have equal outcome for everyone" style morals but rather the harder kind that deals with the long term societal impact of a given thing. And in this context I totally believe the discussion brought up by Stephen Diehl is exceptionally important!
Obviously if you release something with an open source or FOSS license, then anyone is free to use it though. I'm against any kind of morality clause for free software.
> Obviously if you release something with an open source or FOSS license, then anyone is free to use it though. I'm against any kind of morality clause for free software.
Absolutely, it's the organisation /& community that needs to have the moral compass in proper order. In my optics it is about fostering the right sort of positive culture for use of a given tech rather than try to enforce it via totalitarian/legal means - the latter is bound to fail.
That's not a technical term nor a "term of art" in economics. Google Scholar returns results from management and accounting journals, as well as some pseudo-economics ("heterodox") pamphlets.
In general something is pseudo-scientific if it operates outside of the formalisms or tools of that particular discipline, especially if it pretends that it does not.
Instead of making formal logical argumentation based on deductive-axiomatic models the message, we are better served by economists who more than anything else try to contribute to solving real problems. "
https://larspsyll.wordpress.com/2020/07/28/why-economics-is-...
The purpose of science is the generation of knowledge, it's to have a formal understanding of a system and essentially a language and methodologies to make inquiries.
Economics as a science does solve real world problems, but it's not the dominant purpose of a science as such. It's the task of problem solvers to take scientific results and then turn those say, into actionable policies. Scientific work does not exist for the purpose of solving 'real problems' in the sense of being subjected to that goal. Scientists are not engineers. When Computer Scientists talk about Big-O complexity they often do so in a way that's not really applicable to real-world software development, but that isn't their job.
That said economic theory actually does very much factor sucessfully into decision making. Be that macro-economic policy, central banking, the design of markets and incentives, and so on.
I'm glad I took econ classes, but it is not a very practical discipline.
And, yes, I think it's a stretch to call it a science when you can't do meaningful experiments.
I object to calling geology a science for the same reason.
There are good reasons to be critical of psychiatry, but it's a red flag if someone tries to pass palmistry off as psychiatry.
The problem here is that economics does have some prestige still, which is why predatory political activists try to pass their "heterodox" writings as belonging to it.
I don't follow the crypto space, but it seems like we might actually want to know which companies are being accused of being shady.
I'm guessing it's the shady exchanges. There are several exchanges that have been around for a few years now, do you take issue with all of them or are you thinking of a specific one?
Is there really no discussion about software as a dual use technology?
> In this new era the Haskell community itself has simply become a tool to buy legitimacy and pump token values. The reputation of our community is now used to defraud the public and convince non-technical users of the soundness of an utterly unsound investment.
So when people realize that 50% of crypto entrepreneurs are scammers and the other 50% are deluded, and the bubble pops, there is a serious concern that Haskell will be publicly understood as a "cryptocurrency" language and will suffer a reputational hit.
Stephen Diehl CTO and Founder at Adjoint
I feel our author may not be entirely impartial here...
so don't agree with the statement or the implication that it's relevant, but I think that's what the person above meant.
Having said that, I doubt the impact of Haskell's reputation on cryptocurrency users, technical or otherwise. The myth that Haskell results in more correct programs might still be alive in portions of the Haskell community despite the failure to support the claim with any evidence, but few outside that community have ever heard of that myth, let alone believe it.
Of course, comparisons such as that are relatively common and has been made many times for the free software movement as well for example.
However, his criticisms of cryptocurrencies are quite off IMO.
> However cryptocurrency companies do not produce anything, instead they offer synthetic financial products which are marketing to the generic public as investments
MakerDAO is basically a decentralized lending facility (i.e. "banks") and Compound is a decentralized money market.
These are actual financial products, they serve real purposes that can also be found in the legacy financial system.
Cryptocurrency engineers are building an alternative, decentralized financial system that cuts out middle men and allows anyone access to financial services (such as accepting money from anywhere in the world, or being able to lend out your capital) that were previously only available to select people.
In one month, July 2020, the Federal Reserve printed more money than the first 200 years of the existence of the USA.
There are serious problems with the legacy financial system, and it's good that people are building systems in parallel.
If the Federal Reserve can't be trusted with USD, surely DAI isn't reliable either.
I have no opinion on Cardano,but obviously something from the ML family is useful if you want to build smart contracts.
Fortran has been extensively used for nuclear weapons development. Let's stay away from Fortran!
C was and is widely used in weapons control systems. Let's stop using C!
Computers themselves were initially designed for artillery fire control, with an explicit intention of killing people. Let's not touch the technology with such a foul pedigree.
This can be continued ad nauseam, until the whole of the civilization is marked as indecent. Nearly every scientific discovery and techology achievement has been used, or attempted to be used, for some purpose one might find objectionable.
Instead we could realize that tools are outside morals. A knife could be used to cut bread or to cut throats, and it's not the knife's decision, but that of its user. The very same thing applies to everything, from nuclear fission to functional programming.
If you know what's the right, virtuous thing to do in the world, do not hesitate, go and do it. Use the most fitting tool for that job. Do not mind if that tool is used for whatever other, less noble purpose, it's not the tool's fault.
It also invented PC.
If you're trying to say that IBM was the first to officially name a personal computer "PC", I'll give you that one.
Most other makers, from Apple to Amiga, vigorously protected their small private markets where they dominated. The original Macintosh has explicitly removed all the expansion capabilities that e.g. Apple II had.
Rushing to market led to the decision to license the OS from Bill Gates instead of buying the OS or writing it in-house.
An example of a false assumption would be believing that holding the copyright on the BIOS would be enough prevent clones.
Werner von Braun has lead the US space program to launching humans to LEO, and then to the Moon.
Again, technology is morally oblivious. A sword that only serves a noble aim is strictly the stuff of fairy tales, and is not implementable in the real world (no, not even with an AGI, since humans are a reasonably good approximation of an AGI).
Some technology has only one purpose, and is used only for immoral acts. An example of this would be any device invented for torture.
While those examples are uncommon, more technology is built expressly for evil acts, even if it has the capacity for good. If you are distributing plans and technology to make "dirty bombs" - devices intended to disperse lethal amounts of radiation - it's impossible for a reasonable person to believe that it is not intended to murder people via radiation. Furthermore, in the context of today's world, you know that the most likely users of such a device would be terrorist organizations who will target innocent civilians.
An even greater percentage of technology is developed to support people doing evil acts. If you provide software or hardware to people doing evil acts (in this case, the Holocaust), you are giving them material aid. The software written to tabulate Jewish residents in Germany was developed for the Nazi party. Technical support and sales continued well after Nazi Germany had invaded Poland.
The fact that a man (or company) enriched himself by doing both bad and good things does not mean that his actions were morally neutral. Most people alive have done both bad and good things.
There are certain devices, like napalm bombs, that have a narrow and specific purpose of destruction. But the technologies used to make the bomb shells or the napalm are not specific, and have all kinds of peaceful and constructive uses.
Equally, there can be bad, evil-pursuing programs in a particular general purpose language, but this does not taint that language.
For example, if you have two people arguing without weapons, the likely outcomes of the situation aren't strongly weighted towards one or both of the participants being maimed or killed --- it's difficult and requires commitment to really cause horrific damage if you're just hitting each other.
If you introduce a (supposedly value-neutral) tool, like a gun, into the situation, the outcomes become much more strongly weighted towards someone being maimed or killed.
Even though it's always a human using the tool, the tool itself can be seen as having an ethical character.
I may be the only one who giggles when driving past the Werner von Braun Center on Redstone Arsenal. It a very attractive, very new part of Army Missile Command.
https://en.wikipedia.org/wiki/IBM_and_the_Holocaust#Summary
No. Personal computers were around for quite a while before IBM decided to enter the market (with a not very good and very expensive machine, I should add).
The PC mantle probably goes to Processor Technology, or maybe someone a little earlier. I'm counting 8-bit chipsets, the date gets pushed back a LOT farther if you're talking PDP-8s or earlier systems (much less commonly available to the public). Or you could take it forward to 1977/78 and give the title to Apple.
But it's definitely not IBM.
I remember IBM had to obtain a separate license without this clause, to insure themselves against potential nice funny lawsuits claiming the breach of that clause.
[1]: http://www.json.org/license.html
https://github.com/lerna/lerna/pull/1616
https://github.com/jamiebuilds/license
Its proposed license was an extension to MIT which made using it theft for a select list of companies that supported ICE.
I read it as "A significant portion of jobs and funding in the Haskell ecosystem come from cryptocurrency organizations, giving them a lot of influence over the future of the language and the community." It's about who controls development of the tool right now, not how the tool might be used, or who has been involved in the past.
What kind of taint the current influence of the crypto-currency industry could leave on the technical side of the language?
If these guys are toxic within the development community, then, well, we have to somehow handle it — but again, we've seen highly prolific and highly toxic OSS contributors who wielded very different, "more noble" values, in the past. The problem may be the attitude, not the industry affiliation.
If Haskell became known as "the crypto people's language", many talented computer scientists and engineers would be unwilling to join the community or invest anything in the language. Partly out of a sense of "I don't want to directly help them", and partly just "I don't know those people and I don't really want to go to their conferences, and all my friends in academia are working on <new language x>, what's that all about".
For someone like Stephen Diehl who is deeply embedded in the Haskell community and has invested a lot in it, that would be a personal and professional loss. You're right that the language itself and its technical features would not be nefarious, and would be replicated in 100 other languages.
What happens if the bottom falls out of the cryptocurrency job market? Does Haskell become Scheme, a language used only for language research?
No, not really. The parser is written in FemtoLisp (a Scheme dialect), but that's it. It's not actually doing anything other than the parsing, and there's actually work being done to replace that with a pure julia parser.
“Our implementation of Julia consists of 11000 lines of C, 4000 lines of C++, and 3500 lines of Scheme”.
[1] https://julialang.org/blog/2012/08/design-and-implementation...
This is not true, by the way.
But I would argue that knowledge about something is not necessarily within that thing, but around that thing as well. A handle is a handle because we have hands that can grasp the handle. No system in this world is closed (perhaps the universe itself but still doubtful), so any knowledge pertaining to a system (or a tool) must be dependent on its context. A handle acquires meaning because of humans. Same with mathematics, programming, or otherwise.
So I would argue that yes, mathematics can be developed for nefarious purposes. Anything can be. Just because something is more pure and seemingly neutral than others does not mean that thing will stay independent of its context. The outlier example is the statistical farcity and bias in scientific experiments. Take it a step further in the direction of objectivity, and you could also notice that bias plays a role in mathematical experiments.
Another interesting question might be: is uranium evil? Or are videogames evil? Are these seemingly neutral things, containers of things, evil? Or are common manifestations of them, or the way that the medium encourages its content (and the way that Haskell and its ecosystem encourage their application) relevant to the judgment of that particular “container”?
I believe a lot of this has to do with seemingly emotion-less quality of abstractions (i.e. containers). In the abstractions-land, the mathematics land, the “pure” land, only the relevant essence of the thing at hand is extracted, thus the compression seemingly occurs losslessly. However, in the compression from the real to the abstract, we have also lost the sensual, the tactile, the emotional. We go from a soul to a 4.5 million deaths. We go from the wet texture of water to H2O. By compressing, we gain, but also we lose.
A bit sidetracked, but I think any medium can appreciate being examined in such a way.
I'll answer that when you give me a definition of the term.
Might want to start with defining "game" and then pare it down.
My point is, you can't say something is evil until you have a coherent definition of what that thing is.
The blog post is basically telling us that cryptocurrencies and its leaders are a giant scam and they don't contribute anything of value to society.
Your interpretation is very generous if you ask me. A blog post with that angle would be interesting to read though. It would have more to do with the Haskell ecosystem than this one and it would be good to have that discussion if the cryptocurrency influence on the ecosystem is too big.
I agree it would be great to have more details about how big this influence is and how it manifests itself.
They appear to be funding Haskell development.
Recently a casino was built near me, and they repaved a lot of roads and added bike lanes and stuff as part of the construction. The roads are objectively better now, but I don't want to live next to a casino no matter how good the roads are, and I would have preferred if the city government had funded that work instead, since I trust them more and I have some say in how they spend their money. If you were looking for a neighborhood to move into, the first thing you noticed wouldn't be the smooth bike lanes, it would be the huge casino you can see from anywhere in a 3 mile radius.
Have innumerable script kiddies, scammers, doorway site creators, etc, used PHP for doing bad things? Did / do they constitute a significant part of the user community? Yes.
Has PHP been used to create wonderful and world-changing things, like Wikipedia? Does PHP have great, very nicely designed tools that help people develop good things faster, like Laravel? Has the PHP community done a tremendous work to make the language much better, and its stdlib much nicer? Yes.
Crooks using your favorite tool can be a nuisance in the community, but noble-intentioned people can be jerks, too, which has many times been observed. If the community has a problem with its being nice, welcoming, constructive place, it's usually not because of people's business and even political affiliation.
I'll hazard to link to [1] as a supplementary reading on the topic.
[1]: https://www.lesswrong.com/posts/GLMFmFvXGyAcG25ni/i-can-tole... (It's a copy; unfortunately the author has taken his whole huge blog offline.)
The difference between this and the PHP case is one of economics. Economic input gives you influence (usually). If people who's approach to life you don't agree with assume influence over the direction of a project, that can be a source of worry.
I'm not sure I think it would be in this case, I think a source of finance is probably going to outweigh it, but I see the logic.
Look again
https://slatestarcodex.com/2014/09/30/i-can-tolerate-anythin...
Does PHP have a significant taint to the rest of the development community? Yes. Are its "nicely designed tools" recognized and used outside the PHP community? Not that I've seen.
Wikipedia is a web site I use and sometimes poke at. Am I going to go looking at its code? Nope. In fact, there are several tools that I decided not to fix bugs in, but also not to use myself, when I realized they were PHP.
(Aside: have they ever removed, or even deprecated, any of the layers of hideously broken interfaces in the stdlib? Or are they still lying there as a trap for the unwary?)
Dang it, how come I didn't see this before PG's essay on conformists and individualists?
Reportedly Lisp was hit pretty hard by its association with AI hype collapse ("The AI Winter"). Of course this doesn't change the merits of a language per se, but it can be a blow to the community and investments around it.
I.e., it's a call to the knife makers to stop making their knifes to the specs of mob bosses, not a call to ban knifes.
There are plenty of precedents for this kind of action, e.g. pharmaceutical companies refusing to supply chemicals for executions. (If were already going all life-and-death with the analogies)
Also, do cryptocurrency bosses ask the community to shape Haskell in the way suitable for them, e.g. in the core libraries or extensions? Or do they just produce libraries for their own use?
Let's definitely stop using C in weapons control systems.
"More programmers should have the moral fortitude to stand up to the Facebook employees in their communities. This is not a socially acceptable career. Facebook employees have chosen to turn their skills on poisoning the very communities that gave them opportunities to thrive." [0]
"Palantir and Facebook are the largest employers of Rust engineers in the world. Rust Community: What exactly is the point of all of your long codes of conduct and community guidelines if the primary use for your language is the creation of a nightmare surveillance state?" [1]
[0]: https://twitter.com/smdiehl/status/1288532583530323970
[1]: https://twitter.com/smdiehl/status/1288106450707873794
If that is the case, it seems like Stephen would be just a little less hypocritical than most, trying to convince programmers to actually follow through.
A short while back, I mentioned here that Henry Petroski said that the origin of engineering ethics is that engineers shouldn't compete solely on price. That hasn't been the case for a long time, not since some bridge fell down and killed a bunch of people. Now, engineering ethics involves saying "no" when you boss wants you to do something you feel is unethical, illegal, or just plain stupid. Nobody wants to do that. It hurts. But some people think it's a part of professional behavior.
although this isnt twitter, i sometimes feel like the commenters on HN have spent too much time on twitter. i cant stand opinionated twitter "personalities" that tweet more than they code, and it's been bleeding over to other places as well.
That is a weird point of view, but unfortunately not all that uncommon (when applied as a general worldview) right now. I think it's worth noting that it's generally anti-open source and free software, as it generally boils down to "you should control this thing you created as a group" as opposed to "we all created this and anyone can use it for anything, but maybe we require you to share changes so it's self perpetuating".
In my personal opinion, it's the worst type of small community social pressure taken to unhealthy extremes brought wholesale to the internet age. That is, poorly rationalized, aimed people that associate with the target rather than the target, and in this case "associate" is so tenuous as include the people that made a better hammer because someone used it to build something objectionable.
When I find this I find myself wondering if these people even really believe this, or they just express this as a strategy to influence people? I don't know enough about Dielh to know what I think is more likely.
This is exactly why I find his argument absurd. Programming languages are just tools, there is no moral judgement attached to them. You don't get mad at people who manufacture other tools that are used for nefarious purposes.
The criticisms that are made are:
1) That cryptocurrency's "entire existence is purely predicated on the appeal as a speculative investment first and not on its efficacy to transmit value".
2) That crypto exchanges are "effectively digital gambling sites, in which unsophisticated investors trade unregulated products on markets that are directly manipulated by exchanges with no oversight".
The author's point is the opposite. He's calling out prominent members of the Haskell community for running cryptocurrency schemes.
Slot machines are expressly designed to feed on a person's gambling addiction and to take their money. Dirty bombs are designed to murder thousands or millions of innocent civilians. The Nazi gas chambers were designed to slaughter millions of innocent civilians.
Using a programming language benefits that programming language. This is pretty transparently obvious - a larger community means more skilled professionals, more support on stack overflow, more funding for development, and more open-source contributions.
If you strongly believe that the crypto-currency people are doing evil, it makes sense not to aid them. Whether "using Haskell" is worth worrying about is something for individuals to decide on their own. But it's absurd to say that there is no ethical dilemma in incentivizing the development of a tool that is used for evil.
[1] https://plato.stanford.edu/entries/computing-history/
What about the global situation? Is it the same?
[1] https://en.wikipedia.org/wiki/Rangekeeper
Crypto uses the academic big-brain alpha-nerd reputation of Haskell to make their platform appear more reputable. „Look, written by 100% organic PHD-certified FP programmers, raised on our free-range Monad Farm. Oh btw our whitepapers are Very Legit and definitely not just decorum for an ICO scam.“
The current discussion is more similar to how Python has become strongly associated with machine learning.
Anyone who cares about the Haskell language and ecosystem should do what they can to avoid it gaining a strong association with questionable crypto or other areas that will negatively impact wider adoption. This will also become a personal association whether warranted or not. This can be through promoting use in those wider areas or as this post does call attention to specific ones that the community should carefully consider rather than participate, because hey Haskell. It's like Haskell's Manhattan Project--choose wisely with eyes open.
I love Tezos, personally, and think it's one of the more technically superior blockchains, and can see it having a better chance than other stable coins of having broad applicability to more than one or two industries.
(i know Jane Street isn't actually a hedge fund, but how many people here know what a prop shop is?)