QueryTool now exports data

There are some things I’ve been wanting in the QueryTool, so I just threw them in. Here’s the list;

  • proxy support (add proxy host and port to the command line args)
  • sortable results table (via column header click)
  • export result data to CSV file
  • scrollable query scratchpad

Screen shot 2009-09-18 at 10.00.01 AM

The tool can be downloaded here

To run it, type;

java -jar QueryTool1.2.jar <AccessId> <SecretKey> [ProxyHost] [ProxyPort]

Query Tool for Amazon SimpleDB

Although these projects are never really finished, I can say I’ve completed version 1 of the Amazon SimpleDB Query Tool. This is built on top of a new SimpleDB API that will be part of an upcoming typica release. The code currently resides in a branch, but will hopefully get merges into trunk in the next few weeks.

OK, more about the tool. It was built to provide a convenient way to test queries. That’s it. Towards that end, there is a list of features I included that really met a need for me.

  • flexible query workspace (scratch pad)
  • run query on the line where the cursor is
  • allow domain selection via the UI
  • display domain metadata
  • show results from several queries at once
  • show box usage and other stats

Now, the moment you’ve all been waiting for, a screenshot!


Right now, the code is still in SVN, so if you’d like to run it, you’ll need to check out the branch and build it.  If you get that far, to run it, you can use this command, “ant test.main -Dclass=QueryTool -Dargs=”<access id> <secret key>”

For an official release, I’ll make an executable jar, so you’d run “java -jar QueryTool.jar <access id> <secret key>”

Scribus – Open Source DTP

I’ve just finished my first real Desktop Publishing project. Always looking to save some cash, I took a look at the open source project called Scribus. Like with any new software, it took a little bit of getting used to, but I managed to figure how to edit master pages, create bullet lists, hyperlinks and wrap text around images. Very cool (and really, standard) stuff for DTP. The results should be posted here soon. (click the Porthole link)

Open Source Ramblings

By that, I don’t mean my ramblings are open source, but I guess they might as well be if I publish them here! I’m talking about open source software. For years, I enjoyed using many projects, and even was able to submit patches on a couple of them. It wasn’t until 2004 that I started my own project. My first one was a Java based MP3 player, to replace winamp. I wanted to try out my own smart song shuffling ideas. That project did attract some attention, but never really took off. To be fair, I ended up getting an iPod and using iTunes, so my interest in the project also waned.

Then, 2 years ago, I started a project that I thought would be useful to a lot of developers. Now, with over 1000 downloads of the last release, I’m happy to say I’m really part of the open source community now. Since this project got off the ground, I started several others that contain things I built and thought were useful. Check here for a complete list. The project range from a LEGO Mindstorms NXT java client lib, to ant tasks for uploading data to Amazon S3.

My philosophy has always been about sharing an openness, but in recent years, I’ve begun to be more of a participant than watching from the sidelines. I really wish more programmers would participate in open source projects. Unless you can get paid for it, it will take up some of your spare time. Finding time for open source has to be a decision and commitment you make. Some of my motivation are financially driven. I think my AWS related projects could help me professionally since I’m a consultant for a living. Recently, I was offered a chance to co-author a book, based on my open source work. (I said “yes”, so there goes some more of my precious time!)

Sometimes, you can start a project and have it be sponsored by your employer, or client. One of my projects started by asking if it was OK to take a small piece of code I had written and start an open source project. Some companies look favorably on contributing to open source, as long as it doesn’t take much time. I think enough of us have used something developed by the open source community, so payback is nice.

I’ll close by discussing some of the things that a successful open source project requires of a developer. First, you must be diligent in a number of things.

  • keep your project up to date
  • answer users questions promptly
  • test, test and then test some more
  • follow a written release procedure

The first thing might be obvious, but unless you keep at it (especially when you are implement a client to an evolving API), people will forget about your project and/or get irritated. If you have a mailing list or forum for your project, people will use it. Don’t forget to check regularly. I’ve been using google code and their forums for my projects in the past few years and like the setup a lot. When talking to users, be polite. The old saying about attracting more bees with honey vs. shit is true. Everyone gets grumpy from time to time, but run the project like a business and try to make people happy. You will be rewarded!

Testing. If there is one thing I’ve found from writing software over the years, it is that testing is under rated. Automated unit tests will help you ensure your old code doesn’t break as you add new things. It also gives you a predictable way to test that ad-hoc testing just can’t do. Before I do a release, I often announce that I think the code is ready (in the project forum), then wait a few days. That gives people time to kick the tires. Some people love to beta test. They want the project to work also, especially if they rely on it. 

Finally, documented (and scripted where possible) procedures for doing your releases will save you from embarrassing mistakes! I have parts of my release procedure as ant tasks. The major steps are written in a human readable script that is checked in to subversion. Not having to remember every little thing is a huge help. I simply look at my “howto-release” file, and do everything in there.

Thanks for listening…