wow i would actually really like to switch from GitHub Pages for my programming stuff, but Substack doesn’t let you use markdown? absolutely not what…
This is Overcoming Software, a newsletter about thoughts on Haskell and other software concerns.
This is a really brief post to call out a nice trick for providing users a nice migration message when you delete a constructor in a sum type. The…

October 2022

Everyone loves Haskell because it makes concurrent programming so easy! forkIO is great, and you’ve got STM and MVar and other fun tools that are…
Apparently, I’ve spent my entire life with a condition called “femoracetabular impingement.” The bones in my hips are deformed - the femoral neck is too…

August 2022

Exceptions kind of suck in Haskell. You don’t get a stack trace. They don’t show up in the types of functions. They incorporate a subtyping mechanism…

May 2022

I’m moving the programming stuff over to https://overcoming.software. Well, I will at some point in the future. But I don’t want to break links. So I…

November 2021

RankNTypes is a language extension in Haskell that allows you to write even more polymorphic programs. The most basic explanation is that it allows the…

September 2021

justifiably lazy orphans (alternative subtitle: “I used the TemplateHaskell to destroy the TemplateHaskell”) (EDIT: 2021-11-05 - Having actually tried…
I wrote a big thread on the company Slack to compare type families: open vs closed vs associated. I also ended up discussing data families, as well…

August 2021

I want a better way of constructing Haskell records. Let’s compare and contrast the existing ways. We’ll be using this datatype as an example: data Env…

July 2021

With the new OverloadedRecordDot language extension, we can use the . character to access stuff on records. {-# language OverloadedRecordDot #-} data…