Hacker's Diary

A rough account of I did with Emacs recently.

February 28
Finally built x0rfbserver, a VNC server for X that exports the running desktop in the same way as VNC for Windows and Mac does.

Mulholland Drive is more slightly off-kilter material set to a score by Angelo Badalamenti, which is pretty much what you'd expect from a David Lynch movie. I'm not sure I enjoyed it, but I'm not sure I disliked it either. Also, the user comment on the IMDB page that I read, by one Joel Mesa from Miami, Florida, just goes to show you what happens when your national educational system is left go down the toilet in favour of commercial interests.

February 27
Also, I blew away my X server. That wasn't fun.

Tooling with the camera again, discovered some doco that claims I should be able to get a 640x480 still image off it. Damned if I can figure out how. While tooling about with it, discovered a bug in the driver code that prevented this from happening, but the camera still didn't want to play even after I'd fixed that. Back to implementing V4L1 ioctls, I think.

February 26
More tooling with Snafooz pieces; I figured out a better way to draw them (uses just enough quads, basically) but I still need to figure out how to texture them properly.

February 25
Used jwz's lightlab hack to figure out that my Snafooz models were actually broken in several ways, and not just in the one really obvious way. Fixed the minor problems and am now faced with deciding how to solve the major one. Probably need to do one of those crumples paper into ball, tosses into pile surrounding, but not actually in, dustbin movements.

February 24
Work was fun today, for values of fun meaning KILL KILL DIE DIE WINDOWS NT. Eccch.

Found a pretty good reference on IEEE1284 but I'm not sure if the Linux implementation or my crap-o-cam is at fault, and I've other things concerning me, such as doing the Micromail update I neglected to do at the weekend - oops!

February 23
Finally started fixing up the busted CDDB files from the great rm -rf incident that wiped out a bunch of them. In doing so I am recognising again the amount of sheer crap that goes into CDDB files: spelling errors, transcription errors, entire sets of lyrics (hello, exposing FreeDB to copyright infringement?), arbitrary capitalisation, completely arbitrary use of "featuring...", random data-track labelling, extraneous disc information that should be in the EXTD field, track numbers (hello, the spec doesn't provide much, but track numbers are one of the few things it does provide), arbitrary labelling of discs in a multi-disc set, arbitrary labelling of singles, free interpretations of track names on singles (hint: it's generally "Track Name (Remix Designation)"), free interpretations of band names (Apollo Four Forty vs. Apollo 440, for example; computers are dumb, don't confuse them further), junk in the EXTD field ("NA"? couldn't you just leave it blank, like you're supposed to?)... suffice to say that about 95% of the files I downloaded to replace the missing ones need to be hand-edited to repair them. I could probably write something to reconstruct the files from Gronk's jukebox pages; however, doing it by hand I get to make sure I haven't made any silly errors in my original data collection.

Spent a good half-an-hour prising apart my Siemens S45 to determine the cause of the single non-working button (assumed cause: beer got in the phone. Beyond that I have no idea.) and basically trashing the nice line of the casing because these things are supposed to be dismantled by trained monkeys with special monkey-oriented prising tools, as opposed to me and whichever screwdrivers I can prise into the tiny gaps afforded to me. In the course of dismantling I briefly thought that the SIM card holder might be a locking device of some sort, so I halfway prised that out before realising that no, it was just a piece of metal stuck to one half of the case. More anon. Were I a good little geek, I would have taken photos of the moment of truth when I finally got the two halves to separate, revealling a pretty crammed interior which I'd managed not to poke any screwdrivers into during the prising process. Having gotten it open, I inspected the keypad and discovered unidentifiable black goop on the back of the non-working key. I scraped it off with a convenient screwdriver and trusted that this would solve the problem, because I'd no easy way to test it without reassembling everything and pressing that one button. At this point I curiously inspected other parts of the case, and discovered that the phone appears to have one of those inertial charging devices built into it that converts the motion of the phone into a trickle-charge for the battery, which is neat. I'm not sure, mind; it's just my interpretation of the parts I found and their location in the phone. I reassembled the phone, and then discovered that I'd pretty much screwed up the SIM card holder. Whoopsy. I pressed it back into place, and with a little trial and error discovered that wedging half of another SIM card (yes, half) behind my own card makes it all work. This might well get rid of the occasional problem I was having where the phone would claim I had no SIM card in, too. Anyway, the phone is now back in working order, even if parts of the case around the seam look like they were assaulted by a three-year-old with a chisel.

More classic CDDB entries: track titles in ALL CAPS, except for the album name which is included in every single track title. And it exceeded the CDDB spec's line-length limits, too, rather than wrapping the lines like it's supposed to.

Welcome to the World of the Future:
Due to problems with using backslashes on our Webpage, we cannot display the database-format specification directly here.
Uh. Right.

Added one more ghastly hack to the jukebox pile: a script to convert a Gronk HTML file back into the CDDB file that generated it. It's so fragile it'd probably break if I ran it on an album with strong bass. Still, between that, check-files.pl from the Gronk distribtuion, and cddb-mode.el I've reconstructed the files I was missing and cleaned up a bunch of typos and the like in the process.


February 22
Bob visited and stayed over last night, so I shut down the computer room to allow him sleep.

Yes, yes. Food and beer, and a mild hangover.

Brought everything back up this morning; minor weirdness with Blimp again and the video card that may or may not be present, apparently depending on the orientation of the box. No, really. I put a shiny new DHCPD onto Blimp while I was at it so that it does DDNS updates for my wireless network now. Woohoo! Also configured Gonzo to bring up a static route for the wireless network, which I'd been doing manually recently and had completely ignored in the beginning - I used NAT instead. Kinda silly not to use routing, really.

Rented out Strange Days - on VHS, no less - only to discover I had seen it before, I'd just forgotten all the excellent lines in it. Mind you, that collection, with its typical IMDB quality-control on duplicates and typos, is missing one of the best quotes of the entire movie: when they're beating up Lenny, and Cindy comes up to punch him, one of the other thugs says, "We'd like to have gotten a smaller girl to kick your ass, but it was short notice!"

Also rented out Blade 2, which was entertaining, but nowhere near as much fun as the first one. I dunno why; it wasn't like I found it scarier or anything, it just seemed so much more serious. The DVD extras were pretty cool, and the director seems like a complete nutjob in a nice way.

Rebuilding the parport module to enable debugging, because I can't really figure out why the 2.4 IEEE1284 init stuff is failing to initialize the PPC camera; it's virtually identical in the important places to the 2.2 code. I really don't want to have to custom-code this, and I'd really, really like to be able to replace all the crap in pport.c with actual IEEE1284 function calls. Except I'll have to retain them for the 2.2 driver, dammit.

Finally made linkfarm-mode discard whitespace when looking for matches. It uses a function that I don't think is available in older emacsen, but to hell with backward compatibility.

Hmm. Initialising with DEVICEID set trips over either an error in the camera's implementation or an error in ieee1284.c. Shutting off DEVICEID trips over errors further down. I may have to hand-hack this after all.

February 21
After another hour of poking, prodding, headscratching (why is it assumed you know which way around to connect the USB connector, anyway? It's completely unmarked on either the headers (1? 2? are those pin numbers, or port numbers?) and on the connectors!) and downright fear (wah! spark! box shut down! wah! *click* *click* phew, it's booting!), I finally got everything back up and running. I left one of the USB connectors disconnected because I can't figure out if it's supposed to go back-to-back or what. But that's okay, the only USB thing on the box is the ISDN TA, and that's working now. Yay!

Yes, I did short something spectacularly enough to draw a spark. No, nothing appears to have been damaged.

Oh, for the record, the "new" board is a FIC VA-503+, chosen mainly because it has enough old features to work with the bits from Gonzo's original board - K6-2 200 chip and AT power supply being the major details.

Hacked up an elisp client for a new timesheety system at work. Learned how to put something in the modeline with an attached pop-up menu. Funky! I bet it doesn't work in XEmacs, though.

February 20
Set up SquirrelMail. Mmm, nutty.

Hmm. Trying to figure out how to jumper up the new motherboard for Gonzo. Of course, I should have downloaded the docs before dismantling Gonzo, instead of spending ten minutes trying to hook Qaz up to the ISDN box.

Whoops, accidentally overclocked to 233MHz.

Followed by moments of doubt about which way around to connect the USB connectors (this is how I fried one USB driver on the old board), followed by an entertaining period of attempted boots until I realised I'd forgotten to connect up the power to the floppy drive. Then USB wasn't working, but I decided to take the opportunity to test that the harddrive was okay and ready for abuse; it just swallowed all that data down and didn't burp. So at least the major purpose of the exercise has been accomplished.

This means I can now reenable proper backups, of course, since I don't need to worry about blowing away the server. Woohoo!

Another brief moment of silliness: trying to figure out why sound wasn't working, and then realising that the speakers were still unplugged.

February 19
Aha, turns out that my sister's boyfriend (hi John!) has both my cable and some rechargeable batteries I kept with it. Neither of us can figure out how these ended up in his camera bag.

February 18
I have a load of photos, but I have lost the cable to fetch them from the camera, so a little hardware hacking will be required for the retrieval operation.

February 17
Hangover of DOOM. Ohboy.

Hangover of doom eventually subsided, but messed up my day a little. Fortunately, my brother's wedding went off without a hitch and I managed to be in attendance until at least 10pm at the subsequent revelry, modulo a little time for tech support.

My ex co-workers Kay, John, and Ashraf will be most amused at this:
Mal: Tell me, is it possible to ask an Oracle programmer a simple question and get a straight answer?
Me: (all serious-like) Oh gosh no.
Certianly Mal's fairer half and my less recent sister-in-law had a good giggle at us.

February 16
Woke up with no hangover, a sore throat, and a half-dead cellphone. I can dial up using something connected to the serial port (like, say, my laptop) but the keypad seems to be hosed. Damn.

Later, the phone revived almost completely. But not before I'd called my sister, and mentioned in passing that I was using the laptop to dial!


February 15
Drove to Dungarvan, drank.

February 14
Remote office dialup falls over as I am taking some days off work. You'd be amazed at how often this sort of thing happens, and I swear it's not deliberate.

Oh, and happy valentine's day, if that's your thing.

February 13
Started looking at implementing the IOCTLs for Video For Linux 2. I have a chunk of code that claims to provided V4L and V4L2 interoperability, but I can't see a tidy way to have the driver determine which version is being asked for. It would have been a bit smarter if the V4L2 API was an extension of V4L rather than a replacement for it, I think. Although there is a newer version of videodevX than the one I had installed so maybe that's got some goodies. OH. It does. It's got a compatibility layer. Now that's nice. Aaaaand it doesn't compile for me. Well, screw it. V4L1 is still the official Kernel interface, so I guess I'll recode to that.

And after another 20 minutes of poking, yay, the module compiles on a 2.4 kernel. Doesn't work yet, though - the IEEE1284 stuff seems way more stringent in 2.4, which is a problem I ran into ages ago. On brief inspection, it appears that the capabilities of the parallel port on the laptop are somewhat less than those on the crappy desktop I've been using for the camera so far - specifically, it won't do ECP mode.

February 12
Finding bugs in Samba in odd places, like the printer RPC stuff. I should probably try fixing a few instead of punting 'em to the Samba team.

February 11
Tried installing Windows drivers for the camera, to check what resolutions it was supposed to support. Of course, it's obsolete, so no go.

Took the CDRW out of Blimp. Reconnected things. Powered up. Nothing, except a faint smell of burning. Power down. After much searching, determined that I'd burnt out the power line on the 3.5"-2.5" drive adapter somehow. Fixed that, powered up the machine. Can't find the PCMCIA slot. Fiddled with the BIOS. Still can't find the PCMCIA slot. Swapped the PCMCIA card with the video card. Machine gives beeping errors. Switched back, then switched PCMCIA card with ethernet card. Machine boots up, everything works.

I do not understand PC hardware.

February 10
Had a quick sconce at the CPiA driver on the grounds that it should theoretically talk to my camera, but, well, theory is HERE and practice is WAY YONDER. Actually, the abandoned SourceForge project that produced the CPiA driver specifically mentions that they don't do PPC1 cameras, only PPC2 and upward. I guess I could try tracing the CPiA driver to see why it doesn't work for PPC1, but heck, instead I want to do a whole new driver. HEY! Come buy this thing I invented! I call it "WHEEL"!

Weirdly, the CPiA driver loaded up its USB counterpart as well as the parallel port stuff.

February 9
Spent much of the day tooling with the crap-o-cam, occasionally crashing Blimp with infinite loops and what not. Drivers are FUN!

And yay, finally I get the camera working in one of the higher-speed modes. Excellent! I'm also looking at making it 2.2 and 2.4 compatible, although I guess really I should just code it to 2.4 and be done with it. But it's already working on 2.2, dammit!


February 8
Set up Blimp with 11Mbit wireless, brought Klortho downstairs and plugged the headphones into the amp, then ran up XMMS. Muahahaha. Boy, is that neat. Mind you, the 11Mbit wireless seems WAY more sensitive to interference (which makes sense, from what I understand of wireless tech; higher bitrates need clearer air, basically) so I may drop it back to 5Mbit or 2Mbit. Or see if it's smart enough to autonegotiate down when things get messy. Ha ha oink oink flap flap. Also, the Linux-WLAN tools seem far more useful than the wireless-tools stuff distributed as "standard".

Started cleaning up the code for the crap-o-cam so it doesn't make such a mess when running (and when compiling). Step one, clean up all the compiler warnings, so I can concentrate on actual code.

Whoops. Coded an infinite loop, didn't realise until I'd run it. D'oh. Infinite loops in kernel drivers = doubleplus ungood.

Of course, it's even worse when you do it a second time. At least I had Magic SysRq enabled this time.

February 7
Last day of BOFHness. More humour.

February 6
More panic at work, BOFH day four. Seriously, I have funny stories that I can't tell you. At least, not here.

Gonzo fell over kapow boom when I tried test-burning a CD. That's BAD. That's not even writing data. Moving the data to another disk so I can try the testburn using a different source. Really, though, all these problems should disappear when Donal shows up next week to get married and brings me a motherboard (reverse wedding gift or something).

February 5
BOFH day three. No users have died, amazingly. I must have learned patience since I was last a BOFH. Anyway, more wireless dinking.

Weird. The 11MBit card on Windows 98 just goes bananas connecting and disconnecting. And of course Windows gets confused over default routes and what not.

February 4
BOFH day two. Spent some time after work dinking about with wirelessness; the 11Mbit cards are kinda okay about interoperating with the 2Mbit cards, but not really okay about it. Also, I can't sneakily upgrade my 11Mbit 40-bit WEP Orinoco Clone to a 128-bit WEP Orinoco.

February 3
I'm on BOFH duty all this week. It's highly amusing from a long distance, but while I'm in the middle of it it just means running around the office a lot, swearing, and not getting anything done on the project I'm supposed to be working on.

February 2
I have no comment on the shuttle incident that hasn't already been made. Sky's coverage, predictably, was the same tape loop shown over and over again until they had another tape loop to run; in other words, the World Trade Centre all over again. Apparently this counts as news coverage these days. 34 people died in a train crash in Zimbabwe yesterday. If you were hoping to find that out on Sky News, you'd be pretty disappointed.

Back to the geeking; sure, it pales into insignificance but it's what I do. Mozilla 1.3a or 1.03 or whatever they're calling it has one feature immediately obvious to me that I know I'll be using: an inline search box for your bookmarks on the sidebar. It pops up the search results in the bookmark tab, and it's not immediately obvious how to get your full bookmarks list back (right-click on the top of the tab, reload, seems to work) but I've found myself having to use the bookmark search a few times lately and it's nice to see someone's actually improving it in terms of usability.

While I was messing with the browser, I figured it'd be a good opportunity to update my copy of CodeWeavers' Crossover Plugin as well, since they sent me my final free update not so long ago. I have to say I'm well impressed with this; it only cost me $20 and it's generally well-polished and sane.

La la la. Built a kernel, patched PCMCIA on another kernel, did a Micromail update, watched a bunch of crap TV in lieu of doing anything useful. I did finally get my wireless network back up and running, though. Also my cheapass webcam toy.


February 1
Decided to "do something" about the mess that is the machine room. My own, as opposed to any belonging to a company. Thing is, I've no idea what to do with it.

Removed all the rest of the format-time-string crap from the diary helper code; this cuts down the number of places where I can completely screw up an entry.

Apparently "do something" means move things around so I can put the two laptops on one of the desks, which leaves me with the lesser problem of where to put the Archimedes and its monitor. Also sanding down the crap on Qaz, which somehow has an almost-full 9GB Linux partition. You know, I used work in a 40MB partition with a compressed filesystem and be happy with it.

previous month | current month | next month


Waider Almost time for another leap year.