Internet Explorer 9

The Internet Explorer 9 Beta is out now. It has a lot of ground to make up. IE 6 used to own the browser market. But market share has been slipping. IE9 comes with the promise of actually supporting standards like HTML 5. Like other browsers, it attempts to make browsing fast.

Part of the performance improvement will be due to the new JavaScript engine. This is code named Chakra. It is similar to the V8 engine in the Chrome browser from Microsoft.

There are some other changes to the browser. The user interface has been simplified. I like that there will be more screen real estate used for the actual web page you are viewing. This comes at a cost though. Some features you are used to seeing on the screen in IE8 and prior have been hidden. They are still there. You just have to find the way to access them.

A strange fact about IE9 is that you must have Windows Vista or Windows 7 to run it. There is no Windows XP support. I guess Microsoft is positioning this browser for the future. They also don't want to encourage you to keep sticking with good old Windows XP. Or maybe people running XP don't want anything new, and will just stick with the ancient IE6 anyway.

Thanks to ArsTechnica for the 411 on IE9. That's where I learned the most about IE9 details.

The End of WPF

I read a post by a blogger that follows Silverlight product manager Scott Barnes on Twitter. Seems like Scott is sharing some insider scoops on the future of Silverlight. In turn, he exposes the mind of Microsoft. Or at least you get to hear what the Silverlight team hopes the future will be.

WPF is dead. The real question Microsoft is debating is whether the future rests with HTML5 or Silverlight. Naturally one would think that HTML5 should win. It is the future standard for HTML. At least nobody is debating whether XHTML has any future.

I am not unhappy. Never really learned WPF. So I might just be able to skip the darn thing and concentrate on the correct future technology. The future is tricky though. You never know what will win out. And it will most likely be replaced even further in the future.

Windows Phone

The very first thing you need to do when developing a Windows Phone app is to get an AppID. You need to be a registered Bing Developer to get one. Then you need to focus on design.

The best design is a simple one. This cannot be stressed enough. The design tool for the Windows Phone is called Metro. It uses XAML to layout your user interface.

There is a clear separation of your phone application logic and the user interface design. That is the way of XAML. Of course Visual Studio is the IDE of choice to develop your code in.

Sync Framework

Microsoft has a platform called the Sync Framework which handles synchronization of data between devices being online and offline. You applications use this framework to access data storage. Let's first cover some key terms in this platform.

A replica is a given data store. It can be the source or destination of a sync. A participant is the place where data can be retrieved. There are different levels of participants. If you can run an application on the participant, then it is a full participant. Otherwise it is a partial participant.

There is an engine in the framework that controls the process. It works with a provider, which can be one of 3 types. These types are database, RSS, and file. Alternatively you can write your own customer provider, which sounds like a complex undertaking to me. On a final note, you can apply a filter which restricts what gets synchronized and what does not.

WebMatrix

Microsoft has released a new suite for doing web development. It is called WebMatrix. Of course it uses some lightweight existing components from Microsoft.

WebMatrix combines Internet Explorer Express with SQL Server Compact Edition. You also get a light framework. The cost for WebMatrix is free. Currently it is in Beta mode.

This is a very simple approach to developing web sites and even apps. It is targeting the Linux Apache MySQL PHP camp.

WebMatrix generates mostly industry standard file types in ASCII format such as HTML. The only Microsoft specific file it seems to create is ASP.

Fault Tolerant Heap

Windows 7 has a new service called the Fault Tolerant Heap (FTH). It detects when an application gets buggy. It then surrounds the process memory space with a buffer. This buffer can prevent the app from crashing when it writes to memory that is out of bounds.

The way FTH works is that it monitors the Windows Event Log. It will load the FTH client in with the app it detects as having problems. Note that this will have a small adverse affect on the performance of the app. The app will also be consuming more memory due to the overhead.

The FTH is not an end all to heap corruption. It cannot solve all heap issues in programs. But it is a good start.

SQL Server 2008 R2

Get ready for Microsoft's latest release of SQL Server. This is SQL Server 2008 R2. It was formerly code named Kilimanjarao.

There are four editions available: 1) parallel data warehouse, 2) datacenter, 3) enterprise, and 4) standard. There is also a free express version. So I guess that makes 5 versions. The express version now allows you to hold up to 10GB of data in your database. This is up from 4GB in the previous express version.

One new feature in SQL Server is called PowerPivot. This is a self running analytics component. It was previously code named Gemini. There is also a new StreamInsight event processor included with the shipment. This version of SQL Server supports 256 logical processors for SMP.

Hadoop

Hadoop is a Java framework for dealing with huge data stores. Microsoft is bringing Hadoop to Windows Azure soon. Although Microsoft already has a map/reduce solution called Dryas, it is not ready for prime time production use. Hadoop will fill that gap now.

Map/reduce operates at a lower level than plain old SQL. It moves your regular business layer processing down to the data storage layer. And it does so in a parallel mode. That is how you get the good performance at a large scale.

There are other map/reduce solutions out there. Hadoopdotnet implements Hadoop for .NET. And MySpace has their Qizmt solution. However look to Microsoft for the new Hadoop port to the Microsoft cloud.

Upgrade

Most organizations upgrade their operating systems every few years. A lot of these organizations have skipped the Windows Vista operating system. They are now preparing to go directly to Windows 7. There is not any simple options for a Windows XP to Windows 7 migration.

Users do not like change in general. So it is best to let the users know why you are upgrading their operating systems. Involve them early in the requirements gathering stage. You should set aside a lot of time for migrating data to new application as well.

Set a firm deadline when you require users to be off of Windows XP. Know that any legacy applications will also take a while to migrate. It would be good to have a date when the legacy applications are frozen and get no more upgrades.

You had better be prepared to deal with the legacy app situation. Know the full costs of their maintenance well in advance of the move to Windows 7. Know this. In the end, you will exert a lot of energy but get no thanks for your Windows platform upgrade.

Microsoft Word Complaints

Yesterday I read an article complaining about Microsoft Word. That seemed strange as Word is probably one of the most used software applications. What exactly was this guy having problems with?

Well it seems he just got Office 2010. Perhaps he was still getting used to the new version. He did admit that Word was better than a typewriter. However that is not saying much. He also thought Word was sufficient to get some small jobs done.

He went into a rant about Word being initially written to serve secretaries. Does anybody know what a secretary is any more? Oh yeah. That's an administrative assistant. Anyway I finally go to this guy's beef. It was hard to move sections around in Word. It was also not easy to do general page layout for publishing purposes.

Sure this is not a dedicated publishing software. But you can use it for publishing. Sounds like this dude need to do a little training is all. Microsoft Word rules. I am still becoming familiar with Word 2007. I used Word 2003 for so long I became too used to it. Let's hope this guy learns how to use the tool better. I will do so myself.

The Service Bus Buffer

Let's talk about messaging in the Azure, the Microsoft Cloud. You can think of URLs as buffers. Messages get stored in the buffers. Multiple services can access these buffers. However your client and server don't have to run simultaneously. Thus the buffer.

These type of messages are unidirectional. Messages get stored in memory. They are not grouped into transactions. And they do not last long. You can use the service bus if you deal with unstable network connections. It also works for one way asynchronous comms.

Messages remain by default for 5 minutes. The can stay for as little as 1 minute, and as high as 10 minutes. This is configurable. Buffer size defaults to 10 messages. The max is 50. The minimum is 1. It is best to choose the maximum setting for both the message duration and the size.

I am sure we will be hearing more about service bus buffers as Azure apps become more common.

IntelliTrace

It is difficult and time consuming to track down bugs. Visual Studio 2010 Ultimate has a new feature called IntelliTrace to help. It collect data while application is executing. The collected data is called IntelliTrace events. There are about 150 of such events. They are collected by default, and stored to disk for each session.

IntelliTrace is being marketed as providing the right information at the right time. It helps you determine the exact steps required to reproduce a problem. A certain amount of information is collected by default. You can “turn up the dial” to get even more data collected.

The IntelliTrace logging only works for managed apps. It assists with viewing the prior state of an application without restarting the app. In the end this helps you diagnose problems quicker. You can also set up the tracing to perform custom actions when things go wrong. As an side you don’t need to have symbols present for IntelliTrace to work.

Visual Studio 2010

Visual Studio 2010 has a number of big changes in it. This version implements new standards changes from C++0x. It also uses MSBuild to do all builds. Finally Microsoft is updating the Microsoft Foundation Classes (MFC). There are also a host of other little changes in the latest version as well.

The C++0x changes include lamba expressions. These are unnamed function objects, and are handy to customize the Standard Template Library. The auto keyword from C++ is being changed to mean a variable type can be inferred by its initializer. There is a new static_assert which allows assertions to be tested at compile time. A new nullptr will enforce type safety for null pointers, replacing NULL (which by the way is not being deprecated yet).

MSBuild is the tool previously using to compile C# and VB code. Now it will be used for all Microsoft language compilation. MSBuild is an extensible build engine that uses XML. Microsoft is also finally enhancing the MFC library. This is mostly to take advantage of new APIs in Windows 7. You can recompile your MFC app with the new Visual Studio and get Windows 7 behavior immediately. The MFC Class Wizard is also back in the IDE.

The C++ standard library is being rewritten to take advantage of the C++0x feature set. Parallel programming efforts have been advanced. The new C++ project extension is now vcxproj. Multi touch is supported. There is Restart Manager support so your apps can save their state before they are terminated. The next version of Visual Studio is poised to pack a big punch for developers.

SQL Server Woes

I got a copy of a SQL Server 2005 backup file. It had information I wanted to mine. The problem was that I did not have SQL Server 2005 actually installed. I had trouble finding an evaluation copy of MS SQL Server 2005. Come on Microsoft. The only thing I could find was SQL Server 2008. I did find SQL Server 2005 Express, which is a free edition.

I ended up choosing something calls the advanced tools edition. The download of SQL Server was a couple hundred megabytes from Microsoft. The install would not run. The install itself needed the .NET framework 2.0.

So I went out and downloaded the .NET framework 2.0. Then SQL Server complained that my system did not meet its requirements. I needed Internet Information Server as well. I decided to proceed with the SQL Server install anyway.

SQL Server allowed me to bring up something that looked like an enterprise manager. I kept getting errors as I tried to restore the backup file. This experience reminded me of the pain I encountered when trying to install IBM DB2. I tell you what. Oracle Express was a lot easier to set up that SQL Server. This install experience from Microsoft was a fail.

Windows Phone 7 Series

Windows programming legend Charles Petzold is giving free access to his book on Windows Phone 7 Series programming. Who better to learn from than the guy who taught us Windows programming in the first place.

I only read a chapter or two. But I have gained some good insight. Let me share what I know with you here. First off grab the Windows Phone Developer Tools. That includes Visual Studio 2010 Express for Windows Phone. You also get a Windows Phone Emulator.

Windows Phone 7 is supposed to come out by the end of the year. Nobody seems to have any such actual phones yet. You can use two technologies to develop phone apps. They are Silverlight and XNA. In general use Silverlight for apps and utils, while XNA is best for performance games.

Currently Windows Phone 7 Series application must be managed code using the .NET framework. The only supported language is C#. You sell your apps in the Windows Phone Marketplace. Sound familiar? The hardware can come with two screen resolutions: 480x800 and 320x480.

This is going to be a brave new world of programming. You know it is hot if Charles Petzold is covering it.

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.