mouth.whereIs().put(new Money())

Hmm. Perhaps it should have been mouth.getLocation() instead. That would present a more consistent BadJoke API. :)

For the last two weeks I've been talking about MiniApps: small programs that utilize rapid web deployment, do simple things well, make our lives easier, and brew Konfabulator-esqe programs is here today, we just need to get together and actually build some of 'em. C'est facile, n'est pas? Of course I'm a big important developer and way, way too busy to spend my time on these sorts of trivial small applications, right? :) I 'spose if I'm going to advocate this type of development to the Java community then I should actually build one. With that in mind I present:

MiniApp #1: RSI Buster

I have had bouts of carpal tunnel syndrome in the past, but it's been acting up a lot recently. Probably because I'm typing more emails at work instead of coding and working on more articles at home. Double your typing. Double your pain.The new office, keyboard, and keyboard tray all help; but there's no substitute for simply letting your wrists rest.

If you read Jono Bacon's excellent recent article, Alleviate RSI the Hacker Way, you may have downloaded some applications that interrupt you every few minutes to let your wrists relax. The big problem with these progrms (well, besides to the fact they aren't written in Java :) is that they ask you to wait a few seconds to let your arms cool down, but they don't give you anything to do while you wait! What can I do for 30 seconds that doesn't involve using my hands? Simple: read something.

My own open source project, Flying Saucer, the xhtml renderer, just reached a big milestone: R3. It is finally good enough, and fast enough, to render most validating xhtml content with a lot of style. Looking for a sample application I came up with the idea of providing a blurb of styled text to read while letting my wrists rest. This is also a good exploration of thick clients that combine the best of desktop apps with web programming. I created a JSP that wraps the standard unix fortune program, then adds a splash of color and fonts to make it look nicer. But enough with the synergy talk, lets get to the program.

Here is the link to RSI Buster a web startable MiniApp for helping you deal with RSI. It will stop you every 15 minutes with a small window containing some fortune output. For those of you without Java Web Start, here is a screenshot.

RSI Buster: fortune screen

Note: this app is signed and requires you to give it security permissions. This is due to a bug in the CSS support library for Flying Saucer. It doesn't really access the filesystem but it thinks it needs to. I should have a fix for this soon

When the main window is dismissed you will still see a small mini-window that you can drag around. Since I use a laptop with an external hi-res monitor I keep RSI Buster on the extra screen to my side, along with my email and iTunes. If you right click on the mini-app you'll get a menu to quit or reload the fortune.

RSI Buster: mini screen

If any of you are interested in the code to see how it works or build enhancements, just shoot me an email.