Hi, my name is Grant and I fixate on problems¶
Hi, my name is Grant and I fixate on problems.
It all started when I was young. I wanted a way to automate all the math problems I had to solve in school. That started my affair with computers. Rather than sitting down and solving the math problems myself, I could just teach the computer to solve them and then it could solve hundreds of variations on that problem. I was never much one for games but I loved the idea of computers playing games to solve problems. My intuition was often brute-force search, which, though I couldn’t do it in my head, a computer could do it in seconds.
My early successes with computers were habit forming. Whatever the problem was I thought I could solve it with a computer. I grew up in an area (Cupertino) where computers were all the rage anyways. Everyone spoke of them and their infinite potential. Would a computer become sentient? Would one cure cancer? When would we start learning from them ? Though I now see that their major use is making money in business and consumer markets, I hold on to the hope that their making the world a better place.
Whenever they ask me in an interview, “what’s your greatest weakness?” I hate saying something that can sound trite like, “I work too hard.” The more accurate truth is, “I can fixate on problems.” Fixating on problems has cost me, my family, and friends a lot. I’ve been mentally absent at birthdays and holidays because I was mulling over a problem. I’ve stayed up late and refused to change the subject because I was just so fixated. It feels like a moral issue to give up or even slacken a bit when attacking a problem.
I’ve already had the rude awakening that a lot of problems can’t be solved by computers or even by mental acumen. Social pressures and loves are a great example in my life; marriage, an even better example. I could be Einstein but still not really understand why she’s upset. (I love you, honey.) I get it, not every problem can be solved by a computer. Some, as I fixate on them, are nearly debilitating (yes, I’m thinking of you, Mission Year .)
But what I still struggle to accept is that some technical problems aren’t worth the fixation. That’s kind of what happened with the Quora Datacenter Cooling challenge. In 2010, I was visiting home for my Mom’s birthday when I stumbled on the problem. I wasn’t looking for a job, but the puzzle intrigued me and when I first saw it, I underestimated it. I thought I could knock out a solution in an hour or two. I’m glad to say I solved the puzzle, but not in an hour or two.
If you read the changelog in my solution , you’ll see that I worked on it five times, each about a week apart. On those five occasions, I reduced the running time from several hours to forty seconds. I’ve never been particularly good at these search-type problems. I’m bad at them because it always goes against my intuition to do more work inside the main search loop. The trick is for this “more work” to prune a lot more bad solutions but it’s hard to estimate that kind of thing. At least, it’s hard for me.
After those five occasions, I put the problem down for a few months. I wasn’t completely satisfied though because I hadn’t reduced the run time to under 5 seconds (this is the challenge). In the back of my mind, the problem was still there. I had moved on, or more likely gotten distracted, by other problems in life but I never really put this one down. The next entry in the changelog shows some big-picture thinking. This is a typical step for me in the problem solving process. If I can’t find a solution through a magnifying glass, I start zooming out until I’m sky-high. Though the big-picture idea would eventually lead me to that final step, I got distracted again and didn’t add comments or refactor the code.
Two years later, yesterday, a thought came to me as I was riding the bus to work. It’s another trick that sometimes helps with these search-type problems: memoization. I’ve been learning Python recently, so I figured I would test it with Python first. It didn’t work as well as I had hoped (maybe Python is too slow for this kind of thing) but I was back on the trail of the problem. In those two years, I hadn’t really forgotten about it. I just put it on a shelf in my mind. Now that I had picked it back up, I started researching the problem again. Places like MathOverflow hadn’t existed when I first worked on the problem. Now I could learn that final trick.
And so last night, in a classic I’m-sick-but-if-I-could-just-solve-this-problem scenario, I stayed home from Mission Year duties with a headache and chewed on the problem again. I put together some things I had been researching with my big-picture idea from 2010, I re-learned how I implemented an iterative solution, and I solved it. I did a little dance around the room when I saw it spit out: “Computed in 2.2004 seconds.” Finally, I’d done it.
My name is Grant and I fixate on problems. Whether it’s good or bad, I’m not sure. But I am sure I love solving problems.