A rough account of what I did with Emacs recently.
- February 28
- After a little poking around, I realised I
could use mp3info and mpg123 to test my mp3s, at
least for "file header length" vs. "actual file
length". And it's like this:
echo -n "Checking $1: "
EXPECTED=`mp3info -f "%m:%02s" "$1" 2>/dev/null`
if [ -z "$EXPECTED" ]
ACTUAL=`mpg123 -t "$1" 2>&1 | sed 's/^\[\(.*\)\].*$/\1/' | tail -1`
if [ "$EXPECTED" != "$ACTUAL" ]
echo "Mismatch: expected $EXPECTED, got $ACTUAL"
Spent most of the rest of the day working on Interphrase stuff. They'd
like me to chunk some XML stuff in there, but I'm not sure it's
appropriate. I need to think about it some more, I guess. The work
is all PHP/MySQL stuff, which is very much a
learning experience for me.
Finished up the day with another bunch of hacking on the MM2 file
formats, and managed to figure out - I think - one of the
flags. Picked up a few more bits and pieces about how the files
- February 27
- Good grief. Turns out my patch to
add Compaq Armada M700 support to xkeycaps was
broken. doh. Doh. DOH. Fixed now.
I had another look at the BackSpace vs Delete thing, thinking that
perhaps my stty setup was to blame, and maybe I should
modify the X keymap to cope (hence the discovery re: the
patch). And, well, I'm confused. The BackSpace key is, in fact,
mapped to ASCII 0x08, as you'd imagine. Yet in a xterm, it is
^?. Okay. Well, at least that makes Emacs work. That is, I presume,
controled by the BS/DEL setting. Delete, on the other hand, is
mapped to ASCII 0x7f - again, as you'd expect - and maps to
^[[3~ in an xterm. Um. When I then telnet across to Gonzo
and do stty erase ^? (well, it's already set),
bash takes over and decides that irrespective of
stty, it's using ^? as Delete, thanks. So maybe
it's just a bash problem I have to
Then I poked at /etc/inputrc for a bit, discovered that
the one on Gonzo
belonged to an older version of setup, upgraded,
and... woah. It appears to work. Time to take that nasty comment
out of my XTerm app-defaults.
- February 26
- Spent some time hacking up a very cheezy
front-end to the files from the old TBWA (Talk.Bizarre Wasteful
Archive - we were providing a web-accessible newsgroup archive
while Deja was still learning HTML) and then spent most of the day
reading through old articles from 1992.
As you may have noticed, I'm in something of a slow-rinse brane
cycle at the moment. Normal service will resume at some point, I'm
sure. I did finally finish the Alcatraz stunt, though;
here's a picture of my Ford Mustang on
Alcatraz and here's the ramp I built
to get there. Whee!
- February 25
- Reboot to Linux,
catch up with email, patch BBDB, that sort of
- February 24
- Silly me, suggesting things like that to
myself. Now I have a half-assed Perl/Tk script that does the
tweaking for me, and I've almost got a bridge to Alcatraz made out of
jumptrailers. I think it's time I rebooted back to Linux.
Mom's school computer arrived at my doorstep; I've promised to
give it a good seeing-to and a bigger hard drive. Also probably a
coupla drops from the balcony to get its head
- February 23
- More hacking with MM2. I now have a
command-line map editor and I'm tweaking the location of toys on
the map. I should really make a Tk interface for it.
And we will say nothing of the monster beerfest in Messrs. Maguire, nor the
tales and songs of the post-beerfest
- February 22
- Mostly off day, playing with MM2 and trying
to hack its file formats. At about 4am I figured out the one I was
hacking sufficiently. Bwahahah. Fetch me my Perl, boy!
- February 21
- For the past while I've been getting
messages like this every so often:
From: email@example.com (Cron Daemon)
Subject: Cron <root@gonzo> run-parts /etc/cron.daily
Date: Wed, 21 Feb 2001 04:02:01 GMT
error: cron:1 duplicate log entry for /var/log/cron
I finally got fed up of it and tracked it down. Turns out it's due
to there being both a /etc/rotate.d/cron and also an
entry for /var/log/cron in
/etc/rotate.d/syslog. Now, isn't that obvious
from the error message? GAH.
- February 20
- Still no sign of Icecast's site coming back
up. Doesn't look good.
nhist.el is now at the point where I can query the
history database for anything I've visited in the last 30 days by
title or URL (or both), and it'll pop up a click-sensitive buffer
full of matches. It was scarily easy to implement, and I learned
about nconc in the process. Specifically, I learned that
nconc can't have nil for one of its
to-be-modified arguments. This means I have to have nasty code
(nconc foo bar)
(setq foo bar))
which seems, well, inelegant.
- February 19
- Hmmmm. Looks like the problems I was having
streaming with Icecast are,
in fact, caused by the streamer, Shout (and its descendant
Ices). I figured this out by plugging in the old Icecast streamer, iceplay, and
letting it run overnight. It's been running for 9 hours now
without dropping the stream. The sound quality is rough, though,
and it occasionally pauses, but I'm putting this down to the fact
that iceplay is about as raw a streamer as you can get - open
file, dump in 4k blocks to server, lather, rinse, repeat. So, I
had a look at other streamers, and damned if the bulk of 'em
aren't written in Java. Oh dear. That's the last thing I
Fixed all the typos I'd made in yesterday's code, with some help
from people on bbdb-info, so now it all works
and it's not polluting other peoples'
Hmm. Just looking up a URL I'd visited for someone on Nerdsholm,
and I realise it'd be rather useful (and almost in the spirit of
computer) to have a means of searching Netscape's history list
from Emacs. So I picked up a
piece of code I was playing with ages ago and discovered it no
longer worked, because RedHat
now ships with something like three different versions of the
Berkely DB routines. Further investigation revealed that at least
one of said versions comes with a generic dumper that I can
use. Woohoo! Now to see just how much evil I can wreak with
Installed PHP and MySQL on Gonzo
so that I'd have a proper environment in which to play with the Interphrase
- February 18
- I spent the entire day trying to
get my head around Emacs'
concept of contextual menus, and also its overlays - known as
extents to you XEmacs
folk. The overlays aren't too bad to deal with; that was mostly a
case of figuring out what overlay functions map to what extent
functions, and what to do with the missing bits. The real stinker,
though, is the menu stuff. Emacs allows you to build an X
popup menu in one of two ways. One way, you can only do submenus -
you can't define a menu item that's either a top-level
menu-command or an arbitrary piece of text. And that's the easy
way. The hard way requires you to define an entire keymap for your
menu, complete with unique keybindings, and you need to do it in a
particular way to make submenus work. Now, I could get around all
this by using my knowledge of keymap innards to hand-build a
keymap, but then I'm screwed when RMS decides that there's not
enough GNU in them and redefines the damn things. So I spent a day
constructing menus by hand, fiddling with them, inspecting the
keymaps, and then going back to the generator code to try and
figure out the kosher way to replicate the work. This is another
good example of how Emacs does not get
Anyway. At the end of all that, BBDB is now font-locked
under Emacs and has
contextual menus, and my brane is locked in elisp-mode.
- February 17
- Wake up.
Bus to town.
Sit in pub.
Repeat previous until closing.
Oh yeah. Ireland beat France at rugby. Woohoo!
- February 16
- Fitted a new CDROM in the Mac and set about
cleaning it up, 'cos I'm giving it away. After a brief struggle, I
had a clean OS 8.1 install, which is about as much as it can
manage. I need to snag an external modem somewhere and set that
up, then it's good to go.
- February 15
- Urgh. Hangover. Minor fidgeting with a few
things, nothing of note.
- February 14
- Patched a few bits and bobs into BBDB, then went back to
hacking at the camera, to no avail. Bah.
- February 13
- Spent far too much time playing with the
apparently-abandoned driver for the Creative Webcam I, a clone of
which I acquired while working for Scope Communications. Eventually
gave up on it and rebooted to Windows - which
worked, hurrah - and played with it there
- February 12
- Finally got fed up of hand-patching URLs and
made linkfarm-mode adjust the URLs it inserts to compensate for
relative links. The elisp
that does this is, predictably, pretty horrific, since it was
written at 4am.
Went hunting for a bug in VM's base64 decoding
after receiving a couple of messages from JoeV that weren't
decoded. Turns out that (a) Mailman doesn't properly append
its trailers to text/plain messages that are base64-encoded (b)
Emacs' built-in base64
decoding refuses to do anything if any of the region you ask it to
decode is non-base64 data. Pretty easy to patch around, but a
complete nuisance. I've made a patch to vm-mime.el
to fix the decoding here.
Had a doh! moment with Gonzo;
I finally decided that it's time I recased everything and
rearranged disks and so forth. I spent an hour playing with
jumpers, cables, BIOS AutoDetect IDE Settings, BIOS IDE Interface
Settings, and eventually copped that all I needed to do was go
into the Basic BIOS settings and tell it the disks were
auto-sized. DOH. DOH. DOH. Upgraded Gonzo
to 2.4.1 while I was at it.
- February 11
- Started messing about with an XML import for
BBDB. The idea here is
that with a sufficiently generic DTD, you should be able to get
pretty much anything to feed data into your BBDB
addressbook. bbdb-merge.el would do the actual work of
reconciling the import data with the existing data.
Tweaked my "What movies are on TV today?" script to work
a little better - better text parsing, and caching of pages
retrieved from Aertel.
Thought briefly about adding in a generic status-switched to
EveryBuddy so you could
simultaneously set all your accounts to "Away", then
thought better of it and goofed off instead.
- February 10
- Solved the BBDB/VM window problem -
silly bug where I'd confused a buffer with its name. Doh.
Spent most of the rest of the day writing about FROST.BOB
II and making various tweaks to the
- February 9
- "Do you want to get the new version of
Microsoft Messenger?" it asked me. Thoughtlessly, I clicked
"Yes". What a mistake that was. Suddenly, Explorer is
crashing every 30 seconds with an error in WSOCK32.DLL, followed
by an error in KERNEL32.DLL. Hell of an upgrade. So having tried a
bunch of other stuff, I ripped out all the networking right back
to the bare metal and rebooted. Detect stuff, fine, can't find one
of the drivers, okay, continue anyway, yes, replace all that new
crap with the old crap, reboot, forget to tell LILO
I want Windows, so now
I'm back in Linux
Land and I'm not really too inclined to check if Windows is happy
or not. What a piece of crap.
And all I wanted was a quick game of Midtown Madness
- February 8
- Hacked up some Perl/Tk to manage the viewing
and rotating of images for
my thumbnailer. It's getting WAY out of hand. Discovered in the
process that feeding arbitrary images to Perl/Tk is a real pain in
the ass. Tk::Photo only understands GIFs and PNMs by
default, and it appears that you need to go play in C land to
augument its image handlers.
Hacked around a piece of elisp I've
been meaning to finish to edit PilotManager's version
of the Palm MemoPad
stuff. Man. I have some DISGUSTING code there.
Played around with the XML resumé
idea some. There are things I'm not really sure how to do, and the
net is sparse on any decent examples - everyone's doing the simple
stuff, and then referring you to the specs. Like learning HTML all
- February 7
- Put a Google search box on the front
page. I wonder if it'll actually be used?
- February 6
- FROST.BOB II, or
too much fun and games below freezing.
previous month | current month | next month
short month. drink faster.