Ayende @ Rahien

My name is Oren Eini
Founder of Hibernating Rhinos LTD and RavenDB.
You can reach me by phone or email:


+972 52-548-6969

, @ Q c

Posts: 6,128 | Comments: 45,551

filter by tags archive

Erik Meijer on Democratizing the Cloud

time to read 1 min | 136 words

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...


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.


Colin Jack

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

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 .


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?


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


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

Here's the InfoQ one anyway..



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

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

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?


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

Comment preview

Comments have been closed on this topic.


  1. The worker pattern - 4 hours from now

There are posts all the way to May 30, 2016


  1. The design of RavenDB 4.0 (14):
    26 May 2016 - The client side
  2. RavenDB 3.5 whirl wind tour (14):
    25 May 2016 - Got anything to declare, ya smuggler?
  3. Tasks for the new comer (2):
    15 Apr 2016 - Quartz.NET with RavenDB
  4. Code through the looking glass (5):
    18 Mar 2016 - And a linear search to rule them
  5. Find the bug (8):
    29 Feb 2016 - When you can't rely on your own identity
View all series


Main feed Feed Stats
Comments feed   Comments Feed Stats