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#.

Metatesting your property-based tests

A rather little-known but very easy and high-reward way to sanity-check your property-based tests.

In praise of `--dry-run`

First-class support for a –dry-run mode makes a tool more maintainable, more testable, and more user-friendly.

Continuation-passing style

Motivating the technique of continuation-passing style, by looking at recursive functions.