Articles are often updated, substantial, useful for reference.
See also Notes and Research, or browse by topic.
Digital freedom and law#
The battles over who controls software, data, and communications have been running for thirty years and are not over. These articles cover the legal and policy terrain of patents, privacy law and data sovereignty, from being in the middle of it.
More reliable software#
A recurring theme in my work is that software fragility is underestimated and under-addressed. These projects and articles approach that problem from the angles of data integrity, reproducibility, reversibility, and version control.
- LumoSQL — Modifying SQLite to give device owners genuine control over their own data, without breaking compatibility.
- Reversible Execution — Rewinding and replaying software to find bugs and security problems. Still the biggest advance in debugging since source-level debuggers.
- Logical and Thermodynamic Reversibility — How reversibility connects to the energy crisis in AI infrastructure.
- Not Before Time — Time-locking information using existing tools and tried mathematics.
- Not Forking — Automating change management across source trees in ways version control systems cannot.
- Fossil — The only realistic alternative to Git, with stronger cryptographic and reproducibility guarantees.
- How to Replace Windows NT with Linux — Written at Linuxcare in 1999, this kind of independence from US-centric software is suddenly a global concern. Part of the Samba story.
- Margaret Hamilton and Software Intent contains reconstructions of two 1994 articles of Hamilton’s I found
and cleaned up, with permission. The idea of intent seems central to software reliability.
- Automatic file versioning helps reduces everyday errors and confusion that we all have. Versioning has only been implemented once at scale. OpenVMS file versioning explains how it works, with the intention of implementing it in open source software.
AI safety and agentic systems#
Current AI safety efforts focus on making individual models better-behaved. My work on the Perseverance Composition Engine ↗ takes a different approach: structure the system so that misbehaviour is caught before it causes harm, the way human institutions have worked for thousands of years. These articles develop that argument and its technical context.
Health and medical#
- Radiophobia — Why patients should not be advised to consider cancer risk relating to scans, what it costs in missed diagnoses and fear-driven harm, and an explanation of the medical term ‘radiophobia’.
Practice and teaching#
- Security Standards and Certifications — How the major standards work in practice, and why their bad reputation is mostly undeserved.
- Teaching Exercises — Exercises in cybersecurity and computer science I have used over many years of mentoring.
- Code of Conduct — A concise code of conduct for open source projects, compressed from the Mozilla Participation Guidelines.
- BibLaTeX, eras and scripts — Managing references across non-Latin scripts, ancient sources, and non-English languages in LaTeX.
The problem: Most computer users manually save versions of files with names like Presentation-2027-Jan-11, followed later by Presentation-2027-Jan-11-UPDATED and Presentation-2027-For-Sally-Only, perhaps with Presentation-panic-edits-before-event. This is manual versioning, and even people who stick strictly to a naming convention still get confused at times. Some applications append .bak or prefix ~ to create their own backups, and then occasionally an automatically-created TMP or $tmp$ file can really save the day, and so on. Then when it comes time to clean up and organise a filesystem, everyone hesitates. Am I really sure there is not useful work in each of those ten versions? Which ones do I need to keep? So, we usually keep them all. After all, storage is cheap.
...
In responding to a recent security problem I had to consider the idea of intent in computer software, so I looked to see what Margaret Hamilton ↗ has to say. Hamilton proved her ideas spectacularly during the first Apollo moon landing in 1969. A hardware failure generated unexpected errors ↗, but the software coped by running the highest-priority tasks despite the barrage of errors, preventing an abort seconds before landing on the surface. The abort procedure was highly risky, so she may well have prevented tragedy in multiple ways.
...
In 2026, Anthropic’s operational judgment failed twice in the same way, leading to the leak of the Claude Code source code ↗. The constitution asks Claude to imagine how a “thoughtful senior Anthropic employee would react”, but what happens when the organisation’s structure fails?
Anthropic publishes its constitution ↗ along with research about where the constitution works and where it does not. The current version is an ethical treatise addressing Claude discussing safety, ethics, Anthropic’s guidelines, and helpfulness, in that order when they conflict. Anthropic favours cultivating good values and judgment over strict rules.
...
💡 Advised not to have a scan due to radiation risk? If you or your children are advised against having a medical scan due to radiation risks, you are probably hearing ‘radiophobia’. Health services often confuse protecting patients receiving radiation with protecting radiation workers who may be in these environments for decades. It will take a while for practices within health services to catch up to current understanding. Meanwhile, there is no need to be hesitant of any scans you are offered, despite some lurid warnings coming as standard. (The clinical term ‘radiophobia’ refers to an individual’s unfounded fear. Here I use it to mean when misinformation creates fear in patients.) When a medical person told me recently You can do without the PET scan ↗ you have had recommended, because we limit the number of scans people have so we don’t cause more problems than we find, it seemed a bit strange. I am in the fortunate position of working at a university where I have access to people who understand these things. So I made enquiries and learned that this was radiophobia, and it can cause people to miss out on healthcare. But I still wasn’t offered a scan.
...
AI is slow, and Agentic AI ↗ is even slower. I develop an MCP server ↗ that generates PDF documents, and I work with the Agentic Perseverance Composition Engine daily. Tasks that take maybe 5 microseconds on an operating system (eg, does a file called Things-to-Do exist?) can take a million times longer, between 2 and 5 seconds, because each operation requires multiple round trips to a remote LLM (often with timeouts.) It’s a young, unstable stack, comparable in maturity to early MS DOS or the Apple ][. When AI gets hold of your data via an MCP server it can do interesting things, but it is not put together well.
...
These matters of complicated jurisdiction and sovereignty law require the advice of an experienced international lawyer. These lawyers need the advice of experienced international technologists, and that is the bit I do. Each has to know quite a bit about what the other is doing, so I study the relevant statutes and speak to the people who are drafting the next versions of the regulations.
The EU-US Data Privacy Framework (DPF) ↗ is intended to put limits on US surveillance of EU citizens (with UK citizens covered in a bolt-on called the “bridge”). It always was a kludge designed to allow US companies to continue holding vast amounts of EU/UK data regardless of US government spying, and now it is on is on life support. The US Privacy and Civil Liberties Oversight Board (PCLOB) was a mandatory requirement for the deal but it has only one term-expired member, and the equally essential FISA Section 702 ↗ expired in June 2026. The expiry does not stop the surveillance, just the oversight that was negotiated. EU/UK businesses want to store their data within US control, and so these laws and frameworks are designed to make it legal for them to do so. In practical terms there is no protection for EU/UK citizens, so the legalities are a kind of compliance dance, and a very expensive one too.
...
This file is a Code of Conduct first written in 2020 for the LumoSQL project, with the heading: This file exists because the LumoSQL Project needed it, less than one year after starting in 2019. We take it seriously, and hope that most English-reading adults can understand what is said. We hope this is not needed very often. Collective kindness is needed more than ever in this global pandemic.
Here is Version 1.6 – Updated 9th February, 2026.
...
The detail of the GDPR and its implied computer science contain a solution for sharing secrets according to law. This continues to be true in 2026, as the Digital Omnibus Regulation ↗ takes shape.
Executive Summary
The GDPR sets up a conflict in trust between companies in particular circumstances, which can only be resolved by using the automation of a cryptographic audit trail with particular properties as described below.
Problem Statement
Under the EU’s GDPR ↗ law virtually every company is a Controller, and virtually all Controllers use at least one Processor. When a Processor is engaged, the GDPR requires that a contract is signed with the very specific contents spelled out in clause 3 of Article 28. The GDPR requires that Controllers and Processors cooperate together in order to deliver data protection, and this cooperation needs to be very carefully managed to maintain the security and other guarantees that the GDPR also requires. That’s what this mandatory contract is intended to achieve.
...
This is the second time ↗ the Court of Justice has decided the same question. After four years, in 2020 the Court concluded that the United States violates the privacy of EU citizens when the personal data of EU citizens is visible to the US government, and that the US has no intention of changing its behaviour. Therefore, US companies are not permitted to hold the personal data of EU citizens and residents.
...
The Fossil ↗ source code management system is the most fully-featured alternative to Git, and has decades of development and testing starting in 2007. After helping Fossil make some changes I now use Fossil for several projects. I also use Git extensively on various software forges (but not GitHub unless I must). Mercurial ↗ is actively maintained but has lost most of its mindshare since Mozilla ↗, Bitbucket and others migrated away, and is rarely chosen for new projects today. So it’s either Fossil or Git.
...