Creează un cont pentru a te abona la acest blog și a-i urmări articolele pe pagina Lectură.
-
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.
-
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!)
-
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.
-
My reading list
For a film list, see films.
-
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.
-
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.
-
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.
-
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”.
-
About me
I am Patrick Stevens, a software engineer based in London, England.
-
About this website
This website has been around in one form or another since June 26th, 2013.
-
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#.