login
v2
v1

jmoiron.net

Fiddlesticks

posted January22nd, 2007 @ 11:22:00

- tags: development

- comments: 0

You might have noticed that the word finished was in quotes in my previous post. This was on purpose, and anyone who is a hacker (or a perfectionist, with, say, deadlines) will know why and roughly the content of this post. Ninrename (which is a terrible name that is more and more nondescript of the programs capabilities) has been expanded upon quite a lot in the past week (or two). Features are being added left, right, and center, and the desire is there to make it actually very good and not just a one off.

So far, I've added lzma (7zip) support and limited header reading support. Before I "release" again, there are some institutional things I need to prepare, and I need to tourniquet off some features that will take me a long time to get right. I have most of the stuff parsed out from the header (thanks to the source of ndstool), but I still need to figure out how all the internal checksums are working. I also want to start working towards merge support, a-la goodtools, but by building the merge database programatically rather than pushing out hundreds of versions. Software should have a life cycle that ends when it works, not when new information is no longer available.

During the course of writing the recent version, I put all of my extraction routines into a library. It turns out that rarfile's error suppression didn't work quite right when it was a bit down the import chain, so I went in and modified it to stop using the quasi-dangerous os.tmpnam(). Since it was using tmpnam to actually put a rar file on the filesystem and then use the unrar utility, I used the new (since 2.3) module tempfile to get around that vulnerability. If you are interested, the patch to rarlib.py is available.

The work done on that script has made me want to do a lot more work with compression and crc, because it's an annoying manual process that I've wanted to make simple for a long time. File-roller is nice but it's drag/drop is incompatible with Thunar. I might want to just get my hands dirty and fix that, but compiling gnome applications is extremely annoying and I'm not really all that thrilled about the File-roller user interface anyway. My own pyunarc archiver still seems comfortable but the UI of an archive utility is something that is no longer cut and dry to me. I think some studies are needed as to what the most common need is; to extract the whole archive, or to extract particular files? I centered around the former as the overwhelming majority of use cases when conceptualizing pyunarc/Archive, but I'm not so sure that's the case anymore.

I've also been working on another google maps mashup, again for work. This time it's going to be a bit more complicated, but thanks to the version 2 API all sorts of things that would have been ugly nasty hacks are now easy (like custom overlays and the polygonal API). This time around a lot of the data I'm playing with has to be private, so I have to figure out how to not include it in the mandatory public version of the map. Thanks to the hacking I did on my todo list, javascript is pretty natural and I feel comfortable writing and debugging it. I don't even remember the dark days of js development before I found firebug, and that's a good thing because it wasn't a pleasant experience.

comments