RSSAmplifier

Blog

Patrick Stevens

Recent content on Patrick Stevens

/RSS feed ↗195 posts

Latest posts

Announcing WoofWare.PawPrint, a deterministic .NET runtime

WoofWare.PawPrint is now in a shape where it can automatically identify and reproduce concurrency bugs, so I’m calling it releasable.

Midnight Madness London 2026

I took part in Midnight Madness, so here’s a trip report.

Claude knows who you are

Claude Opus 4.7 is solidly superhuman at stylometric identification of authors.

Another trip to Tromsø

Travelogue of another trip to Norway.

Fun LLM prompt: where are my mental models defective?

A fun prompt to use with a powerful LLM, to learn about something in great detail.

LLM arithmetic

I keep seeing people going on about the 3.9 - 3.11 = 0.79 thing, but we already know why they do that and how to avoid it!

Robocop: automated code review

I wrote a basic LLM-based code review tool that’s distressingly effective.

LLMs sanding off the edges

I’m a bit concerned about a failure mode that is increasingly arising with LLMs: the divorce between how something looks, and its quality.

Boolean blindness

Why booleans are an advanced technique that should be used with care.

Some Python surprises

I am forever astonished that people describe Python as a simple language. Here are some of the things I found very surprising about it.

Things I've learned about the .NET runtime

While writing an MSIL interpreter, I discovered a bunch of unexpected things about the .NET runtime.

Announcing WoofWare.Expect

A basic but functional expect-testing framework for F#.

LLM effect on my programming (2025 edition)

Since my last post about this in 2024-03, LLMs have become a distinctly positive addition to my ability.

A Bitcoin analogy for Multiple Drafts theory of consciousness

I’ve never actually seen anyone write down precisely the way I think about consciousness, so here it is: it’s (gasp!) like a blockchain.

NativeAOT in .NET 9 and Nixpkgs/darwin

How to get a NativeAOT build using nixpkgs

Mary's Room

Last weekend I was in a discussion ostensibly about whether the mind is nonphysical. Much of the discussion ended up as a rather polite shouting match about Mary’s Room. Here is what I actually believe about it.

My reading list

For a film list, see films . This page holds a list of the books I am reading, and a list of books I have read (starting from the 8th July 2013, which is when the list started). I start with high hopes of keeping the list updated in real time, but of course this plan may go off the rails. There is also a list of things I very strongly recommend reading - they changed my thought patterns…

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.

Games

This page holds an incomplete list of games I have played. Video games In progress ibb and obb. Fun two-player co-op, neat and slightly mind-bending physics. It Takes Two. Amusing but not worth the price, I think. This is more like a constant stream of “oh, what funny one-off mechanic have they implemented next”. Not in progress Chants of Sennaar. An extremely impressive 81% of players…

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.

Imre Leader Appreciation Society

I used to maintain an archive of the Imre Leader Appreciation Society for posterity through WebCitation, but WebCitation itself is now dead, so here I simply link to [Konrad Dąbrowski’s capture][https://www.konraddabrowski.co.uk/ilas/index.html).

Anki decks

I have deleted almost all of the Anki decks on this page, because I think they would do more harm than good. They were made during a time when I didn’t really know how to use Anki appropriately. Any remaining decks here are CC-BY-SA. Geography (the deck has a misleading name; it’s actually a general Geography deck). You can filter out the london-tube tag if you like, or world-capitals…

Notes for a Git fireside chat

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

Films

This page holds a list of films I have watched, spoiler-free, starting from 9th January 2015. Project Hail Mary : Great film. Visually beautiful; tense where appropriate; I was absolutely surrounded by people crying. Strongly recommended; I saw this on the BFI IMAX screen, which I think was a good choice. Dungeons and Dragons: Honour Among Thieves : Really rather good! As they say, “Consider…

Questions I had about transformers

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

Lifehacks

If I ever become rich and famous, I’m sure I’ll be besieged with requests for “how to do better in life”. I hereby head such requests off at the pass, by providing a list of lifehacks I am either using or considering the use of. For learning smallish but numerous facts (such as a list of theorems), I use Anki , which is a spaced-repetition learning system, allowing you to…

About me

I am Patrick Stevens, a software engineer based in London, England. I completed my BA+MMath at the University of Cambridge. Social media accounts: Github . Hacker News . Email . LinkedIn (used almost never). Twitter (used almost never). My handle is @smaug12345. I am very interested in maths and puzzle-solving. For instance: I have one of the top twenty answers on the Maths StackExchange by…

About this website

This website has been around in one form or another since June 26th, 2013. The website is hosted on DigitalOcean and is served statically by NGINX . Cloudflare is sitting between my DigitalOcean droplet and you. Your HTTPS connection is secure to Cloudflare, and secure from Cloudflare to the droplet. The rendering engines are Hugo for the site, pdftex for PDFs, and ImageMagick to create image…

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