Azure and On-Premises Data

One of the more interesting questions that will arise from cloud computer in general and Azure specifically is how the connection with on-premises data will be maintained. Based on what I saw in the keynote, they appear to have the link to Active Directory well in hand. In other words, identity can be federated so that the Azure service receives the credentials and passes the authentication request to an Active Directory server running on your corporate network. The demo in the keynote made that process look incredibly easy. Demo easy, with no discussion over the potential security risks or configuration requirements for the AD server. But that's beside the point (for the moment).

My real question relates to the access required for non-identity data. How will a company's internal data be made available to an Azure service. It appears that the answer is going to include SQL Data Services, but I'll be interested in hearing more about the details. Specifically, the level of exposure and integration required to allow an Azure application to retrieve and update information that is available only through an internal network. That has the potential to be an interesting challenge and set up a confrontation between security and functionality.

Welcome to the new world, same as the old world.

Nothing like some new terms

Get ready to hear about the 'Fabric controller'. In a cloud computer environment, the fabric controller is the "O/S". It is responsible for managing the services that you have configured.

Modeling your services

The first step is to model your service. This means to define the attributes related to the deployment and execution of your service. This includes the channels and endpoints for your service (do a quick look to WCF for the definition for these terms). As well, you define the security model by identifying the roles and groups. This information is persisted as the configuration for the service.

Development Tools

The developing and testing of the service can be done using familiar tools (i.e. VS2008). There is no need to deploy to the cloud in order to test. There is also no requirement that the application be written purely in managed code. This piece of information is a bit of a clue as to what is going on under the covers. In other words, there is probably Windows running someplace.

The development environment 'simulates' the cloud computing environment. Once the application is completed, it can be 'published' to Azure. The 'package' (the bin output for the project) and the configuration file is sent to Azure. After a few minutes, your application is running live on the cloud.

Simple. At least for the "Hello World" application. :)

Windows Azure Links

If you're looking for a set of links that provide more info on Windows Azure, check out

Ray Ozzie Keynote at PDC 2008

Today's focus is on the back-end innovations. The client conversation/demos will be done at tomorrow's keynote. In other words, this is the 'cloud' talk.

The content of the first portion of his talk is about the convergence of IT Pro and IT Dev functions. Basically, he is making a case for the need for cloud computing. Things like redundancy, resilience, reliability, etc. Nothing exceptionally new here. But he then branches to the idea that, rather than having the infrastructure within a corporation, perhaps it would be better to have the infrastructure hosted by someone who specializes in offering web functionality that supports millions of developers. I think I can see where this is heading :)

The new service is called Windows Azure.

That explains the 'blue' theme seen throughout the Convention Center.

One of the goals is to be able to integrate the service with the existing toolset. "And you can", says Ray. But there will also be a new set of tools aimed at assisting developers with this 'cloud design point'. After all, it's not quite the same as traditional Windows applications. The focus for a typical Windows application is 'scale-up' and not 'scale-out'. And to work properly with the cloud, the 'scale-out' model is a requirement.

Keep in mind that one of the benefits of the cloud computing is the ability to increase capacity by turning a dial that increase the number of 'servers'. For your application to work successfully in that environment, the manner in which you develop applications might change significantly. But the details on that piece will have to wait for tomorrow.

Now it's time for the demos. More shortly.

Traveling to PDC 2008

I'm writing this while at 35,000 feet, winging my way to PDC in Los Angeles. This is actually my first PDC so I'm looking forward to it. I've been to Tech Ed and Mix in the past, but have never made it to a PDC. How can anything bad happen while I'm surrounded by 7,000+ geeks?

There are a couple of areas where I expect to see some significant announcements. Some of them, such as the beta bits for Windows 7 and an early CTP for VS2010, are already widely anticipated. But there are likely to be more (and potentially more interested) announcements from across the company.

For example, I expect to hear some big initiative surrounding cloud computing. Aside from tools that will help developers take advantage of the technology, it wouldn't surprise me to hear about a service that competes with Amazon's new E3 service.

Another potential target for news is the Oslo project. There has been a bit of buzz (oooooo...alliteration) on this upgrade to Microsoft's service layer offering, but it will be interesting to see how Oslo is positioned, especially in relation to any cloud computing announcements.

Beyond the above, I'm sure there will be more surprises. From the number of sessions on the agenda, I expect that there will be some VSTS innovations. And my interest has been piqued by an MSR project called Pex that deals with automated white-box testing. I'll be live-blogging from the keynotes and the sessions that attend, basically commenting on anything that catches my ear. So stay tuned for some PDC least, my take on them.

PDC 07 Dates Announced

PDC 2007

October 2-5, 2007
Los Angeles, Californa

Important Links:

Microsoft LINQ Resources for September 20th

Community Thoughts

  • Werner Moise has been “reflecting” on LINQ and the more time he spends, the more he's realizing “how well thought out and practical it is”. He has some excellent points.
  • Dinesh wants to know how you feel about attributed-based O/R mapping vs. external XML Files. He also talks about the connected vs. disconnected nature of DLinq. Also, here is the code from his DLinq demo at PDC.
  • Jomo Fisher shows how to create a custom aggregate function in LINQ using extension methods. Sweet, but it don't work for DLinq, but maybe then you want to look at User Defined Types and Aggregates in Yukon/SQL Server 2005. Oh man, this is going to take some architectural distillation.
  • Jon Galloway is scared by code maintainability problems introduced by DLinq. Jon and I share a common PowerBuilder background, where you could put SQL right inside your PowerScript (not unlike Progress either). This is not really a DLinq problem, but a code separation, high cohesion-loose coupling problem. The answer back in the PowerBuilder day was to put all your data access in datawindows. The .NET answer today would be componentized DataAdapters or DataReaders, but we still see the bad practice of people intermingling data access code in other areas of their application. But perhaps maybe DLinq does make this a slippery slope. Maybe we should all just stick to TableAdapters - yikes!






What am I missing? Drop me a line on this blog. I'm heading out next week to a VB Software Design Review and the MVP Summit in Redmond, just because there isn't enough new technology in my life these days.

PDC Day 4 the last day

The last day is always quiet. Many have left. Went to a session this morning. Then went to the hands on lab, they were great this year, Blair and I did a Sparkle lab. That was very very cool. Too bad I couldn't capture a video of it. My windows application had a glowing ellipse circling the application and when you changed products the right detail panel flew in like a flip card along with it's reflection. The people working in the labs were developers of the products. I hit a bug in the lab and called someone over they smiled and said I know what's happened that's my bug. :) It was great to get a chance to try it out with the developer right there and be able to talk to them about it. Windows development is going to be very cool in the future.

My first Windows Presentation Foundation Application

So how was my third PDC? I found the organization and logistics excellent. The busses were always there when you walked out. The Attendee party was great and well organized. We had more time at the park then last year. The meals were mostly good. I enjoyed the exhibition hall, lots of vendors. I got to chat with some guys from Sybase that I have talked to on the phone and via email about the .Net Datawindow. The Hands on labs were fantastic.

The content and sessions however were not as good as past years. Some of them I really enjoyed but on a whole I was not as impressed. Mind you there was a lot more new at the last two I attended. The exciting stuff we saw in 2003 had new names but it was still the same stuff. ( WPF - Avalon, WCF - Indigo) A lot of session titles were misleading I thought. I would go to and it would be something different then I was expecting. Maybe I need to read the outline more carefully, but I was not the only one saying this.

What was cool? LINQ is cool. WWF is cool even though it has an unfortunate acronym. VSTS is cool and Whidbey is cool, but they are not new, I have been playing with and demoing them for almost 2 years now. Anders session on C# was great. He told the audience "Please give feedback on these 3.0 features because they are not carved in stone, we haven't even released whidbey yet". That kind of summed it up for me. Maybe next spring would have been a better time for this PDC.

It was so quiet at the conference centre that I headed to the airport and got an earlier flight so I wouldn't have to take the red eye. I'm to old for red eyes. Found Rob Windsor there is noon flight was apparently at 3:10. :)

Now I'm waiting for my DVD of everything so I can watch some of the sessions I didn't make it to.

PDC Day 2 - Part II

I attended a great session on C#. Talking about Lambda Expressions, Extension Methods, Object Initializers, Anonymous Types, and Query Expressions. Here are a couple things explained, the others would be way more work then I can handle. We went to Universal Studios last night you know. It was a long and busy day. Which is why I am posting this today.


You can use var so you don't have to keep telling the compiler what type the object is.

Instead of...                     You can do...
int i = 5;                        var i = 5;
float j = 1.0;                    var j = 1.0;
string name = “Dave”;             var name = “Dave”;
Customer cust = new Customer();   var cust = new Customer();

Object Initializers

You can initialize the properties of a class when you instantiate it.

Customer cust = new Customer { Fname = “Dave“, Lname = “Lloyd“} ;

The compiler turns it into this.

Customer cust = new Customer();
cust.Fname = “Dave“;
cust.Lname = “Lloyd“;

You can nest this to initialize the properties of a class inside another class. So if Customer instantiated two PhoneNumber classes you could do this.

Customer cust = new Customer { 
    OfficePhone = { Area = “905“, Number = “555-1234” }, 
    MobilePhone = { Area = “905“, Number = “555-4321” }};

You can initialize a collection also this way.

 List primes = new List { 2, 3, 5, 7, 11 };

Extension Methods

An extension method is cool, potentially dangerous, but cool. Think of it kind of like an Extender provider for properties. You can create a static method whose first argument must be this. When the compiler sees one of these it brings it into scope for your class. Intellisense will even add it to the list of methods for your class. 

Take these Extension methods Where and Select if I just add a using to my code for this Namespace these methods will be extended onto my class.

namespace System.Query

    public static class Sequence 
        public static IEnumerable<T> Where<T>(this IEnumerable<T> source, Func<T, bool> predicate) { … } 
        public static IEnumerable<S> Select<T, S>(this IEnumerable<T> source,Func<T, S> selector) { … } 

using System.Query;

var contacts = customers.Where(c => c.State == "WA").Select(c => c.Name);

That is enough for now. I'm going to see up and coming features of VB now.

PDC Day 3 - Part I keynote

Went to the keynote this morning. It was all about servers. Some cool demo's but nothing too exciting. I guess if you get all excited about servers it must have been good.

There was an excellent video before the session started though. Microsoft people talking about a new (GPF) error message box. The error message has two buttons instead of share information and don't share information the buttons on this new dialog read Share Pain and Don't Share Pain. When you click Share pain it shows you video of the developer that wrote the code that caused the crash you just experienced. Then you have three options. Stick them with a pin, electrocute them, flip the back of their seat down and up again to hit them in the back and force their face into their desk. Then when you push the button of choice so you can share your pain with the developer that caused it. :) They even went to the trouble of showing the technology behind the developers chair.

It was very funny.