Weird: Water falling from the sky

We’ve had 3mm of rain in Sydney over the last day. It’s been so long since we had rain here that those 3mm really felt like a downpour. We need a lot more and, in the perversness of nature, will probably get a year’s worth in a short space of time.

Nevertheless, you can’t help but feel that if we continue to push the atmosphere to its limits it’s going to leave whatever stable negative feedback region we’ve enjoyed and go bonkers.

It reminds me of an old elec. eng. adage. The best way to build an oscillator is to try and build an amplifier and vice versa. Let’s hope we don’t discover real atmospheric instability.

Follow us for more news refer to this buying guide.

Clover.NET beta

In addition to changing our name to Cenqua (see Matt’s Blog for more details), we have released a beta for Clover.NET. The beta includes command line tools, a Visual Studio 2003 plugin and NAnt tasks for both version 0.84 and the current CVS version (0.85).

We’ve learnt a few lessons along the way with this development. We now know how to perform long running operations in Visual Studio. It may sound easy but operating on a separate thread in Visual Studio can give you strange results. No doubt there is an apartment threading issue at play but I think only God and Don Box understand the concepts at play there (and I think even God isn’t sure about it).

Personally I’ve been interested to see the contrasts between my experience in Ant and how things work in NAnt. The use of .NET metadata is cool but can also be restrictive. More on this in another post.

Another contrast is of course the difference between C# and Java development. There isn’t much there, IMHO. On the plus side, some things in C# are nice such as delegates for function pointers, enums and the general level of syntactic sugar. On the other hand some things are more primitive than Java. The runtime library seems strangely incomplete, such as, for example, not having a Set interface in the Collections namespace. I’m not sure why we don’t have the same level of capability as the original STL in C++ in both Java and C#. Overal much of a muchness for me.

We’ve put up a sample report for NUnit on the new website. Ideally we’d like to add a few more open source C# projects as nice examples but frankly it’s hard to find open source C# projects with good unit test suites. Any recommendations would be welcome. As with Clover, Clover.NET will be free to open source projects.

ICFP 2004

I took part in the ICFP programming contest again this year. As with last year, this was great fun and this year’s topic was strangely familiar.

I noticed a few things – being the weekend of my son’s birthday and given the usual commitments of two weekend soccer games, I really did not have enough time to do a proper job of it. With that note, however, it is amazing just how much code you can crank out in 72 hours.

This year I decided to build everything in C#. No big reason for that other than it is what I have been spending a lot of my time coding with lately. There’s not much to pick between C# and Java in terms of how you think.

The problem was neatly divided into three tasks

  • Develop Simulator and GUI to run Ants
  • Develop a compiler for a high level Ant language
  • Develop some Ants in my language

Ideally I would spend 24 hours on each task but due to other commitments, I had to get some sort of best electric shaver from the development of my ants and, as a result, they were somewhat unintelligent.

This year’s entry was a solo effort. I think if I do this again next year, I would like to be part of a team to share workload around.

Coming up with a high level language was interesting. The better your language the easier it is to think about Ant behaviour at a higher level. My language was simple enough but did provide some high level structures and also managed allocation of states for the state machine. My lexer and parser were simple hand crafted affairs but good enough for the task at hand. It reminded me a little of the entry in the Pragmatic Programmer – Implementing a Mini-Language. I did use the C# delegate feature to avoid a tedious switch statement for the language elements which was kinda nice.

You can download my entry if you are interested.