Working From Home

I’m lucky enough to have a flexible employer. For the last few months I have been able to work from home. I really like this setup but I have noticed a few changes in the way I work.

The benefits are pretty obvious – no commute means I have extra time for both work and for family. It’s great to be around when my kids come home from school. When I commuted by bus, I tried to read up on things, if I was lucky enough to get a seat. The biggest problem when I did get a seat was that my late night Ant coding would catch up with me and I would fall asleep. Luckily that didn’t seem to happen when I drove to work. However I got there, getting to and from work was mostly a large waste of valuable time.

What I have found now, however, is that the removal of that transition between work to home causes me to just keep working. I now use just one system, rather than having a separate systems at work and home. When I come back to that system after a break, it is easier to resume working on the current problem than to transition to working on my personal stuff.

This is one of the reasons I have not been very active in Ant lately. I’m not upset at working on work stuff, since it’s all good fun for me but I do weant to keep in touch with external projects, such as Ant. Let’s see how I go ….

Is JDK 1.5 too clever?

I read Matt’s latest blog with some interest, yet, in the back of my mind, I couldn’t help wondering if Java is becoming too complex, a little too clever, in places. Is Java in danger of entering the C++ realm?

In the C++ projects I worked on, there would be some on the team who would know how everything worked – how the compiler found templates, conversions, when temporaries were created, etc, etc. These people were language lawyers who slept with the ARM under their pillow. OTOH, there would also be that part of the team who didn’t really grasp clearly how many things worked – how auto_ptrs worked, how the handle-body templates worked, whatever it may be. Ignorance is not always bliss and such projects, I feel, would be particularly fragile during their maintenance phase.

Of course, there will always be things that are complex in a language. There will be people who get it and people who muddle through. Classloaders probably fall into this category from even early versions of the JDK. As a language’s complexity increases, I feel the gap between the the two groups of people grows and the systems they work on become more susceptible to the unintended impacts of changes made to the system. Even the language lawyers sometimes slip and are surprised at what the compiler would do.

Most of this is just based on my gut-feel. I haven’t yet had the time to look in detail at JDK 1.5. However, when I see someone as cluey as Matt say “Now, WTF does that mean”, I wonder if that is a warning sign.

Overall I suspect that generics will be a boon for Java developers but some of the more clever constructions will just not get used that much, at least by the bulk of developers.. How many will really understand what

Enum<E extends Enum<E>>

means?

BBC mail goes wild …

The BBC daily email, a tame creature that used to come knocking once a day with the news of the world, went crazy a few days ago and began hammering at my door repeatedly. I waited a while, hoping it would calm down, but its behaviour remains as bad as that oaf, SoBig.F. Alas, I had to put it out of its misery …

bbc.gif

English differences

There’s a funny Ant bug report being thrashed out at the moment

In general I find these little differences in how we use English pretty funny. I lived for a while in North Carolina and once, at someone’s house, asked “where’s the bin?”. She looked at me oddly for a moment, until I indicated that I had something to throw out, at which she exclaimed “Oh, you mean the trashcan!” Even funnier was asking at a supermarket, at Christmas time, whether they had any plum pudding – the reply was “Are you from up North?”. Not quite. I also remember the Virginia police officer who was not impressed with my international driver’s licence with its multitude of foreign languages, but that’s another story.

Of course, it cuts both ways. To an Australian, the term yank refers to all Americans. I was to find out in North Carolina that is not strictly accurate.

Perhaps my future contributions to Ant will be documented in Strine. For example, when a task is not found, it would respond:

“Mate, that task name is not fair dinkum”

“‘kin ‘ell, I couldn’t find that task”

Just kidding. Personally, I enjoy our differences and hope we don’t require homogenous documentation that won’t offend.

Oh, and if you ever get the chance to live in another country, as opposed to just visiting, take it. If they don’t speak your language, all the better.

Nant and Licensing

The alpha for Clover.NET is coming along nicely and we are getting some great feedback. Thanks to our alpha testers. The alpha is currently command line driven and that is not really optimal in the long term. We’re working on Visual Studio integration which should ease the situation but, given my long affiliation with Ant, it’s natural to look at using a build tool such as Nant to manage Clover.NET operations. The java version of Clover provides Ant tasks, after all.

There is, however, a fly in the ointment. Whereas Ant uses the Apache licence, Nant uses a GPL licence. That would seem to prohibit the distribution of non-free tasks for Nant. I’m extrapolating here a little from my experience with Java, where even the LGPL is considered to prevent distribution of non-LGPL code that uses a LGPL library.

Just considering the GPL for the moment, a 1999 post from Richard Stallman spells it out for Java and I assume, by extension, .NET

So I think it is meaningful to release a Java program either under the
GPL or the LGPL, and the consequences are basically the same as for a
C program: if you use the LGPL for your Java program, it can be called
by non-free programs, but if you use the GPL, it cannot be.

I’m not sure how much the position has evolved since 1999 especially with the LGPL, as that now seems to have issues. For those that are interested, Sam Ruby has discussed these issues more recently.

It is interesting that Nant has an exclusion to the GPL for Microsoft’s .NET library. See the Nant licence page. The reason I find that interesting is that the author of Nant has obviously considered the impact of GPL. Unfortunatly without such an exclusion, any Clover.NET tasks for Nant will be limited to driving the command-line tools.

I respect people who choose to license their code using the GPL, it is their choice after all. OTOH, I really wonder if it is an approriate license for a build tool. If I read the licence right, Nant currently makes it difficult to provide rich integration of proprietary tools. It’s a pity as .NET needs a good automated build tool for continuous integration operations. MSBuild? …