The phrase "I Notice That I Am Confused"

To me it’s got a specific meaning, but I’ve seen it used much more generally, and I think its meaning should not be polluted.

The Yoneda lemma

Another attempt to explain that the Yoneda lemma is actually intuitive.

ChatGPT's effect on my programming

After a decent while programming with ChatGPT, I’m not sure it’s even a net positive on my ability.

YAML is not a superset of JSON

All the reasons I know for why YAML is not a superset of JSON.

Trip to Tromsø

Travelogue of my trip to Norway.

Why does no-confusion use equality rather than a recursive call?

A question about the definition of a no-confusion type.

Starting a suspended process

How to start a process into a suspended state on Linux

Announcing WoofWare.Myriad.Plugins

Some F# source generators to solve common problems I have.

iOS interface

A bunch of ways the iOS user interface is bad, and some undiscoverable features.

Squashed stacked PRs workflow

How to handle stacked pull requests in a repository which requires squashing all history on merge.

Raymond Smullyan chess problem walkthrough

The thought process behind solving a particular Raymond Smullyan chess retrograde analysis puzzle.

Nix fireside chat outline

A talk I gave at work about the Nix build system.

Property-based testing introduction

A talk I gave at work introducing property-based testing and then giving some more advanced techniques.

The tiny proof that primes 1 mod 4 are sums of two squares

Exploding the incredibly terse proof into a bunch of exposition.

Notes for a Git fireside chat

A syllabus for a fireside chat to give at work, on Git

Questions I had about transformers

Some basic questions I had about transformers, and their possible answers.

The water filtration industry has played us for absolute fools

My Brita water filter does not in fact purify.

Don't supply `-f` to `rm` unless you know you need it

A vignette on the theme of ‘do not allow yourself to get into the habit of supplying the -f flag to rm’.

Argument in a high-trust environment

I tend to argue things in a particular way because I’m in a high-trust environment.

Crates (existentials in F#)

An introduction to the crate pattern for representing existential quantification in F#.