8 ms·
Fighting spam with Haskell at Meta (2015)
- 8f2ab37a-ed6c 2y agoWonder if Haskell is still around at Meta these days, does anybody know?
- loeg 2y agoMostly discouraged in new projects.
- wyager 2y agoLooks like the author is now working on Glean (the AI docs/search tool) at Meta, which is also Haskell-based.
- eddsolves 2y agoSimon Marlow is a famous Haskell developer, alongside the likes of Simon Peyton-Jones or Philip Wadler
- throwaway132417 2y agohttps://engineering.fb.com/2024/12/19/developer-tools/glean-open-source-code-indexing/ https://engineering.fb.com/2024/12/19/developer-tools/glean-...
- mavelikara 2y agoWow, there is a startup named Glean doing something very similar. Founded by Arvind Jain who co-founded Rubrik.
- throwaway132417 2y agoYes, (and so is OCaml) but less than in the past, mostly for specialized and older projets. Most engineers at Meta will not encounter these languages. It's costly to integrate them with the internal tools and arguably not worth the effort. On the other hand, Rust is increasingly popular and well-supported and approved by the company.
- wyager 2y agoI 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".
- kccqzy 2y agoYou aren't hiring good programmers if they are intimidated by syntax.
- nicoburns 2y agoThe 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.
- kccqzy 2y agoThat'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 rejects Haskell or OCaml by giving me a good critique of say, Hindley Milner style type systems†, that's a good programmer I'm willing to hire even though I don't necessarily agree. †: I've been asked exactly this question during an interview: to critique HM style type systems. As a candidate I felt this style of questions gave me a far better way to display my knowledge and experience than Leetcode style questions.
- perching_aix 2y ago> I do not hire anything Today's Freudian slip award goes to...
- behnamoh 2y agoIf 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 are proud of a few projects that use Haskell (pandoc, xmonad, etc.) and they boast about how they can achieve the same thing as i3 but in much fewer LoC. But frankly I don't think #LoC is a good metric for gauging a language's value.
- TZubiri 2y ago"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.
- tdeck 2y agoI 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.
- alpinisme 2y agoProbably a combination of those things but also about the staying power or perception and stereotype from the broader programming community. (I’m not saying that Haskell is super pragmatic and industry-ready, only that the perception of it often lags behind its real usefulness — admittedly in part because other languages work well enough so why bother to engage with one that requires thinking differently?)
- lambdaba 2y agoThe edge that functional languages give you is expressiveness, the more complexity you have in the business logic, the more that compounds.
- koala_man 2y agoI 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 projects are about Haskell itself, so this was really fascinating to see.
- siltcakes 2y agoEvery 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).
- plagiarist 2y agoI'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 developer onto the project.
- siltcakes 2y agoIt'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.
- ahefner 2y agoBut 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.
- mark_l_watson 2y agoThis article was written about the same time when I interviewed with this group. I was very enthusiastic about Haskell but a senior Haskell lead told me I needed much more Haskell experience but I was otherwise an interesting candidate and he offered to put me in touch with the other FB team doing a similar function, but in Java. I was only interested in learning Haskell, so nothing happened. Still it was very cool to be able to talk with a couple of famous Haskell folks.
- kagevf 2y ago> a couple of famous Haskell folks. Who?
- up2isomorphism 2y agoFrom my user experience, I don’t think “anti-spam” is the best part of the FB engineering.
- cosmic_quanta 2y agoI recall hearing about this a while back, and how the team at Meta had implemented hotswapping to deploy new rules, without redeploying the entire executable, even though the rules were expressed in a Haskell DSL. Unfortunately, I have never seen hotswapping of Haskell code anywhere else. All I can find is this library [0] by Simon Marlow. Together with Cloud Haskell [1], hotwapping would allow to create pretty flexible distributed systems à la Erlang/OTP. [0]: https://hackage.haskell.org/package/ghc-hotswap https://hackage.haskell.org/package/ghc-hotswap [1]: https://github.com/haskell-distributed/distributed-process https://github.com/haskell-distributed/distributed-process
- tomsmeding 2y agoIt's worth noting that Simon Marlow is at Meta, and indeed is also the author of the present article.
- wilde 2y agoI’m very sad that this service is basically on life support and got moved into PHP with everything else.
- srpablo 2y agoHaha I was checking the comments precisely to see if this was the case. This happens nearly everywhere a language that isn't Java, Python, Ruby, Go, PHP, or JavaScript is used. IMO it has more to do with tech labor arbitrage[1] than anything technical. Even if a system is punching above its weight, over time, the Weird Language Choice spooks people enough that they get the rewrite bug. Bleacher Report is a funny example: it used to be a darling example of Elixir, where a migration from Ruby -> Elixir claimed a move from "150 Ruby servers to 5 (probably overprovisioned) Elixir servers."[2] But then management and politics got scared, moved it all to more conventional tech, and the whole system suffered (see this legendary post[3]). Fred Hebert describes a similar thing happening with a migration from Erlang deployments to Go/Docker/immutable, where you lose some pretty valuable capabilities by migrating to more conventional tech.[4] I don't see this changing anytime soon -- we came of age when it was viable to attract investment with the promise of tech innovation. These days, those are liabilities because managers misunderstood the "Use Boring Technology" post the way consultants bartardized "Agile" (taking decent advice and misunderstanding it into something wholly different and horrifying). The result is you've got companies with customers in the 1000s using k8s, calling it "simple" and "Boring," whereas that same company would be called amateur if they did things like stateful deploys on-prem.[5] At least we'll always have WhatsApp. [1]: https://www.baldurbjarnason.com/2024/react-electron-llms-labour-arbitrage/ https://www.baldurbjarnason.com/2024/react-electron-llms-lab... [2]: https://web.archive.org/web/20170204160005/http://www.techworld.com/apps/how-elixir-helped-bleacher-report-handle-8x-more-traffic-3653957/ https://web.archive.org/web/20170204160005/http://www.techwo... [3]: https://www.reddit.com/r/erlang/comments/18f3kl3/comment/kcts58i/ https://www.reddit.com/r/erlang/comments/18f3kl3/comment/kct... [4]: https://ferd.ca/a-pipeline-made-of-airbags.html https://ferd.ca/a-pipeline-made-of-airbags.html [5]: https://morepablo.com/2023/05/where-have-all-the-hackers-gone.html https://morepablo.com/2023/05/where-have-all-the-hackers-gon...
- thiago_fm 2y ago