Hacker's Diary
A rough account of 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
- Fixed:
- dropping folders
- dropping files at
specific positions
- progress bar for file
transfers
Still broken:- dropping folders at
specific positions
- memory leaks
- excessive
syncing
- doesn't delete mp*.dat files when tracks are
deleted
- Delete All button does nothing
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:
- lame has a sort of minimal decoder which
requires you to pass it a buffer whose size you can't know in
advance of calling the decoder;
- musicbrainz will
give you the length of the file in milliseconds (yay!) but not the
frame count (boo!);
- and the mpg123 plugin in XMMS is, as previously mentioned,
littered with globals. I may be able to use it, mind you, once I
go and learn about dlopen and what not.
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