This is my first PDC, so not sure what to expect in terms of quality of speakers and content. Key note on cloud services the new windows platform Windows Azure was a little disappointing based on the fact that it was a developer audience. In essence Microsoft are providing a platform for other companies to take advantage of large distributed data centres. Microsoft has some experience in this space in providing Windows Update, MSDN content , Hotmail , Live services, these services will be ported to the new platform to allow them to self validate the platform, and offer others the ability to out source the data centre services. There will be a short period of time were these services will be free, but in 2009 MS will start to charge for the cloud services based on usage and SLA. Google's cloud based computing has been a serious threat to MS traditional inside the enterprise model, companies have started looking to outsource basic IT, Daily Telegraph recently announced the use of Google for email and office based apps..Its still yet to be seen if large corporations with lots of IPR will ever rely on a third party to hold and manage their data, and this fact plays nicely into Microsoft's offering as they have concentrated on allowing enterprises to utilise the cloud with existing applications inside the enterprise, thus enabling perhaps companies to shift over time, and deciding what is ok to put into the cloud. This is a key advantage they have over the google offering...Other key advantages is that as an MS developer I continue to use the same tools and languages to target the cloud as I do inside the enterprise, and thats huge.
Whilst all that fluffy cloud stuff was interesting, for me the best talk was on C# 4.0 by Anders. Anders is not only a seriously smart guy but a great presenter too. The high lights where
Dynamic language feature support
Co-variance on generic interfaces
Default/Optional parameters
The dynamic language support was very cool.. Microsoft has been working on a DLR ( Dynamic Language Runtime ) for some time to make it easier to write dynamic languages, IronPython and IronRuby utilise common functionality to deliver dynamic language behaviour. C# will now utilise some of that same functionality, by introducing the dynamic keyword. So I can write
dynamic foo = 10
foo = "hello"
foo = 5.6
When you call a method on foo it is late bound, this late binding is done by the fact that foo is of type DynamicObject which has various methods on it like GetMember , InvokeMethod which take a string to represent a Member/Method name. The main aim of this is to allow better interop between staticly typed languages and dynamic ones. Thus calling java script from silverlight is now something like this
<h1 id="title">Hello</h1>
dynamic element = HtmlPage.Document.title;
element.innerText = "Good Bye";
Also COM interop via this mechanism means no PIA's. and a programming model that looks very easy to consume. It also has massive ramifications for Active Record pattern utilised by Ruby on Rails, and for processing XML documents using a dot notation that matches the names of elements. The creation of REST proxies would also seem extremely straight forward.
Support for co-variance List<string> can now be turned into an IEnumerable<object>. Something that has been very frustrating in the past.
Finally we can write C# methods
public int Add( int lhs = 1, int rhs = 1 )
We can therfore call Add(), Add(1) and Add(1,1) to produce the same result or
Add( rhs: 1 , lhs : 1 )
Day 2 is now calling...so hopefully plenty of goodness coming