Monday, October 29, 2007

OOPSLA Recap Part II: Technical Stuff

Now that I've given this talk on my summer work (it went quite well, thanks for asking!) I thought I'd pick out a few of the technical highlights from this year's OOPSLA. I describe it in a cut-oriented style, to save some of you some pain.

Interesting thing 1: The Scala tutorial!
After reading Scalable Component Abstractions, by the Scala people, I got a little bit worried.
It seemed to me that Scala, the language I thought had everything I wanted, was in fact way too complicated. Well it may be too complicated, but after the Scala Tutorial that I attended last Monday, I have a new respect for the power of Scala, and believe that it is a great programming language right now. The absolute highlight of the Tutorial was seeing the guys program a Excel-style spreadsheet with real formulas and cell dependencies in 200 lines of code right there in the room! The ease of programming seemed to be due to a few things, but one was the fact that parsers can be programmed right there into the language using something called parser combinators. Neat. Also, they built a simple layer upon the Swing library which allowed them to program in a reactive style (similar to Erlang maybe) when responding to GUI events. It was dope. I also met and got to hang out with two members of the Scala team, Sean and Gilles. They both were really nice and seem to know what they're doing. Awesome, right?

Interesting thing 2: Alex Buckley, Lord of the Java Spec. I also met and spent a fair amount of time with Alex Buckley, the man who is now officially in charge of the Java specification.
We spent a fair amount of time talking about what he does (mainly answer question from the Eclipse people and other compiler writers clarifying the specification as well as handling the JSR process) and talking about potential extensions for Java (such as a quasi-ML-sort-of-like module system called "super packages." No functors though...). Even though he just finished his PhD, he was quite knowledgeable, especially on the theoretical stuff. I was left with the feeling that Java is in sane hands.

Interesting thing 3: Dan Grossman, and his work on transactional memory. I got to talk with him a bit, and he was extremely interesting. This is worth saying outside of any cut; if you have even a passing interest in transactional memory, you really ought to read Dan's essay,  The Transactional Memory / Garbage Collection Analogy. Do it for me.

Interesting things: Other papers on my, to-read list:

Transactions with Isolation and Cooperation - If anything, this paper caused me to realize something about the semantics of the 'retry' statement that I never understood before. Normally using the 'atomic' statement allows us to use purely local reasoning. Unfortunately this isn't always the case, in particular with retry. Suppose you are trying to create a barrier, a point that all threads must reach before any can proceed. You might use code that looks like the following:

foo() {
  atomic{ x++ };
  atomic{ if( x < 10) retry; else ... }
}

Unfortunately, if a function that calls this function is already inside an atomic block, this code will no longer work, thus getting rid of our nice local reasoning. Boo.

Lost in Translation: Formalizing Extensions to C#
- A nice, straightforward paper about using type theory (of all things!) to formalize the new features of C# 3.0, translating them to C# 2.0 where appropriate, and formalizing the old features where necessary.

Okay, that's all. It was an interesting trip!

Sunday, October 28, 2007

OOPSLA Recap Part I: Photos


Arret already
Originally uploaded by DixiePistols.
Well I've certainly taken my sweet time in giving you guys a recap of my experiences in Montreal, but what can I say? I was busy pretty much the whole time I was there, and now that I'm back I am hurriedly preparing for a talk that I have to give tomorrow. Nevertheless, I think that putting up some fun pictures of my trip won't take too much time, and it should pique your interest for Part II of my OOPSLA recap, wherein I will describe the interesting research talks I attended, and the interesting people I talked to.

Friday, October 19, 2007

OOPSLA: Pre-Hype Edition

As you may have heard by now, I'm headed to Montreal tomorrow for this year's OOSPLA conference. I am pretty excited. I'm going as a student volunteer, and plan to see and do a lot. I thought I'd put up a list of talks, tutorials and keynotes that I'm planning on seeing or think I should see.

Here's the run-down:

Tutorials: Tutorials are usually hands-on sessions about a particular technology; they teach you how to actually go about using all these fancy tools that come up in the technical talks, and usually consist of a bunch of demos.
Keynotes: Keynote speakers are usually pretty well established in the field, and get to talk about whatever they want. This is usually either some kind of retrospective ("back in my day, we only had 128k of main memory!") or free-form talks on the speaker's most recent interest, which may or may not be of publication quality. These are often the most entertaining talks of any conference, but the lowest on technical content.
Technical Talks: Actual presentations of research papers, these talks constitute the primary purpose of the conference.
What about you? Going to OOPSLA? What are you excited about seeing? Don't care at all?

Whoa-La! Google Maps

Just recently learned that in Google maps you can create little side-trips to your driving directions, just by dragging and dropping a route! Rad, right? This is especially helpful to me because I want to stop by a Citibank ATM in the Citi of Buffalo, NY so that I can pick up my last paycheck from my summer job in India. Sound ridiculous? You betcha! Here's our new and improved route:

To Montreal:

Wednesday, October 17, 2007

Beautiful

Depending on your idea of what make a beautiful programming language, you may enjoy this blog that I just found!

Also, getting excited for the big trip to Montreal next week for OOPSLA! Once I take a look at the actual program, I'll post a few talks that I am excited about...

Monday, October 15, 2007

Compu-Lingo

A Catch represents one half of a try-catch statement. Specifically, the second half.

(From, Polyglot API documentation)

Friday, October 12, 2007

Java Technology; So Simple!

Reading about Java, I found this little gem on the web:

The assertion facility in J2SE 1.4 and later versions is not a full-blown design-by-contract facility. Adding such a facility would require substantial changes to the language and might subvert the simplicity of Java technology.

Which naturally made me LOL out loud, as Java is anything but simple. The name alone refers to about sixteen different concepts simultaneously.

As an aside, if you want to actually use assertions in Java, make sure you turn them on! Use the "-ea" flag at the VM. They are off by default!  Boo! I think this officially makes it the only runtime checking that is off by default in Java.