Thursday, February 28, 2008

Soashable 0.1 Beta RELEASED

Soashable is an Open Source (on SourceForge) web-based, multi-protocol instant messaging client written in pure Javascript. It connects to an XMPP/Jabber server using BOSH (XEP-0124), which is a COMET protocol that provides instantaneous transport of messages between the web browser and XMPP network. It is supported in all major browsers, and currently has core IM features including messaging and roster management.

Soashable is Open Source because I believe that any one or any company should be able to creating a competing product, in a cooperative way, as this raises the user experience bar for everyone. I hope it serves as the base for research of web-based UIs, public-facing commercial applications, internal communication applications, and tools in every niche imaginable. XMPP truly is the future of online communication, and finally, I am proud to be able to provide you with yet-another-tool that utilizes it. It's been a LOT of work, but it's finally here!


Soashable is the test bed for my recently released Xmpp4Js library, available on SourceForge.

I hope my work is used in ways that I could have never thought of!

This release is far from perfect and needs a lot of polish, so all feedback is welcome and appreciated. Please use the bug tracker liberally! It is located here: http://code.google.com/p/soashable/issues/list . But I am confident that she will be ready for MinneBar (I just hope I can get a presentation slot; nudge nudge, anyone with hookups)!

You can either try it out online at https://soashable.com (self-signed cert, safe to ignore warnings), or you can download a stand-alone version that is runnable with nothing more than a 1.5+ JVM. That is available through SourceForge, here:

http://sourceforge.net/project/showfiles.php?group_id=217403&package_id=262062

Simply download and click run.bat. If you're on mac or linux, use the command:

java -jar lib/start.jar

I haven't tested it on unix, so please, somebody let me know if it works before I officially perform a release with an sh file.

For you hard core people out there, here is the Maven site with info about how to check the project out of SVN and start hacking:

http://soashable.sourceforge.net

Again, this release needs plenty of polish, so please let the bug tracker be your best friend.

Happy Hacking!

Creating a Distributable WAR Project With Maven and Jetty

I've always had an itch to give the simplicity of trying out a webapp with jetty:run to people who do not have Maven. It came time to release my project, and people were having trouble getting a third-party component set up (or knowing that they needed to). So naturally I scratched the itch.

My solution was to use with the Maven Assembly Plugin to create a distributable zip file that contains Jetty jars, configuration, the webapp in question and a batch file to execute start.jar.

Basically I created a sub project (webappname-launcher, or similar) which depends on the webapp and Jetty. The assembly component descriptor then defined a target to copy Jetty jars, the src/main/launcher directory, and the war file into.

The src/main/launcher directory contains a run.bat, jetty config, and any distribution files such as README.
Optionally I could include the project generated site with the distribution as well, which could be a nice touch.

As far as the POM is concerned, simply declare the assembly plugin and execute it the the package phase.

This can be accomplished without using a subproject, as part of a regular war. But doing it that way causes jetty jars to be included in your war file. I'm sure there's a way to filter out those dependencies, but I took the most straight forward approach.

I will be using this pattern for all my web projects, but my opinion is that this sort of behavior should be built into the Jetty plugin itself, for example jetty:create-distributable, and operate directly on war projects.

On that note,

I created a launcher for the xmpp4js demo site using this method. It's available for download on SourceForge, here and in SVN here. It requires no Maven, no Jabber server, no Apache proxy. Just download and run :).

Monday, February 25, 2008

Xmpp4Js: Initial Release

Xmpp4Js is an XMPP client written in pure Javascript. It connects to a server using BOSH (XEP-0124), which is a COMET protocol that provides instantaneous responses.

It allows any web page to be active on an XMPP network. Uses can range from a simple Meebo-like chat client, to a phpLive-like support interface, and beyond.

Xmpp4Js is supported in all major browsers, which removes compatibility limitations inherent in browser extensions like xmpp4moz.

The initial release includes a sample chat client with basic in-browser messaging functionality, and all dependencies.

Xmpp4Js is dual-licensed under LGPL and Apache 2.0. It is available for download here.

Sunday, February 17, 2008

Midwest Meets Southwest

I made up an awesome dish, today, from left-overs! It's not software development, but it is development, no less.

Slather some mashed potatoes on a tortilla, and throw some chopped chicken breast and nacho cheese on; leave unwrapped, cover with a paper towel and microwave for about a minute. Top it with some sour cream, salt, pepper and salsa. Wrap it up and enjoy!

Remember: always use safe food preparation practices.