Hacker's Diary

A rough account of I did with Emacs recently.

November 29
I'm outta town. Even slackers need vacations; mine's in San Francisco.

November 28
Did a bunch of upgrade stuff on Gonzo using rpmfind. I'm still somewhat perplexed by its logic. I'm also vaguely wondering if there's an easier way to resolve conflicts when something has migrated from one package to another without a whole lot of messing around with rpm. I suppose I could RTFM, but that'd take the fun out of it, or something.

I haven't had a compiling OMS in over a week now, and there've been a lot of big patches lately. So maybe my tree's too far out of whack with reality. I refetch it to see if that cures the problem, and, well, there's no configure.in any more. How can you break a build this badly and not notice? Maybe there's something on the mailing list about it... well, yes. There's other people complaining about the broken build, and explaining how they got around some of the problems. If you're following this, you might want to read the livid-dev list archives. Anyway, I eventually got it to compile, and then it dumped core when I fired it up. OH well.

More fun with Communicator's "Message Center" - expired articles. "Click here," it says, "to remove all expired articles." So I click, and sometimes it beeps, and sometimes it simply refreshes the page I'm looking at, and once out of about ten clicks did it actually work. What the hell?

November 27
Boot Broom (the mac) for the first time in at least a month. Argh. No network shares. Reinstall netatalk on Gonzo. Check the configuration and start it up. Argh. No appletalk support in the kernel. Guess I was serious about giving this machine away after all.

Discover in the course of updating the Micromail website that the "new, improved" version of ftp doesn't seem to allow you to do PORT-mode transfers. Under ANY circumstances. This is a pity, because the hosting machine for Micromail doesn't allow inbound connections on anything other than standard ftp & web ports, so PASV-mode connections are doomed to failure. A brief wrestle with ncftp (it doesn't have a command-line option to switch passive mode on and off...) ensued, and the site was updated.

Big BBDB checkin - Alex Schroeder's zipcode stuff.

November 26
Spent about half an hour fighting with XTerm resources to try and get Backspace and Delete to behave sensibly, in passing discovering that the global app-defaults file seems quite happy to override my local app-defaults file, which I thought was the Wrong Thing. The end result of this pain is the following comment in my .appres/XTerm file:
! Fix the goddamn backspace and delete keys. Why is this so hard?
! Actually, you can't win. If you set backarrowKey to false, local xterms
! work fine and telnet sessions are screwed. If you set it to true, local
! xterms are screwed and telnet sessions work fine. The delete key seems
! to be hosed in telnet sessions either way. And, to confuse matters, bash
! behaves itself in most cases, but things like cat and login will get upset
! with the wrong setting.
Of course, you can read more about the fun that is Xresource handling in The Unix-Hater's Handbook - specifically, in the X-Windows Disaster, under "Myth: X is customizable".

November 25th
Threw together a disgusting piece of code to go trawl one of the public newsserver lists for servers carrying a given group. While investigating the output from this, I discovered exactly how much of a losing piece of crap the Communicator newsreader is, for all its pointy-clicky goodness. For example: it locks out the entire browser while it's downloading the active file from a news server. You can't subscribe to a newsgroup unless it's downloaded enough of the active file to see if that newsgroup is present. It won't allow you to do "Get New Messages" from the file menu unless you define a working mail-retrieval setup, even if you don't WANT to use it for mail reading. It doesn't remember that you folded up the folder list for mail the last time you used the message centre, and that you unfolded the folder list for the news server. It opens FAR too many windows, and doesn't remember how you'd the frame splits set up (I like a small, thin folder window, so I have more real-estate for the actual message lists and messages, but Communicator wants me to have a huge folder window and a thin sliver in which to read the messages). And more often than not, it doesn't tell you what it's doing, so you can't figure out if it's stalled mid-article fetch, if it's crashed, if it's locked you out... On the whole, I can't understand how anyone could use this on a regular basis.

November 24th
Spent the day noodling around with web pages.

November 23rd
Woke Klortho this morning, and got an immediate X crash for my troubles. Complicated by the fact that since I'm mid-upgrade, X wasn't coming back up, I couldn't get a console, and the ethernet port had somehow upset itself into not being available any more. Doh. Reboot...


UH OH. Rooted out a boot disk and managed to get back in; rerunning lilo fixed the booting problem. Then X wouldn't come up properly; it was flickering like I'd set the refresh rate way down, and when I quit X, the console was rolling across the screen. So I'm confining myself to text mode until I figure out what's wrong. Text-mode browsing is a pain, but at least Linux lets you cut and paste across virtual terminals with gpm.

Actually, I wussed out. I got enough of the system stable that I went back to X again, although I still can't go to text land without a reboot. And some of the fonts are a bit screwed up (emacs and xdaliclock), but on the whole the system still appears to be alive. Maybe upgrading to pre11 will fix the textmode problem... hahah. Sure it will.

There is one odd, inexplicable problem; the DHCP server on Gonzo or the DHCP client on Klortho seems to have decided that the address allocated to Klortho should be called "gonzo", which is then duly fed to the DNS and proceeds to hose the entire setup. I've no idea what's doing this.

November 22nd
Yay! OMS, missing from the net for the last few days, has reappeared. I was worried for a bit that they'd been shut down or something. But no, they're back, and they've finally fixed the compile error in decode.c... and put in a new compile error in input_udf.c. Sigh. I've decided to abandon the attempt to squeeze a raw DGA driver into it as well, since SDL does the job far better than I could. At least, that's my excuse.

Upgraded Grip to the current version using a cunning combination of diff, patch and emacs. Or something. I'll post a patch as soon as I've fixed a few other things.

More "help! help!" from the office. Apparently I was the only person in the entire organization who could debug sendmail...

November 21st
Back to Dublin and rpmfind. And email from Willy telling me the CGI scripts on the site aren't working. Looks like the ISP screwed up again.

November 20th
Mom borrowed the digicam to show to the kids in school. Of course, the software for it is elsewhere, so I had to find a program on the net to do the business.

November 19th
Visiting parents, which involves me trying to figure out what's wrong with their computer this time around. Also known as "a busman's holiday". What's wrong is that it runs Windows, basically.

November 18th
Non-hacking day; spent a while watching the Aussies getting beaten (poorly, undeservedly, etc.) at rugby by the English.

November 17th
More rpmfinding. My system is slowly but surely turning into an RH7 machine. I'm afraid to reboot it at the moment, though.

November 16th
I've rediscovered the joy of rpmfind, a tool that does much to correct things missing from RPM that those damned debian zealots are always harping on about, like proper dependency handling and latest-version-fetch and stuff. It's a bit rough around the edges, and occasionally you simply have to take to it with a hammer, but on the whole I've decided to go upgrade my system piecemeal using it. Which illustrates the sort of lunatic I am.

November 15th
I simply do not understand Windows. I created two profiles so that I could have both native and VMware setups, then booted into Linux and fired up VMware. Windows booted up, proceeded to identify all the "new" hardware, and jammed it all into a new combined profile which it called "Original Configuration". Then it rebooted, and bluescreened. So after much mucking about, I resorted to booting in safe mode and deleting all the devices it had found from the VMware profile, and rescanning. And rebooted, and rebooted, and went into the native profile, and rebooted, and rebooted. The net result of all this is that the native boot will find and install a SMC IrDA port, but will then fail to start it up when it reboots, and the VMware profile can't find the emulated network card. And I have no idea WHY these things are happening, nor do I expect I'd be able to find a better solution than "reinstall Windows". Why do people continue to use this shit?

November 14th
I finally hacked snorq to fix outbound links from the pages it grabs. The code is disgusting and involves globals, but then it's not like the rest of snorq is a work of art, eh?

Grabbed a copy of EveryBuddy in the interests of keeping in touch with my family, who use MSN quite a bit. It's quite neat for such a raw project. I'm trying not to hack on it, though.

November 13th
Call from the office. Mail's not relaying. Oh yeah. Part of the big plan from head office was to change the internal IP addresses (why? they're internal...) and I forgot to tell the mailer's relay control about this. So that was a five-minute remote-access fix, once I'd gotten Louise to relax the security on the box so I could 'net in.

OMS is broken in CVS again. It's nice to have these lofty ideals about what you check in, but it's not much good if you don't actually adhere to them. And I'm not talking minor glitch, I'm talking complete failure to compile. Back in my day, etc. etc. etc. Oh, and the ChangeLog I mentioned a few days ago looks like an abberation. It's not actually being updated.

Hurrah! Phone line! But just as I was figuring out what I'd broken on Gonzo to stop it from working, I got a call from the office again. Causing me to have to drive both ways through rush-hour traffic. GAH.

November 12th
Duuuuuh. When build kernel, check processor setting. Or, PIII kernels don't boot so well on K6-2 chips.

Set up Windows Me on the laptop so I could play a few more games than NT allows. As it happens, I'd just irretrievably trashed the NT installation again. If you've followed the diary, you may notice this happens with startling frequency. Note to people in dual-boot land: Me will overwrite your MBR. Have a Linux boot disk handy.

The installation of Bill's latest toy revealed to me that the problem with my network stalls appears to be on the laptop end of the connection. That's rather irritating, since I don't recall seeing it before. Maybe it's the precise combination of bits I have that's doing the damage.

November 11th
Picked up a 5-way USB hub and a Gameport-to-USB toy at Maplin today. The latter didn't work in any useful fashion (yes, I can go up and left, but I can't go down (stop that train of thought already) or right. In any of the 4 modes it offers. And every time I change mode I have to unplug it from the USB port and replug it again. Of course, this is all under Linux; things may be different under the other OS.)

Snagged a new OMS, in which they've fixed the SDL plugin partly by requiring SDL 1.1.7. So I downloaded that, built OMS, and watched Blade Runner. I think the framerate's actually worse in fullscreen mode, which makes no sense to me, and I'm still only getting about 8.5 fps on average. I'm pretty sure NT is doing better than that, and NT isn't supposed to actually support DVD drives, sort of, according to JC. There's a few things about the UI that need tweaking, too - minor stuff, as opposed to the major details like the complete lack of on-screen navigation... At least they've started using a ChangeLog now. All things considered, though, it's quite a programming feat.

Found a tricky little buglet in BBDB's VM integration. It requires a pretty exact set of circumstances which I seem to hit with startling regularity, and I'm still not sure how to debug it. I'm not even sure it's a VM problem, or how willing Kyle would be to help me figure it out. One can but ask, I guess.

And then Gonzo decides to stop booting, except from floppy. Just as well I have a floppy.

November 10th
Hmm, this seems vaguely familiar. Sitting at Spike's console, discussing "bloody users" with Louise, giving abuse to some random IT staffer in head office and tracing unfathomable network problems. Yes, I spent the day back in the office trying to sort out some problems. The build-up to this was an attempt at installing VPN hardware without actually sending the VPN guy over to do the job. "We tested it in the office.", "It looks correctly configured from here." (for values of "here" equal to "500 miles away per airborne Corvus Corone", geographically, or about a half-dozen-plus routing hops. The problem had to be with other things, such as the MDIX cable Louise had made, or the fact that we had a Linux box plugged into it rather than some blessed piece of Microsoft kit, or even Cable & Wireless' routing. So we stripped everything out, including the VPN (Louise: "That's the first thing I wanted to do. He wouldn't let me.") and plugged Spike directly into the router again, and all was well, except the email was still coming down the ISDN pipe, but hey. Minor detail. Then we went back to the VPN box and plugged a spare laptop into it, configured with the relevant networky details. It took me three attempts to remake Louise's perfectly good cable, as it happens. Phoned the random in head office and started trying things. And after 40 minutes on the phone, we established that the VPN box was reasonably happy with sending packets over the VPN, but was in no way inclined to send traffic elsewhere. Mmhmm. Tested in the office, eh? Then C&W decided to drop routing between us and him, preventing further attempts to solve the problem.

At which point I adjourned to The Bleeding Horse for "a few beers".

November 9th
Playing with Gronk some more. It occurs to me that I'm making needless quantities of work for myself by not adhering to the One True Filename Format. Then again, I always was an awkward kid.

November 8
Spent most of the day kicking Gronk around, including some particularly heinous code for handling the mp3filenameformat parameter in .grip. Disgusting, really.

November 7
Some more hacking on Gronk. I've managed to get rid of most, if not all, of the errors related to using spaces in filenames, and also those related to not using the One True Filename Format. The nice thing about Gronk is that it finds things like short files or missing files for me. The not-nice thing is that it just bitches about the problem - I'd like it to fire up Grip, maybe, and ask for the relevant CD to be inserted, and then check if you managed to get it right this time.

This led me, of course, to hacking on Grip's CDDB handling, which is, in places, a load of rubbish. Specs? Nah. We don't do that. So my version of it now supports end-of-line whitespace (where in the spec does it say to nuke all the whitespace you find?) and incrementing of the Revision: header. There's still an amount of brokenness in there, including fixed buffer sizes and suchlike.

November 6
Played around with the XEmacs package generation stuff for BBDB. Since I know nothing about how XEmacs packages work, I need to figure out how easy or not the BBDB installation is. Verdict: it's awkward for someone who's just picked up XEmacs. I need to fix this.

Wrote a hacky little mileage calculator which grabs my mileage log off the Pilot and figures out how many miles per gallon I've been getting lately. In the process I discovered that apparently Perl won't insert leading zeros in a %f format string. Er, why not?

Continuing to investigate the problems with stalling streams between Gonzo and Klortho. Short answer: I have no idea what's up. I've looked at the pre9 and pre10 kernel patches to see if there's any mods to the eepro100 driver, but the only changes are to remove static initialization of some variables. Er, I always thought static initializers were a good thing? You know, stop you from using pointers to Mars and all that?

Modified the linkfarm toy to pick the longest match if it gets more than one. That way, it doesn't get confused over Emacs vs. XEmacs, for example. I did have to fix a rather stupid bug in the caching, mind you. I've rebound space to search for a link, which makes typing a little jerky, but it's doing okay. I guess I should investigate the workings of lazy-lock and see if I could do something similar. Also made linkfarm-mode attach a write-hook that updates the linkfarm. Still not quite perfect, but getting there.

Spent a good deal of time getting Gronk to talk to my mp3 collection and vice versa. Despite the illusory presence of a file called config.pl, a lot of the filename logic is scattered all over the component scripts. Anyway, it works now, after a fashion. Still needs some abuse, and some of my mp3 files need recutting, but.

November 5
Made a quick inspection of part of the perl threading algorithm based on a clarification from jwz. Turns out I'd the right implementation for the wrong reason.

Automated some more of the Micromail site update stuff, because while I'm too lazy to go and do it properly, I'm also too lazy to keep repeating the same series of commands over and over...

Snagged the test10 kernel for Klortho as well to see if the framebuffer stuff has been fixed. *disk activity* *reboot* Nope. *reboot*

Fixed another user-reported bug in BBDB. I really need to ease off on this attention-to-users thing, I'll lose my reputation as an apathetic developer.

November 4
The pub appears to have IR-defeating properties, somehow. My Pilot refuses point-blank to talk to my phone, although it's happy enough to beam toys to another Pilot. *shrug* Hardly a big deal.

November 3
Went back over the last few months of the diary looking at all the stuff I've mentioned and then dropped after a brief period of activity. Yeesh. Actually, the list is shorter than I expected. Thus goaded, I spent most of the day working on the magical email folder parser thing for the DSPsrv mail archives, and got the threading more or less working using jwz's threading algorithm. It's absolute voodoo, and the code I turned out is pretty gross, but it seems to do a good job.

November 2
Bah. So much for laziness. The changeover worked fine, but something weirded out in the routing elsewhere that meant the mail wasn't getting through on the new address if it was sent from the UK office. And since the primary MX is the UK office, blah blah screwed up blah. So I put in a static route for the UK's mail server to force it to use the ISDN.

November 1
Back in the office again. They finally got a decent line installed - 2MBit - but the official hats will not be in for another few weeks to set up the offical kit. My ex-boss decided that this was a waste, since the 2MB line is fully operational, so he asked me if I'd do a temporary hook-up. So, a few kernel recompiles (don't ask!), a little rerouting, and presto, it was working...


there was one tiny hitch. I had to maintain the old ISDN connection in order that the SMTP server would answer on the right IP address. Except that I now had an asymmetric route on that interface (traffic inbound on that would have its return traffic on the 2MB line) i.e. no route at all. After some thinking, I decided that the least hurtful way to fix this would be to get the DNS changed. I made the phonecall to do this at about 17:15, meaning I'd have to come in again to fix the routing once the DNS changes had propagated...


Ten minutes later, I had a cron job set up which polled a non-authorative DNS (so I'd get a good read on whether it'd propagated or not) and once the DNS gave the "right" answer, the script would adjust the routing accordingly. Chalk one up for laziness!

previous month | current month | next month

Never attribute to malloc
that which can be adequately explained by stupidity