Windows Azure

Announced at the PDC this morning is Windows Azure. It is going to be the next version of the Windows Operating System except, you’re not going to run it on your home pc or on your corporate servers, Azure will run in Microsoft Data Centers also known as ‘The Cloud’.

azure_services_platform

So what is this thing which we now refer to as Windows Azure? Basically it’s everything you expect from an Operating System running ‘a data center’. This all sounds really vague and unclear, so to explain it a bit. Imagine that you’re a small startup company. For example you have the idea of a service which will enable your customers to share and collaborate messages. Now how would you go about to realize this? Until now you had to think about how to build the application, what hardware to run it on, and how and when to scale your business needs. Now with Windows Azure, you can focus on the application or services you’re building.

The Windows Azure platform will allow you to not only scale up like many of the systems we (as developers) are building today, but also to very quickly and easily scale out. You will also only pay as you grow. You pay for only the capacity and capabilities you use, and you can easily add more capacity as your business grows. You can even deal with unpredictable spikes in demand easily, by adding capacity. You now can rely on Microsoft’s data centers to host, scale, and manage your applications.

how_it_works_slide_3

Besides all that Azure will also be programmable by both managed and native platform code. So all the skills you already have as a .NET developer or as a Win32 developer will still be of use. With the new Windows Azure Tools for Microsoft Visual Studio, it’ll be very easy to build, debug, test and deploy Web applications and services for the new cloud platform.

In the early stages of CTP, .NET managed applications built using Visual Studio will be supported. Windows Azure is an open platform that will support both Microsoft and non-Microsoft languages and environments. Windows Azure welcomes third party tools and languages such as Eclipse, Ruby, PHP, and Python. If you want to start develop Windows Azure solutions today, you can download the Software Development Kit October 2008 CTP today.


Visual Studio 2010 and .NET Framework 4.0 CTP is Available

netlogo     VS2010_8b794d14-f86d-4295-92a1-c91a4ce5cdae[1]

Visual Studio  2010 and .NET Framework 4.0 CTP

Download Microsoft Visual Studio 2010 and the .NET Framework 4.0: The next generation development tools and platform for Windows Vista, the 2007 Office System, and the Web.

Enjoy!


Visual Studio 2010 and .NET Framework 4.0

So Microsoft today announced that the next version of Visual Studio will be named Visual Studio 2010, and the .NET Framework will be called .NET Framework 4.0. Now even though the name implies 2010, it doesn’t mean we have to wait until 2010 before it’s released.

vs2010    vs2010_2

If you want to know more of the great features that’ll be included in VS2010 check out this overview page. Some of the coming goodness includes:

  1. Democratizing Application Lifecycle Management
    Application Lifecycle Management (ALM) crosses many roles within an organization and traditionally not every one of the roles has been an equal player in the process. Visual Studio Team System 2010 continues to build the platform for functional equality and shared commitment across an organization’s ALM process.
  2. Enabling emerging trends
    Every year the industry develops new technologies and new trends. With Visual Studio 2010, Microsoft delivers tooling and framework support for the latest innovations in application architecture, development and deployment.
  3. Inspiring developer delight
    Ever since the first release of Visual Studio, Microsoft has set the bar for developer productivity and flexibility. Visual Studio 2010 continues to deliver on the core developer experience by significantly improving upon it for roles involved with the software development process.
  4. Riding the next generation platform wave
    Microsoft continues to invest in the market leading operating system, productivity application and server platforms to deliver increased customer value in these offerings. With Visual Studio 2010 customers will have the tooling support needed to create amazing solutions around these technologies.
  5. Breakthrough Departmental Applications
    Customers continue to build applications that span from department to the enterprise. Visual Studio 2010 will ensure development is supported across this wide spectrum of applications.

With the announcement, Channel9 is hosting a Visual Studio Feature Week where there’ll be lots of video’s around all kinds of new features.


Visual Studio TFS Power Tools July 2008 Released

As Brian Harry blogged about a little more than a week ago, the Power Tools for Visual Studio Team System 2008 are now released. There are quite a number of really great improvements in this release of the power tools. The biggest feature perhaps is the new Alerts subscription engine, which allows you to set alerts very specifically for check-ins, builds, workitems or even folders in your source control tree.

image_24

Something I was looking forward too as well is the Support for changing users's names, which allows you to change someone's name in either Windows or Active Directory and update the related workitems and check-in information.

To download the Power Tools you can clicky here, for more information check out Brian's initial post.


How do Nullable Value Types work?

So in this post I want to talk about nullable value types. What are they? and why are they useful? So let's start with taking a look at the following code snippet.

Code Snippet

At first it may not seem weird at all, however there is something going on in the background. Before you can totally understand what is going on you need to understand the difference between Value Types and Reference Types in the .NET Framework, which for now I'll suppose you do. If you declare a ValueType variable and suffix it with a question mark '?' you declare the type as being explicitly nullable.

System.DateTime If you take a look at the DateTime class in the Object Browser, you'll see that it derives from ValueType, which in turn derives from Object. But, as you may know ValueTypes cannot be null, so what is going on here?

What the compiler does at compile time is, it creates a generic variable of Nullable<T> where T is the type of the variable you declared. So in our case that would be Nullable<DateTime>.

System.Nullable<T>But if we look at the Nullable<T> in the Object Browser we also see that it derives from ValueType, so how is all this possible. The answer is actually quite simple. If we take a look at the compiler generated code (with a tool called .NET Reflector) we'll see the following:

.NET Reflector

As you can see, the compiler translated our if(dt != null) check with if (dt.HasValue), and that is right where the answer is at. The Nullable<T> has a Value property which holds a reference to an object of the type you defined, or null.

So you can do dt.Value to access the object defined in the nullable type.

Now as to the why this might be a helpful feature, imagine you are using a database with Orders, now the Order type has a DeliveryDate, but you can imagine when a customer orders a product, it has to be shipped before it is delivered. So in the time between ordering and delivery the DeliveryDate should be something like null. With nullable value types this becomes possible, and allows for a much cleaner programming model.


Readonly vs. Const Keyword

I recently started my 'Know Your Framework' series with a post about the GetType() method vs. the is keyword. Today I want to talk about the readonly vs. the const keyword. Although they might seem to perform the same functionality they have a few important differences (Yes, just like GetType vs. is - it appears there is a reason they both exist Tongue out)

First let's take a look at how you would declare either a readonly or a const variable (hm, that sounds weird a constant variable?).

public const string MostCertainlyTrue = "Stephan is cool";
public readonly string AlsoVeryTrue = "C# is cool";

Note that the const variable must be initialized at the time of declaration, while the readonly variable can be assigned either at declaration or in a constructor. However readonly variables can only be assigned to once at runtime. Another difference is that const values are evaluated at compile-time and readonly variables at runtime. Lets have a look at some examples to make things more clear.

public class CoolClass
{
    public readonly int x = 25; // Initialize readonly field
    public readonly int y;
    public const int z = 1;

    public CoolClass()
    {
        y = 50; // Initialize readonly field through constructor
} public CoolClass(int value, int value2) { x = value; // Initialize readonly field through constructor y = value2; // Initialize readonly field through constructor } } class Program { static void Main() { CoolClass c = new CoolClass(); Console.WriteLine(c.x); // Writes 25 to Console Console.WriteLine(c.y); // Writes 50 to Console CoolClass cc = new CoolClass(10000, 20000); Console.WriteLine(cc.x); // Writes 10000 to Console Console.WriteLine(cc.y); // Writes 20000 to Console cc.x = 99; // This results in compile error
        CoolClass.z = 99; // This results in compile error
    }
}

As you can see, the results are as expected. The compiler is smart enough to let you know when you try to assign a value to a readonly variable, because that can really only be done either at declaration or in the constructor of the type (or static constructor of a static type).

In the sample above the const variable is set to a value of 1. const variables are not instance variables, which means you can access them through the type itself, in the previous example 'CoolClass.x', and can never be changed in runtime.


SQL Server 2008 Learning Resources

I recently saw the SQL Server 2008 for Developers interview on Channel 9 with Dan and Christian. I was quite interested in the new spatial features in the 2008 version of SQL Server but haven't found any really good resources yet, I don't have the time to read some books, and was more or less looking for some video material.

SQL Server 2008 JumpStart

Today I came across the SQL Server 2008 JumpStart page where, once registered, you can download all kinds of slide decks and presentations in video format... just the thing I was looking for Open-mouthed.


MSDN Magazine March 2008 Issue Online

image

The March 2008 issue of the MSDN Magazine is now available online there are a couple of very interesting topics if you ask me about ASP.NET MVC, Continuous Integration server, Measure Performance with Visual Studio Profiler. So go read quickly! Smile


Future of C# Part 2

Apparently the Future focus of C# about Dynamic Lookup was such a success that the discussion moved from Charlie Calvert's blog to the MSDN Code Gallery. With that there's a new feature focus about Call Hierarchy. So, what's a call hierarchy you might ask?

The Call Hierarchy is one of many features that the team has planned for the next version of the IDE. It allows developers to explore a code execution path by showing all calls to, or calls from, a selected method.
There are several scenarios in which this functionality might be useful. It will allow developers to:

  1. Get a better understanding of how code flows
  2. Navigate through their code
  3. Understand the impact of making changes to their code.

The Call Hierarchy differs from existing features in the following ways
  1. Unlike Find All References, it will allow you to drill down several levels deep so that you can view complex chains of method calls and additional entry points.
  2. Unlike the run time Call Stack displayed by the debugger which shows a single code execution path, the Call Hierarchy will be available at design time, and it will allow you to explore all possible execution paths.

For a more in-depth walk through, take a look at the actual post in the MSDN Code Gallery here. At the moment they are thinking about two ways of visualizing the call hierarchy for methods.

  1. The "In-Depth Understanding" visualization will allow developers to thoroughly explore a call hierarchy
  2. The "Quick Understanding" visualization will help developers quickly navigate or explore a call hierarchy while still inside the editor window.

Personally I think it's a really handy feature as I'm spending a lot of time investigating the flow of code at my work, however I think the "In-Depth Understanding" scenario should not involve a dialog, but instead a dockable window inside the IDE.

Also I'm quite curious how logical flow scenarios such as if/else constructs, and recursive algorithms will be visualized. WPF maybe?

If you have any feedback regarding the topic, you can share it with the team who's developing it.


Playboy supermodel writing code faster than you?

Sara StokesI just couldn't not share this with you, my dear reader... even though this is a shameless plug for CodeRush and Refactor! known as the efficiency tools for developers.

Sara is hot. And she's a Playboy model. And she can wipe up the floor with your posterior in a contest of code.

That's right kids, Sara can code, and she can do it faster than you.

Even though Sara had only had 6 hours of total training before she took on 10 professional developers. The end score: Professional developers: 0 - Sara: 10. If you want to see Sara in action go to http://www.devexpress.com/Sara.

And purely for your pleasure to see the other thing Sara excels in go here.