More permanent stuff at

20 December 2007

Tagfriendly showing signs of life

I have found that the time I have allotted for recreational programming has decreased significantly in the last two years. Part of that reason was that I was bringing quite a bit of work home. I have nipped that for the most part. Another reason is that we've had new children come into our family--one each in 2005 and 2007. Things are finally starting to simmer down on a personal level, so I thought I'd pick back up again.

About a month ago I started hacking away on Tagfriendly. Again. And of course, being the programmer I am, I started from scratch.

It's amazing what 18 months away from a project can do to ones perspective. I spent so much effort placing the application within a framework that it took away from the real efforts--manhandling Freedb and Lucene. The never version is quite a bit different, better I think. More nimble for sure.

Here are some of the changes:
Old: Much effort was focused on having the work done in producer/consumer queues. My justification was that I didn't want to waste CPU cycles doing nothing.
New: Broke the project into smaller tasks: replicate freedb data in database, convert to relational, build index.

Old: Did everything in Java.
New: Expanding my horizons by giving Ruby a try. It also helped that Lucene now has Solr, which saves me a lot of work. For starters, I don't have to bother with putting a smart (as in cacheing and paging) HTTP framework in front of Lucene anymore. Second, Solr makes it easy to interface with other platforms (like rails). Java is the hammer I've preferred for years, but having tried a few other tools, I'm ready to view it as that--just another tool. LoC economy comes into play at some point and Java just doesn't win there.

Old: Used PostgreSQL
New: Using Caché from Intersystems. This stems from my experience working at DTI . However, I remembered how much I disliked fighting Postgres with regard to false integrity constraint violations stemming from the "many updates" phase where, literally, TONS of inserts were taking place. Caché handles this just fine--and the single user license is free.

There are still lots of rough edges. The difference is that the last time I did this, I tended exert a lot of energy polishing the rough edges at each step rather than get real work done. Now I let the edges stay rough and focus on the core tasks--getting that index searchable. The polish will come later.

Other things that will change... There will not be a java thick client. It was fun for play, but this app, if it is every deemed useful, will be in the form of a plugin to an other application--written in whatever language/platform that makes the most sense. This is done partly because I would like to be exposed to other programming platforms/environments. Also, I'm trying to just have fun.