Wednesday 30 July 2008

The Catsters

Thanks to Nick for showing me what youtube was really meant for: Category Theory for the masses! Yep, the catsters have their own channel on youtube and you can improve your life by learning about adjunctions, monads, algebras, etc. Wonderful! Thanks, Eugenia.

What's next? Guerilla category theory?

Moshe Vardi talk

This morning I attended a magical talk by Moshe Vardi entitled "From Philosophical to Industrial Logics". This was a fantastic hour - Moshe gave a fascinating, historical tour of essentially a century of work on logic and automata. He showed how a number of seemingly esoteric academic arguments have been replayed in industrial situtations, e.g. the arguments between tense logic people on linear vs. branching time was played out between Intel and IBM when settling on the language PL/Sugar.

Moshe had some nice conclusions, including (paraphrased):
  • science is a cathedral; we are the masons
  • there is no architect
  • our own contribution is always very small
  • sometimes very small contributions can have a big effect
It was a really wonderful talk - I know we record these but we don't make them externally available. Someone should record this talk and put it on youtube or somewhere similar. I hope to get Byron to persuade Moshe to put the slides somewhere.

Wednesday 16 July 2008

ECOOP talk

I've uploaded the slides from my talk on my webpage here.

[Attendees will be able to read the slides I had to skip :-( ]

Friday 11 July 2008

ECOOP'08 day 3

Last night was the conference banquet. Whilst I had a good time, the local organizers took us to a big restaurant in Paphos Town. All fine, but we didn't get a separate room, but rather were sat in the same space as misc tourists. Again this would be fine, but ECOOP has a traditional of a banquet speech. This year the speaker is James Noble, and I was not alone in looking forward to his speech. (Those who know James will understand when I say that his speech could have gone in any direction!)

So James was made to give his speech when the band took a break and in front of all the tourists as well as us. This was really unfair, especially to James. The organization of ECOOP has been good - at least for me (although other people have niggles) - but this was a huge blunder IMO.

On to day three ...

Today started with a very interesting talk by Wolfgang de Meuter, who is this year's winner of the AITO Junior Award. He gave a talk on what he terms Ambient-oriented programming. What this means, as far as I can tell, is a form of distributed OO-programming. It's OO in the sense of Abadi-Cardelli-style objects (without the type system), and with mirror-based reflection. Wolfgang proposes a particular form of futures programming (and hence is heavily asynchronous - a good thing IMO). What was also interesting is that Wolfgang is a big fan of scheme, so he makes heavy use of closures.

It's probably worth looking up his language. I was trying to remember the section in the "C# joins" paper by Benton/Cardelli/Fournet where they code up futures in joins. I don't get the impression that Wolfgang is aware of much of the theory in distributed programming, so it would probably be worth figuring out where his work fits in the known literature.

The first technical session was interesting but let me mention Raymond Hu's excellent presentation about his work with Nobuku and Kohei on session programming in Java. Funnily enough I used to teach Raymond as an undergraduate at St John's College, Cambridge; so it's wonderful to see him doing first-class research, especially at my alma mater, Imperial College. Anyhow, in their work they have a simple session protocol language, and a session API, such that they can statically verify that the java code using the API adheres to the session protocol. Particularly impressive is that for their (admittedly micro-) benchmarks are very neat - they consistently out-perform Java RMI. Cool!

In the session after coffee Brian Chin gave a really nice talk about programming so-called "interactive applications" in Java. It turns out that there's a variant of the expression problem. He solved it some refactoring and actually implementing delimited continuations as a Java library. I want to take a look at this paper more carefully as I'm really interested to know how that can be done. Moreover it did occur to me that one might be able to do some of these rewrites with dynamic updates. Maybe.

After lunch we had the second talk of the day from Michael Ernst. He is an astonishingly good speaker - I need to learn from him. His second talk was way cool. He spoke about his immutability analysis for Java. It's a really nice analysis - it all boils down to graph reducibility. Their analysis is sound, complete, linear time, works for the whole of Java, deals with Generics,... wow!

ECOOP'08 finished with a very nice talk from Ewan Tempero on a study of the use of inheritance in a vast corpus of Java code. It does seem that most Java code uses quite a bit of inheritance, so perhaps some of the horror stories are not true! A good way to end ECOOP.

Now I get the rest of the day and tomorrow morning to relax in beautiful Paphos. Hurrah!

Thursday 10 July 2008

ECOOP'08 day 2

Day 2 started off with an invited talk from Akinori Yonezawa who is this year's winner of the AITO Senior Prize (last year's winner was my manager, Luca Cardelli). This talk was okay but a little disappointing in that Aki decided to give a "my research career in an hour" talk. It was kind of interesting, but naturally nothing was treated in depth. One big point was that his invention "concurrent objects" (interpreted VERY broadly) are used in Second Life. This is cool although it wasn't at all clear that the Linden guys did this knowingly; more that in a massively parallel world with objects - the objects have to migrate. Its obvious, so you do it.

I started off the next session with a talk on UpgradeJ. Unfortunately, this was not the best talk I've given - I ran behind schedule and didn't get my "5 minutes to go" warning, but rather only got the "1 minute to go" warning! Yikes. I had to skip quite a bit. Most of it was skippable, but I had to rush the description of evolution upgrades - which is a shame as it's the really interesting bit of the paper :-( Oh well. I have had a lot of questions through the day, so perhaps things aren't so bad. Sophia mentioned that she may try to get a project student to implement UpgradeJ which would be wonderful!

Donna Malayeri followed me with a sensational talk about combining structural and nominal types. I hadn't seen the ECOOP version, so I didn't know quite how expressive her system is. It's very nice indeed. She also got some of her dislike of Java out of her system - therapeutic I'm sure!

Anders Hessellund wrapped up our session with a neat talk about problems with real-world enterprise systems. It turns out that many of these systems are built with lots of XML "meta-data", and bits of Java that attempt to adhere to the meta-data, and provide BI. Of course, the way the Java code is produced is so horrible that it isn't checked that the code adheres to the design. Anders and Peter Sestoft have built some tools employing fairly simple data- and control-flow analyses to verify the code. Interestingly, there is some tension between precision and soundness. Given that they are dealing with real-world code they worry more about precision, so their analysis is both incomplete and unsound (but useful!).

After the coffee break, I went to Gilad Bracha's tutorial on Newspeak. I heard about this in FOOL in January, so there was a big overlap. But they seem to be making progress. Gilad did mention that they were interested in an optional "pluggable" type system (he put it thus: "It's a priority to us, just the lowest priority"!).

After lunch I went to the "hardcore theory session" (as someone mentioned over lunch). In particular I enjoyed listening to Anindya Banerjee talking about his work with David Naumann and Stan Rosenberg on their "regional logic". This is very nice. He motiviated their work using the subject-observer pattern. Their approach is very reminiscent of what Matthew and I did in our POPL'05 paper - using a set of observers, O, etc. However, they don't use separation logic, but rather effects and regions and some other operations. It's all very nice (they won a best paper award). However, I still think that the logical approach is more precise than using effects/regions. We need more experiments I guess.

Another great day. I'm off to grab a shower before the bus takes us to the conference banquet - should be fun!

Wednesday 9 July 2008

ECOOP'08 day 1

The first day is over and what a day it was. I really enjoyed it.

We started off with Rachid Guerraoui talking about transactions. He gave a really nice talk - enough detail to make you think that maybe you should change research areas, and yet not too much to make you fall asleep (or check out the pool). The question he posed is whether we can just "inherit" all the stuff that Jim Gray et al. did in the 70s on transaction systems and just import them into our languages/systems and be done with it? Interestingly it doesn't seem so.

I had the honour of chairing the first session. Because of the welcomes and presentations before Rachid's talk we were already running 30mins late! To incentivize the speakers I offered an AITO Cypriot pear to the speakers who finished inside their 25mins slot:-) Fortunately the three speakers all rose to the challenge and got one of their five daily fruit+veg portions.

Nick Cameron kicked off with his wonderful work with Sophia and Erik on Wildcards aka existential types in Java. His presentation was very clear and it does seem that we finally have some understanding as to what these damn things are! As far as I know we still don't know if the system is decidable - maybe Andrew and Benli's work on variance could now be applied?

Jaroslav Sevnik followed up with a great talk on the Java Memory Model. It seems he really does have all the right tools in his hands to study this beast and he has managed to verify a number of useful transformations, and indentify erroneous ones too. Someone asked if he thought that Sun might rewrite the JMM. He thought they would but unfortunately there's nothing out there as a viable alternative. Sounds like a great PhD for someone with a huge brain! [My head hurts when I listen to the fine details of the JMM - like when Jaroslav gave a theory seminar in Cambridge :-( ]

Kathryn Gray rounded up session 1.0 with a very impressive talk about handling interop and inheritance between typed and untyped oo languages - she considered Java and Scheme as the languages in question. She did a really nice job about showing how the problem is perhaps more subtle than one might think, and her solution does seem pretty canonical.

All in all, I think people left session 1.0 ready for their coffee but glad that they stayed the course! [For some reason the timetable has 2.5 hours of talks before the first coffee break - Yikes!]

The rest of the day was of similarly high quality, but let me just flag Shan Shan Huang's talk on LiquidMetal, which was a very nice talk about the Lime compiler that takes a reasonably modest extension of Java and compiles either direct to the JVM or spits bits out for compilation on an FPGA and/or Cell processor. Really nice stuff - I need to talk with her about the fiddling that Satnam and I have done using LINQ.

A great first day. Now the nerves kick in for my presentation tomorrow morning...

Tuesday 8 July 2008

ECOOP'08

I'm currently in Paphos, Cyprus attending ECOOP'08 and its associated workshops and symposia.

Firstly, it's an amazing venue. It's a nice hotel with several pools, beaches, and weather to match! Indeed, it's a pretty outrageous place for a conference. Normally the choice is between the talks and a natter with someone. Here the natter can be poolside, or you can just go poolside without the natter. It's a tough call. I've tried to be good and attend the talks I intended to, but I haven't exactly managed it (sorry Dino!).

There's been some interesting stuff so far. Susanne Cech Previtali gave an great talk about DSU and aspects - possibly the first time I could see a real argument for aspects! She had some very interesting case study data - I plan to steal some of it for my talk on Thursday. I also listened to Rich Hickey talk about his Clojure language. It's a lisp-like functional language for the JVM - so much like MLj (although I don't think he knows about that work), but it had some interesting features: primarily persistant data structures and support for concurrency. I don't quite understand how the immutability works in Clojure - esp. given the Java interop - but it seems worth chasing up.

I also went to Laurence Tratt's talk on programming languages. His point was that language designers need to think out of the box more and learn from other languages. That's kind of obvious, but the problem (not addressed) is that it's very easy to think you understand the essence of a feature by programming with it. Often language designers don't understand what they're doing - that's why we have so many, and that why many of them die.

The problem with Tratt's talk is that he didn't really seem to understand the area terribly well. Moreover, some of his conclusions were questionable (his criticism of checked exceptions was that people often put empty catch blocks.) I was tempted to ask him about my idea of licensing language designers (you only get a license if you have a PL PhD and can do all the exercises in Benli's book :-)).

In a little while I'm off to Dan Ingall's talk on Sun's Lively stuff, which I'm looking forward to.

Tuesday 1 July 2008

Trailer

Tragic as it may be but I'm quite excited about the forthcoming film whose trailer appears here.