Dan Pritchett on Latency and Performance

Dan Pritchett, a Technical Fellow at eBay, has written an excellent article published over at InfoQ entitled “The Challenges of Latency”. It focuses on geographically distributed applications, but has application to the design of any high capacity system. The discussions on asynchronous operations, ACID versus BASE, and the CAP Therom are fascinating.

Creating a Swing Test Runner for Maven 2

I have been a devoted Emacs user since a co-worker introduced it to me in 2001. Emacs’ efficient layout of keystrokes enables me to work faster and longer with less hand fatigue than other editors. My optimal Java development environment is a bash shell (Cygwin if using Windows), Emacs, and a good build tool such as Maven. I feel a sense of commitment to this setup since I have been using it for over 6 years now.

Recently I have been switching projects from Maven 1 to Maven 2. This has been great except for the fact that Maven 2 does not have a GUI test runner for unit tests. Suddenly my optimal development environment is missing a test runner. In Maven 1, the test:ui goal would invoke the org.juint.swing.SwingRunner. There is an open issue for this in the Surefire JIRA to add back the GUI support to the command line, but it doesn’t look like it will be addressed any time soon.

So what to do?

One solution is to bite the bullet and join the rest of the world and use an IDE like Eclipse. This is definitely the path of least resistance. I have tried this, but it just hasn’t worked for me. I simply don’t flow as well with Eclipse.

I am thinking that the best solution is to create a Swing test runner for Maven 2. I have been looking at what this will take and have identified some components of a design. Here goes:

  • I would focus solely on TestNG for now.
  • It would be nice if the test runner did not need to be restarted after each compilation. I could see myself keeping the test runner window open, and issuing mvn compile commands in a separate window.
  • The test runner would need to fork the execution of the tests - running them in a completely separate class loader. This in itself would not be difficult. The test runner would just instantiate Surefire in the same way that the Maven Surefire plug-in does.
  • Surefire would need to know about the classpath. This could be done differently depending if the test runner were invoked from maven or from the command line.
  • The real challenge would involve reporting test events from the tests running in the surefire class loader back to the Swing application. The Eclipse plug-in for TestNG uses the RemoteTestNG class and a set of socket communications back to the GUI. I expect something similar would need to be done.

I expect to have some progress on this over the next couple of weeks, as spare time permits.

Aaron Benjamin Tomasini - More Pictures

I have uploaded a a few more photos.

Aaron Benjamin Tomasini - Born April 12, 2007

Our family grew by one today. Aaron Benajmin Tomasini was born April 12, 2007 at 3:51 PM. He was 7 lbs., 5 oz., 20 3/4″. It is amazing to me to see the miracle of new life, and to think of the great potential that is wrapped up in this wonderful package.

Grandma arrived yesterday to help out, which ended up being very fortunate since we were expecting Aaron to be delivered next week.

Aaron’s big brother William (almost 2) is getting used to the idea of having a little brother. Coming to the hospital to see mom and his new baby brother was a bit much at first. Luckily, the hospital has a McDonald’s inside. Eating a happy meal with daddy really made a difference.

I have uploaded a couple of photos. I should be adding more to the set over the next few days.

Illustration Software for Linux

I am not an artist, but now and then I have a need to create some illustrations for presentations. A couple of years ago I was searching around for packages for my Linux notebook and did not find much that was useful. The GIMP works fine for raster graphics, but not vector graphics. There was Dia, but that didn’t seem to work for me.

Now there are two great software packages for Linux: Inkscape and Xara. Installing both on my Ubuntu system was a snap:

$ sudo apt-get install inkscape
$ sudo apt-get install xaralx

Inkscape

Inkscape is really cool. I am a big fan of SVG, which Inkscape uses at its native file format. It has an intuitive interface and was easy to use. The connector features is a great way to connect shapes in a diagram like Visio. Inkscape works on Windows, Mac and Linux. And when you are ready to publish, simple export it as a bitmap (PNG).

An aside about SVG itself… SVG can be a great way to provide some dynamic elements to web applications, especially when used with JavaScript. Kevin Lindsey has some excellent resources at his site http://www.kevlindev.com/. The current problem with SVG is support for IE, since Adobe discontinued support for it, presumably as a result of its acquisition of Flex.

Xara

The story behind Xara is interesting. The FAQ states that one of the reasons for releasing this product open source, in addition to slashing their Windows product price, was a response to Microsoft’s entrance into the illustration software market with Expression.

The software is great. I was able to create some simple drawings very quickly. The free version is only available on Linux. A Mac version is on its way. The Windows version can be purchased for $79.

My Uneducated Choice

Both are great products. Inkscape has a vibrant community and looks to really develop in the future. Not being a graphic artist, it is hard to say which one is better. My impression is that Xara is a bit more mature. I will probably use it over Inkscape for now. It is just amazing to me to consider that only a few years ago one would have to spend hundreds of dollars for this kind of software - not to mention waiting for a CD to ship. Now with distributions like Ubuntu Linux, all it takes is a simple installation command and 2 minutes of waiting. Cool.

Learning Assembler

This article on Slashdot got me thinking about learning Assembler. It’s crazy. Why spend the time to learn a language with I will never use directly in my career?

It is very much like the time in 5th grade when I took my entire BMX bike apart just so I could put it back together. (and discovered it had three extra parts :) ). I would really like to know how a computer actually works beyond the high level languages I work with.

Maybe I am interested in the challenge simply “because it’s there”.

This how-to looks like a good start: http://www.linuxdocs.org/HOWTOs/Assembly-HOWTO.

Welcome

I just finished installing WordPress on my website hosted at TextDrive. I am really impressed with how easy WordPress is to install and use. The installable themes are great.

I now have a blog. I hope it will be of use to some and occasionally interesting. Until it does become interesting, you can read some blogs that already are:

I find it humorous that Firefox things the word “blog” is misspelled. It suggests I change it to log, bog, slog, clog or flog. Ok, I’m game…. Welcome to by new bog.

« Prev