Note: If I add/update anything here or anywhere on the site really, I'll probably post it on the blog.

Miscellaneous stuff I've written - actually like most developers, there's a lot more, they're just either in a state of disarray, very quick and dirty, or so specific to my needs that I don't think anyone else will ever use them! Unless otherwise specified, these are licensed under Apache License, v2.0 (very liberal, you don't need to contribute changes back or make them available - though this is highly encouraged, you are required to attribute me appropriately though). Any feedback, etc. get in touch. If you find something useful, but missing stuff, let me know too, often I work on stuff, but am too lazy/busy - whichever sounds more professional - republishing it, and I'm not quite ready to allow open access to the source control :-).

When there's more stuff, I'll organise it better, for now, just listed by date of addition on this page.

Groovy JSON Decoder: Simple JSON Parser

Added: 10 Feb 2010 | Download

A recursive-descent, handwritten parser for JSON written in Groovy. The parsing works well, and I think covers all the required parts of JSON as verified by the tests. I was using Python's neat json module as a sanity check. At this time, the Parser takes in a string instance and returns an appropriate native object: literal, map, list. There are no sophisticated hooks into it, it is pretty barebones. It parses/deserialises, but there's no generation of JSON.

The download includes sources and tests only. Requires vanilla Groovy and the JDK 5+.

FormGen: A Quick and Dirty HTML Form Generator

Added: 05 May 2009 | Version: 1.1 (what an overstatement! Updated 08 May 2009) | Java Web Start

You may need to clear your browser cache to get the latest files on update!

Update, 08 May 2009: v1.1 Based on blog entry feedback. Thanks Iman!

I hate writing HTML forms, sure they're simple, but I can never remember the various input elements - so this is a basic quick and dirty 1-way code generator which outputs common form element templates based on graphical input. Currently, it generates straight HTML templates but as the need arises, I may hook in functionality to generate JSP taglib output for various Web frameworks I use. (Will upload source when I have some time, mail me if you really need it :P).

aaNet Usage Meter: A data usage meter for subscribers of the aaNet ISP

Added: 27 Feb 2009 | Version: 0.1 | Download

Simple graphical usage meter, minimises to your system tray. To use: unzip the files to a directory that has been added to your Python search path. You can use one of the system-wide directories, but that's probably a bit overkill, I recommend having a local python packages directory somewhere in your home dir. Then add that path to the PYTHONPATH environment variable (define it if it's not already there). Once you're done, open up the file ncnet/aanet/, set the USERNAME and PASSWORD variables at the top of the file (within the quotes) for your aaNet account, you can also set the REFRESH_INTERVAL variable to set how often the data is to be refreshed (defaults to every 44 minutes).

Either create a shortcut in your desktop environment of choice (IceWM, KDE, Win32, etc.), or you can run it from the command line as follows (if it's in your PYTHONPATH, doesn't matter where from):

python -m ncnet.aanet

If the above didn't make any sense, mail me for more detailed instructions, unfortunately I haven't gotten around to creating an independent package bundled with Python itself - besides this is too small a thing :-).

Requires (obviously) Python 2.5 (may work with 2.4, haven't tested it), and PyGTK.

Delegates4J: A Java 6 Library adding C#-like delegate support

Added: 24 Feb 2009 | Version: 0.5 | Download from the Maven Repository

Best explained by this blog entry! The only thing to add is that it has no other dependency than the JDK, and it will probably run just fine on Java 5, don't think I'm using any Java 6 features or APIs.

Bloggy: A Funky Blogging "Platform"

Added: 22 Feb 2009 | Version: 0.1 | Download (sources only, build with Maven)

A test web log application as a deployable WAR file (user registration, posts, comments, basic admin, tag cloud - whee!). Uses some ajaxy stuff like editable labels, only subsections of page updates. I wrote it mainly to learn Wicket and JPA (using the Hibernate implementation). It turned out quite funny content wise! Being an enterprise dev, I find it rather difficult to write hack-ish stuff, so though it mainly is a 2-tier app, DAOs are used for read-only ops, with services for proper atomic read/write operations, and Spring is used for DI extensively, oh and for its ORM facility, it provides an OpenEntityManagerInView filter. Fun stuff. Sources only, it uses Maven, so should be a breeze to set-up and run. Only issue is with the JTA jar dependency, when you come across it, see this article.

I think it serves as a rather nice educational application integrating Wicket with a few technologies, despite some minor quirks (and yes, UI design was not the emphasis there). Also the first time I've used Hibernate detached objects, kinda fun.

Exif Tool: Very Simple EXIF Image Description Editor

Added: 22 Feb 2009 | Version: 0.01 ?! | Download

Updates the EXIF "imagedescription" attribute on your digicam JPEGs. Requires Python, PyGTK, and the pyexiv2 library (very nice Pythonistic binding to the library). These should be easily obtainable on any Linux distro, a little more work on Windows. I used it as an external program from a larger image editor/viewer, because I wanted a quick way to preview the image (using the editor/viewer, don't remember what it was anymore) and then update the description (the editors I used had these options nested deep in some menu, funnily enough, the option to run an external program was much more accessible!) It takes one or more files as arguments on the command line, brings up a small dialog asking you to enter the description and updates all the files with that description.

SMS Global Python API: Python API to the SMS Global HTTP/S Gateway

Added: 22 Feb 2009 | Version: 0.5 | Download

I use SMS Global for my web SMS facility, they did not have a Python library, I wrote one up, fairly simple, obviously requires Python, but no additional dependency, a standalone package. It also has a routine to parse email messages that SMS Global sends out when you enable forwarding SMS-es as emails. Only useful if you were programmatically accessing your mail... which I was using the Python imaplib - but that's one of those 'in disarray' sources :P.