The Fantasyland Code of Professionalism

The Fantasyland Code of Professionalism (FCoP) is a code of conduct developed by the Fantasyland Institute of Learning, an organization that was founded by John A. De Goes and is responsible for LambdaConf, a functional programming conference.

Many other people have written about the shortcomings of the FCoP as a code of conduct, including Christie Koehler, who calls it "beyond mediocre" and "downright dangerous", and Matthew Garrett (in an article titled "The Fantasyland Code of Professionalism is an abuser's fantasy").

The purpose of the post you're reading now isn't exactly to critique the FCoP, though, but to preserve some of the discussion surrounding it, since De Goes has recently deleted the FCoP GitHub repository and several other FCoP-related documents, in a move that seems related to the fact that he's currently threatening to sue me for defamation.

One of the claims in De Goes's cease and desist letter is that the following statement (published here) is false:

The FCoP was developed specifically in response to the 2016 LambdaConf controversy, and it's clearly designed to protect white supremacists like Yarvin.

De Goes's lawyer writes:

The FCoP is a code of conduct for professional communities that our client has created. The FCoP is clearly not designed to protect white supremacists.

I've provided evidence in another document that it's reasonable to describe Curtis Yarvin as a white supremacist, and that many other people besides me have done this, including journalists, prominent software developers (for example Erica Baker in this Inc. article), and one of his former business partners.

Continue reading

Why Parallel

I've written a couple of blog posts about how the Parallel type class has changed in Cats 2.0, but those posts don't really say much about why someone using Cats should care about Parallel in the first place. The name suggests that it has something to do with running computations at the same time, and while that's one of things you can do with it (via the instance for IO in cats-effect, for example), it has a much, much wider range of applications. This post will focus on a real-world use case for Parallel that at a glance might not seem to have much in common with running things in parallel: accumulating errors while validating form inputs.

Continue reading

Cats 2.0 migration guide

Typelevel has just published Cats 2.0.0, and while the core modules are guaranteed to be binary compatible with 1.x, there are some changes that break source compatibility. Most of these changes are unlikely to affect users, but a few will, and the goal of this post is to point out which those are and what you can do about them.

Note that while some of the stuff below is pretty intense, it's unlikely to apply to you. In fact if you're not using Parallel, there's like a 99% chance you can close this tab right now and go change your Cats version and everything will be fine. There are also always people in the Cats Gitter channel who are happy to help. In any case please don't be intimidated and put off updating to 2.0.0—the community is healthier if adopters invest in staying up to date.

Continue reading

Fuck yeah type erasure

(Apologies for the title—after a lot of time on Twitter this week I've been feeling nostalgic for things like Tumblr c. 2010.)

This post is an attempt to answer a question Baccata64 asked on Reddit yesterday afternoon:

how does the Parallel change not break bincompat ? Is it that type parameters and type members are encoded the same way at the bytecode level ?

The context is that Cats 2.0.0-RC2 includes a recent change where the Parallel and NonEmptyParallel type classes were changed from having two type parameters each:

trait NonEmptyParallel[M[_], F[_]] {
  // ...

…to one, with the parallel context (the F parameter) changed to a type member:

trait NonEmptyParallel[M[_]] {
  type F[_]
  // ...

This post will give some background about the context and motivation for this change, and then will try to answer Baccata64's question.

Continue reading

John De Goes and the FP community

Update (25 July 2020): John De Goes has hired a lawyer to send me a cease and desist letter demanding that I delete this post. See my responses here and here for more details.

This post is a collection of links about John De Goes that show some clear patterns of behavior:

  • De Goes defending white supremacists and misogynists.
  • De Goes attacking critics and accusing them (especially women) of lying.
  • De Goes engaging in targeted harassment, either directly (@druconfessions) or indirectly (e.g. via ClarkHat, a LambdaConf sponsor).
Continue reading