Not Forking

Not-forking ↗ is a technical tool for software development. Not-forking assists with reproducibility. Here are some simple ways of explaining what Not-forking can do: Not-forking lets you integrate non-diffable codebases, a bit like patch/sed/diff/cp/mv rolled into one. Not-forking is a machine-readable file format and tool. It answers the question: What is the minimum difference between multiple source trees, and how can this difference be applied as versions change over time? Not-forking avoids duplicating source code. When one project is within another project, and the projects are external to each other, there is often pressure to fork the inner project. Not-forking avoids that. Not-forking helps address the problem of reproducibility. By giving much better control over the input source trees, it is more likely that the output binaries are the same each time. But here is the big win: Not-forking avoids project-level forking by largely automating change management in ways that version control systems ↗ such as Fossil ↗ , Git ↗ , or GitHub ↗ cannot. The full documentation ↗ goes into much more detail than this overview. ...

1 February 2026 · 3 min · Dan Shearer

Reversible Execution

Reversible execution creates computers that seem to run backwards, applying time shifting techniques with simulation/virtualisation to address software unreliability and complexity. I stand by my excited comments from way back in 2005: Reversibility is the biggest advance in debugging since source code debugging — Me, on the GDB developers list ↗ In 2026, reversibility still isn’t seen as an ubiquitous must-have for software development, but awareness is increasing. 💡 Confusingly similar names I also have an article on the totally different but similar-sounding topics of logical reversibility and thermodynamic reversibility . If you’re interested in the problems power-hungry AI datacentres present the world you might find it interesting. What is checkpoint-based reversible execution? Reversible execution is about giving the appearance of a program executing backwards in time. If you’ve not seen it before, it is just as strange and impressive as it sounds. ...

1 February 2026 · 6 min · Dan Shearer

Education Exercises

These exercises assume a CS graduate-level background and familiarity with the tools mentioned; they are for mentors to adapt for their students. I have either created or been subjected to all of them over the years, and I have mentored students through them on many occasions. The general theme here is that most of the systems and stacks that are taken for granted often don’t work very well, and often don’t seem to have a very bright future. This is even the case for famous codebases relied on by billions of people. There are no absolutes and no immediate fixes, but it is food for thought if we can demonstrate immense waste of human effort amid poor quality computing systems, even when impressive modern computer science is applied. ...

1 February 2026 · 6 min · Dan Shearer

Radio Waves to Random Number Generator

Random humans and computers Humans are terrible at randomness. If you ask people to write down a list of random numbers the result can usually be shown to not be random at all. Stage magicians and marketing experts exploit our inability to assess how random an event is. But computers, surely they should be random? It sure feels like it when your printer jams. But no, computers are often worse than humans at being random, and that’s a problem. Randomness is exceedingly important to making computers and networks work. ...

11 January 2026 · 3 min · Dan Shearer