dev.jmoiron.net

This used to be a domain where I developed extensions to and new features for my website, but that has since moved to django.jmoiron.net. I develop various other snippets of code in varying degrees of usefulness, and for the most part they live here.

I keep my code in subversion repositories. I use trac, a simple and intuitive integrated wiki, bugtraq and svn browser, to keep track of my projects. Below is a list of the projects you can find on this server.

Optionally, you can check out (literally) my subversion repositories through webdav.

Recently, I've been using mercurial for version control. I am in the process of setting up trac repositories using the Trac-Mercurial plugin for these projects, as well as importing my old svn projects to my mercurial repositories.

Patches

rarfile.py

The rarfile module for python works fairly well, but uses os.tmpnam(), which besides being vulnerable to symlink attacks issues a warning. The module itself supresses the warnings, but the warning supression fails when it is imported indirectly. I wrote a patch that uses the safer tempfile.mkstemp() function and removes the warning supression.

EXIF.py

I modified the EXIF.py library to add support for my girlfriend's casio camera's makernote tags. Upon realizing that I was doing so off of auto-generated documentation from the perl ExifTool utility, me and a friend of mine (it was actually more his idea, but it's interesting intellectually) started a project that can convert ExifTool's tag tables to a python module usable by the Python Imaging Library. Progress on Exif/EatPerl has been slow but steady; but in the meantime you can download a patch to the original EXIF.py or a pre-patched version of EXIF.py.

python-romkan

romkan is a popular perl module that can convert between romaji (either entirely hiragana or entirely katakana), but coming from the perl (and ruby) world, it was targeted towards some non-unicode text encoding and was riddled with unnecessary regular expressions. I wrote a patch that makes romkan use utf8 instead of euc-jp and also adds a function to convert the fullwidth unicode section (0xff00 -> 0xff5f) to ascii (I needed string comparisson dealing with Japanese utf16 strings)

Saudade

Saudade is a portuguese word that has no english counterpart, but is a feeling of meloncholy nostalgia or a faint hope that is understood to be unlikely. After writing the first revision of my site in django, I was pretty pleased with the development speed but still felt like my site was lacking a lot of features.

A second version came a few months later that added a todo list application, but after trying to make another site based off of the same code, I ran into a lot of trouble porting the modules. I decided to split the software that ran the site from the site itself indefinitely, and saudade was born.

Efteep

This is something I started in November 2006. I wanted an ftp/sftp/scp client that was graphical as it isn't always convenient to use the command line one, especially when the paths are complex. Unfortunately, gFTP has just never gotten as clean (and crash-free) as it should be, and the interface is not only archaic but also rigid. Since I needed to start doing things in something other than Python and had been wanting to try out the Boo language for a while, I gave it a shot. Unfortunately, there are quite a few .NET FTP client libraries out there but they are all either closed/costly or of questionable quality. This project is currently on hold, but I do not consider it dead by a long shot.

Rom-seimei

rom-seimei is a collection of cross-platform rom libraries, focusing on the Nintendo DS. The goal is to bring well written semantic libraries to MacOS and various Unix platforms (as well as useful tools written with those libraries), for use in homebrew, rom hacking, DAT/Db maintainence, and mashups. The 'seimei' in it's name has double meaning in Japanese: '姓名' means 'full name', and '生命' means 'life'.

Projects

This is just a collection of miscelaneous stuff. Some are small scripts that I wanted to write that didn't exist, others were purposeful wheel reinventions for one reason or another.

archive

A consistent interface wrapper around:

The plan was to write the wrapper first to present a consistent interface, and then develop a small gtk component which could be used with a simple file manager like rox or thunar. However, I've since lost interest in this immensely. I keep the code around because the wrapping was pretty well thought out and pretty extensible, and if I ever decide I want to start it back up again it's also fairly well documented.

update: because of some of the new work on rom-seimei, I've decided to integrate some of the native extraction support from python into Archive. It is low priority for now, but I'll definitely get into it sometime in Q1 2007.

xchat plugins

Some plugins for the xchat IRC client written in python.