LINQ is the best option for a future Java query API

I have participated in this thread about LINQ for Java. There are some very good comments. I don't think that LINQ is perfect, but it is better than most alternatives. It is better than my proposal, Safe Query Objects [PDF] (aka Native Queries supported by Db40), although the constraints were different. I was trying to see how to do a type-safe query language without any changes to Java. I think its a reasonable design. But if you allow yourself to change the language significantly, as Microsoft did, then you have to explore other possibilities.

Strategic Programming

I have been working with model-driven software development for many years, but I haven't published anything on it yet. At Allegis, we developed a complete enterprise application based on models. We found this to be much more effective than the standard object-oriented MVC approaches. One reason I returned to research, and joined academia, was to do research into this programming paradigm. I've been struggling for years with the idea, but have finally written a paper about it, with some of my students:

Strategic Programming by Model Interpretation and Partial Evaluation
William R. Cook, Benjamin Delaware, Thomas Finsterbusch, Ali Ibrahim, Ben Wiedermann

One question that we didn't address directly in the paper is "Why call it Strategic Programming?" The work is closely related to Model-Driven Software Development and also Domain-Specific Language engineering (DSL). Why not use one of those? To me, its a matter of focus. We are all "feeling the same elephant". But I want to focus on a different part of the elephant.

In programming language work there are three important components:

* Syntax
* Programs
* Semantics

When you map these onto the model/DSL viewpoint, you see the following correspondence:

* Syntax: Domain-Specific Languages
* Programs: Models
* Semantics: Interpretations (interpreters, transformers, compilers)

Some people focus on the models, others on the DSLs, and others on transformation. But rather than name the approach after one of its parts, I wanted to use a name that focuses on the overall approach. Keep in mind that there can be more than one interpretation.

I am suggesting that underlying all this is the idea of a strategy, which guides the design of the language and the interpretation of particular models to achieve some goal. It's the strategy that binds the three components together. The other reason is that some people think models are just pictures and don't have semantics, and other think that DSLs are just syntax. So I'm trying to sell a more fundamental vision of this emerging paradigm to the academic programming languages community. I think that models/DSLs/interpretation/strategies are going to be the next big programming paradigm, and so we need to get ready for it.

Scheme Debugging

I've been using Scheme recently, and have been complaining to everybody about the lack of any good visual debugger for the language. Dr. Scheme has some debugging features, but they seem very primitive and awkward to me. Maybe they are exploring new ways to debug (e.g. drawing arrows all over the code to illustrate the calls stack), but I just want a good conventional debugger. Gambit Scheme has a command-line debugger, but its a pain to use for long periods of time and complex code.

Eclipse has a plugin architecture and lots of dynamic languages are gettting IDEs based on it. SchemeWay is a plugin for Scheme, but it does not support debugging. Recently I disovered the Dynamic Languages Toolkit (DLTK). Its supports the Xdebug DBGp protocol.

So I decided to make an Eclipse-based debugger for Scheme. Its called Schemeide and the alpha version is available for download now.

Any Scheme interpreter could work: all it has to do is implement the runtime side of DBGp. I implemented it, and it requires Gambit 4.2.9. Right now I include a patched version of 4.2.8 with builds for MacOS X, Win32, and Linux. The IDE also includes a indenter/reformatter for Scheme/Lisp. Other features are TBD.

How to embed news in a web page

I hunted around for a while and found out a good way to embed a news feed (RSS) in a web page. You use Google Reader to convert the feed into a little block of text that can be embedded. Here are directions on how to do it.

Middle Earth Programming Language seminar

I just got back from the Middle Earth Programming Language seminar (MEPLS) in Abilene TX. Where I gave a talk on Strategic Programming by model interpretation. I have been working on this for a long time, and its a great feeling to finally have a working implementation and a paper. See my home page at UT Austin for a link. I am very excited about this work. I'm programming an implementation of the idea in Scheme, and that is going very well. The system is code-named "Borg" because it can assimilate ideas from lots of other systems.

Java Object Persistence: State of the Union

Java Object Persistence: State of the Union PART II Published
ODBMS.ORG, a vendor-independent non-profit group of high-profile
software experts lead by Prof. Roberto Zicari, today announced a
new, second sequel to its popular panel discussion Java Object
Persistence: State of the Union, adding responses from the
ODBMS.ORG experts Jose Blakeley (Microsoft), Rick Cattell (Sun
Microsystems), William Cook (University of Texas at Austin),
Robert Greene (Versant), and Alan Santos (Progress).

Optimizing Distributed Objects

Influencing another researcher or company is about the best that can happen to a piece of academic research. The proposal in my paper on Safe Query Objects was implemented and shipped by db4objects as a key feature of their product, within 6 months of publishing my paper.
They are an amazing company, and they even gave me a little research grant to do more work. Thanks!

More recently, my paper on Web Services versus Distributed Objects:
A Case Study of Performance and Interface Design
involved some manual transformations that were hard to do. Eli Tilevich picked up the idea and implemented it as an extension of RMI. We started working together and the design evolved into a full paradigm for optimizing remote object systems. We wrote it up as a nice paper, called Explicit Batching for Distributed Objects. The idea is that client proxies don't perform remote communication; instead they just create a batch of operations. All the method results are futures, because the calls haven't been made yet. But it looks pretty much like an ordinary object-oriented program. When the client calls flush, the operations are performed and the futures filled in with results. We evolved the design by two more iterations, to handle batched operations on remote collections, exceptions, and chained batches, or a series of batches that share common state. Each client can optimize their own server access, without any custom server objects (as required by the Data Transfer Object pattern). Amazing!

The result is so obviously better than RMI, in terms of managing latency and optimizing communication, that it is hard to imagine why nobody has tried this before. I keep thinking somebody probably did (and there is some related work that is similar, but not complete). As far as we can tell its new.

It might actually make RMI be able to compete with Web Services :-)

Dynamic Languages Symposium

The second Dynamic Languages Symposium at OOPSLA 2006 was a great success. There were 193 registered participants. To put this into context, it's a little more than 15% of the overall OOPSLA audience, and is significantly larger than most other events that are part of OOPSLA.

DLS 2006 had three invited talks:

  • Ian Piumarta: Openness and simplicity in dynamic systems implementation
  • Audrey Tang: Perl 6
  • Avi Bryant: Data Refactoring for Amateurs

You can download the presentations and try to guess if Audrey really delivered 433 slides in an hour!

Six research papers were presented:

  • PyPy's Approach to Virtual Machine Construction
    Armin Rigo and Samuele Pedroni
  • Runtime Synthesis of High-Performance Code from Scripting Languages
    Christopher Mueller and Andrew Lumsdaine
  • Interlanguage Migration: From Scripts to Programs
    Sam Tobin-Hochstadt and Matthias Felleisen
  • Hop, a Language for Programming the Web 2.0
    Manuel Serrano, Erick Gallesio, and Florian Loitsch
  • Ambient References: Addressing Objects in Mobile Networks
    Tom Van Cutsem, Jessie Dedecker, Stijn Mostinckx, Elisa Gonzalez Boix, Theo D'Hondt, and Wolfgang De Meuter
  • Hardware Transactional Memory Support for Lightweight Dynamic Language Evolution
    Nicholas Riley and Craig Zilles

The full papers are published in the OOPSLA companion and available in the ACM digital library.

DLS facilitated lively discussion between the talks, during the question and answer sessions.
Of the feedback we received (which unfortunately was not a large sample), 75% rated the day "excellent" and 25% rated it "ok". Nobody gave it a negative rating. This makes DLS one of the most highly rated events at OOPSLA this year. Thanks to everyone for participating.

Preparations are under way for DLS 2007, to be held in Montreal, Quebec, Canada, October 22, 2007. The co-chairs are Pascal Costanza and Robert Hirschfeld. We look forward to seeing you again at OOPSLA/DLS next year.

Objects and Databases Panel PodCast

The panel on Objects and Databases: State of the Union in 2006 went pretty well. There was a lot of talk about who owns the data. The O/R crowd made a credible case continued interoperability with RDBMS, while the OODB people continued to paint a picture of a pure object-oriented future. But these are just two impressions from the panel. You can hear the whole thing, thinks to Stefan Edlic, at http://odbmsjournal.org/

OOPSLA

Well, OOPSLA was amazing this year! But I'm biased, since I was program chair. I had fun meeting everybody who came from around the world to share the OOPSLA experience. This year had some consolidation and regrouping, but also gave some glimpses of what's to come.

Guy Steele gave a great talk on Fortress, a high-productivity language for the Fortran crowd. It was also a great sequel to his 1998 talk on Growing a Language. And I had fun introducing him.

I also had fun dressing up as Luke Skywalker (complete with OOPSLA badge... hey, i should scan that in) and going to OMSI. I taked with Sam Kamin about my ideas for model-driven programming, but I'm not sure I made a lot of sense. Peri Tarr dressed as Darth Vader. We developed a little skit, but didn't use it. And we decided not to do battle... although now I think we should have. One line from the skit: Luke hears Obi wan saying "Luke, Use the Fortess"!

Web Services versus Distributed Objects

My paper with Janel Barfield on Web Services versus Distributed Objects: A Case Study of Performance and Interface Design was selected as the Best Paper at IEEE International Conference on Web Services ( ICWS) 2006. This paper has caused a little controversy... the basic idea of the first part is well-known, but I don't know of any formal benchmark comparisons that demonstrate the idea in a simple way. The wrappers are variaton on the standard "value object" pattern, but the "value" being sent is a transcript of some actions, not a data value as is uaually the case for value objects. The slides from talk were designed as an advertisement for the paper, and they at least woke up the audience at ICWS.

OOPSLA in Portland

OOPSLA 2006 will be held October 22-26 in historic Portland, Oregon (USA).

You can learn all about OOPSLA at www.oopsla.org, and/or download the Advance Program PDF at http://www.oopsla.org/2006//program/oopsla_06_advance_program.pdf .

OOPSLA is the premier gathering of professionals from industry and academia, all sharing their experiences with today’s object technologies and its offshoots. OOPSLA appeals to practitioners, researchers, students, educators, and managers, all of whom discover a wealth of information and the chance to meet others with similar interests and varied experiences and knowledge.
You can mold your own OOPSLA experience, attending your choices of technical papers, practitioner reports, expert panels, demonstrations, essays, lightning talks, formal and informal educator symposia, workshops, and diverse tutorials and certificate courses from world-class experts. The popular Onward! track presents out-of-the-box thinking at the frontiers of computing. Posters discuss late-breaking results, culminating in the ACM Student Research Competition. Try your hand at solving the DesignFest® design challenge. And of course there are plenty of social opportunities for mingling and professional networking.

Go to the web (www.oopsla.org) today to reserve your place at OOPSLA ’06. See you in Portland!

Second Life

I told my brother that Second Life is going to replace the current web in 10 to 15 years. There are many potential problems on the way, but it is certainly possible. It is pretty clear that a single company like Linden Labs, cannot pull something like that off by itself. The exponential growth of the web -- remember it’s just been 15 years! -- requires a more open model. However, there are some benefits to control; having a more closed model allows Linden to support a market for virtual intellectual property within Second Life. I can sell you something, while placing restrictions on your use of it, and relying on Linden's infrastructure to enforce the contract. If I give you the virtual property as a download from my website, I lose control. Just as in the real world, basic property rights encourage creative production. Of course, you can debate whether copyright has gotten out of control, but I'm not talking about copyright here. I'm talking about control over virtual objects that works like control over physical objects in the real world: they basically overrule the principle that digital works can be copied freely. That is, they make the virtual act like the physical -- which makes sense in a 100% virtual model of the world. So check it out...

ECOOP

I just returned from ECOOP. It was great to reconnect with so many researchers from around the world. I saw Walter Olthoff for the first time in 10 years. I was invited to present at the special session on Summing up the Past and Trying to Outline the Future in honor of the 20th ECOOP. I used a Lessig style presentation. This is the first time I've ever gone so far as self-timing, with each slide between 5 and 20 seconds. My talk was called Peak Objects, but I'm not sure how many people got the reference. Here are the slides (minus transitions and black slides).

Conspiracies: OODB, CORBA, etc...

It really bugs me when people say "technology-X was not adopted because 1) there is a conspiracy against it, or 2) corporations are too slow, stupid, conservative to try anything new, 3) MS tried to kill it, etc". Usually they say this about their pet technology, and they can't believe that there were fundamental problems with the idea, so they invent conspiracies or assume other people are too stupid to appreciate the beauty of the idea. I have more confidence in the intelligence of other people and companies -- so that I think ideas that have failed do so because there is something wrong with them. Usually the problem is that they solve a problem in theory, but they miss some practical details, or they are too complex. Example that come to mind are Object-Oriented Databases, CORBA. Sometimes there is just a terrible flaw in a system that is otherwise great; for example, I will never use Smalltalk again for anything other than prototyping because it is too hard to liberate a program from the clutches fo the development environment. I know that tight integeration is one of the benefits of the Smalltalk environment -- it's great for prototyping -- but I always want to ship my systems, not just debug them.

Rise and Fall of CORBA

I recently got into a little argument with Michi Henning about his article Rise and fall of CORBA. This is too bad, because we mostly agree with each other. I think CORBA is dead too. My only point is that I think it is dead for much more fundamental reasons than he does. That is, I am not sure that tranparent distributed objects are a good idea at all -- which is why I am interested in web services. My paper on this topic, Web Services versus Distributed Objects: A Case Study of Performance and Interface Design, is meant to explain some things to people who think CORBA is great and web servcies are just a bad implementation of distributed objects. The ideas presented shouldn't be surprising to experts, but I hope the presentation is a clear explanation of the issues. Also, the wrappers I develop are ceratinly better than the standard one's you get from Axis -- and they are perhaps a useful model when working in RMI as well.
I posted to a thread on Javalobby: Language Wars Redux - the imminent approach of LINQ (see page 4). Most people just don't seem to understand the issues involved in connecting databases and programming languages... most seem to think that things are fine the way they are, but if that were true why do we have a new OR mapper every year? Also, Java people seem to be very conservative, not even willing to consider that there might be any way to improve Java.

I am hosting a panel on Objects and Databases at OOPSLA in Portland this year, on Oct 24th. Here is the working abstract:

Java and C# have brought Object Oriented Programming to the masses, yet programmers continue to struggle with persistent storage of objects. Juggling object persistence with requirements for simplicity, flexibility, maintainability, transparency, scalability and five-nines uptime can rattle even the most hardened architect. Solutions are still evolving rapidly and increasing in complexity, with no end in sight. At the same time developers continue to experiment with alternatives, both old and new.

This panel will discuss the state of the union between objects and databases, as seen from the trenches, with focus on current trends in object-oriented databases and object-relational mapping.

Panelists include:

* Robert Greene, Versant
* Patrick Linskey, BEA
* Erik Meijer, Microsoft
* Ken Rugg, Progress Software
* Craig Russell, Sun Microsystems
* Bob Walker, GemStone Systems
* Christof Wittig, DB4objects

It should be a lively and interesting discussion. I hope some of you will consider attending. I may add a customer representative or two.

ECOOP program committee


I just got back from the ECOOP program committe meeting in Paris. The meeting went well, but the highlight of the trip was that I accidentally found a Poilane bakery and even asked if I could visit le fournil in the basement. They have a huge woodfired oven, but the room itself was tiny. My French is still good enough after 20 years to get around and have reasonable conversations. I went to dinner with David Bacon.