Live data from Hacker News

Fighting spam with Haskell at Meta (2015)

engineering.fb.com

21–30 of 85 posts

Re: Fighting spam with Haskell at Meta (2015)

#21

Earlier quoted context omitted.

Every time I try to work on someone's Haskell code, I'm confronted with a slew of custom infix operators, and I find my previous experience is completely irrelevant as I learn the new DSL the authors chose to write (which more often than not also involves flexing their brain as hard as they can).

I'm sure it is super cool and immediately comprehensible for an independent project. I'm actually really fascinated by programming languages like APL that take it even further, I'd like to try some of those out but I don't have a great fit for a project to use with them. But all I can think of when I see custom operators professionally is how much of a nightmare it would be the second one has to onboard a junior deve…

It's super cool, but I'm not sure immediately comprehensible. I can't even read my own Haskell code after a few months away from it. You end up using other people's infix operators from the libraries and it's easy to forget what they are.

Re: Fighting spam with Haskell at Meta (2015)

#22

I worked on this project for a week during the FB team matching process. I had previous Haskell experience, but what struck me was how irrelevant that was. To their immense credit, they had managed to use Haskell to write an entirely entreprise focused, "boring" business rule backend serving millions of QPS, and people who were not Haskell fans could easily use its sensible DSL to accomplish their goals. Way too many…

Every time I try to work on someone's Haskell code, I'm confronted with a slew of custom infix operators, and I find my previous experience is completely irrelevant as I learn the new DSL the authors chose to write (which more often than not also involves flexing their brain as hard as they can).

But that's like half of computing.. every new tool the world inflicts on you, configured in Jojo's Awesome Configuration Language, with some arbitrary made up grammar punctuated by Tourette outbursts of special character line-noise.

That, or YAML, then a tool to template and generate the YAML, and then a stack of tools wrapped around that, ad infinitum.

A little learning is the cost of not having to write the thing yourself. On the other hand, hell is the non-composable tower of babel that is computing. Total employment by exponentially compounding incidental complexity.

Re: Fighting spam with Haskell at Meta (2015)

#23
post #22

Earlier quoted context omitted.

Every time I try to work on someone's Haskell code, I'm confronted with a slew of custom infix operators, and I find my previous experience is completely irrelevant as I learn the new DSL the authors chose to write (which more often than not also involves flexing their brain as hard as they can).

But that's like half of computing.. every new tool the world inflicts on you, configured in Jojo's Awesome Configuration Language, with some arbitrary made up grammar punctuated by Tourette outbursts of special character line-noise. That, or YAML, then a tool to template and generate the YAML, and then a stack of tools wrapped around that, ad infinitum. A little learning is the cost of not having to write the thing y…

I think it's a sliding scale and Haskell is definitely on the extreme end.

Re: Fighting spam with Haskell at Meta (2015)

#24
post #9

Earlier quoted context omitted.

You aren't hiring good programmers if they are intimidated by syntax.

I've encountered many otherwise solid engineers who are intimidated and/or put off by Nix (the language).

Nix is really weird and ugly tbf.

It’s great at being a declarative configuration language though…. Even if it’s ugly.

Re: Fighting spam with Haskell at Meta (2015)

#25
post #22

Earlier quoted context omitted.

But that's like half of computing.. every new tool the world inflicts on you, configured in Jojo's Awesome Configuration Language, with some arbitrary made up grammar punctuated by Tourette outbursts of special character line-noise. That, or YAML, then a tool to template and generate the YAML, and then a stack of tools wrapped around that, ad infinitum. A little learning is the cost of not having to write the thing y…

I think it's a sliding scale and Haskell is definitely on the extreme end.

The fact that people do it in the ordinary language, so you can click through to the operator definition and see immediately what it does, makes it a lot less taxing IMO. Even if the code is quite complex, figuring out what an actual function does is 10x easier than doing the same with a magic annotation, which is what you have to do in that situation in most other languages.

Re: Fighting spam with Haskell at Meta (2015)

#26
post #16

If this article was about "fighting spam with C++ at Meta", would it make the front page? I doubt it. I learnt Haskell thinking that it would give me super-powers no other language has, but in the end my impression of the language was "meh". I like the syntax a lot, and I have adopted the monadic approach to error handling when I do Python, but Haskell itself doesn't give me an edge over other programmers. Haskellers…

"If this article was about "fighting spam with C++ at Meta" That would not be news, Haskell is famous for being an academic language without many real world applications. C++ is famous for being practical.

I do think it's interesting how I've been hearing about how much people love Haskell and how elegant it is since middle school. Now I'm 10 years out of university and it's still notable when something is actually written in Haskell. That's got to tell you something about the language, the tooling, the docs, the community, or maybe some combination of those things.

Re: Fighting spam with Haskell at Meta (2015)

#27

I worked on this project for a week during the FB team matching process. I had previous Haskell experience, but what struck me was how irrelevant that was. To their immense credit, they had managed to use Haskell to write an entirely entreprise focused, "boring" business rule backend serving millions of QPS, and people who were not Haskell fans could easily use its sensible DSL to accomplish their goals. Way too many…

Haskell could be a great practical language if some constraints were introduced, e.g. limiting the language extensions used. https://www.simplehaskell.org attempted to do this and, currently, https://neohaskell.org is going in the same direction. After all, Haskell '98 is not that hard.

Personally, I think Haskell, or something like Haskell, is going to be reasonably popular in the near future. Functional programming and an expressive type system are great for ML-powered synthesis. You provide the type signature, and the machine fills in the function body. Furthermore, with dependent or refinement types, the solution can be verified to be correct.

Re: Fighting spam with Haskell at Meta (2015)

#28
post #9

Earlier quoted context omitted.

You aren't hiring good programmers if they are intimidated by syntax.

The differences between Haskell/OCaml and C-family languages are much more significant than syntax. Rust brings a lot (but not all) of the richness of these languages while staying within a broadly imperative paradigm.

You do not need too much good programmers.

Re: Fighting spam with Haskell at Meta (2015)

#29
post #11

Earlier quoted context omitted.

The differences between Haskell/OCaml and C-family languages are much more significant than syntax. Rust brings a lot (but not all) of the richness of these languages while staying within a broadly imperative paradigm.

That's neither my point nor OP's point. The soothing feeling of "this text has a comfortably familiar shape" is entirely about syntax, and indeed is only a soothing feeling because such programmer has not seen anything beyond it and is unwilling to get outside that comfort zone. I do not hire anything who does not get outside of their comfort zone or who is intimated by syntax they haven't seen. If a programmer rejec…

Do you put any weight on any factors beside the technical capabilities of the tools you're working with? Like, say, how easy they are to pick up or use, etc.?

The way your comment reads, it's like you're saying you'll never hire someone who rejects speaking to you in Esperanto unless they offer a good critique of its grammar.

Post reply on HN