< | >

Hacker's Diary

A rough account of what I did with Emacs recently.

April 30
Wow. The Irish Times does RSS. Go you guys!

Miss Congeniality was about as good as I expected, which is to say it was marginally better than staring at the wall for however long it lasted. About the only really funny part was the impromptu self-defense demonstration; everything else was just flat and predictable and wholly unamusing.

Hacked up a nasty piece of perl to dump cinema listings for my local cinema into something approximating an iCal/Mozilla Calendar file. Gnee, etc.

April 29
Fixed drag-and-drop within the device again. Yay!

April 28
Found one of the silly bugs in the Gtk MP3 File Manager: when checking to see if an edit had actually changed anything, I was using memcmp() == 0 instead of memcmp() != 0. Plainly obvious, eh?

Curiously enough, RealPlayer supports reading and writing directly on the ATRAC side of the player - to the exclusion of the non-MP3 files, in fact. Must be part of their cross-licensing with Sony as mentioned previously.

Super Size Me was on Channel 4 tonight. Didn't exactly blow me away or anything; I'd pretty much read all of the "shocking findings" in one place or another, plus I've already, er, chewed my way through Fast-Food Nation. I mean, it was interesting and all, and probably a bit of an eyeopener if you're not familiar with the subject material, but hey, I still don't regret having that bacon double cheeseburger on Saturday night last.

April 27
Made a few final(!) tweaks to my script to migrate XChat settings (from v1.8ish to v2.0) and then actually ran the damn thing and used its output. I've been using XChat 2 for quite some time, but with constant annoyance at things I'd previously configured that were no longer working on account of the upgrade. Most of that should now be fixed.

Snork. I guess this also counts as some sort of fame. Or maybe it's notoriety. Anyway, obviously I've snagged and built the new version. I should really post my .specfile somewhere, or give it to jwz, maybe.

I wrote a script some time back to query XMMS and find out what it's playing, for the purposes of filling out things like "Currently listening to:" on LiveJournal. Not so good when listening to streams, though, and particularly not so good if the stream doesn't provide metadata. Since I've been using last.fm as my source quite a lot recently, I've just added to the script the ability to ask last.fm what I'm currently listening to. GNEE. I should probably rig up the other feature of the script, a "NEVER PLAY THIS AGAIN" hook, to send a "BAN" message to last.fm, since that hook is triggered by a button on my desktop.

Johnny English is pretty much exactly what I expected: 80 minutes of "Bean as Bond". Far too predictable, too little that's actually funny, WAY too much cringing, and of course Underappreciated Sidekick Constantly Saves The Day, Except When Bumbling Hero Finally Makes Right. Gah. At least there was the pretty Natalie Imbruglia to look at.

April 26
Hmm, the memory leak appears to be another of those "by design" features of GLib; without digging too much, it appears that the g_string_* functions allocate a pool for themselves, and never release it - they just take memory from the pool and give it back to the pool and expand the pool as required.

I've found some sort of bug in the Gtk loader, but since I'm still trying to clean it up I've resorted to bolting on more code instead of fixing the problem. Caveat buildor or something.

April 25
The price of portability: I've just discovered that g_build_filename, a cross-platform way of assembling a file path from a bunch of strings, belongs in the "leaks memory" category. I just ran a loop of "build path; free path;" and for even a single iteration it loses over 2k. More iterations and it loses 4k, then 8k, up to the point where for about 6000 iterations it lost almost 70k. While this is small fry on the general scale of things, it's pretty irritating. Plus, when I tried to check the source on gnome.org, their CVSWeb wasn't working. Gah.

April 24
Still broken:code with the rest of the Sony NW-S23 access stuff.

Blue Velvet is a surprisingly coherent David Lynch movie, with only the occasional foray into opaque weirdness. However, the DVD transfer was pretty diabolical; the sound levels were all over the place and the picture's contrast level kept jumping up and down. So between missed dialogue (there were no subtitles, either) and murky scenes I basically got the full David Lynch experience after all. Bah.

GRR. up2date really needs a better mirror-failure mode than "bomb out". And it DEFINITELY should mark mirrors as bad and not try them except as a last resort when, e.g. the mirror persistently returns a 403 or other failure.

Had another run through the Windows MP3 loader for the Sony, and I have one or two more items to add to my "needs fixin'" list, but mostly I'm thinking maybe I'll recompile my toy under Windows and use it instead of the official one. Because that would please me, in a geeky sort of way.

April 23
More headbanging, and a bit of shouting, and some judicious swearing, and I have now mostly reproduced the functionality of the Windows-only MP3 File Manager that came with my Sony toy. I am currently missing the ability to add an entire folder, or have a file go onto the device in the correct place within a folder, but I can reorder files and folders once they're on the device, and I can rename them, too, which the Windows one can't do. Gnee. Mind you, I've done at least one horrible thing in the drag and drop code, there's code duplication all over the place, the thing leaks like a sieve, it syncs data to the device FAR too often, and I'm still occasionally plagued with a drag-and-drop icon whizzing across the screen a minute or so after I've shut down the program, so there's obviously something else screwed up. I should have most of this fixed tomorrow and up on the site.

April 22
Banging my head against drag-and-drop. Ow.

April 21
One more long-standing RSS Toy bug fixed: now it converts UTF8 to iso-latin-1 (yes, yes, I know that's lossy) before handing it off to anything that might want to parse it. This stops XML::RSS in particular from rendering multibyte characters as individual characters, normally crap like €¦ or some such. There's probably a better fix for this (i.e. tell XML::RSS to stop mucking about) but this works for now. Also found a bug in the date parsing where I thought I'd catered for all the stupid variations on "official" datestamp formats, but I missed one.

Also tweaked something I'd been meaning to tweak in the TV listing script for a long time: it now truncates the listings before the currently-showing programme, so you don't end up wth a whole chunk of useless information offscreen on the left. Yay!

April 20
The Atom-to-RSS conversion required a small amount of kicking (I run Fedora Core 3 on my "development machine", but the webserver's Red Hat 9 plus bits) but it is finally operating more-or-less properly. Yay!

April 19
Tweaked the RSS toy to handle Atom feeds, sort of. It does this by doing a rough conversion to RSS, which is totally wrong (at the very least I shold be doing it the other way around), but it'll work for now.

April 18
Converted the films.pl script to use XMLTV parsing instead of dealing with raw XML. Not a whole lot of difference, to be honest. Also found a bug in the XMLTV grabber I'd written, so it should now be back in some semblance of working order.

The Bourne Supremacy really isn't a patch on the first movie. Ok, the car chase is better, but it's the climatic sequence in the movie, so it'd kinda have to be better. The story, on the whole, sucks. The third person killed (you count; I'm not spoiling the story for anyone by saying who) was a really, really stupid plot choice. It's been a long time since I've read the books, and they sort of blend together, but the stories were good. This movie really isn't much more than an average thriller.

Aha, having watched the extras I see where the problem is: the director's "a visionary" or something. Trying to imbue the film with intelligence. Screw that. I want brane candy and stuff that explodes.

April 17
Ok. I have (almost) completely redesigned the NW-S23 access code API, so it is now a lot closer to something sane, plus I've built a test rig that goes through all the functions and checks that they return success values and that no memory is being leaked. I'll need to make the test rig a little more useful in terms of checking the return values, the results of the function calls, and testing failure modes, but for now I'm going to upload what I've got in case anyone's actually using this stuff - according to the logs, only about 24 people have looked at the code.

Found a very stupid bug in the script that generates the RSS feed for this diary; it was preventing relative links in the feed from resolving correctly. I've now got it hacking them into absolute links in the feed, which is ugly but will work.

April 16
I had an evil thought relating to Py/SharpMusique: apply my Sony hack to it. Thus, download your iTMS music to a non-iPod device. Unfortunately, SharpMusique didn't seem to want to work for me, and I really couldn't be arsed with trying to debug it. In fact, right now I'm waiting for yum erase mono-core to finish up.

The TV listings script is kinda back in some sort of shape; I redid it to inhale an XMLTV file and then modified another script I had lying around to generate said XMLTV file. It's a bit shaky at the moment, but it's working after a fashion. The major breakage is that the forward/back day buttons don't work. The show times aren't quite kosher, either. Hmm.

Finally resurrected my delaminated Utah Saints CD by rebuilding it from the rippable parts of the original plus ripped MP3 files to make up the lost tracks. Hurrah!

April 15
My source for TV listings has altered their page layout. I will need to compensate, but in the meantime the TV listings stuff is broken. Sorry if you're using it.

And a Micromail update.

April 14
You know, I shouldn't really be surprised, but there are people posting followups to the slashdot thread who apparently haven't actually read the article they're commenting on. I don't mean "haven't followed the links", I mean "haven't read the two paragraphs that made the front page."

April 13
Now I'm really famous. I only wish people would, you know, read a little before attributing all sorts of things to me that I've not actually done. I will also overlook the irony in that my original submission of this to slashdot was rejected...

Chinatown is a well-made gritty detective story somewhere in the Raymond Chandler world. I'd seen some of it before, including the well-known scene with the nose, which leads me to my one complaint: that whole scene in the context of the movie doesn't really fit in, mostly because Gittes' assailants don't get any further development. It didn't even work as a false lead to throw me off the plot; it just annoyed me after the movie was over. The fact that "Man With Knife" is Roman Polanski may be the sole reason for including the scene. That nitpick aside, I enjoyed this movie. Now, there was something about a sequel...

April 12
More birthday silliness ensues. Do not write code post-pub.

April 11
Happy Birthday to ... Me!

April 10
Novel failure mode for X: mousepointer disappears. Nothing has focus any more. Nothing can get focus any more, not even via the window-manager's hotkey... Ctrl-Alt-Backspace time.

Snork. I am like totally famous right now.

April 9
Spent the day in town with friends, during which I acquired two more of Warren Ellis' Transmetropolitan series. It's pricey, but dammit it's worth the cash.

April 8
In the interests of getting it out to people who might make more use of it, I've uploaded my Sony Network Walkman code. So far there's little-to-no explanation of how to use any of it, but don't let that stop you. I've included some command-line stuff I've been using to load, list and delete tracks.

I spent some time trying to build a Gtk front-end modelled on the Sony-supplied MP3FileManager doodad, but got bogged down in the drag-and-drop stuff. On top of which, well, I don't use a file manager, so it'd be kinda useless to me...

April 7
Valgrind is the BUSINESS. A little heavy and sluggish, but I tracked down the last few memory leaks, and you can even configure it to shut up about leaks you can't fix - such as the aforementioned GList problem.

The Motorcycle Diaries interested me mainly because I'd read a book, Chasing Che, which described the author's trip along roughly the same route and incidentally filled in some of the details of Che Guevara's life. The movie is well-made; the portrayal of a typical friendship, replete with moments of hilarity, fights, cooperative scamming of strangers and tacit understanding in the face of a broken heart. I'm not sure how much of it is straight from source and how much is cinematic license; I could certainly have done without the swimming-across-the-Amazon scene. I did like the black-and-white "photographs" at the end, though - long monochrome camera shots of groups of people from various parts of the journey, posed unmoving as if for photographs. And the final cut from Alberto then to Alberto now was rather effective, too. An excellent piece, all told; not without imperfection, but then I'd have nothing to complain about.

April 6
More memory-leak tracing. With luck I'll have something I can fling onto the website by the weekend.

April 5
Tracked down the last few bugs in the Sony file algorithms, and started on chasing memory leaks. Frustratingly, my use of GLib seems to have imbued my code with an ability to leak even when I clean up per examples, logic, etc. That's rather annoying, that is. As best I can tell it's the list allocator, but I'd've expected that to be cleaned up by g_list_free, maybe. Apparently keeping it around is completely intentional.

April 4
Bubba Ho-Tep is, I think, best summed up by the IMDb reviewer who said, "Fabulously original film". Elvis and JFK (he's black, but, er, that's part of the cover-up) take on a mummy in a resting home somewhere in Texas. No, really. It's pretty funny, and scary enough in places to merit the horror half of the comedy/horror tagging. Worth a look, particularly if you're a Bruce Campbell fan.

April 3
I seem to have completely lost interest in F1 this year. Perhaps it's the increasingly silly hoops that the FIA are making the teams jump through to no visible effect - the cars still go faster, and the races still turn into processions where noone can overtake because all the significant grip is aerodynamic and that goes out the window once you're in the dirty air of the car in front. Anyway, no Ferraris in the points, and Alonso took the top spot for Renault. Presumably at this point the Anyone But Ferrari supporters are casting around for someone else to hate.

After much tooling about with The File That Won't Go On The Sony, I tried it with the proper app under windows and it copied (I'd already changed the samplerate to the acceptable one) so there's still something wrong with my code - I'm guessing it's not stripping some frames, or stripping too many of them.

April 2
GRR. Annyoingly, NFS mounts stopped working at some point during the week, and I didn't notice beyond the messages that my backups were failing, which I handwaved. I have no idea why this is broken. I'm not using SELinux or a firewall, and I have a second FC3 box here which is mounting the same server without any trouble. Using nfsvers=3 doesn't fix it, either.

Ok. Rolling back an upgrade to util-linux makes the problem go away. Looking at the changelog for said package reveals that some changes were made to it, but nothing that's immediately obvious without being able to read the referenced bug, which I can't because Red Hat Bugzilla won't let me. GAH.

Ah, finally. Using proto=udp fixes it. I had to read the bloody source to find that out; it's mentioned in the manual, but without saying that the default has apparently changed from TCP to UDP.

After some fiddling about with bits of the mpg123 plugin, I've managed to build a working file loader for the Sony. It's still not perfect, but I've successfully loaded up a file on the device and played it.

Hah, turns out the file that wouldn't transfer has an unsupported sample rate. I guess I'll have to factor a check for that into the code.

April 1
Continuing to try and avoid reinventing wheels, I find:

NGAAHHHGH. Having figured out how to use dlopen to grab the mpg123 plugin, I find again I have an incomplete interface. As with musicbrainz, I can get the length of the track in milliseconds, but not the number of frames. I think at this point I'm pretty much doomed to using bits of someone else's code instead of a library.

previous month | current month | next month

Poisson D'Avril!