February 25, 2003
A Better SEQUENCE

Look here for the latest developments and releases of SEQUENCE.

I've just finished the coding for the next version of SEQUENCE, a tool for drawing simple UML sequence diagrams. It includes no new functionality but should provide a better base for future development. Next I'm going to try using it in the UML IntelliJ plugin so that I can get a better sense of what is needed to make it easy to plug in to other tools. After that I think I'll experiment with supporting different syntaxes for writing the diagrams. Here's an "executable" jar file, which should run with java 1.4 using

java -jar sequence.jar

and here's the source.

Posted by Alex at 08:43 PM
February 16, 2003
Luke Burgess' better IntelliJ plugin

He took the sequence diagram code I wrote and put it into an IntelliJ plugin. Not distributed yet but I look forward to it. Now I'm even more motivated to finish my cleanup project on that code.

Posted by Alex at 09:39 PM
My First IntelliJ Plugin

I spend some time this weekend trying my hand at building an IntelliJ plugin. It's not ready for posting to the IntelliJ wiki yet but I'll link to it here. All it does is reproduce some functionality I previously built in emacs, the ability to insert a log4j logging statement that logs all of the parameter values passed to a method. It even inserts a field with a log4j Logger instance and the appropriate import statement if needed.

It was an interesting way to explore some of the IntelliJ plugin architecture, especially the program structure interface. This is a sort of abstract syntax tree, but including whitepace and comments, for the code being edited. It lets you pretty easily navigate the program structure and modify it. The downside it that it's completely undocumented and subject to change. The one thing I couldn't easily do was invoke the auto indent/reformat functions of the IDE. Theres a method called reformat on the CodeStyleManager instance but I couldn't get it to do anything. Any help greatfully received :)

Anyway, here's the plugin jar file and the source code. Enjoy.

Posted by Alex at 09:29 PM
February 08, 2003
Query Rewriting

I'm looking for some information on query rewriting and optimizing system. In particular rules based query rewriters. I want to be able to write a "query" in some declarative way similar to SQL and have it translated into a specification of the actions to carry out to implement the query. I've found a few papers, for example, Specifying Rule-based Query Optimizers in a Reflective Framework that describe the sort of thing I'm after. There are also a number of Java based rules engines such as drools, Jess and Mandarax that could form the substructure for such a system. Does anyone have any tips or pointers to share?

Posted by Alex at 04:56 PM
DotCom Relics

The company I work for just closed a round of funding. This means that we'll be in business for, hopefully, at least two more years. It also means that we've been cleaning the office. I suppose the cleaning is a "fresh start" sort of thing but it's certainly turned up a lot of relics of the old dot com days when we burnt through our first round of funding. Such things as the various designs for the old tradeshow booth we used to have. This was an amazing piece of work and pretty expensive to boot. We used it at about four tradeshows, stored it offsite for a while and then sold it for much less than we paid for it. A low grade sort of Spruce Goose, perhaps closer to Mr. Burns' Spruce Moose Smithers, I've designed a new plane. I call it the Spruce Moose, and it will carry 200 passengers from the New York's idle-wild airport to the Belgium Congo in 17 minutes! Remarkably like some business plans from the end of the last century.

Posted by Alex at 04:16 PM
February 03, 2003
Paul Graham on language design and language research

Interesting little article. Design and Research. One remark though. I'm not convinced that an interactive toplevel is a huge win in software development. I'd prefer a decent refactoring editor/browser any day.

Posted by Alex at 09:56 PM