✏ comment on this page (Help on commenting)


Sat Feb 28 18:50:45 2004

My attempts at Higher order functions in java: Hof.java, Hof2.java, Hof3.java.

I was using an ArrayList in Hof2 in an attempt to use toArray() and cast it to the generic'd return type. However, you can't create arrays of generics, you can't cast arrays to a sub-type, and the generic'd arraylist's new toArray is public T toArray(T [] t). Suckage!

Tue Feb 24 21:25:07 2004

I've set the default style to 'no style' at the moment on a whim, although you won't notice if your browser is broken. The blue styles don't work too well with nested contents at the moment (still trying to work out how to solve that) and the horizontal one doesn't work at all.

So in the mean-time I think I'll add some content.

Wed Feb 18 13:44:43 2004

If IBM and other companies want Linux to succeed on the desktop, they need to sort out the abysmal video driver situation, and we need some open source, quality video drivers.

Steadily working my way through my egan collection.

Sun Feb 15 13:28:52 2004

A picture of the Kopete instant
	messenging program, highlighting some quirky behaviour. more quirky behaviour
	from that instant messenger 'kopete'

Fri Feb 13 15:21:38 2004

Just had my dissertation demonstration, where I have to show off the code I have spent the last two weeks writing.

It went better than I expected - the code is in pretty good shape, and I have just about met all of my basic deliverables.

This screenshot (82KB) shows the main window (titled `ice' for `Integrated Comprehension Environment' with a project open. The project is described by the file listed on the left-hand pane as 'annotations.xml' which will include an element <root>; describing the root of the project being worked with. That root is the root of the file-heirarchy on the left.

The right-hand pane shows the file currently selected in the left-hand pane. Lines 1 and 6 are highlighted because they have annotations associated with them in the project file. The drop-down box above shows that the tool is in `Browse' mode. Clicking on an annotated line would bring up the browser you see in the bottom-left.

The mode could have been set to `Remove' which would remove the annotation you click on, or `Author'. In author mode, clicking on a line brings up a dialog where you select a file to associate with that line. Clicking on an already-highlighted line pops up the editor (bottom-right).

The tool thus relies on external programs to view and edit annotations. I am using HTML as the annotation format (although the tool makes no restriction on such a thing). The dialog at the bottom-centre shows the currently selected editor and viewer for annotations.

When I have written the code to save the project and create a new, blank project, the basic is finished.

My intermediate deliverable is to monitor the files in the project and work out if they have changed since the file was last considered. Then, annotations which are associated with a file which has changed, will be marked for verification as their contents might be out-of-date.

This is pretty straightforward, and also a bit unreliable. The advanced is the real meat of the project. The tool will perform a semi-parse of the code being studied, and annotations will be associated with identifiers rather than lines. Then, a technique to be determined1 will work out whether or not the value of the identifier will have been effected by change in the source code.

  1. Considering program slicing or some kind of AST work, hashing `regions' of code and their dependencies.