Hacker's Diary

A rough account of what I did with Emacs recently.

December 31
End of the year... mostly cleaning up bits and pieces of junk code. The RVP is running under valgrind at the moment to see just how leaky it is when doing nothing. Bye bye 2005!

December 30
RVP: weirdness with caching DNS lookups (again I find myself cursing the fact that the async DNS stuff the Gaim authors wrote is locked up in private functions) which is possibly down to a static variable not behaving as I expected. I've fixed up most of the ACL parser at this point, plus the transfer of data from temporary records to the buddy list records, and I've fixed a bug in the buddy-remove code. Progress, of sorts, is being made. Of course, as soon as I get into my stride the stupid server hits the locking bug again, despite my attempts to switch it off per the instructions in the documentation.

Had another go at XPath, but the only positive result was finding a bug in my crappy RVP server. Which, apparently, MSM doesn't care about, which tells you all you need to know about its XML parsing... XPath is annoying me, so I'm ignoring it in favour of crawling across XML trees looking for the bits I want. Ick.

December 29
Ok, I see why AuthenNTLM locks in the code, but I'm not clear why it gets triggered. I can see how to switch it off, too, which is more important.

About 35 minutes into Five Easy Pieces I'd completely lost interest. I'm afraid this so-called 70's classic does nothing for me.

The Recruit, on the other hand, did a good job of keeping me both engaged and guessing right up to the end. Pacino sort of reverts to his character from The Devil's Advocate at the end (I guess that's his "bombastic speech" routine or something) but this is a pretty tight movie all told.

More RVP work. Found a gaping hole in the ACL parsing, which really would be a lot cleaner if I'd just go and learn XPath; however, having fixed that I can now deal with unsolicited ACLs and passing them onto a newly-added buddy. Not sure how often this is actually an issue, but it's something I'd been missing.

December 28
Found myself watching Six Shooter, which is a pretty grim short film - IMDB refers to it as a black comedy but I'm not sure I saw any laughs in it.

Found the crashing bug in the RVP code I mentioned a few days back: a frickin' debug message dereferincing a null pointer in a code branch where I knew the pointer was null. Bah. Did a bit more work on unsolicited status info which fills a gap or two I wanted filled before releasing anything.

December 27
Back in Dublin. O Brother, Where Art Thou? was kinda fun, but not exactly epic brilliance. I did like the music, though.

December 26
Christmas movie-watching included Churchill: The Hollywood Years which was hurtfully funny. In fact, I think I missed a minute or so because I was laughing so hard. I also watched Pirates of the Caribbean (again) and managed to miss the start of The Santa Clause (again).

December 25
Woo! I got a pile of books and DVDs for Christmas!

I also spent a few minutes fixing up the tracks on my "MP3" player as the last time I loaded it up it didn't detect the serial number properly, so the scrambling didn't work. I'd started to write an in-place fixer program, when I realised I just needed to copy the tunes off using the cp tool I made, then copy them back on with the correct serial number. Hurrah for laziness!


December 24
Off to the family mansion for Christmas. The gps toy did silly things on the way, but mostly worked right. The silliness was caused by bouncing over rough "national route"-class roads.

December 23
So I'm showing someone that the RVP client works and *blam* it falls over. D'oh. Looks like something to do with the hashtable I use to deal with unsolicited notifications, which is all fairly flaky code at the moment.

December 22
Woohoo, the bugfix works! I need to do a valgrind or two on the code now, and then I'll offer a version 0.5 or something for download and abuse. Complete with a list of things I've not implemented...

December 21
Found an insanely stupid bug in the NTLM code, which was at least where I'd expected to find it. It's the code I've done the least work on and it's full of statics which I really need to get rid of because I don't know if it's getting called from threads or not. Still, that should be the last of the immediatly show-stopping bugs. There's still a question of how some data was getting corrupted, but it may simply be a matter of dealing with uninitialised memory.

December 20
Implement feature. Test feature. Cry when feature works exactly as designed, but design was wrong. Wah.

December 19
Patched up the redirect code in RVP a little; it might actually work, now.

December 18
Further adventures in RVP: having the server set a subscription timeout of 120 seconds makes the windows client TOTALLY unhappy, by which I am determining it resubscribes well before the timeout. I'm currently trying to figure out exactly how much "well before" constitutes. Also found the server bug that prevented resubscribes from working: when the client resubscribes, it doesn't say what kind of subscription it's making, it just passes in the subscription ID; you then need to go look at the subscription list to find out exactly what kind of subscription that is.

And more fun. There's an undocumented POLL method. Triffic. Also, as I suspected, the protocol is wide open to spoofing, particularly if you're running in fixed-port mode. Muahah.

And an undocumented message type. How come I never found any of this stuff before?


December 17
Well, that was annoying. The default setup for Gnome on Fedora Core interprets Ctrl-Alt-Del as "log out of desktop", which isn't quite what I wanted to do with a dozen windows open.

Trying to clean up the RVP NTLM auth code somewhat so that it's less network-abusive. In doing so, I run into, once again, some sort of flaw in the AuthenNTLM module which makes it hang occasionally. Something to do with locking, I think.

Saw most of Fatal Instinct, which wasn't bad - not as good as a Zucker/Abrahams/Zucker flick, and the whole "source of incidental music is an item on the set" gag was overused, but still good for a few giggles.

December 16
Ah, I remember this back in the day when I obsessively tracked kernel releases: install new kernel, break everything. Woo woo.

December 15
Turns out Safari (or, I dunno, some other Damned Thing) wasn't happy with my front-page IFRAME. I'm really not sure what was wrong, actually. Maybe it's the MTU problem I mentioned a while back, too. Either way, I wasn't happy with the IFRAME anyway, so I've gotten rid of it while I think of something better to do with the front page.

I've never seen any of the League Of Gentlemen stuff before, so my first taste of it was The League Of Gentlemen's Apocalypse and I can't decide if I'm simply not getting the in-jokes, or if it's more of the sort of humour I dislike, or maybe it's just not that funny. The conceit is kinda amusing - fictional characters find out they're being written out of existence and go hunting for their creators in the real world to try and prevent their extinction - but I found myself poking at web pages and wandering off for a cuppa in the middle of the movie, so I can't say I was hugely impressed. Curiously, it's largely filmed in Ireland; I could've sworn the opening shot was somewhere like Cape Clear, and it turns out I may not have been far wrong!

December 14
Working on those glitches, I am. Also having yet more fun with cryptodisks. Yeek.

Hum. Something appears to have changed in POE that stops http://proxy:8080 from working - it breaks trying to resolve. If I say proxy.waider.ie it works fine, but my resolver is already configured to add the domain. WTF?

After some effort and a bit of finger-crossing, I managed to hand-mount the encrypted partition. I still have to figure out what's missing from my initrd that's preventing it from auto-mounting, but hey. Baby steps. The ones that worked were to use gpg to decrypt the key into a file under the initrd shell, then use the modified losetup program and the key directly rather than using the redirect through gpg. There's that insecure feeling about having a key in the clear on the highly temporary non-swapping ramdisk, but *handwave*

Eventually I come to the conclusion that loop-AES is only marginally compatible with dm-crypt, and hacking is required to improve on that. Bah.

December 13
So the good news is that I have clearance to spew my RVP code out on the web. The bad news, for anyone looking for it, is that I'm not yet inclined to do so until I fix some of the more embarrassing glitches. There is that chunk of code over at sourceforge that you can use, you know.

December 12
Hmm, fun and games trying to do kernel upgrades on the crypto-disk system. Mainly non-functional fun and games. Grr.

Adam and Paul is sort of an Irish Trainspotting without the glamour, much of the humour, or the extensive timespan. In other words, it's a pretty grim day in the life of two junkies in Dublin as they try to score, and the most humour you'll get out of it is an occasional slapstick-induced smile. Grim, grim, grim.

December 11
Spent most of the day at a museum in Turlough (near Castlebar) meaning I spent most of the evening driving back to Dublin. Well, not really. I got lucky enough with traffic that I was home before 9:30, but that did account for most of the evening.


December 10
Saw the second half of Cutthroat Island, which I believe was a total flop (bankrupted its production company, according to IMDB); I can't say it was particularly bad, in that I've seen a lot worse movies, but it wasn't exactly gripping, either.

Snow Falling On Cedars had an interesting story but I wasn't wholly impressed with the film, particularly the jump-cuts during the expository flashback sequences. Probably I'd have been better off reading the book.

December 9
The funniest thing about Point Break is that the poster-boy for the goofy slacker has noticeable trouble playing an FBI agent playing a goofy slacker. Still, some nice surfing and skydiving bits, and I did watch the entire thing. And I own it on DVD, too. I'm not really in a position to complain about it.

December 8
As predicted, ended up flushing the entire thing. Now to figure out whether I want to actually trust it with real data.

December 7
More crypto fun. The filesystem was damaged, and nothing I could think of doing with debugfs and tunefs would get it back into a state where I could mount it as ext3. In the end I mounted it as ext2, copied off the files that weren't trashed, and remade the filesystem. Bah. I'll probably end up flushing the entire thing anyway, but this is hardly a good failure mode.

December 6
Ok, so I have indications that the split-brain filesystem may be something to do with loop device on a file coupled with a journaling filesystem, but only indications thereof.

December 5
Dealing with a split-brain filesystem: first, it mounts ok, then it starts giving errors, and when I fsck it I get the sort of failures that indicate that it shouldn't have mounted at all. Bizarre. Just as well it's a copy...

In other news, my 3com router is doing something naughty with MTU. Specifically, I think it's blocking MTU discovery; besides, it's got the annoying trait of blocking traceroute outbound. Anyway, I decided to check for a firmware update. There is one. I read the instructions. They do not fill me with confidence:
5. Upgrading to This Release
[...]
  • Back up your existing configuration. The upgrade will not erase your configuration, but 3Com recommends backing it up, in case there is a problem with the upgrade process.
[...]
-Resetting the device back to its factory default settings is required for proper operations.
-Do not reuse configuration backup's from a previous version after an software upgrade.
So, I can back up my config, but I have to factory-reset the device, and I can't use the backed-up configuration. Excellent. I think I'll leave that be for now.

December 4
Eventually got the RVP server moved from a FC4 box (Apache 2, mod_perl 2) to a FC3 box (Apache 2, mod_perl 1.99) and went back to trying to implement more of the missing bits in both client and server. I think the server data structures need some rejigging but it's sufficiently awkward to do that I've been avoiding it for most of the day, resorting instead to chasing random crap in the client. I'm somewhat bothered by operational differences between the 1.0.1 version of Gaim as shipped with RHEL3 and the 1.0.1 source version.

More fun with linux and encrypted filesystems. I'm trying to migrate from The Old Way to The New Way without losing all my data, and I'm beginning to think that the right thing to do is boot off a brand new kernel with crypto support and futz with it until it mounts the current encrypted partition, then figure out how to translate that futzing into an initrd. Right now I'm staring at the paragraph in the mkinitrd man page that "explains" the token required in /etc/fstab if your root partition is on a loop mount and trying to figure out exactly what it's telling me to do.


December 3
In moving the RVP server bits from one machine to another I discover once again the pain in the neck that is mod_perl version changing. I think I might finally have gotten it to at least not bomb out, but yeesh.

December 2
Been wondering for a while why changes made to BBDB's mail auto-filtering wasn't taking. Eventually I realised it's because /home/waider isn't my "live" home directory on the box that runs the filtering. D'oh.

December 1
Finding Neverland is about as schmaltzy as you'd expect a movie based on the genesis of Peter Pan to be, but hey, Johnny Depp. It's actually a pretty good movie, but probably not to everyone's taste. I accidentally switched on the writer/director commentary at the start and it was far more saccharine than anything in the movie itself ("oh, that's a great title" "no, you were great in hiring me to make that title" la la la la)

previous month | current month | next month


Waider | Wow. Christmas again.