Hacker's Diary

A rough account of I did with Emacs recently.

January 31st
Shopping expedition day for FROST.BOB II.

January 30th
Spent most of the early afternoon at Interphrase's office, installing a new Linux server. ISDN setup was needlessly complicated by the fact that I had but a small clue about what I was doing - the last Linux ISDN setup I dealt with used the Eicon TA-that-looks-like-a-modem, so it was just AT commands and a PPP daemon. This was modules, config files, plenty reading, and a little rain-dancing.

Later on I discovered a directory full of unprocessed digicam pictures. I'll need to get those sorted out and up on the appropriate pages.

January 29th
Installed XFree86 4.0.2 and shazam, OMS is working. That's pretty cool. The PalmOS Emulator is still crashing in a "can't happen" spot, though.

Made a few more entries in .htaccess files to fix up stale links on the site. Lots of people seem interested in my music...

Started doing a little more work on BBDB again, mainly in an attempt to get my mailbox size down.

JamesC called around with the digicam. Hurrah!

January 28th
Undoh! Turns out the camera made it out of the pub and fell out of my pocket in JamesC's car, so I am once more with camera. Well, I will be as soon as I get it back off James!

Wrote my first bit of PHP, and I can't decide if it's a neat language or a crawling horror that will eat my brane. Certainly is EASY, anyway.

Happy birthday, sis!

January 27th
Doh. Left the digicam in the pub last night. Bye bye digicam. Whoever took it doesn't have the transfer cable for it, so the best they can get out of it sans effort is a set of NiMH rechargables. Bah.

Did some actual work on the Interphrase stuff myself today. I'm playing around with Net::FTP.

Had a little Windows fun, too. I decided that since I could use my Zip drive under Linux, I should also be able to use it under that other OS, right? Hahah. Downloaded a chunk of code from Iomega's site, ran it, failed to find my drive. So, I dug out the old Win95 install disks I got with the thing, ran 'em, and presto, it works. Well, for convoluted values of "presto", but still.

January 26th
Dermot's up for the weekend and we're doing a little work for Interphrase. Actually it's more like he's doing the work and I'm making occasional design suggestions, which suits me just fine.

January 25th
Ha, typical. Some time after I'd made the release, someone found a bug. Nothing major, i.e. there won't be an immediate 2.21 release, but annoying nonetheless. Still, so far so good.

Started rewriting both my resumés into a single XMLish file. It doesn't matter if it's real XML or not because I want to put a front-end on it that parses it into HTML until such time as (a) the waider.ie server does on-the-fly XML->HTML translation or (b) XML-capable browsers are the norm. The idea is that I can produce a resumé tailored to the job I'm applying for by selecting relevant keywords to filter the raw data on. A look on the web turns up one XML-resume package that fails to get this point, instead merely using XML as more verbose HTML (not. getting. the. point.), the hr-xml conspiracy^Hgroup which requires you to REGISTER in order to get the DTDs, and someone who did the thing someway right but put the raw XML out on his page so that you can't see it in Netscape 4.76. In the interests of not reinventing the wheel, I had a look at the XML FAQ and a few other things, but I'm still inclined to just carve my own niche on this for the moment.

Added a hack to Gronk to check actual track duration against expected track duration and warn me if they diverge too widely. This will allow me to catch the files that were corrupted by the disk shenanigans listed elsewhere in this diary.

January 24th
Received a couple of patches on the bbdb-info list and dropped them in. I'm concentrating on bugfixes at the moment in the interests of getting an official 2.2 release out. Spent the rest of the day hammering at it, patching things I'd broken, and folding in fixes from others. And YAY, BBDB 2.2 is released. Go fetch from the website already!

January 23rd
Hacked on bbdb-whois some. It now makes a reasonable attempt to handle things like non-US addresses and multiple phone numbers. I need to add the ability to pick one-of-many when multiple records are returned, and then it's good to go. One more thing off the TODO list.

Dropped a quick hack into the MUD client to pick up what my local copy of Gronk is playing and stuff it into the MUD I'm logged into. Why? Because I can! Of course, I found myself constantly flipping over to another window to find out what Gronk was at, so I hacked a little more and ended up with a chunk of code that puts a "Now Playing..." message into the minibuffer periodically. Gnee.

Tweaked the advert-server (which I use as part of my banner-advert filtering) to try and provide the correct size of image, as guessed from DoubleClick's sz tag.

Some more work on the Micromail site update code; it can now read an email message, extract the update information from it, and reformat the CSV file into the correct column order. This is getting scarily autonomous.

January 22nd
Fixed another bug in BBDB. Yay!

It seems that there's no way to validate a MP3 file that your friendly copy of tar has zero-padded due to short reads off a flaky disk, other than listening to it. So, I'll be listening to my entire CD collection and noting what's busted, I guess. Should only take a few days...

Fiddled around with the PalmOS version of XDaliclock for a bit. It builds under the 3.5 SDK now, but I want to build an emulator to run it rather than relying on it crashing my Pilot.

So I grabbed the emulator sources, and a copy of FLTK, and threw the lot together, and got a core dump somewhere in select(). Spent a few hours trawling through the code and decided that it was buffer corruption that I couldn't find. It's damn near impossible to even breakpoint it without hosing your X server.

Some random was poking at my ftp daemon. I had a quick look around his machine and discovered he'd been hit by Ramen. Har har.

January 21st
OMS still isn't working for me. Same old input starvation problem. I should really sit down and debug it properly instead of just moaning about it here.

IrDA isn't working for me under Linux, either. Can't find my phone. Meanwhile, Windows can happily pull the phonebook and any messages off the phone, and send messages via the phone. Whine whine.

And the CVS copy of Ices, the Icecast streamer, isn't building. Looks like they added in three million playlist plugins and forgot the Makefiles or something. Yes, I'd like a little cheese with my whine, please.

Doctor, heal thyself. I hacked my Ices plugin (to talk to Gronk) to be cleaner, less abusive about disk access (it stats the file instead of opening it and reading it to find out if it's changed), and to use the Gronk config file. I've submitted it as an auxillary for the Gronk distribution.

Upgraded to VM 6.90.

January 19th/20th
Down the country with my brother for my goddaughter's first birthday. Happy Birthday, Hannah!

January 18th
Low-level-formatted the flaky drive overnight. It's rebuilding the filesystems at the moment with bad block checking, and taking forEVER.

And it turns out there are hard errors on the drive. Argh. Probably when it was going "click click click" last month.

Got the first of the Gronk mods working - the griprc parsing, and a few hacks on check-files to make it accept what I'm feeding it in mp3fileformat. Now I need something to validate the MP3 files that were damaged on the old disk. Maybe mpg123 can help...

January 17th
Sorted out a PPP-related annoyance that's been bugging me for a while - when I ifdowned the interface, I'd get a ppp-watch process lingering, as mentioned earlier. Poking at the script, I discover a check for DEMAND != "no" which is only going to be skipped if I set, obviously, DEMAND to "no". This is kind of stupid, since the network config seems, by default, not to set DEMAND at all. It would make far more sense to check that DEMAND == "yes", so that it fails quietly when DEMAND is unset. No cookies for RedHat there.

Brief thought: is "unset" newspeak?

Hmm. How did I miss that? Swapped the video card into another PCI slot, and lo, it's working. Do I take this to mean there's a dead PCI slot on the board? On top of that, the new network card exhibits the same Icecast-manifested problem as the old, so I haven't solved that either. What I have solved is the disk problem - I picked up a second 30GB drive, and I'm in the process of moving everything onto it so I can reformat the first one. Then I find out if it's just one-off flakiness or something more serious.

Did some more BBDB tweakery, and checked in my outstanding work.

January 16th
Did a little poking around with Gonzo to verify that the video card was indeed dead (I've had PCI cards come back to life simply by unplugging them and replugging them, or by clearing the stored configuration data in the BIOS) and verified that it was, indeed, dead. Found a new computer supplies place in town that had Genius RTL-based 10/100MB ethernet for £20, so I snagged one of those, and ordered a cheapy video card off them. There's a sticker on the front of the Genius box saying it's "Linux compatible"; inside, there's a pair of floppy disks and you're supposed to run some .EXE file to get at the right drivers or something. Suuure. I just rebuilt the kernel with the RTL drivers enabled. Still, it'd be nice if someone did a magic Windows-style installer for this sort of thing that, you know, norms could use...

January 15th
Played with OMS for a bit, but failed to get it to work any further. Sigh. Seems that aside from everything else, there's some oddity going on with AGID resets on the Compaq DVD drive, which is apparently just a rebadged Toshiba drive.

You know, I really wish ifdown ppp0 worked properly out of the box. It's a real pain to have to manually kill off ppp-watch, then discover that it's spawned off a PPP daemon while you weren't looking, and it's eaten your routing table, too. Shell scripting isn't really this hard, guys.

Finally got around to trying Icecast with the PCMCIA ethernet card instead of the onboard. Same problem. Next thing is to try streaming off the laptop, or swap out the network card in the server, and see where things go from there. Meanwhile, just to amuse me, the video card on the server seems to have died.

January 14th
Downloaded the SyncML reference implementation, and tried hacking it to compile for the Palm. Got it to compile, but it wouldn't link. Hmm.

Hacked at the local copy of the DSP web a bit - started cleaning up the HTML and the site layout.

January 13th
Still with the Icecast errors. For some reason, Windows Media Player decided that the stream was some arbitrary length just short of an hour, and stopped with an eof. The laptop gets about 15 minutes into the stream with XMMS and then starts building up packets in the Recv-Q, culminating in a stuttering halt at about 22 minutes when there's about 60-70K in the queue. I've switched off all the metadata and even switched from xaudiocast to icy format, all to no avail. Time to try an alternative ethernet card, I guess.

Oh, and mpg123 is quite simply useless for dealing with streaming mp3s.

Tried Freeamp as well. Running it on Gonzo, I get an even faster buildup of data in the Recv-Q. And running it on Klortho, it can't seem to connect to the stream, for some reason.

January 12th
Hacked at one of my share toys (I have three...) to get it to cope with the fact that sometimes Yahoo prints a day instead of a time, and then added a currency lookup on it so I get an accurate picture of just how badly my shares are doing in Norway.

Started hacking on Gronk again, this time intending to do it in a clean way that means I can send in a patch. Found some choice comments from the first time I hacked it.

Snagged ices, the new Icecast streamer. It's basically a revamped version of shout. Alas, I'm still seeing the same traffic build-up problem as before. I should try it on the PCMCIA ethernet card, I guess. I tried it on a WinME box, and after about 20 minutes (which is when I get the network congestion problem on Linux) the Media Player crashed and took down the machine. Hurrah for Microsoft!

Continuing to be a "sick little monkey", I've updated jmatrix to run in Mozilla and also to use the DOM in Internet Explorer. Bwahahah.

January 11th
Threw away everything OMS related on my disk, and started from scratch. Lo and behold, I got a compile, and I ran the resulting executable, and...

...it didn't show me anything except a black screen. Ah well, this is further than I've got so far this year. css_cat is okay with reading the disk, so I need to figure out where the problem is.

Spent most of the rest of the day rearranging the room to accomodate my new Giant Bookshelf. 7 foot of beechwood straight up, whee!

When I'd moved everything around, I fired up Gonzo. Woah. No video. But heck, it's started fine, and the network's running. I'll check it when I next have to open the case, I guess. The fan's running silently, too. Bizarre. The disk errors, though, are causing me some grief. mpg123 occasionally coredumps (bad! not checking return value from fread() properly!) and I'm gonna have to redo a bunch of my mp3 files. Just as well they're all legal and all, you know, so I still have the source material.

January 10th
Downloaded and installed PCMCIA services for Linux, built it, installed it, and lo, I have a working ethernet card in the PCMCIA slot. On the plus side, this means the laptop can get a 200Mb/sec feed. On the minus side, where the hell am I gonna get that much data from?

Tweaked Gonzo's startup files to start the web server and the nfs daemon. Can't recall disabling them, but. Also modified Klortho's startup to do a showmount -e on Gonzo before attempting to mount the NFS shares - saves me another 15-20 seconds on boot time if Gonzo's not running nfsd for whatever reason.

Did a full fsck on Gonzo's big disk. There are hard errors. Gack. I think maybe I'll get a second humongous drive and start moving stuff onto it, then reformat the current one. Should at the very least mark out the bad blocks.

January 9th
Slowly chipping away at my BBDB "to do before 2.2" list. Database merging mostly seems to have fixed itself, thankfully, since I hadn't a clue what was causing the problem.

Discovered, duh, through some reading that "Microsoft Messaging Services" or whatever, i.e. MAPI32.DLL, can be found on the Win98 install CD in some arbitrary directory. Plugged it in, reran the Ericsson software installer, and I now have a phonebook manager/SMS toy on my Windows machine. Startlingly enough, the cellphone modem decided to work as well. I can't deal with all this success.

Just to reassure me that all could still go pear-shaped, the Linux IrDA stack can't talk to the phone properly. I think applying the speed-change patch that appeared on the list recently might help that.

January 8th
Wow. Success in buckets! Not only does the 2.4.0 release kernel appear to have cured the ln problem, I also managed, with a little hacking, to get the Lucent Winmodem on the laptop working. The "little hacking" was to correct the minor device number of the modem (it's ttyLT14, hence minor 78) so that it was looking at the right part of rs_info. Noone else seems to have noticed this? Anyway. Contrary to what this lucent winmodem page says, linmodems.org is not actually the best place to look for the latest information. I found the driver I'm using, a combination of binary module and kernel-compatibilty source, on walbran.org. The only change I made, I think, was the aforementioned device number correction (there was some extra debugging that clued me into the device number change, but that's about it).

January 7th
Both Klortho and Gonzo are now running 2.4.0 release. Hopefully all will be well.

Made snorq clean up the images it downloads, so you don't have twice the data needed lying around the place.

January 6th
Haven't tried the release kernel yet, and the test6 kernel doesn't build - multiply defined symbols somewhere. Egad.

Made a local copy of the DSP website in preparation for hacking on it a little.

Another sick hack! This time, I've used my digital camera (a Sanyo VPC G200E) and a hacked version of photopc to make a low-frame-rate webcam. Now all I need is a power supply for the camera to stop it from chewing up batteries...

January 5th
Building a test6 and a 2.4.0-release kernel. The former to see if it introduces the ln bug, the latter to see if it's cured.

Rearranged the images directory of the website to try and eliminate some duplication and throw out stuff that was just taking up space.

January 4th
Spent a lot of the day playing with a Palm development environment. Part of the problem was that in order to install the SDK, you need to download the documentation which tells you the correct way to unpack it. And the documentation is an 8MB tarball. I then put a bit more work into a script I'd been working on to convert a CodeWarrior/Composer .rsrc into a PilRC .rcp file. I don't know if anyone's done this already, but I can't seem to find any indication that such a beast exists.

And while I was doing all this, Linus released 2.4.0. Whee!

January 3rd
Well, 2.4.0test1 seems not to have the filesystem bug. Time to try test2... Right. test1 and test2 both seem to have the "IDE drive spins down, resets bus, spins up again" problem, but not the "IDE drive forgets how link works" problem. This is, I think, progress.

First time I've rebooted Klortho in a while, and, er, some things seem to have changed while I wasn't looking. For instance, MAIL is no longer defined to point to my spool file and XAPPLRESDIR also seems to be missing. And my HTML-mode colours appear to have changed. Oh, wait. XAPPLRESDIR is set, it's just that pesky problem with the global app-defaults overriding my app-defaults. Gah.

2.4.0-test3 simply doesn't build. Or test4. Maybe my libc is conflicting, or something.

And suddenly it hit me. What if it's the SMALL drive that's crapping out, not the BIG one? I could cope with that.

January 2nd
Hum. Well, after rebuilding the kernel several times over (my config got lost along the way, so I had to do several test runs before I managed to get back to a working system), I still have the bug. Time to see when it first appeared, which is going to involve building too many kernels and installing them. Argh.

Went trawling through my mailbox, patching BBDB and replying to long-lost emails. Jeez. I've been slack since September, and that's about the same time I stopped responding to email on receipt. I'll blame the whole Internet-access-over-cellphone thing.

Kernel building apace. The 2.2.18 kernel can hand out DHCP addresses, but I can't ping in either direction. I can see ARP traffic and broadcasts, but TCP just ain't happenin'. In fact, from Gonzo's end of things I'm getting "No route to host" despite the fact that all the networking (a) looks fine and (b) is unchanged from the 2.4.0 kernels.

And while all that's going on, I cleaned up the syslog and logrotate stuff on Klortho. One more thing accomplished.

January 1st
Oooh. This looks good:
2.4.0test13pre3-ac1 adds
       o       Fix leak in link() syscall (Christopher Yeoh)  
So I'm building that now. Complicated by the fact that every so often, the filesystem forgets how to do link and then the build fails and I need to reboot. Why the compile process doesn't notice this, I do not know.

Rearranged the diary layout, and put some Rewrite rules in place to maintain the old links. Rewrite is actually quite difficult to deal with when you're trying to handle a site that's supposed to work as both http://site/ and http://site/~user/. I ended up having to symlink the stylesheet to make it work. Gah.

Why oh WHY does netscape try to look up localhost? It's in the hosts file, the nsswitch.conf says to look in the hosts file first, yet netscape still insists on finding out where the hell localhost is from the DNS.

previous month | current month | next month

Waider Time to backspace and overstrike.