Featherweight Musings

Friday, October 26, 2007

OOPSLA Day 4

The last day at OOPSLA had the session on ownership types, which was great. It also had my talk (paper and slides available here) which went well and I got some excellent feedback. I was also a bit more relaxed once it was out of the way! The talks that I founf interesting today were:

Ownership Transfer in Universe Types Seemed to take a lot from the ideas of external uniqueness and ownership domains, also doesn't seem to work with concurrency. But, the ideas are very interesting and I'm really motivated to read the paper.

Lost in Translation: Formalising Proposed Extensions to C# Dealt manly with LINQ (again), and had a lot of formal stuff in the talk, which is normally a bad sign, but it was pretty easy to follow and the formalism looks interesting

The Java Module System: Core Design and Semantic Definition Was a good talk, all about formalising the proposed Java Module system. Its kind of interesting seeing how it will all work and the work has obviously been well thought through. The size of the formalism is staggering!


And that was the end of OOPSLA, well actually I had quite a few very interesting conversations along the way, especially oni the last day it seems. Had an ice cream and went home, well back to my hotel anyway. All in all it was a great conference, and I look forward to coming back, insha'allah.

Wednesday, October 24, 2007

OOPSLA Day 3

And so to day 3, and without further ado, the papers I found most interesting:

StreamFlex: High throughput stream programming in Java A mini-solution to real time stream programming, because the general problem, that is real time programming is horrible. Streaming apps have no buffering and no messages can be dropped. Plus all the usual real time constraints. In particular, garbage collection is the big headache. They have an interesting combination of channels, capsules and transient and stable regions of the heap, and an interesting, simple variation on ownership types. Plus region based memory management and transactional memory.

Can programming be liberated from the two-level style? Multi-level programming with DeepJava Presented a cool meta-type system, but I wasn't sure how it was different from other meta-type systems. Nice though. The interesting bits were their potency annotations that give a nice way to specify types in classes lower down the chain of meta-types than the immediate implementer. They also suggest that the system can be used as an alternative to generics, which looks kind of virtual types like, I must look closer at that.

Modular typestate checking of aliased objects Can prevent a lot (apparently) of dynamic errors (or exceptions) statically (always a good thing) using fractional permissions. Seems a nice, little system and deserves a closer look because of the reference to a pack/unpack system, possibly similar to existential types.

Establishing object invariants with delayed types This seems like a big, clever solution to a small, dumb problem, however, the motivation and evaluation seemed convincing. The problem seems to be handling constructors and establishing invariants. The solution is interesting, using delayed types (obviously). James noted an interesting connection to ownership types that deserves further investigation.

OOPSLA Day 2

Day 2 started with two long talks, fortunately both speakers were excellent and the subject matter interesting enough to keep my attention for one and a half hours. The first was by Erik Meijer, titled confessions of a used programming language salesman. The talk (and accompanying essay) is part autobiography, part introduction to LINQ, and part sales pitch for functional languages; which you might have thought would be a hard sell at an OO conference, but hey. Erik started by talking about his background in category theory and functional programming, and reminded me that I wish I could understand this stuff. He then went on to slate C Omega as a a bad job with too many types, but seemed happy with the LINQ stuff, which he revealed are monad comprehensions in disguise. He gave his theory for non-adoption of functional languages and good science in general, by saying the perceived pain of adoption was too high. He thus strives to reduce this to close to zero. He then went off on a bit of a tangent - the aforementioned sales pitch/rant for pure functional languages. on the way he gave the best metaphor for monads I've come across - in the context of a getTime function, the time changes and so isn't a function, but if you return the clock then you're OK, because the clock does not change. Monads are like clocks. He explained it much better than that though. Another good metaphor was making the comparison between functional and OO and nouveax cuisine and McDonalds, although I think this is a little unfair on OO, its a nice image.

The second talk was Second Life: The World's Biggest Programming Environment by Jim Pubrick and Mark Lentczner. This was very cool, it ticked all the boxes - games, 3d graphics, distributed systems, massively parallel and concurrent, and user definable everything! The basic idea is they have this 'game' (or world for creativity and business, depending on your point of view) with huge numbers of users, 15% of whom write scripts. The numbers for programmers, scripts, lines of code, etc. were staggering, never mind the sheer number of potential users for each script. They weren't shy in admitting that there scripting language is an abomination, but they claim the distribution model is great. In effect they have very real encapsulation, each unit is tiny and self-contained, but there are millions of them and they all run concurrently on thousands of processors, so the kind of stuff we've been promised for the future in countless motivation chapters. On a side note they have an explicit of state in their language and I think this is a great opportunity to plug some work I participated in - StateJ, paper available from the usual place. Anyway, the long and short of things is that they are porting it all to Mono so it all works properly at scale and they employ a cornucopia of neat tricks to do this, most of which are hacks to get poor design decisions in the CLR, eg. lightweight threads, serialisation, etc. Basically they have a very cool problem on their hands. They finished off by selling Second Life as a development environment, showing how their dev team collaborate virtually. It was a pretty cool demo, everyone loves pretty graphics at the end of the day! On another note, their security model is cool, looks like security is more interesting than I thought.

The last session I attended was research papers Atushi Igarashi presented Variant Path Types for Scalable Extensibilty, which is an extension of the FOOL paper I've described before, so won't do so again, its still very cool stuff.

Next up was Dependent Classes by Vaidas Gasiunas, a development of virtual classes that subsumes multiple dispatch, it is one of the most interesting papers I've read in a long time. But we've discussed it in SLURP, so I won't write more.

The last paper was User-Changable Visibilty: Resolving Unanticipated Name Clashes in Traits, the idea was adding access modifiers to traits and being able to change them on trait composition by freezing and defrosting. It looked like interesting stuff, but the talk was quite basic, mostly taken up with an introduction to traits. The paper looks worth reading though.

Tuesday, October 23, 2007

OOPSLA Day 1 - Dynamic Languages Symposium

The Dynamic Language Symposium was interesting, the invited talk was on security and this (in particular capabilities) seemed to permeate a lot of the questions. I found a lot of the talks (esp the invited talk) thought provoking, but not directly interesting, which is a shame because dynamic languages are a hot and interesting area. In particular the invited talk got me thinking about security as an interesting topic, which takes some doing!

This is pretty lazy, but I'm not going to write anything specific about the talks, mostly because I don't have anything deep to say. But here's a list of the ones I found most enjoyable/interesting/thought provoking:

Tradeoffs in Retrofitting Security: An experience Report

OMeta: An Object Oriented Language for Pattern Matching

Dynamic Ownership in a Dynamic Language

Highly Dynamic Behaviour through Prototypes with Subjective Multimethods

Mirages: Behvioural Intercession in a Mirror Based Architecture

Monday, October 22, 2007

OOPSLA 07, Montreal - First Impressions

So, I'm at OOPSLA and I'll be blogging about it. I'm talking on Thursday, so I can't relax until the end, but hey, should still be fun.

Montreal is beautiful at the moment, all the trees are gold, red and green, really stunning stuff. I've seen a few parks and wondered around the city, and its all very nice. Not much in the way of history though, the old town is only old relatively. In fact the whole place feels slightly soulless, but still a nice town.

The conference venue is pretty impressive, very posh and huge - a real difference from the usual academic conference in a university! Also there are a lot of people and a lot of stuff going on, it certainly feels like a pretty unique kind of conference (at least compared to what I'm used to).

Anyway, the next posts will deal with the interesting stuff - the talks...