Blog Colour 5 posts Where colour comes from, how a screen fakes it with three lights, and why every obvious way of arranging it turns out to be wrong. Classes are Coalgebras 3 posts Everything is a function, and so are classes. Those turn out to be a special kind of function called F-coalgebras. [Apr 19, 2026 ] [Apr 15, 2026 ] Distributed System Simulator [Mar 18, 2026 ] [Feb 22, 2026 ] NixOS as an exercise in Cross-Functional Requirements [Jan 22, 2026 ] The Fractal Modulith, revisited [Jan 18, 2026 ] [Dec 28, 2025 ] Brooklyn 99: Captain Holt Seesaw Puzzle Type Systems 25 posts In this series we work our way up from programming languages without types, to the most sophisticated type systems out there! [Nov 28, 2025 ] #1: Untyped Lambda Calculus [Dec 01, 2025 ] #2: Untyped Lambda Calculus, again [Dec 02, 2025 ] #3: Simply Typed Lambda Calculus [Dec 03, 2025 ] [Dec 04, 2025 ] #5: Polymorphism and System F [Dec 05, 2025 ] [Dec 06, 2025 ] [Dec 07, 2025 ] [Dec 08, 2025 ] #9: BTW: Continuation-Passing Style [Dec 09, 2025 ] #10: Universal Quantification and Rank-N Types [Dec 10, 2025 ] #11: Existential Quantification [Dec 11, 2025 ] [Dec 12, 2025 ] #13: The Typescript Lattice [Dec 13, 2025 ] #14: System F<:, Tops and Bottoms [Dec 14, 2025 ] #15: A Church Encoding of Lists [Dec 15, 2025 ] #16: Functions... on Types? [Dec 16, 2025 ] #17: System Fω, and Kinds [Dec 17, 2025 ] [Dec 18, 2025 ] #19: System Fωω..? A Recap of Type Systems [Dec 19, 2025 ] #20: An Equivalence between Types [Dec 20, 2025 ] #21: Algebraic Data Types [Dec 21, 2025 ] #22: Zippers and One-Hole Contexts [Dec 22, 2025 ] #23: The Curry-Howard Isomorphism [Dec 23, 2025 ] #24: The Calculus of Constructions and Dependent Types [Dec 24, 2025 ] #25: The Lambda Iceberg and Lambda Cube [Nov 19, 2025 ] Will AI lead to a Haskell resurgence? [Oct 12, 2025 ] Category theory is hilariously recursive [Aug 28, 2025 ] [Aug 07, 2025 ] Please just give me a programming language man [Aug 04, 2025 ] [Aug 01, 2025 ] Angular and Greenspun's Tenth Rule Free objects 4 posts Take an algebraic structure, add nothing beyond what its laws demand, and see which data structure falls out the other end — multisets, lists, finger trees. [Jul 24, 2025 ] [Jul 20, 2025 ] Constructors shouldn't throw [Jul 17, 2025 ] [Jul 05, 2025 ] [Jul 03, 2025 ] Pipeline runs grow n² with the number of open PRs [Jun 16, 2025 ] Enforcing Architecture through Ceremony [May 07, 2025 ] prefixed/compound ids are kinda neat [Aug 06, 2024 ] How to structure any codebase [Nov 14, 2023 ] Please walk on the right half of the sidewalk [Sep 05, 2023 ] Typescript Hacks #1: String suggestions [Aug 01, 2023 ] Create OpenShift clusters for testing (in Azure, and locally)