Wednesday, December 01, 2010

The worldwide Haskell community met up over beers today to celebrate their unprecedented discovery of an industry programmer who gives a shit about Haskell.

On Wednesday, researchers issued a press release revealing that 27-year-old Seth Briars of North Carolina, a Java programmer at Blackwater accounting firm Ross and Fordham, actually gives a shit about Haskell.

"Mr. Briars has followed every single one of our press releases for years," the press release stated. "Probably even this one."

Haskell researcher Dutch Van Der Linde explained how they had stumbled on the theoretical possibility of Briars and his persistent interest in Haskell. "We knew that there are precisely 38 people who give a shit about Haskell," said Van Der Linde, "because every Haskell-related reddit post gets exactly 38 upvotes. It's a pure, deterministic function of no arguments -- that is, the result is independent of what we actually announce. But there are only 37 of us on our mailing list, so we figured there was a lurker somewhere."

"That, or it was an off-by-1 error not detectable by our type system," Van Der Linde added. "But we don't, uh, like to dwell on, I mean with good unit testing practices we can, um... sorry, I need to get some water."

As Van Der Linde stumbled off in a coughing fit, his fellow researcher Bonnie MacFarlane outlined their basic dilemma: "Finding a person who gives a shit about Haskell is an inherently NP-complete computer science problem. It's similar in scope and complexity to the problem of trying to find a tenured academic who didn't have the bulk of his or her work done by uncredited graduate students. So even though we suspected Briars existed, we needed a strategy to smoke him out."

She explained the trap they set for Briars: "We crafted a fake satirical post lampooning Haskell as an unusable, overly complex turd -- a writing task that was emotionally difficult but conceptually trivial. Then we laced the post with deeper social subtext decrying the endemic superficiality and laziness of global industry programming culture, to make ourselves feel better. Finally, each of us upvoted the post, which was unexpectedly contentious because nobody could agree on what the reddit voting arrows actually mean."

"And then we waited to see who, if anyone, would give a shit," she said.

MacFarlane concluded, "Our elegant approach didn't work, so we hired a Perl hacker to go dig up the personal details on all 38 accounts that had ever upvoted a Haskell post, and the only one we didn't know was Seth Briars. So we reached out to him, and thankfully so far he hasn't threatened to sue us."

Briars says he is pleased to have been recognized for his apparently unique shit-giving about Haskell. "I've been giving a shit about Haskell for a long as I can remember. I follow all their announcements and developments closely, just in case I ever get the urge to use the language for something someday."

"It's a beautiful, elegant language," Briars observed as he busied himself cleaning a fingernail. "You'd be hard-pressed to find a more expressive and composable core. And they've made astounding advances over the years in performance, interoperability, extensibility, tooling and documentation."

"I'm kind of surprised I'm the only person on earth who gives a shit about it," Briars continued. "I'd have thought there would be more people following the press releases closely and then not using Haskell. But they all just skip the press releases and go straight to the not using it part."

"People see words like monads and category theory," Briars continued, swatting invisible flies around his head for emphasis, "and their Giving a Shit gene shuts down faster than a teabagger with a grade-school arithmetic book. I'm really disappointed that more programmers don't get actively involved in reading endless threads about how to subvert Haskell's type system to accomplish basic shit you can do in other languages. But I guess that's the lazy, ignorant, careless world we live in: the so-called 'real' world."

Haskell researcher Javier Escuella remains hopeful that one day they may be able to double or even triple the number of industry programmers who give a shit about Haskell. "I believe the root cause of the popularity problem is Haskell's lack of reasonable support for mutually recursive generic container types. If we can create a monadic composition-functor wrapper that is perceived as sufficiently sexy by hardened industry veterans, then I think we will see an uptick in giving a shit, possibly as much as a full extra person."

Haskell aficionado Harold MacDougal is not quite as sanguine as his colleague Escuella. "I doubt Haskell will ever be appreciated by the uneducated natives of this industry. As exciting as it is, the discovery of Briars should be considered an anomaly, and not as a sign that more people will ever give a shit. Programmers only seem to pay attention to things when there is humor involved."

"We do have an experimental humor monad," added MacDougal. "But it doesn't seem to be getting much adoption. Haskell fans just don't see the need for it."

MORE NEWS

Previous article: Perl Community Debating Adding Monads The Perl lists are brimming with discussions about the value of adding monads to Perl. "We don't really know what they do, but it doesn't make sense _not_ to have something in Perl," said Perl hacker Landon Ricketts. Read more

Next article: Microsoft to Introduce Mutually Recursive Error Messages Software giant Microsoft announced today the launch of their new REDRUM platform, an elegant system that allows Windows system error messages to shuffle blame around indefinitely by using continuation-passing. Read more

Seriously, though, it's different enough that it's going to take some time to get traction. It's not going to be like ruby on rails, where a bunch of kids suddenly decide that it's the greatest thing ever.

It was easy for python and ruby to get traction because they're basically the same as perl. Sure, syntactically they're different, but semantically they're all almost exactly the same (ergo, parrot). So it wasn't much of a mental shift for perl users to start using those languages.

But Haskell is enough of a departure, both syntactically and semantically, that it'll take longer. It may even be a generational shift--I do sense some frustration from old farts (not just you) who used to pick up new languages all the time and now are struggling to understand Haskell.

Haskell (or something haskell-ish) is definitely the future, though--cheap abstraction (which in haskell is enabled by the type system, and by purity) is just too big of a win.

However, I can certainly imagine that it might not catch on at google. If you literally have armies of programmers, then productivity is less of a concern for you than it is for the rest of us.

Plus, adding a language to the blessed list would open up a huge religious war internally, right? It's only because of your posts about it that I understand why google is kind of stuck with the languages it has. Is this post at all fueled by sour grapes over your Ruby battles, I wonder?

I could be wrong but there doesn't seem to be anything indicating that that list is ordered?I'd assume given the amount of familiarity Steve seems to show in making the jokes he does that he actually has a bit of a soft spot for Haskell.

I think more programmers give a shit about Haskell than give a shit about the Tea Party. They're a disruptive group lacking in intelligence that discredit the Republican Party as a whole, but that's a whole different post, eadmund.

andrewmu: Miranda was created before perl and Haskell and actually Haskell owes a lot to Miranda, particularly it's beautiful syntax. Having learned about this recently, I feel a bit bad that we in the Haskell community don't give David Turner as much credit as he deserves.

Vald: monads are not generally commutative, though there was a wonderful talk at ICFP 2009 about what the world is like when you limit yourself to only commutative monads. (Anybody, feel free to e-mail me for the paper.)

I thought that the best part of this was the link to the quite serious post where the guy implemented monads in perl and then complained that, "the syntax was totally abominable." (Hello! It's perl, dude!)

Speaking as an old Java guy myself, Steve truly captured the idea of Haskell sometime between a post before he left Amazon ("I've written more than 600,000 lines of Java! I rock!") and a post after he joined Google ("I've written 600,000 lines of Java! Oh no! What have I done?!")

(And yes, I'm that guy that wrote the high-frequency trading system in Haskell. I reckon that the 12,000 lines of code I wrote would have been 100k+ lines in Java.)

You know, there are Tea Party supporters who actually give a shit about Haskell (and use functional programming in production). As improbable as it is, here I am. The T-word was definitely out of line.

OK Steve, you have convinced me that post quality varies inversely with frequency. But dammit your posts are just too fukcing good. Unnecessarily so. Experiment's over, please speak to us much more often (weather's a fine topic, but I really want to know what you think of C#'s ventures into monad's land).

This is the best thing I have read on the Interwebs in ages. It just points out that industry needs to agree to focus all their energies on a single functional language so we can ignore the more margin... er, academic ones. I'm sure the teapartiers would support letting the Supreme Court decide in favor of F# (or OCaml since it uses F# syntax).

I think Haskell is very cool and I plan to learn it once I get a little more familiar with Common Lisp. Maybe I'll even write a game in Haskell. Just think of the amount of shit that I am giving right now!

Lebowski, we are ignoring the more academic functional languages. For most purposes outside of theorem proving, Haskell is a model of practicality compared to, say, Agda.

Beta: I'm not sure what you mean by your ML comment, but ML is certainly in heavy use in the commercial programming world if you count F# and OCaml (I know banks and proprietary trading companies doing huge amounts of work in both), and while I don't have as much personal evidence of commercial SML usage, there is a largish project, Mirage, that's written what's essentially a simple OS, along with servers of various sorts (HTTP, DNS, SSH) in SML.

Curt, there are more than 1 industry guy who give a shit about Haskell (I used to know one, in fact, but I'm not sure if he's still using Haskell).So, you can use the same thinking about ML, and simplify it to "there's one company that gives a shit". Compared with the amount of people who gives a shit about Java, 1 or 100 companies are still in the same order of magnitude.

"... an inherently NP-complete computer science problem. It's similar in scope and complexity to the problem of trying to find a tenured academic who didn't have the bulk of his or her work done by uncredited graduate students."

Whatever bit you, Stevey? Why rant against Haskell? Have you been recently bullied by Haskellites? I thought they were pretty harmless.

BTW, since when are you running on a populist platform? I mean, you'll get a lot of votes from yahoos who don't give a shit about anything that happens outside of their villages. You're giving them an excuse to dismiss and ridicule anything they don't understand, not only monads or category theory. I can see them marching behind you with pitchforks and torches ready to ban exceptions, templates, STL, and all this highbrow stuff. It would be funny if it weren't already happening even at the top software companies (how modern are the Google coding standards?).

I found the post funny before I started reading the comments... Now I wonder who those readers are that still think this is an accurate reflection of the Haskell world.

Ten years ago that could have been the case, but nowadays Haskell is used increasingly in plenty of practical tasks, from generating real-time code for embedded chips in transport truck to checking the security of some US state networks (not the diplomatic ones...). A lot of the more mundane usages can be seen by the variety of library on Hackage which while not the CPAN is still of a very respectable size for the library repository of an "academic" language.

If you truly think that this post content was serious unlike its humorous tone, wake up and smell the coffee : FP languages are becoming part of the CS industry faster than you think and Haskell is one of the good candidates.

I know at least one person that ues Haskell in a heavily commercial setting, and he's not Mr Briars. The original researchers have overlooked up to 50% of positive cases! Such error margins cast doubt to the entire research.

"You know, there are Tea Party supporters who actually give a shit about Haskell (and use functional programming in production). As improbable as it is, here I am. The T-word was definitely out of line.

Otherwise, me lol'd."

Operation Tea Bag is where the term came from. Your fellow morons invented it!

The T-word? You idiots really think you are a separate race don't you?

"If you need state that badly, you shouldn't be using a functional language."

Please don't take this the wrong way, as I don't wish to be insulting, but you appear to be confused.

First, whether functions have undeclared (to the type system) state or not is nothing to do with whether a language is functional or not (at least in Peter van der Roy's CTM definition--let me know if you're using another one); it's dependent on whether the language is pure or not. If you consider languages such as ML, Lisp and Scheme to be functional (and most would), these are all languages in which functions have undeclared side effects. (In fact, global variables, for example, are quite heavily used in Lisp.)

Second, even in "pure" (I use this as the term of art) languages such as Haskell and Clean, state is quite heavily used: the big difference is in how you manage state, not in its existence.

I myself am also considered an "annoying anal-retentive nerd" by many (and I'm quite the Dijkstra fan to boot), and I'm sorry to say that you come across not as a computing scientist but as just some guy who doesn't understand pure languages.

Hey Steve! I just recently started reading your blog and already you've inspired me to start learning to type and take up blogging. I'm looking forward to reading the rest I havn't read and the stuff that you will write (I hope). I'm grateful for what you're doing. Keep up the good work

LMAO ... Steve, I wish you wrote these more often... this one's priceless :)Wish 'Big Bang' would add you as a dialog writer too ... I had Sheldon's voice in my head as I read how they unearthed the PWGASAH.Rock On! :)

Qwerty wrote: "Haskell is not useful for stateful environments because monads are an ugly hack."

Well, in a word, "no." Even if you can't appreciate the (admittedly somewhat mathematical) elegance of monads, it should be hint that not only do people use monads for state when they have other options (e.g., internal program state that never goes near I/O--just look at any parser combinator library), but monads are also useful for a lot of other things besides state. (The "All About Monads" tutorial gives some nice examples.)

I'm guessing you're denying this because you simply don't understand monads. Probably twenty years ago you'd have been saying that object-oriented programming is a bunch of rubbish.