Hacker's Diary
A rough account of what I did with Emacs recently.
- January 31
- Ow, a pub.
Got a bunch of bug reports and a few suggestions for librvp.
Cool!
- January 30
- Had a look at Gaim 2.0. There are a few changes that will bite
me, and a few changes that I can probably work around with
compatibility wrappers. Still, though, finishing ACLs is looking
easier.
- January 29
- Well, that was fun: after a few days of bashing, and bad
documentation, and randomly trying stuff, I appear to have an
Apache 2 version of the winbind auth module that works well
enough. It may, for all I can tell, be leaking memory like a
sieve, but anything's gotta be an improvement on a bunch of Perl
that stalls every time you're debugging something
interesting.
Fixed a configure bug in BBDB, which I still have
delusions of maintaining.
Did a tiny bit more with the librvp ACL
stuff, but nothing releasable yet. Also, I need to think a bit
harder about the memory stuff, as currently I keep running into
problems when I try to implement cleanups largely due to my not
keeping a consistent policy on who owns allocated
memory. D'oh. I've also snagged a Gaim 2.0 tarball to see if I can
coerce the RVP stuff into working with it. Either that or ACL code
will be the main feature of the 0.5 release, which should probably
kick out some time this week. Right now I'm leaving the client run
overnight to see if it spontaneously dies for any
reason.
- January 28
- More Perl cleaning. Man, I have a lot of crappy little
scripts.
Continuing the saga of the alleged gateway: enabling the SPI
firewall appears to cause it to interfere with my work
VPN. Removing the SPI firewall leaves my main server open to
intarweb abuse, despite the fact that the settings page says,
"don't send any data if it's not to a port listed
below". Curiously, putting in a bogus IP address for unlisted
ports to be directed to seems to do what I want. What a piece of
junk.
Robots was lots of fun, with some really
good laugh-out-loud moments. Definitely one to watch.
Happy Birthday, Sis!
- January 27
- Cleaned up a bunch of old Perl stuff that I've rewritten in
newer and better ways. Also stopped my alleged gateway box from
hanging all my services out on the intarweb.
- January 26
- Lilo and
Stitch 2 wasn't quite the laugh riot the first movie was, but
was still pretty enjoyable.
- January 25
- Started working on the Allow/Block code.
Pushed out a new release of Finance::Bank::IE which
allows cash transfers in the BoI code; both account-to-account
internally, and account-to-third-party.
- January 24
- Much digging around in the ACL code resulted in a possible fix
for excessive calls to the ACL routines in the first
place. Yay!
- January 23
- More tinkering with yesterday's Apache module. WTF is
apxs doing in /usr/sbin?
Also, debugging a crashing Apache process is really no fun at
all.
- January 22
- Hacking together a fairly nasty chunk of Perl to import registry
settings from MSMessenger to Gaim.
Set up winbind to try and hack around the stalling NTLM auth
problem. Ew. Then tried porting some Apache 1.x code to Apache
2.x. EW. The most "amusing" part of the latter is that
the official documentation consists of (a) autogenerated stuff
from the header files which frequently doesn't tell you much that
you'd not have guessed from the name of the function and (b) some
rather poorly written docs that include such phrases as "I
don't know what this parameter is for" which, you know, fills
me with confidence. In the end, I got the code compiling but
crashing, so I abandoned it in favour of dinking with RVP some
more.
New librvp
release: mostly minor changes, aside from the nasty ACL bug
mentioned on Friday. If you're using this code at all, upgrade
now.
- January 21
- I ended up watching the end of Bad Taste on the laptop as my DVD
player decided to give up on the disc at chapter 13. For a
low-budget movie, it's actually pretty damned good - funny, lots
of schlocky gore, and more foam latex than I've seen since One Crazy Summer. It's kinda
funny to watch something like this and then compare it to King
Kong or the Lord of the Rings trilogy from the same
director...
- January 20
- Looks like I've found the bug. Different to what I thought, but
still a gaping hole. New release forthcoming, but for now: don't
add yourself as a buddy!
Of course, I found another bug in passing, but it's with the
multi-user chat stuff which I know is imperfect
anyway.
- January 19
- Happy Birthday, Hannah!
- January 18
- Shiny new RVP bug that, if I understand it correctly, reveals
yet another gaping hole in the security model of the
protocol. Tidy.
- January 17
- Got a flash of inspiration as soon as I'd gone to bed, so first
thing this morning I fixed multi-user chat. Whee! Need to hammer
it a bit more, and then I'll kick out a new release (featuring
incomplete file transfer code...)
New librvp release: multi-user
chat mostly works, as noted; install directory is determined
automatically; redirects should work; endian bug in SRV
code fixed. Next, I finish cleaning up multi-user chat, and go
back to file transfers which really just looks like I should rip
the MSNFTP code out of the MSN module.
- January 16
- Yay! I have several happy clients, and some bug reports! The Mac
version works, which is neat, but there's a bug in the redirect
code that means it won't work properly in a multi-server
environment (I've patched this locally, but I'm working on a few
more fixes before releasing it) and for some reason the client
doesn't seem to be announcing itself properly on the
network. Might just be another "you didn't say UTF-8 so I'm
going to quietly fail" thing.
Had a look at the contributed algorithm for decoding MP3 File
Manager files. It works for the first three files, which means the
guy who wrote it is onto something, but breaks on the fourth. I
suspect there maybe some sort of silly bit dance like there is
with the original MP3 File Manager.
Sort of got multi-way conversations working; there's still some
oddball doubling up on users present, but for the most part it
seems to do what I want.
- January 15
- So I'm working my way through a reverse-engineering of how the
file transfer works under RVP, and once again I am stunned at the
fragile nature of the official client: if you tell it you have a
message of type text/x-msmsgsinvite, it quietly discards
it, but if you append ; charset=UTF-8, it suddenly
recognises that you're trying to handle a file
transfer. Wonderful.
Eventually I got a chunk of the file transfer handshake
working. Plus, I've compiled the code on a Mac (using the GTK Gaim
client rather than a native version) and after a small amount of
kicking it appeared to be working. Unfortunately there's a bug in
the code I released which means it won't work, and since I'm
midway through implementing stuff I don't have another release to
upload just yet, so the quick fix is to modify the code that
retrieves the SRV records to manually force the port to 80 instead
of attempting to pull it out of the returned DNS record. The
slightly less quick fix is to fix the mess I made of parsing the
DNS record, which is what I've done with the local
codebase.
- January 14
- One of my christmas goodies was a USB Bluetooth widget, so I
finally splashed out and bought a TDK Blue5 for my Palm Vx. After
some tinkering with the insane "Windows knows best"
settings (hello, why do I have COM21?) I pressed the
little glowing blue button and the Palm synced via
Bluetooth. Neat! One odd sideeffect, though is that my Palm, which
at some point forgot how to automatically turn itself off, once
more understands the concept of idle time. Weird.
Also, another enterprising hacker has done some further digging in
the files produced by newer versions of MP3 File Manager, and may
have figured out how they're keyed. I've not yet tried out his
code, but I've been rearranging the MPLE stuff into a more
generic library so that in theory you could plug other devices
into it and have a unified interface for tools like
mple-dump and what not.
And, of course, RVP. I've just added in self-unsubscribe and
started playing with the context menu stuff instead of dealing
with useful bugs like memory leaks, the total lack of ACL
handling, and the broken chat support. I'm fickle like
that.
Unleashed was an odd sort of
film. Lots of kick-ass martial arts (as you'd expect from the
combination of Jet Li and Yuen Wo Ping) and yet an actual story as
well. The story was a bit heavy-handed in places (especially the
"creative" use of weather as a metaphor) but on the
whole I enjoyed the end result.
I really don't know what to make of The Life
Aquatic - it's a decidedly odd movie, and I didn't give up in
the middle of it or anything, but I can't say it was a great movie
or that I enjoyed it all. It certainly had its moments, but
overall it felt like a joke that I just wasn't
understanding. I did like the Bowie music, though.
I started working on RVP file transfer, then decided I'd be better
off in the pub. My life is full of hard choices like
that.
- January 13
- Well, wahey. Fixed the bug I discovered all of last week, and
now need to nail down the one I found yesterday. Then, for a
little light entertainment, I'll try building it on MacOS
X.
And so. Last night's bug also provisionally nailed down. As
promised, I am providing a download: librvp-0.2.tar.gz.
I am making no promises about how well this might or might not
work, so grab it if you like, do the configure dance, and put it
somewhere that Gaim will see it as a plugin. It's been compiled
against Gaim 1.0.1, probably works with 1.5.0, and I've not yet
downloaded 2.0. It doesn't do file transfers, marked-up text, or a
bunch of other stuff. Due to the nature of the constraints under
which I'm developing this, I probably won't accept patches, but
will accept bug reports, preferably accompanied by debug output
from Gaim running with the --debug parameter.
In putting up the previous I fixed a bug in another script that
converts this diary into a bunch of html bits; the script now
makes sure all the links are absolute, so I can fling the
extracted HTML where I like.
- January 12
- Disheartening: looking for one bug, and finding another, and
still not knowing how to sort out either one.
- January 11
- Bah. It appears that the fix doesn't.
King Kong is a pretty good movie, but
damned long. And there are parts where I'm convinced the giant
creatures are real, and the scenery's all fake. But I did like the
dino fight.
- January 10
- After staring at some packet traces I think I've found the
damned bug. I'll know for sure tomorrow, at which point I may
actually post a version of this code on the site since it's the
first decently functional version.
Dodgeball: A True
Underdog Story was better than I was expecting, given the
presence of Ben Stiller and, well, Vince Vaughn who annoyed me in
most of the films I've seen him in since Swingers; turns out this is one of
Vaughn's good movies, and I found myself laughing out loud at
parts of it. Not a 100% brilliant movie, but certainly the best
Stiller fare I've seen in quite a while. Nice cameos,
too.
- January 9
- Hmm. So one of the fixes still doesn't work. Grr.
- January 8
- Woot, fixed my caching bug: when using a g_hash_table, don't
free up the thing you used as a key after using it... also fixed
Friday's bug, so now I'm back to figuring out how to make
multi-user chats behave sanely. The main problem is that Gaim
doesn't have an easy means of promoting a single-user chat to a
multi-user chat.
Again with the hammered httpd. wtf?
- January 7
- Weird. Webserver went nuts; looked to have used up all its
memory, but damned if I know how or why.
Ok, looks like someone hammered the shit out of my poor
webserver. At least I now know that 100 httpd processes are
apparently sufficient to kill the box it runs on (load average:
140+). Guess I should lower the MaxServers setting...
Be Cool was nowhere near as good as Get Shorty. It was all over the
place, really. Largely unfunny, incoherent, and hopelessly
scripted (the Steven Tyler scene in particular). About the only
good thing about it was Christina Milian's singing. Not a movie
I'd recommend at all.
So I think I've fixed Thursday's RVP bug, but I still haven't
sorted out Friday's.
Tweaked spamassassin somewhat to be more aggressive about
discarding penny stock mails. I don't see them, generally, but
they end up in the "not sure" folder instead of the
"definitely spam" folder, and I'm not happy with
that.
Added IMAP support to a script I'd been using to clean up joe-job
bounces, so now I don't need to log into the server to run it. Yay
laziness!
- January 6
- Found another RVP bug today. Dammit. I'm supposed to be reducing
the number of bugs, not increasing it.
- January 5
- Turns out the bug is exactly where I thought it was, just that
the code's not doing what I thought it was doing. D'oh!
- January 4
- Bridget Jones:
The Edge Of Reason is a bit hit-and-miss. Some of the missing
is the cringe-inducing humour that I don't like, and some is
simply unfunny gags like the changing-clothes scene with the taxi
waiting outside. Some of the hits are damned fine, though,
particularly Hugh Grant and Colin Firth floundering around in a
fountain. "What are you going to do now, drown me in 16
inches of water?" "...good idea!" <proceeds with
ducking>. Can't recall much of the first one, except that the
endings felt like an endless series of options that had been patched
together instead of the editor actually choosing one; things were
a good deal tighter this time around, unfunniness not
withstanding.
I found a bug in the RVP client today; or rather, I observed it,
but when I went to look for it in the code I couldn't find it. I
may need to resort to packet traces. The annoying thing is that it
takes four hours for it to show up, and I'm not sure that I can
short-circuit that. Time to start putting some more config options
in, I think.
- January 3
- Back to work today...
Did a bunch of cleanup on the RVP code. I found another bug (by
which I mean "undocumented server feature") which caused
the client to behave oddly, but I've caught and killed
that. Yay. Also caught a few uninitialised variables, although I
don't think any of them were critical. There's still a little
weirdness in the normalisation of usernames; I'd like to see the
normalised versions being written out to the buddy list, but
that's not happening and the normalise function gets called all
over the place, too.
- January 2
- Hmm. I am having repeated problems with hashtables. Seems like
every second one breaks as soon as it goes out of scope. I have no
idea why this might be, but it's certainly annoying me.
Ok, that one turned out to be a stupid bug. Still perplexed by
other occurrences of broken hashtables, though. Having solved a
few more stupid bugs I now have the next chunk of multi-user chat
working, which is that someone joined to a multi-user chat can
send messages back. Next step is to have Gaim instigate the chat
and see how Windows responds, which will allow me to figure out
the multi-way handshaking.
Um. Except there isn't any that I can see. When you invite a user
to a conversation, everyone on the conversation receives the
invite which, as best I can tell, tips them off that they're all
supposed to add the invited user to their copy of the
conversation. There doesn't appear to be any way of blocking
conversation invites that's immediately obvious to me, and there's
no way of rejecting them either. Makes things simpler to
implement, I guess, but ick. Maybe it's just something to do with
my incomplete implementation of server-side ACLs.
I finally got around to upgrading the firmware on my router, but I
still can't traceroute through it and it doesn't seem to have made
PMTU discovery work, either. At least, I'm assuming that's what's
preventing me from accessing my network when using a VPN
elsewhere. What a piece of junk.
- January 1
- Happy New Year!
The main to-do list for the RVP code is now down to one major item
- handling multi-user chat - and several minor items, the
principal of which is probably adding timeouts for HTTP
traffic. Yay me! Of course, I'm totally ignoring stuff like file
transfers for now as they're not critical for my intended
application of this code.
Hmm, the multi-user stuff is proving to be a little trickier than
I thought, but it's not insoluble. The only major hurdle is that
Gaim - at least the version I'm working against - doesn't appear
to have a means of promoting a one-on-one conversation to a
multi-user chat. There's a good chance I could fake it, mind you,
but I'll try and get it working for the trivial case first. Right
now, I'm able to use the Microsoft client to build a conversation
and send messages to all participants, but the Gaim code can't
talk back just yet.
previous month | current month | next month
Waider | |
Happy 2006 and all that |