In June 2015, I published The algebra (and calculus!) of algebraic data types in Code Words . I saw it on Hacker News a few days ago and…

A Coq interpreter in Coq MDX Deck Automatic generation of free theorems Output for : The Free Theorem for “f :: forall a . (a -> Bool…

Maps I’ve seen some great maps recently. Most Remote Spots in USA Wilderness Complexes How America Uses Its Land Very Detailed Map of the…

Interdisciplinary team cooks 4000-year old Babylonian stews Reviving recipes written on ancient Babylonian tablets. A good idea…

Grammars for everything data data manipulation: https://dplyr.tidyverse.org/ tables: https://github.com/spgarbet/tangram ( examples…

Augmenting Long-term Memory My somewhat pious belief was that if people focused more on remembering the basics, and worried less about the…

ICFP 2017 This year I finally made it to ICFP after years of wanting to go. Here are notes on a few of the talks I was most interested in…

Blogging with next.js For a long time I’ve wanted to blog more regularly, but haven’t been able to update my website. Which I mean literally…

Programmer Tooling Beyond Plain Text This is a companion to my post on the expression problem and tables . In this post I explore ways we…

The Third Age of Computing is Dependently Typed I just got back from hearing r0ml speak at Recurse Center on Third Age of Computing…

The Expression Problem and Tables The Expression Problem The expression problem is a well known problem in programming language theory…

data, type, newtype, instance, class One of the first things to confuse me about Haskell was the number of keywords related to types. The…