Old friends

A few weeks ago, I decided to create a myspace account on a whim. Today, out of the blue, I get a friend request from a girl named Jessica. It turns out that it’s the same Jessica that was my first “girlfriend” in kindergarten and first grade. I had lost touch with her for a while after I switched schools in second grade and her mom moved to Colorado shortly after. The last time I saw her was 9 years ago when we were 13. Today was the first time I’ve talked to her since then.

We talked online for a few hours and got caught up. I really enjoyed our conversation, and I look forward to actually seeing her the next time she comes out to Missouri to see her siblings that live with her father. I told my wife about this, and of course, she over-reacted initially. It’s not like Jessica is out to “get me back” or something like that…she’s actually looking forward to meeting my wife. For some reason, my wife always seems to think that someone is waiting just around the corner to take me away from her. If you’ve seen my picture, you’d know this is just crazy :)

She seems to have returned to “normal” for now, but I’m sure I’ll hear about it later :roll: Anyway, it’s worth whatever crap my wife may give me to have have an old friend back in my life, however limited (by distance and such) it may be. I have more than a few acquaintances, but I have very few good friends, and I’m hoping Jessica turns back into just that.

I think my truck hates me

I’ve begun to think that my truck hates me. Last weekend, I had it at the shop because the heater has been working intermittently this winter. It turns out that the heater core was clogged, which meant that very little hot coolant was flowing into it to actually make it work. On top of that, I needed new back tires. Those two things ended up costing me just shy of $400. A few months ago, I had all 4 shock absorbers and the front tires replaced as well as a frontend alignment and something else I’m forgetting. All of that cost $800 or so.

Tonight, when I started my truck to leave work, the Service Engine Soon light came on. I was not happy. I stopped by AutoZone on the way home to have them pull the diagnostic code. The guy hooked up the reader and the first thing he said was “Ooh, this is a fun one”. I cringed. The code was “random cylinder misfire”. I cringed again. He said that there a few things that would cause this problem. The first was a fuel pressure problem, which makes sense since my truck tends to idle a bit rough and have some problems starting (when the engine is cold (regardless of outside temperature), I have to turn the key for 10-15 seconds or even a second time). The second possibility is the crank and/or cam sensor. I’m sure either of these possibilities will cost me lots more money. Hopefully, this will be covered under the 3-year/36,000-mile coverage plan I got with my truck when I bought it in September 2005. I guess I’ll call the dealer tomorrow.

Installer Overhaul

For a while now, codeman and I have been working on a major overhaul of GLI (Gentoo Linux Installer or “the installer”). After I wrote Quickstart, it became apparently that the entire reason for GLI’s current design was no longer valid, since Quickstart was already more functional as an automated installer than GLI ever would be. We decided to drop the “configure first, then install” structure that the installer was originally designed with.

The results have so far been more than we could have hoped for. The entire install is now done in real-time (like virtually every other installer out there). For example, adding/deleting a partition takes effect immediately, clicking the Next button on the stage selection screen downloads and unpacks the stage before you move on, etc. Just the partitioning change has eliminated one of the largest complaints about the installer of old (it tended to eat partition tables if there was anything “weird” about the existing layout, such as partitions out of order, primaries after an extended, overlapping partitions, etc. due to the fact that it had to track all the changes in memory, serialize it to XML, read it back from XML, compare to the existing disk layout, and then make the existing match what was in the XML).

This allows us to do many things that we couldn’t do before, such as allowing the user to go back and change a setting if an install step fails, opening up an xterm/gnome-terminal window for ‘make menuconfig’ so the user can configure their own kernel, etc. Of course, you now have to babysit the installer, but you have to do that with a manual install, too.

%@#^&! My knee!

Over the weekend, I managed to dislocate my left knee. Needless to say, it hurt like hell. I managed to pop it back into place right after it happened, but it’s swollen and I can’t put much pressure on it. It’s currently in an immobilizing brace pending a visit to an orthopedist.

The story of how it happened is slightly humorous (even to me). There have been some pine cones in the bed of my truck for about a week. They’ve been rolling around back there making all kinds of noise, which has been getting on my nerves. I decided to climb into the bed and toss them out. I put my left foot up on the tailgate (which I always do). I started to push myself up using my leg and my right arm, and then I was on the ground. I’m still not sure whether I fell and twisted with my foot still planted firmly on the tailgate, which caused my knee to dislocate, or if my knee dislocated by itself, which is what caused me to fall. I blame the pine cones.

I do have a request. If you are going to make jokes at my expense, please include me in on them, because I can always use a good laugh 😉

UPDATE: I’ve got an appointment for the orthopedist tomorrow (Tuesday) at 10:30 AM. He’ll probably just tell me to keep wearing the brace until the swelling goes down and happily take my money. Such is life…

Oops, I did it again

You may have read about when I first dislocated my knee cap (here). Well, I’ve managed to do it again.

There was a big “winter storm” that came through St. Louis last night. There’s snow and ice all over the damn place. Well, I drive a 2003 Chevy S-10, which unfortunately, is rear-wheel drive. That means that it has absolutely horrible traction on anything the least bit slippery.

Anyway, my truck got stuck trying to pull into a parking spot at my apartment. My wife was in the driver’s seat, and some helpful people and I were pushing the back of the truck. The truck finally gave and surged forward. I slipped and my knee went sideways. The knee cap popped out of place and then immediately back in.

It hurts a hell of a lot less than the first time I did it. I guess I already did most of the damage to the surrounding tissue the first time. I can still walk on it somewhat, which is definitely a good thing. At least I have two and a half days before I have to go back to work (my work was closed today due to the snow).

Python threading sucks

Recently, when testing the installer, we noticed a weird issue. When ’emerge sync’ is run, rsync would complete the sync but not exit, which caused the install to hang. It took 2 days and a lot of frustration to finally track this one down. We owe the answer to d_m (on freenode).

The installer runs with 2 separate threads. The frontend is the main thread and the backend starts up a second thread to run the commands that perform the install. It turns out that when python creates a new thread, it blocks all signals for that thread. I’m not quite sure why. This has the side effect of blocking all signals for any processes that are fork()ed and/or exec()ed from that child thread.

Rsync fork()s when it’s doing it’s thing. One process waits for a USR2 signal from the other before they mutually exit. Since python had blocked all signals, the signal wasn’t getting from one process to another so they could exit. d_m’s solution was to write a small C program that resets the signal mask when running external programs. While this works, it is a huge hack. Although, this bug should be fixed in python 2.4 :-/

Installer FAQ

I just finished putting together a FAQ (URL changed) for the Installer project. We’ve been getting asked these questions over and over again, and it was starting to get a little bit annoying. Questions, comments, additions, etc. are welcome.

C3600 joys

After all my frustration with the original C3600, I found a barebones (no video, memory, or disks) C3600 on eBay for $100 (~$150 after shipping). I’ve frankensteined (I love that term) them together and now once again have a working C3600. Hurray!

Yet another arch

The other day, I obtained a cute little 333MHz iMac via eBay to use for installer work. After getting it, I find out that it uses SO-DIMM instead of SDRAM, so I can’t pull memory from my other boxes to upgrade it from the 64MB it has now. I’ve got a laptop, but it only has 28+128 currently, so I don’t want to pull any from that. Back to eBay, I guess. Isn’t it cute?

imac front   imac front