chiark.greenend.org.uk/~sgtatham
Aperiodic Tilings V: the Refinable Frontier
A sequel to my previous posts on finite-state transducers for aperiodic tilings: if you have a tiling you can’t build a transducer for, here’s an algorithm to turn it into one you can.
Brute-forcing Langley’s geometry problem with field extensions
An application of algebraic extensions of the rationals: cheating (arguably) at elementary geometry puzzles.
In which I have Opinions about parsing and grammars
A collection of semi-connected rants about context-free grammars, parser generators, and the ways in which they aren’t quite as useful as I’d like them to be.
Policy of transience
A description of some of my personal computing habits, focusing on avoiding things ‘just turning out’ to last for ever in a disorganised manner.
Iconography of the PuTTY tools
A PuTTY user asked about the history of its logo and icon collection. I discuss the design intentions and technical aspects.
Git without a forge
My personal projects are in Git, but not on a ‘forge’ style website. I talk about why, and how to interact with them.
Post-quantum public-key encryption: what’s it all about?
An explanation of some post-quantum public-key cryptosystems, simplified to the level of pop-science.
Separation of concerns in a bug tracker
A design thought about how bug trackers could use a more accurate data representation to make queries easier.
Possibly all the ways to get loop-finding in graphs wrong
The history of all the mistakes I've made trying to detect loops in graphs while writing my puzzle collection.
Code review antipatterns
A taxonomy of frustrating code review behaviours, and some thoughts about them.
Symbiosisware
A definition and discussion of my term “symbiosisware”, describing software consciously designed for only yourself to use.
Beyond “Beyond the wall”
A sequel to last month's post on finite-state transducers for aperiodic tilings.
Beyond the wall: working with aperiodic tilings using finite-state transducers
A sequel to last year's two posts on combinatorial coordinates, this time applying regular-language theory to them.
Writing commit messages
(Yet another) guide to writing commit messages in version control, with a focus on what facts and rationale are good things to include.
I hate bubblesort
A short opinion: bubblesort is an awful sorting algorithm and I wish people would stop teaching it.
Stop helping!
A short opinion: command-line tools shouldn’t print long help text as well as an error message.
Philosophy of coroutines
Some thoughts about coroutines in general, why I like them so much, and ways of using them and thinking about them.
Writing custom C++20 coroutine systems
A detailed introduction to the C++20 coroutine system, written in the course of teaching myself about it.
Workarounds for C11 _Generic
A description of the big design limitation of C11's _Generic feature, and various workarounds, mostly involving using more instances of _Generic to patch up the original one.