Ayende @ Rahien

Refunds available at head office

Erik Meijer on Democratizing the Cloud

This talk was the keynote for yesterday, and I came out of it with a profound sense of shock. If this is where Microsoft is headed, then they are in a real problem.

Some of the things that really bothered me:

  • Don't learn anything new, let Microsoft chew it up for you first.
  • Let us compile our C# to JS (good) and then just make some of the calls a remote ajax calls (bad).
    I would have thought that they would have learned from the DCOM debacle, if nothing else. Location Transperancy is a Bad Thing.
    In general, Too Much Magic is a bad thing.
  • SQL and JS are assembly language concepts, you should only work in C#, and let Microsot handle them.

That was so wierd, and so out of touch with reality...

Comments

Mats Helander
09/26/2007 09:20 AM by
Mats Helander

I wasn't there to see the presentation, but if it is anything like his talk on democratizing the cloud which can be found on InfoQ, I really disagree with you here :-)

I think Erik has a really great vision for the future here - at least as far as I can understand what he's saying - and if anyone can revolutionize the way we code internet distributed applications, I think it is him.

Why is Location Transparency a Bad Thing? Robustness? Well, Erik can help you there. Latency? Well, sure - bit is it /the/ problem or more of an optimization concern?

I think the real problem with distributed computing has to do with orchestration and parallelization, and if I don't misunderstand Erik, that's exactly what the stuff they are developing is going to help out with. Imho, that's just fantastic.

Even more fantastic is that Erik doesn't seem to expect us to learn completely new languages and coding approaches (unlike, say, Erlang) - rather his vision appears to build on the developer developing code without taking distribution into account and then using refactoring tools to turn it into a distributed setup. That isn't the same as "don't learn anything new"...I'll readily admit that I'd love any help I can get when it comes to orchestrating distributed program flows.

About SQL and JS being assembly languages - here I just couldn't agree more with Erik. One might object that you regularly have to tune your SQL, but then again, you have to handtune your machine code as well if your C compiler isn't good enough. It is just a question of making the compilers good enough.

/Mats

Colin Jack
09/26/2007 01:05 PM by
Colin Jack

Do you have a link to this presentation if it is online?

Luke Breuer
09/26/2007 02:07 PM by
Luke Breuer

Joel Spolsky has a great article regarding "Network software should make resources on the network behave just like local resources.", which is what might happen if C# -> JS conversion automatically generates "unintuitive" remote ajax calls: http://www.joelonsoftware.com/articles/fog0000000041.html .

Vadi
09/26/2007 03:07 PM by
Vadi

Everything is trade-off here. What Joel says or what Erik says .. all are concerns of optimization.

Can you put the url of the presentation?

LukeB
09/26/2007 03:16 PM by
LukeB

I think if you keep in mind the average developer using MS tools (i.e. Morts), this presentation makes more sense.

josh
09/26/2007 04:33 PM by
josh

I'll be watching for text or video of this talk on the web, and holding my opinion until then. I'll admit some concern with some recent MS news.

Mats Helander
09/26/2007 04:39 PM by
Mats Helander

Here's the InfoQ one anyway..

http://www.infoq.com/presentations/Meijer-linq-cloud

/Mats

Will Sahatdjian
09/26/2007 06:25 PM by
Will Sahatdjian

It is a fallacy to think that JavaScript is going to be irrelevant any time soon. Any kind of automated code generation is not going to take advantage of the potential expressiveness of the language. Just learn it already...

Erik Meijer
09/27/2007 08:56 AM by
Erik Meijer

Obviously, I did not explain things very well :-)

Abstraction is about leaving out irrelevant detail. Location is almost always relevant, so I agree that location transparancy is not a great idea. However, once you made the explicit decision to make a class remote, all the boilerplate code that you need to write to make remote calls under the covers is irrelevant detail.

What I am proposing is in some sense the same as how the "foreach" loop or any high-level language feature is implemented. The developer decide what they want, the compiler decides how to implement. In this case, the implementation is actually simpler than that of iterators or say anonymous methods.

Also, I am perfectly happy for people to write SQL or JS by hand. However, or me personally, I find that I can write queries in LINQ that are super easy to understand, that I could never write by hand in SQL. This is especially true for queries that involve nested results, heavy grouping, and aggregation. Same for JS.

Hope this helps

Tobin Harris
09/27/2007 08:59 AM by
Tobin Harris

I watched the InfoQ video - was interesting, although I probably need to watch it 3 times to fully understand what he's saying!

The example of LINQ at the end vs SQL - I think SQL seems clearer!

One thing I've noticed is that we're getting good at moving data around; serializing objects in various formats and passing them between systems. But, we're not too good at moving behaviours around yet (at least not in the main stream). Is this what Erik is saying he wants to achive? Does he want "where" the code runs to be a separate concern to the code itself?

Judah
09/27/2007 10:36 PM by
Judah

Very interesting stuff, Erik, thanks for posting and clarifying.

Comments have been closed on this topic.