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. |