Sunday May 20, 2012

Unauthorized Solaris Eclipse Viewing

Definitely don't try this at home. Even if you do have the correct CD.

Photo of a partially eclipsed sun visible through a Solaris 2.6 Intel Platform CD-ROM

Monday Dec 19, 2011

Solaris goes to 11

I've been using Solaris Express for about the last three years with the Shelley autonomous vehicle project. We've been using the 2009.05 version very successfully for the Java Realtime systems having previously upgraded from Solaris 10u5. Solaris Express, now Solaris 11, is a lot more convenient and comfortable to use. We'll be upgrading to Solaris 11 GA in the next couple of months. Solaris 11 is a whole new Solaris and has been modernized in nearly every way possible. For Solaris oldsters, yes it's different than what you're used to. But it's better. Really. Yes, really! Get over it and get on with it. You'll be happier in the long run. I know that I am!

Thursday Sep 24, 2009

Second Order

I had "that argument" with someone again recently. You know, the one about Java performance vs. C code. It's an argument I am very tired of having and I'm tempted to go "Barney Frank" on the next person to suggest there's a difference that matters.

One of the supposed C advantages is supposed to be that it offers greater opportunity for optimization. Maybe I have been looking at the wrong code lately but I see very little code these days that instruction-wise optimization, inline assembly or hand tweaking makes better. The biggest problem is not that careful optimization of small functions doesn't produce speed improvements but that those speed improvements are, overall, of marginal benefit. Here's some really bad code:
static void main(String[] args) {

    List sortedArgs = new LinkedList();

    for(String arg : args) {


Even though this is just a contrived example, yes, I do regularly see code this inefficient. Would optimizing the sort() operation have much impact on the overall behaviour of this program? How about the choice of LinkedList? Would using a bulk insertion strategy such as addAll() help? If there are many arguments passed in the biggest gains would almost certainly come from sorting the arguments only once and possibly using a different data structure to store the strings. Let's try that again:
static void main(String[] args) {

    String[] sortedArgs = Arrays.copyOf(args, args.length);


As cautions against premature optimization suggest, is critical to carefully examine the causes your hot code is burning so many cycles before optimizing. Frequently the real problem is with the calling code and not the exact piece of code which shows up in the profiler as your hot spot. When planning optimizations it's usually best to look "up the stack" and evaluate the usage pattern for the bottleneck code being called before diving in to make a targeted fix. Most likely, at best, you'll only get a marginal improvement by making a local optimization. For the really big wins you should be focusing on the higher order causes.

Tuesday Oct 21, 2008

Who am I writing this for?

I'm working with a new code base and a new build process for a small project I am working on. The project makes use of the 'jstyle' code style checker tool. I've been running seriously afoul of it's rules by having the timidity to leave extra whitespace at the end of lines and add extra whitespace in expressions.

I've complained before about overly rigorous coding standards but the "remove your extra whitespace" insistence is driving me nuts. I'm sorry, I just don't care. My editor puts in whitespace to make aligning text easier. I can't see whitespace and I normally don't scour my source to make sure that my editor hasn't added any. Since the compiler doesn't care, why complain about it? (I also happen to like using "flowed" format for Javadoc with the hope someday that my text editor will free me from having to do line wrapping manually within documentation comments).

There's a lot of stuff that just doesn't matter. There's a limit to how much "extra" energy people have for "doing the right thing". Being pedantic about minor issues depletes that energy without accomplishing much.

Monday Sep 15, 2008

Greasemonkey & Accessability

I've been busy learning to write JavaScript over the last couple of weeks. I am incredibly impressed with what you can build using XHTML+CSS+SVG+JavaScript in modern browsers. For some amazing examples of website remixing and mashups you have to try out Greasemonkey. This Firefox plugin allows you to dynamically alter third party web sites using scripts you download or write yourself.

The first script I've written is to improve the accessibility of a website by adding alt tags to their images. It turns out to be damn easy! Of course, putting in the tags at development time would be even easier, but getting some sites to improve their accessibility is about as much fun as pushing a rope. Unfortunately I can't name the website because using Greasemonkey violates their terms of service and I'd rather not get disconnected even though what I'm doing isn't illegal.

Interestingly, it seems that a number of JAWS's more "advanced" browser features could be fairly easily written as Greasemonkey scripts.




« April 2014