I failed to debug my toilet the other day. I knew there was a problem because it was leaking water onto the bathroom floor. There was even enough water that it was noticeable after I got out of the shower and still had wet feet. My first reaction was to ignore it, but the risk of water damage was too great, especially to an area below that just been remodelled.
I had no idea what to do about it, though. I mean, I know how to debug system software. Why can't I figure out what's wrong with my toilet? Is it really that complicated?
But then I realized that the main problem is primarily one of confidence. I've debugged some hard software problems in my time. And as a result of experience, I've developed a systematic approach to finding and fixing bugs - an approach that has been proven to work. It's all based on discipline, I guess. But with the toilet I had no idea where to start and I had no confidence that I would be able to fix it at all.
So I called our general contractor who's already done a lot of work on the house. He asked, "Where on the toilet is the leak coming from?" Smart question - I wish I'd thought of that. I told him I didn't know, but I would check and get back to him. He said it was fine, and that he would stop by anyway. Great guy. Turns out the leak was coming from the base of the tank, which sits on a rubber seal. We recently had adjusted the rate at which the tank refills. At the same time, we probably had changed the incoming water pressure as well, since the valve had been opened and closed a number of times in the process.
All those changes had somehow resulted in a condition where the tank wasn't squeezing tightly enough the seal at its base. The contractor tightened a wing nut that fastens the tank and - bang - fixed.
The result of this experience? I now know more about the complex system that is my toilet. Next time there's water on the floor, I have a good foundation of a process for isolating the problem. Just like software ...