> I don't particularly hate it for the obvious reasons of middle class white kids sitting around a table giggling at how transgressive they are being with their jokes about race.

Why would that be an obvious reason to hate it: its not like middle-class white kids are the only people who play Cards Against Humanity. (The few times I've played it, the only one of those descriptors that was accurate of the group as a whole was "middle-class" -- the groups were racially diverse and included an age range of something like mid-20s to early 50s.)

> What I really hate about it is that it’s a game about convincing yourself that you’re much funnier than you actually are.

Er, no. The whole thing is about creative juxtaposition from limited options. Its not really about how funny you are, its about how funny things taken in the wrong context can be. Like Mad Libs, its about how funny the result is, and while there is definitely more deliberate input from the participants, its not mostly about how funny the participants are, because the participants are so sharply constrained that even if they were the world's greatest comedian, they wouldn't be able to show it.

> People walk away from a game of Cards Against Humanity thinking that they’re hilarious.

Yeah, I don't see any evidence that this is particularly true.

And the thing is, that the amount that the author here doesn't get CAH is echoed in the amount he doesn't see to get the things he uses it as an analogy for.

> There are some exceptions (Sequel and Sinatra for example), but by and large Ruby APIs seem almost actively designed to promote bad software.

Its interesting that the author can name notable counter-examples to the effect he is describing, but can't be bothered to name even a single notable supporting example.

Sure, lots of stuff written in Ruby or any language is bad. But where is the evidence that Ruby disproportionately (either inherently or through community dynamics) promotes bad design? There's no substance here.

> Ruby is full of people who think they’re doing good API design, but they’re not. The problem is that in Ruby everyone is designing “DSLs”.

That's not even a coherent complaint. There is essentially no difference between an internal DSL and an API.

> The focus is on making the examples look pretty.

I don't see a lot of evidence that this is true.

> I’m all for making examples look pretty, but when you focus on that to the exclusion of the underlying semantics, what you get is the Cards Against Humanity effect all over again. You’re not doing good API design – you’re doing something that has the appearance of good API design, but is in reality horrifically non-modular and will break in catastrophic ways the first time something unexpected happens, but the lovely syntax lets you pat yourself on the back and tell yourself what a good API designer you are.

That's a nice generality, but where is the evidence or argument supporting the idea that this is somehow more common of a problem in Ruby than other languages?

> The way this problem manifests in Haskell is in how incredibly clever it makes you feel to get something done in it.

I don't feel particularly clever getting something done in Haskell. I occasionally am amazed at how succinct the solution is compared to what it would be in some other language, or how in solving a particular problem I've also created something that could be reused that would solve a more general class of problems, or how I didn't have to use boilerplate template code with fill-in-the-blanks to solve a particular case of well-known general problem as I would in many other languages, but was instead able to leverage an existing more general solution because of Haskell's more powerful abstractions.

But that's more about thinking that the designers of the Haskell library and language were clever than that I was. And its part of the process of learning new languages/libraries that have different strengths than those you are familiar with. I remember doing similar things (different details, of course) with pretty much every language other than my first.