Unhinged rant about software

Modern software practices and their sadness.

Lessons from a massage course

I went to a one-day intro to massage taster course, and it was fun and interesting!

WoofWare.Myriad.Plugins learns to parse args

My F# source generators have some new features, including an argument parser.

New GitHub workflows

I’ve made a GitHub workflow to assert that all required GitHub checks are complete, and one to publish and attest NuGet packages.

Learning plan for "Program Equilibrium in the Prisoner's Dilemma"

The questions whose answers I don’t know, and the things I intend to learn, on the way to understanding a paper.

Code having "the right philosophy"

Those who would give up essential safety, to purchase a little temporary simplicity, deserve (and will get) neither safety nor simplicity.

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.