Hyper-V

Some time ago, I read an advertisement in InfoWeek for Microsoft’s Hyper-V. The tag line was “your potential, our passion”. That sounded more like hype than hyper. However it was something to look into.

Hyper-V is the technology with code name Viridian. Previously this was known as Windows Server Virtualization. It implements virtualization based on a hypervisor. The hypervisor allows multiple operating systems to share on resource. This is a different level of abstraction than multitasking. The hypervisor actually protects the operating systems from failures other instances encounter.

Initially the Hyper-V was released in beta as part of Windows Server 2008. There are now two release versions of this product. There is a stand alone version. And there is the version that is a part of Windows Server 2008 R2.

The stand alone version is called Microsoft Hyper-V Server 2008 R2. This version is free. It has limited Windows services. It also makes you use the command line interface to do management. The other version is part of Microsoft Windows Server 2008 R2. This part is called the Microsoft Hpyer-V server. It is a core part of Windows Server 2008. It boasts point and click administration.

The parent operating system must be Windows Server 2008. Child partitions host guest operating systems that run virtually. These virtual partitions cannot directly access the physical hardware. The supported guest operating systems include Windows Server 2000/2003/2008, Windows 7, Windows Vista, and SUSE/RedHat Linux.

Hyper-V does not natively support USB devices. It also does not support sound in the guest operating systems. If you use the display drivers from Vista, you might encounter some performance problems.

Silverlight Versus AIR

Microsoft’s Silverlight and Adobe’s AIR are comparable products. They compete directly. Silverlight is a complete framework. The latest versions (Silverlight 4 and AIR 2) are still in beta.

Microsoft is not as much into design. This might be changing a bit with Silverlight. It allows you to perform design and development in parallel. Silverlight uses the XAML format to describe everything. C# and therefore Silverlight are good for large projects. The .NET developers will feel at home with Silverlight.

It is hard to change your design in Adobe AIR once it is complete. A good thing about Adobe is its huge installed user base. Approximately 98% of personal computers have Adobe Flash installed now. Compare this to an optimistic 34% of PCs which have Silverlight installed.

You should go the Silverlight way if you want your app to run on both the web and the desktop. There are a lot of .NET developers out there that can move to a Silverlight development. Silverlight also makes use of the mature .NET platform. Like other environments from Microsoft, Silverlight comes with a lot of good tools.

A drawback to Silverlight is that it really has to run on the Windows platform. There is a Moonlight product that is an open source version of Silverlight. However it does not come from Microsoft. It also lags the new stuff in Silverlight by about one version. You should also probably choose Adobe if you are going to be developing mobile applications.

Concurrency Visualizer


Parallel programming is difficult. You need to understand what bottlenecks are holding your app performance back. There is a new tool by Microsoft which can help profile your app. It can assist in finding places where parallelization makes sense. Let’s first understand some theory so we can appreciate the tool.

One CPU actually has many microprocessors in it. This physical core can run multiple threads. The official name for this is Simultaneous Multithreading (SMT). Intel markets this as hyper threading. Logical cores refer to the number of threads that can be running at the same time. This is related by different than the number of physical cores.

So what does this new Concurrency Visualizer tool show you? You can see where your app spends a lot of serial CPU time. You can also inspect how parallel the app already is. Finally you can see whether other applications are affecting your app’s performance.

Here is one note. Heavy file I/O can drastically impact performance. But it may be hard to tell the exact source of the problem. I/O is generally buffered. So the problems may build up before you actually see them. By then it is difficult to get to the root cause.

Multithreading is good up until your thread gets blocked. These can be many different causes for a block. Your own code may be doing synchronization. Or your thread might get preempted by another. Your thread could explicitly do a sleep. Or file I/O could cause you to wait. Finally you might be doing some GUI work to make sure the app seems responsive.

There is a lot more I can say about Concurrency Visualizer. But I am out of time. Just beware that the trace logs might get huge. And it is best to run it first with a small number of other apps running. Go try the tool out for yourself.

Azure

Cloud computing is delivering capability using Internet protocols and standards. Some examples are Microsoft Azure, Amazon Web Services, and Google App Engine. There are a couple ways to deliver cloud computing. They are Saas, Paas, and Iaas. I will explain these further.

Saas is software as a service. This is where you host applications through the subscription model. You pay as you go. Paas is platform as a service. You build and execute custom applications, exposing them as services. Finally Iaas is infrastructure as a service. This is like the normal hosting you know and love.

Azure attempts to deliver the benefits of Paas, which remaining as flexible as Iaas. It provides a hosted application server. Azure needs a lost of hardware to run. Data centers are staffed by a few good men who take advantage of automating everything. In other words, you don’t have a man in the loop.

Azure has a policy based deployment strategy. The pricing is mostly simple to understand. The exceptions are the pricing for blobs and tables. Maybe I will detail those more complicated pricing policies later.

Silverlight Revisited

Microsoft continues to make big investments in the Silverlight framework. It is a part of the .NET framework. Silverlight let's you build web applications. There were a huge number of new controls released in the latest version of Silverlight. Third party makers of controls should beware. Microsoft is eating your cake.

The Microsoft controls for Silverlight are solid. Their controls do almost everything that third party controls accomplish. Why is Microsoft doing this? You would think they would not want third party control manufacturer's against them. The answer is that they are gunning for Adobe. They need to ensure that Silverlight has great controls available now.

The Rise of Silverlight 4

The latest installment of Silverlight represents a big upgrade. It utilizes the XAML markup language like WPF. Silverlight is no longer trying to compete with Flash. It is going after the Adobe AIR market.

Initially Silverlight was a web development platform. Now it is being pushed for both the desktop and web environments. A big addition to the technology is MVVM, a model similar to the MVC one.

Silverlight 4 will also support the Manged Extensibility Framework, aka MEF. You had best play around with Silverlight 4 in Visual Studio 2010. That way you can avoid any learning curves which may hamper your productivity later.

Touch Screen Technology

Microsoft wants developers to start using touch screen user input in their applications. How do I know this? They gave away free touch screen laptops at a recent developer conference. I wish I were there.

A touch screen interface is not optimal for the general business user. However there are niche markets where it is the perfect input device. Microsoft started offering touch screen support on a large scale in the Windows 7 operating system.

Developers need to learn new skills to code touch screen support. Part of this education will be learning new touch screen support in WPF. They can also employ Silverlight 4 for touch screen apps.

The touch screen interface can be faster than a keyboard or mouse. It is really good for navigational purposes. The Microsoft Surface team recently released their SDK to the public. They make WPF controls. Now these controls can be used for a touch screen UI.