Live data from Hacker News

Fighting spam with Haskell at Meta (2015)

engineering.fb.com

31–40 of 85 posts

Re: Fighting spam with Haskell at Meta (2015)

#31

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…

> Way too many Haskell projects are about Haskell itself, so this was really fascinating to see.

It seems like Haskell is a good match for the requirements in this case, too. Implicit concurrency and enough robustness from the type system that new filters can be deployed directly to production plays to the strengths of the language. It doesn't feel like the usual solution in search of a problem.

Re: Fighting spam with Haskell at Meta (2015)

#32
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…

It's one of many reasons I love Go.

The amount of arbitrary glue, configuration and "cool things" I need to learn-and-forget for every new project is an order of magnitude less than any other language I've used in anger.

Re: Fighting spam with Haskell at Meta (2015)

#33
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…

It's one of many reasons I love Go. The amount of arbitrary glue, configuration and "cool things" I need to learn-and-forget for every new project is an order of magnitude less than any other language I've used in anger.

I don't know that I really exactly like working with Go but I do have to hand it to them, they did nail this aspect of it.

Re: Fighting spam with Haskell at Meta (2015)

#34

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).

That's interesting, because Haskell is the only language in which I can easily read code written by others (and in "others" I include "myself three years ago").

Re: Fighting spam with Haskell at Meta (2015)

#35
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…

It's one of many reasons I love Go. The amount of arbitrary glue, configuration and "cool things" I need to learn-and-forget for every new project is an order of magnitude less than any other language I've used in anger.

I don't see how that is language specific. I think it's entirely based on the project size.

Pick up docker or kubernetes and you'll have to learn plenty of stuff. Pick up ory/hydra to do auth in go, same thing.

Check out the age (from FiloSottile) or the rage (Rust port) codebase and they require similar level of understanding.

Re: Fighting spam with Haskell at Meta (2015)

#36
post #34

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).

That's interesting, because Haskell is the only language in which I can easily read code written by others (and in "others" I include "myself three years ago").

Same! Well, Rust fits the bill too.

Generally, any language with a type system advanced enough.

Re: Fighting spam with Haskell at Meta (2015)

#37
post #9
post #6

Earlier quoted context omitted.

I think one of the most promising pitches for rust adoption is that it borrowed as much as possible from Haskell/ML without treading into the territory where it becomes "scary" for broadly-C-family language monoglots. A C++ or even Java programmer can look at Rust and think to themselves "this text has a comfortably familiar shape".

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

I agree, but most programmers unfortunately are not good, so this is the reality we must deal with

Re: Fighting spam with Haskell at Meta (2015)

#38
post #11

Earlier quoted context omitted.

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.

You’re on hacker news so Occam’s razor would pick the simplest explanation is which the latter

Re: Fighting spam with Haskell at Meta (2015)

#39
post #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…

Maybe I'm completely wrong (as an outside than never touched anything ML other than OCaml), but Idris 2 does seem like a "clean Haskell" minus the laziness.

Re: Fighting spam with Haskell at Meta (2015)

#40

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…

The edge that functional languages give you is expressiveness, the more complexity you have in the business logic, the more that compounds.
Post reply on HN