You are hereblogs
Had a presentation about myself, my background and my work today, as part of the Software Technology Colloqium series at the Computer Science Department here in Utrecht.
Slides are available in my archive.
I also put up my LASER'04 poster there.
There are many minor and major issues I have with everyday use of the StrategoXT system. Overall, I think it's an excellent piece of work, but as with any tool, there are also plenty of rough spots.
One of those that I discussed with Martin Bravenboer, is the sheer amount of tools and files I have to deal with in the normal development of a transformation tool.
Ideally, I'd like to deal only with the sensible abstractions: the syntax definition, the stratego modules, and possibly the pretty-printer, if I want to customize that. The fact that the syntax definition must be processed into half a dozen different files in order to be useful to the pretty-printer, Stratego, the parser, etc, is of no concern to me.
I've had three exhilarating weeks, the first one on Elba and the remaining two in Bergen. The first week in Bergen, I spent attending the compulsory PhD course MNF490, Theory of Science with Ethics.
I'm pleased that they made it compulsory; it covers many important topics about the limits of science and its relation to society at large, that I personally think every scientist should spend some of his or her time considering.
In the second week, I had scheduled several workshop-style meetings, all of which strangely fell through, leaving me reading and working on an essay for MNF490 instead.
However, it all had to come to an end, and now I'm back at the Uithof, finally able to throw used underwear wherever I please (this freedom should not be underestimated). Looking forward to getting back to writing and hacking.
I'm surprised that I managed to forget how much I dislike the weather in this town, and in only a matter of five weeks.
Stupidly walking around today, armed only with my umbrella, I succeeded in getting completely soaked. While the downpour didn't manage to penetrate the umbrella itself, the reckless drivers managed to squirt water into my face whenever I went to near the road, or tried to cross it.
Good thing it'll be over for this time in less than two weeks:)
Back from one week of Sea, Sun and Software at the beautiful island of Elba, in Tuscany, Italy. The pretext was a summer school on software quality, with focus on formal methods.
The original plan, I was told, was to have six lecturers give six lectures, divided into six hours every day. Since we had a total of six a half day of lectures, there was room for one more lecturer, and a few student presentations as well.
The lecturers included Pamela Zave of AT&T, Ernie Cohen of Microsoft, Carrol Morgan of the University of New South Wales, Jean-Raymond Abrial of ETH Zürich, Bertrand Meyer of ETH Zürich and Erich Gamma of OTI/IBM.
All in all, a nice collection of speakers, which also resulted in engaging and interesting lecture series. I really appreciated the ample opportunities we had to ask the speakers "off-line" about specific details and opinions, as well as getting some feedback and pointers on our own research.
Installed the x11-base/xorg-x11-6.8.0 today to play with the transparency stuff (which is extremely long overdue in X, I think).
Naturally, this immediately broke my dualhead setup, so I needed to
reconfigure it from scratch again.
Fortunately, since the X31 has an ATI card, I can use the new radeon driver, which supports something they call merged framebuffer. It's basically Xinerama in the driver, thus allowing for DRI on both screens.
It took a few attempts at getting it working, but apparently it's just like any other single head setup, with a few parameters set in the
Device and Screen sections.
Took the time to restore my old journal entries from last year that were stowed away in a SnipSnap database. Too bad the SnipSnap implementation was such a mess. It was very userfriendly and easy on the eyes, too.
After I fetched an external keyboard an mouse, it seemed silly not to put the old 19" on my desk to some use, so I scoured around the net a bit to see if the built-in video card would support dualhead.
The X31 has an ATI Mobility card, capable of true dualhead. By default, Xorg will detect the external screen and start the card in clone mode, which is not very interesting IMHO.
After a bit of scouring, looking at different posts to the xpert mailing lists, I figured out that setting up Xinerama with the ATI card was basically the same setup as for the G400 I had years ago.
I've spent the last two weeks hacking on a plugin for Eclipse. It is a command-line console inside of Eclipse you can use to traverse the resources tree, that I hope will evolve into some sort of refactoring command language in time.
The idea is to demonstrate the underlying theme in my PhD thesis: Given programmatic access to the source code's AST, and particularily if you also have the benefit of a type system, you can easily implement all manner of small, but highly practical tools.
Given projections from language-specific ASTs to family-specific ASTs, or language-independent ASTs, you can write many family-specific or language-independent tools in an easy manner.
A good example of a largely language-independent tool is a documentation system, as we have shown with SDS (however, since out object languages didn't provide an API to their compilers, we had to implement parsers ourselves, all of sudden, and completely needlessly, making it into a langugage-specific tool).
Anyway, back to the Traverser. You can move around the resources tree pretty much as you would expect, with cd and inspect with ls. I also have a dump command that (almost) dumps a given Java Compilation Unit (a .java file) to an ATerm, so we can do program transformation using Stratego externally.
I want to reload the transformed tree back into Eclipse, thus allowing one to write small refactorings in Stratego, and apply them interactively inside Eclipse.
It turns out, however, that dumping the tree to ATerms requires a bit more than today's hacking. There are many small gotchas that still have to be ironed out. While I now pick out comments and place them on their CompilationUnit (as subterm annotation), I want to place them at their correct terms in the tree as annotations instead.
Tomorrow, I hope to get well into navigating around inside the Java resources as well, being able to do cd Foo/main to get into class Foo's main method. With some tab-completion, I think we should be reasonably able to handle overloaded methods, too: cd System.out.println:String.
Talked to Martin about the possibility of a JVM backend for Stratego. He told me he had considered it, but that it wasn't top priority.
The main problem, Martin pointed out, is that vital parts of the Stratego library has been rewritten in the later years from an abstract level of readfile to fopen, thus tieing it tightly to C/POSIX.
Both Rob and me pointed out that we could add namespaces to the library, thus clearly marking out Unix-specific parts and Java-specific parts. Namespaces is something I have wanted to work on anyway.
However, upon later reflection I don't think it is all that desirable to keep the all the legacy code after all. We will undoubtedly write a lot of stuff afresh, for specific purposes related directly to the Java platform.
In fact, if Stratego on JVM is to make any sense, Stratego code must be able to call Java libraries, in which case, the Unix-specific bits of the Stratego library is automaticaly supplanted by the much richer Java library.
Again, with proper namespacing, it will also be obvious for developers when they are relying on Unix-specific or Java-specific library calls.