Bad music

My new contender for worst song ever is the dance mix of “Kiss the Rain.” Somehow I managed to escape this song for most of its lifetime; however, it caught up with me: they play it every single time I am at the gym. Hearing the lady wail a barely-on-key refrain over and over and over again provides a strong incentive to either work out more often such that if I ever meet the guilty sampler, I may handily pummel him, or else to never work out again. I’m not sure which.

Also, gym people, please stop playing anything by Cher, kthx.

New computer

Allow me once again to sing the praises of freecycle, the group that exemplifies “one man’s trash is another man’s trash.” While I’ve unloaded a few junky things this route, last week was my first pick-up. A poster offered an “old” Dell case with Pentium III (733 mHz) motherboard and CPU, and I didn’t hesitate to grab it.

Now, let’s put “old” into context: the machine was evidently made around Y2K. I had my firewall running off of a machine that was also given to me, “old,” in 1999. It was a Pentium 100 that used to belong to a Gateway, had 64 megs of RAM and sat in an AT case. Remember ISA? Big keyboard connectors? Serial ports? This machine has served me faithfully, running a 2.0 Linux kernel for years, delivering mail and proxying all of my network traffic, even back to the days when the upstream connection was a modem. As of yesterday it was on a 160 day uptime — certainly I’ve had longer, but still not bad. I think the last downtime was when I painted my room and had to move it.

Enter my new “old” box. It came without RAM, but luckily I already had 512 megs of SDRAM sitting around. The CPU, video card, and network card included all looked fine, so I grabbed one of the net cards from box #1 and threw it in, swapped in my hard drive, and had it up and running. The fan was very noisy, so I took a trip down to Best Buy.

When are we going to get a Fry’s in NoVA already? To think that my best local so-called computer store is Best Buy… this is a sad state of affairs. Well, they did have case fans, but only the kind with blue blinking LEDs. Resigned, I plopped down my $10 and headed home to install the thing. The good news is that the machine is now quiet enough to act as the new firewall for my home. The bad news: blue blinking LEDs. How am I supposed to sleep with these things flashing all night? There’s no off switch and you can’t cover up the fan. One of these days I might take a soldering iron to the blinking light portion of this thing.

Anyway, a new, much faster, hash is born. Let us hope he is as reliable as his predecessor. And I look forward to getting a free Athlon 64 in 2011.

hashed

Despite earning my degree in computer engineering, I haven’t done anything useful with assembly language since I was a strapping young idealistic lad convinced that compilers lie along the road to inefficiency. Much has changed. Heck, I write Java code for a living now — pretty much the opposite of efficient. I have to have a gig of ram just to run that sucky ant program.

While hacking my MP3 player, I discovered that the filesystem uses hashing to quickly lookup file names, which brought up the question of which hash function it uses. While I suppose one could reverse the hash function knowing a very large set of inputs and outputs, I decided it would probably be much more expedient to just put my atrophied x86 asm knowledge to work for me.

This turned out to be a lot easier than I thought. It only took about 20 minutes and I never had to step through code in a debugger.

Step 1: Disassemble Windows program for loading files onto the device, including the data segment. Look for the offset of a useful printf format string (“hash is %d, expected %d”).
Step 2: Search disassembly for loading said offset in a call to printf. Not surprisingly, this is right after the computation of the hash.
Step 3: Examine nearby calls for things like shifts and mods (common hashing operations).
Step 4: Relearn the stupidities of the x86 ISA (ecx is a loop counter, eax and edx figure in mysteriously for divides, etc).
Step 5: Convinced that a nearby call is it, reimplement in C and test.

Booyeah.

My eatin’ room

As promised, here is another installment of My Kitchen Hates Me. Since last update, some doors have been added to the high cabinets and they have entered actual use; most of the base cabinets are in place and just need to be leveled and mounted to the wall; the pantry is ready to go; the trim was painted white and looks really nice. Still remaining: I need to get a vent hood and possibly cut down the appropriate cabinet so that the hood will fit over the existing hole, buy a countertop, move two base cabinets over about 4 inches so that a drawer will open fully instead of hitting the door molding, attach cover panels and kickplates and doors and drawers. So, most of the hard work is done.

When I get an ETA on the countertop install, I’ll start planning a welcome-back-to-my-house party as only the brave have ventured in since… how many years has it been since I started this project? Dave, you’ll have to drive down from Philly (and bring some cheesesteaks).

In other news, A.C. and I and a bunch of others went kayaking on the Potomac. I now regret not having tried that much earlier. It’s a lot easier than my previous kayaking expedition, which I spent the whole time calculating how quickly I could pull my skirt and how many ways I would die if I didn’t. Kayaking the Potomac is a breeze, like those pedal boats but not as cheesy.

Blah

Last weekend saw the debut of my cowor-ker’s new rock band, the 15th Annual Rosslyn Jazz fest, GT vs UNC — watched at Mister Days, and lots of work on my kitchen. My goal was to complete the kitchen cabinets on Sunday; I didn’t, but I did at least finish hanging all of the wall cabinets. So if I get the base cabinets finished this week I can go buy a countertop. Expect a kitchen pictorial update soon.

I have also made some progress on my Karma reverse-engineering project. It is taking longer than I had hoped since I have had to learn all sorts of esoteric kernel stuff, but now one can, if one is bold and doesn’t mind kernel deadlocks or huge memory leaks, mount and read the files from the Karma. Neat.

Labor days are here again

Now that it’s Wednesday, it’s time to recap the weekend. I’m a slacker.

Saturday night I had the pleasure of seeing Derek Trucks Band (again) with Angeline up at the Recher. DTB was in good form with a mostly new set (not even Joyful Noise made an appearance) featuring some good gospel-y numbers and a straight-ahead jazz rendition of Greensleeves. Good stuff, listen for yourself.

A pleasant surprise was Baltimore-based opener Jayakar, who turned out a set full of nicely arranged, funky, memorable jam tunes. Apart from some weakness in the vocals department, the band has got it together and I look forward to seeing them on their own soon.

On top of that, we discovered a nearby billiards and table tennis Mecca, as well as a nice place for a five mile hike. Thus I suggest a new slogan for the Maryland tourism board: “Baltimore: why not?”