I recently packed my old blog, Notes of Chaos, into a PDF. While slowly re-reading it on my iPad, I came across this review of Autofac.
Short version: If you want to know how it feels to debug a program or hack something, read Autofac.
Capturing realistic technical struggle
I read Philip K. Dick’s Autofac last night.
The Autofacs (autonomous factories) were designed to get humanity back on its feet in the event of a nuclear holocaust (“Total Global Conflict”), which happened five years ago in this story. They do this by gathering natural resources and then manufacturing and delivering all of the goods that people need.
Unfortunately for humanity, there is a huge bug in the Autofacs: they harvest all of the natural resources and will back away from them only when human productivity matches that of the Autofacs’. That level of productivity is kinda hard for humanity to achieve while the Autofacs are taking 100% of the resources. Thus, humans must depend completely upon the Autofacs unless they can be shut down.
It’s how they try to stop the Autofacs that’s interesting. They start by thinking of stimuli that that might throw it off, then systematically run through each of them. They feel that it is hopeless, but they try these tests anyway. And one of the tests does get results.
The humans tell the Autofac that the milk it manufactures is “pizzled.” The Autofac doesn’t know what “pizzled” means, so it sends out an agent to get the definition and resolve the complaint. This is a chance for the would-be Autofac hackers to influence the Autofac, to get it to behave the way want, at least in some small way. Perhaps even expose other hooks into Autofac. The heroes are overjoyed by this little triumph.
Of course, when the agent comes to investigate the “pizzled” milk, they lose patience and botch the opportunity. Really, mistakes in such a situation are perfectly understandable. The humans had no idea what the agent was going to say or how it would respond to them. Yet, it was so important to make something of the opportunity because it was so damned hard to set up.
This is exactly how I have felt when working on those especially bizarre bugs that offer little or no clues. Looking at the most likely source code doesn’t help. No one else seems to have hints. Often, bugs in this confounding class are caused by factors outside the product. In any case, you have no good place to start, so you just have to start stabbing. You may be stabbing for a long time without hitting anything, and it is hard not to second-guess yourself.
In the introduction to the The Minority Report and Other Classic Stories by Philip K. Dick, James Tiptree Jr.” says that Dick is not technical. She says that “he probably knows what happens when you plug in a lamp and turn it on, but beyond that, there is little evidence of either technology or science.” Yet somehow, Dick has captured very well the sense of desperation and the struggle to maintain patience and rationalness which arise in technical struggles that involve a lot of unknowns.
I have not seen that done in any other story. And he does it in such clean and simple language.