The Obsessive
by David Ashley, October 17, 2015

There is a certain type of person who is able to obsess over things. Then there is the "normal" kind who doesn't care much about anything, ever, and isn't able to obsess over things. Obsess is used in a way that anyone who is capable of obsession will understand. That is, if you have the capacity to obsess then you already know what I'm talking about. You are my audience here. Not everyone else.

The obsessive seem to be able to recognize obsessiveness in others. The above XKCD comic illustrates it. Randall Monroe is of the obsessive type. He's the creator of the XKCD comic site.

There is a book by Susan Orlean called The Orchid Thief which is based on a short story published in The New Yorker magazine. In that book she mentions how she never felt especially passionate about anything, and she wanted to meet with a fellow (John Laroche) who obviously was passionate about at least some things. She expressed regret that she didn't feel passionate about anything, and that she wanted to know what it was like.

The world is moved forward by obsessive people, not the other kind.

A thing about obsessive people is their mind keeps getting drawn back to certain things that capture their interest. Lots of people are obsessed with puzzles, such as word puzzles, or math puzzles. Or solving problems. In programming there is a common occurence where a program doesn't work, or it works sometimes but fails miserably other times, or it slows down or partially fails sometimes. Buried in the code is a bug of some sort, or an algorithm that doesn't scale well, or something.

I can't tell how many times I've had to solve such problems. You dig and dig, study the code (often the problem is in someone else's code that existed before I ever got involved), figure out how things work, figure out what was going on in the mind of the programmer. You figure out what was intended. You make changes to the code, see what happens. You try to make it fail in the same way it has been. You try and discover the conditions under which it fails, and if you can reliably induce failure, the underlying cause is much easier to discover.

The most tricky problems are ones that are known to exist but are very, very rare. Things were in typical operation a unit might fail only every few days. Sometimes you can be lucky enough to have at your disposal many units to test on, or dozens, or even hundreds. So you can run tests on all of them at once, trying to make some of them fail. And if you can figure out the units that have failed, you can sometimes run some tests while they're in their failed state and learn useful information.

One thing in general I've noticed is that there seems to be some general tendencies that follow national lines. Specifically the example that comes to mind is how programmers from India attack difficult to reproduce problems. There seems to be a method they use where they set up accounting methods where they can accurately measure failure rates. Then they tweak something in the code, and take a measurement. If the failure rate is reduced, they keep the change. Otherwise they revert it. This forms a sort of evolutionary basis for problem solving.

It's been my experience that never works. There is no substitute for really understanding the root cause of a problem. And to really understand it there is no substitute for focusing all one's attention on the problem, studying, learning, digging, until everything related to the problem is held in the conscious mind of the individual. Suddenly there is the flash of understanding, and the cause of the problem is known, and the solution is always trivial. Just a single line of code needs to be changed, or a single instruction, and the problem is fixed.

Neal Stephenson in Cryptonomicon describes a hypothetical person who gathers altitude data from people walking around a city. The data is the form of graphs showing their height as they walk along. When they come to a curb and step down into the street there is a slight drop in the graph. Then a bit later there is a rise when the person makes it to the next corner and steps up onto the sidewalk. The scale in the horizontal direction isn't known, because each walker moves at his or her own pace. But Neal Stephenson says an obsessive person, armed with enough such graphs, could combine them all until he ends up with a street map of the city.

I am an obsessive person. So such descriptions ring a bell with me. I ocassionally wonder what life is like for people that aren't like me. What do they think about all the time? Is there something I'm missing out on, that is even more fascinating than the things I think about?