Thoughts about 2009

It's nearly February, I'm a little late for my thoughts about the year 2009. Still I'm writing down what I'm expecting, my thoughts about important things to come.

In the first month of the New Year I've already covered a lot of different technologies in the first workshops: Team Foundation Server, WPF, ASP.NET AJAX, and C++.

What are the most important products I'm working on in the New Year? The first on my list of course is Windows 7, the successor of Windows Vista. I'm running the Beta already on several of my systems. Depending on the hardware used there are some small issues (e.g. on an old HP Compaq NX7000 with the graphics driver, some issues on a Fujitsu Siemens Tablet T4220 in regard to the graphics card as well), but of course that's usual with a Beta product. In summary I'm really happy with Windows 7.
Primarily it's based on the code from Windows Vista with some good enhancements. Because the code is based primarily on Windows Vista and not a complete rewrite we can expect that it’s really running stable this is already the experience from many Beta testers. I expect shorter Beta cycles which I’m also reading out from Our Next Engineering Milestone. RC will be the next version for download. Windows 7 has a great new calculator (hey, is there a problem the calculator is included with the operating system?). WordPad has the ribbon controls! Even more important – WordPad can save OOXML and ODT. The new toolbar is really cool. There are many more great features... I’m already running Windows Vista from the early beginnings (of course Beta editions). Now I’m expecting many companies to move from Windows XP to Windows 7. Do you wait until SP1 or do the move earlier? Now is the time to not only find out if your applications run on Windows Vista (which was already done by most companies) because of the UAC, but also what advantages the application can get by running on Windows Vista and Windows 7. I offer a Workshop on this :-)

Another product I’m spending a lot of time with is Windows Azure. Paying just for the resources that are needed can be a big improvement for startup companies. How many systems should we add to the Web server so the users get acceptable performance? Twitter, why don’t you just increment this configuration value instead of returning errors? I don’t think Windows Azure is just for startup companies. I would like to access my data from everywhere; I would like to use some CPU and disk resources just for specified time frames (e.g. the registration process for a conference). In current different economy times it might be a good decision to outsource some IT management and just pay for what’s needed.

Since the end of last year I’m running Windows Home Server. Every home should have one. It’s really easy to configure that and all your PC’s are backed up, data on network shares is duplicated on different hard disks, and the data is even accessible from the road. Easy to use systems and applications are important! I remember the days where I had to change some switches and jumpers before I could put a module inside a system. The Micro PDP 11 made things a lot easier – a lot easier to configure than PCs at that time. Now I’m adding hardware to systems by connecting them to the USB. No more configurations necessary, no search for drivers… Windows Media Center is – in my opinion – a lot easier to use than getting to know how to use several different remote controls to turn on and switch to the correct mode with Receiver, TV, and a DVD/hard disk recorder. Many users are lost to find the correct settings with that many remote controls. It’s still getting easier. Silverlight brings completely new user interfaces to Web applications. Rich client experience that can be completely different to the experience we had with Web applications that have been used before - Silverlight for Web applications; WPF for Windows applications. The user can be knowledgeable of its problem domain but no longer need to know how to use a Windows application. Not every person is a Word and Excel user.

Of course I’m not forgetting Visual Studio 2010 and .NET 4.0. These are the products I’m using on my main system during this year so my customers can use my experience with this technology as soon as they need it. I’m already working for some time on the next edition of the Professional C# book: Professional C# 4.0 and .NET 4.0. .NET 4.0 gives a lot to cover with the next edition! I just received the Chinese version of Professional C# 2008. You can start the next translation early next year :-)

Windows 7, Windows Azure, Visual Studio 2010, .NET 4.0, Silverlight 3.0... I still didn’t mention my most important... I can give you the expected arrival date: 3-June-2009. It can arrive a little earlier or later. Around that time I don’t do any travel, expecting a baby girl with my girlfriend Angela. This is going to be a really great year :-D


Atlas 1.0 Naming and Roadmap

Scott Guthrie has the information asked by all Atlas developers:

Shipping date: Atlas 1.0 will be released on top of ASP.NET 2.0. Release goal is by the end of the year.


  • Microsoft AJAX Library (client-side library)
  • ASP.NET 2.0 AJAX Extensions (server-side functionality)
  • ASP.NET AJAX Control Toolkit (free, shared source controls)

Visual Studio Orcas will add JavaScript intellisense , debugging & WYSIWYG designer support for AJAX Extensions!

All the information is here!


WinFX Namespaces

Yesterday evening I arrived in Los Angeles (some hourse later than expected because of a cancelled flight). Sunday morning I checked in at PDC. In the bag there's an interesting poster about the major namespaces of WinFX.

Here I'm skipping the namespaces known from 1.0 to only list the 2.0, 3.0 and Future namespaces.


  • System.Transactions (2.0)
  • System.Collections.Generic (2.0)
  • System.Security.AccessControl (2.0)
  • Managed Add-in Framework
    • System.AddIns (Future)
      • Contract
  • Microsoft.Build (2.0)
  • System.Runtime
    • ConstrainedExecution (2.0)
  • ClickOnce Deployment
    • System.Deployment (2.0)


  • System.Windows (3.0)
    • Annotations, Automation, Controls, Data, Documents, Ink, Interop, Navigation, Serialization, Shapes, Threading
  • System.Windows.Media (3.0)
    • Media3D, Animation, Imaging, TextFormatting, Effects
  • System.Web (2.0 updates)
    • Management (2.0)
  • System.Printing (3.0)
  • System.Speech (3.0)


  • System.Web.Profile (2.0)
  • Language Integrated Query
    • System.Query (Future)
    • System.Data.DLinq (Future)
    • System.Xml.XLinq (Future)
    • System.Expressions (Future)
  • WinFS
    • System.Storage (Future)
      • Core, Audio, Calendar, Contacts, Documents, Image, Media, Messages, Rules, Sync, Video (Future)
  • XPS Documents
    • System.Windows.Xps (3.0)
    • System.IO.Packaging (3.0)


  • Windows Communication Foundation
    • System.ServiceModel (3.0)
      • Channels, Configuration, Diagnostics, Integration
    • System.ServiceModel.Security (3.0)
      • Protocols, Tokens
  • Network Class Library
    • System.Net
      • Mail (2.0)
      • NetworkInformation (2.0)
      • Security (2.0)
  • Windows Workflow Foundation
    • System.Workflow (3.0)
    • System.Workflow.Activities (3.0)
    • System.Workflow.ComponentModel (3.0)
      • Compiler, Design, Serialization
    • System.Workflow.Runtime (3.0)
      • Hosting, Messaging
  • Identity Management
    • System.InfoCards (3.0)

Update: Brad Abrams has a PDF version of this poster!


ASP.NET 2.0 and SharePoint WebParts

ASP.NET 2.0 has great features for WebParts built in. The next version of SharePoint will be based on ASP.NET 2.0 WebParts.

Mike Fitzmaurice has the roadmap for SharePoint and ASP.NET 2.0 WebParts, and what can be done now.

A short summary about what can be done now:

  • don't install ASP.NET 2.0 on a WSS/SPS site before SP2 (WSS/SPS breaks!)
  • ASP.NET 1.1 user controls can be SharePoint WebParts with SmartPart
  • SharePoint WebParts written today will work in WSS v3 (together with ASP.NET 2.0 WebParts)


Customizing Scripts for ASP.NET Validation Controls

Often I'm asked how to customize the scripts for the ASP.NET validation controls. These scripts are in the common directory <webdir>\aspnet_client\system_web\<version>. The location of the validation scripts can be changed with this entry in web.config:

<webControls clientScriptsLocation="scripts/" />

The default directory is configured with machine.config.


ASP.NET 2.0 Features

Scott Guthrie describes his Cool Tips and Tricks talk for PDC:

  • Cross Page Postbacks
  • ValidationGroups: no validation with a Cancel
  • Workflows with the asp:Wizard control
  • new ImageGeneration service
  • Url Rewriting
  • SiteCounter service
  • A content management system with the FileSystemProvider
  • "No Compile" Pages
  • Forms Authentication with the new Membership and Role Management system
  • Client-script goodies
  • Build-Providers
  • RSS Blog Reader

Many new cool features!