Archive for the ‘Personal’ Category

I cannot fix your Windows computer

Tuesday, June 16th, 2009

A friend asked me to help fix her computer. It’s a Dell laptop running Windows XP Home and it became infected with a virus. She was able to partially remove the virus, and I helped her remove the rest of it, but now the infamous Blue Screen of Death appears about a minute after booting into anything other than Safe Mode.

It wasn’t obvious what was causing the crashes, but I found out I could use a Microsoft Debugging utility to read the memory dump files that Windows creates on each crash. I offered to take the computer home with me, so I could plug it into a network and install the utility and finish the job.

Booting into “Safe Mode with Networking” worked, so I was able to download the utility, but I was not able to install it. I was told, “The System Administrator has set policies to prevent this installation.” That was confusing, because I logged in using the fucking system administrator account. Now I am pretty sure that the error message is inaccurate, because some lazy asshole at Microsoft decided to use that very specific text as a generic “operation failed” message.

It turns out that the installer program requires the Installer Service to be running, but the Service cannot be started in Safe Mode. So, if I want to use the debugging tools, I am caught in a catch-22: the computer will crash if I don’t use Safe Mode, but I can’t diagnose the crashes if I do use Safe Mode.

After chasing my own tail for longer than I’d like to admit, I realized I could try finding some other tool to extract the utility from the installer package. I found such a tool, and in the process I learned that MSI archives are apparently unable to store file extensions, so when you unpack them, you have to manually insert the dot in hundreds of file names. I do this for a subset of the files that seem necessary to run the diagnostic program, and finally, I get it to run.

At least, I think I do. It outputs a lot of error messages, but the instructions I am following from some sketchy website say it is normal to see a lot of messages, so I have no clue if it’s working or if I need to add more dots to more filenames. I blindly forge ahead, and finally get it to generate a report from one of the memory dump files.

The goal, in case you’ve forgotten, is to find out what is responsible for crashing the kernel. The report indicates the memory location where the crash occurs: Good. It also contains a list of loaded drivers and what memory locations they occupy: Good. So I scan the list to find the culprit. While every other line has a driver name, this one has the name “00001b6f” or something like that. No name, just a hexadecimal number without context. WTF?

So, I give up.

To be clear, I’m not just giving up on this job, but I’m giving up on ever attempting to “fix” a computer running Microsoft Windows ever again. It’s been so long since I used one regularly that I’m no longer familiar with all the voodoo incantations required to make them work. The only thing my technical knowledge buys me is a misleading sense of being “one step closer” when in fact I am running in circles. It is painful and frustrating and humiliating. I honestly feel like I’m the butt of a joke right now. Like I’ve spent four hours trying to catch a pig on a dare.

By taking this computer home, I thought I was doing a favor for a friend, but now I realize that she has done a favor for me. I’ve learned a lesson. I’m sorry, I can’t fix your computer, I don’t know how.

Needless failure

Thursday, April 9th, 2009

People who know me would probably be surprised by the grades my college transcript. In general, I did well, but my GPA was not stellar. I think I’ve got each possible letter grade represented somewhere on there. The one I want to tell you  about is my one A+.

Ten years ago, in the spring of 1999, I enrolled in CS 212. At the time, Cornell computer science students could choose between CS 211 (“two-eleven”), which was taught using Java, a practical programming language used in the real world, or CS 212 (“two-twelve”), which was more nerdy and mathematical and required learning Scheme, a language nobody had ever heard of, because nobody uses it outside of courses like this.

Due to a mixture of ego and peer pressure (the same mixture that later pushed me into advanced physics classes I shouldn’t have taken), I elected to take 212. For somebody who had already learned a good bit of programming by fooling around with computers throughout middle and high school, it was an eye opening experience. Scheme was my introduction to “functional” programming, and it was both weird and beautiful. The professor and course staff talked about code being “elegant” in a way that I had never heard before but immediately understood. I got this class and I loved this class.

Thus, it was heartbreaking when the first problem set was graded and I received a less than perfect score. As I already said, I was not accustomed to a perfect record, nor did I feel it was my due. But I remember reviewing the problems and realizing that I hadn’t lost any points because I didn’t understand the material or couldn’t figure out how to solve the problems. I lost points because I was careless. I put off the assignment until the night before and rushed through it. I realized that if I had spent any time checking my work I would have caught all my mistakes. I had no excuse for a less than perfect score.

Considering how much I loved the class, it was embarrassing. So I swore that, for the remaining assignments, I was not going to make any mistakes. I said it out loud, walking down Libe Slope on the way home from my 212 section. (It didn’t hurt when I needed to find a partner for future assignments.)

I kept my word and aced the remaining problem sets. I did well on the tests, earned an A+ in the course, and was later asked to be on the course staff. CS 212 will always be a fond memory and point of pride of my time at Cornell.

My recent audition for a Harold team has reminded me of that moment; the parallels are uncanny for two such apparently unrelated things. While I joined everybody in wondering aloud why they didn’t get picked, I knew that if I was placed on a team it would have been in spite of my audition, not because of it.

I know that, at the end of the day, there are a million factors out of my control that would affect whether or not I would be picked out of hundreds of other qualified people, and I accept that. But that does not excuse me from taking responsibility for all of the factors that are completely under my control.

Today, that is what I will set out to do.

I joined a gym

Thursday, March 12th, 2009

In February 2006, feeling fat and horrible, I decided I had to do something about my weight. I think the first thing I tried was eating breakfast, which was kind of a big deal, since I was raised in a maybe-a-Pop-Tart-on-the-way-to-school household.

Countless people will tell you that studies show eating breakfast will help you lose weight. (Almost no people can tell you exactly which studies show that.) The general idea is that if you eat breakfast you’ll be less hungry at lunch time. Perhaps I was overweight simply because of my breakfastless upbringing?

I bought a box of raisin bran and a quart of milk. I ate a bowl every morning for a few days. It was a disaster.

First of all, I hadn’t been a regular milk-drinker since high school, so my lactose tolerance wasn’t what it used to be. But, more importantly, I didn’t feel any better and wasn’t inclined to eat any less at lunch.

I was always suspicious of the argument for breakfast. I realize now that the “hunger” angle, though it might be useful for some people, made no difference to me. I don’t eat because I am hungry; I eat because food is there. Even if I don’t need it. Even if I know I will feel awful. So what’s the use in reducing my hunger, when hunger is rarely the reason I eat?

Before I could become completely discouraged, I discovered The Hacker’s Diet, which imparted to me these ideas:

  • Your body is governed by the same laws of physics as everything else. Mass and energy are conserved. If you consume more than you burn you will gain weight. If you burn more than you consume you will lose weight.
  • Food, exercise, and your weight can all be measured in calories. A pound of fat contains 3,500 calories of energy.
  • If you track your weight using some basic statistics, you can see progress (or regress) long before any other indicator.
  • Your body is a sophisticated system, and as long as you aren’t stupid (don’t starve yourself or contract scurvy) you will be fine.

I bought a scale and a Palm Zire (to run Eat Watch), and began to track my weight. On February 21, 2006, I weigh 211.5 lbs. Because eating lunch with my co-workers is an important social activity, I decide not to change that. I avoid keeping much food in my apartment. On March 5, 2006, I weigh 206.5 lbs. For the first time in my life I feel like I have control over this. I ignore the “helpful” people who preach that I shouldn’t eat the pizza at engineering meetings and should bring steamed broccoli from home instead. On April 1, 2006, I weigh 198.0 lbs. I sleep in a T-shirt and shorts so that I can roll out of bed and walk directly to the room with the elliptical machine in my apartment complex. It had a 25-minute program called “fat burner”, so that’s what I use. On May 2, 2006, I weigh 191.0 lbs. My persistent cough is gone. I ignore the meatheads who insist complementing cardio with resistance training is essential. On July 4, 2006, I weigh 182.0 lbs. I change jobs and leave Pittsburgh for New York City. On September 4, 2006, I weigh 177.5 lbs.

In New York I no longer have easy access to an elliptical machine. I have access to 24-hour public transportation and people to drink beer with. On November 3, 2006, I weigh 183.5 lbs. I join the New York Sports Club and go fairly regularly after work. On May 18, 2007, I weigh 171.0 lbs.

It’s hard to keep up the habit. On January 5, 2008 I weigh 191.5 lbs. I quit my job and begin to freelance. There’s no excuse to miss the gym now. On June 28, 2008, I weigh 183.0 lbs. It’s hard to keep up the habit. I’m looking to save money. I cancel my membership. I live near the park now, I can run there for free. It’s hard to make that a habit. On October 27, 2008, I weigh 190.0 lbs. Barack Obama is elected President. On January 20, 2009, I weigh 195.5 lbs.

On March 5, 2009, it is my birthday. I am 29 years old. I weigh 200 lbs. Again. On the phone with my parents, I can’t decide if I should join a gym, when my business isn’t profitable, when I live nearby a park. My parents remind me that I am dumb, but they will give me some money for a membership, as a birthday gift, if that will get me to sign up.

On March 5, 2009, I joined a gym.