WinRT is your friend

September 18, 2011

Microsoft’s BUILD conference of 2011 is over, but the shockwave it unleashed has barely even begun to materialize yet. The developer world is still scrambling to make sense out of what just happened. What they debuted at BUILD marks the end of one era, and the beginning of a new one. Good old Win32, that layer of abstraction between the Windows kernel and your desktop applications, which first shipped with Windows NT in 1993, is no longer the only way to build Windows apps. Windows 8 will ship with another layer of abstraction between the Windows kernel and your apps (technically, your “Metro” style apps) called the Windows Run Time, also known as WinRT. Windows 8 will support both Win32 and WinRT apps.

“So what?” you might be thinking. When stated as a technical detail, the inclusion of WinRT as part of Windows 8 might seem like a mundane matter not worth much attention. However, this seemingly minor detail represents a significant change in the Windows operating system, and in Microsoft’s business direction and vision of itself. WinRT was designed to support a whole new style of software application and human interaction model. It was built so that the operating system can run on x86 and x64 processors, like in your desktop or laptop, but also it supports running on the ARM processors used in mobile devices.

The user interface seen in the Developer Preview of Windows 8, released at BUILD, is a combination of Windows 7 and something totally new for Windows, often referred to as the “Metro” style.

The standard/classic Windows desktop that we all are accustomed to is still available, powered by good old Win32, but it is not what shows up on your monitor when you first boot Windows. When you first boot up, the WinRT-powered Metro screen fills your monitor(s). For me, at this early stage in trying out an early build of Windows 8, it feels like Windows has developed a multiple personality disorder. It can’t decide if it is an office worker or a high school kid. Then again, having this dual modality is not necessarily a bad thing, considering how most people use computers for work and entertainment in their lives, which are very different ways to use a computing device. I guess if Microsoft wants to remain relevant in a world increasingly dominated by iPads, this makes sense.

There are tons of fascinating technical details about WinRT that I’d love to dive into, such as how it was written in C++ but is “projected” into three separate stacks (XAML + C#/VB.NET, HTML5+JavaScript, XAML + C++), how it supports a subset of the .NET 4.5 framework, the fact that any method expected to take at least 50 milliseconds to complete was implemented async, and so much more. But there’s plenty of time to get into that, and other bloggers have already touched on a lot of the good bits. What I’m really happy to see in WinRT is the fact that it seems to be very, very heavily influenced by WPF and Silverlight. In fact, at BUILD one of the demos was converting a Silverlight project to WinRT just by changing a few namespaces and adding the occasional #if. Most of the skills that WPF and Silverlight devs have acquired over the years will be relevant and useful in the years ahead, hence the title of this blog post.

Many people have asked me why I decided to get into iOS development. The answer is, mostly, because as a Windows developer I felt that the world was passing me by. Things felt stagnant in the Microsoft world, while exciting advancements were happening all around in other technologies, especially the stuff coming out of Apple. Couple that with an unquenchable hunger to learn, and it only made sense to move on to greener pastures. But it looks like Microsoft might actually have something here, with WinRT. Only time will tell, but it’s exciting to see them try something bold and new (for them).

Thus far my experience with WinRT programming, which is obviously sparse considering the first preview build was just released, feels a hell of a lot like WPF or Silverlight programming. Windows itself basically has the next generation of WPF/SL built in, so to speak, and that is unspeakably exciting for me!

Some folks at Microsoft published this list of hardware that they use to run Windows 8 on touch-enabled systems. I read that list, did some research, then went out and invested in the ASUS EP121 slate. Now my WinRT dev rig looks like this:

That’s right, a tiny little slate computer is powerful enough to run the latest version of Windows, Visual Studio 11, supports multi-touch input, a keyboard, a mouse, and a 27″ external monitor…all at lightning speed. I am just amazed.

To install the operating system I needed to download the Developer Preview (which comes with Visual Studio Express pre-installed) and then followed the steps on Scott Hanselman’s blog post that shows how to put the ISO file onto a 16 GB USB thumb drive so that I could boot from that on my slate. I didn’t bother installing it to a VHD, as Hanselman explains, because I have a dedicated machine just for Windows 8, but it seems like many people are having success with virtualizing Win8 on their machines.

Regardless of whether Windows 8 might be a success or not, I think it is something that should be investigated. It’s too significant to ignore.

Strange times in the world of Microsoft developers

July 2, 2011

Over the past few months there have been many odd announcements, rumors and convulsions coming out of Microsoft. It all started when Bob Muglia announced that their “strategy has shifted” toward HTML5, and Silverlight will not reign supreme forever. That one statement caused ripple effects that literally put some people out of work, caused projects to be put on hold or cancelled, and made many people in the IT world wonder…

The major concern for people who have invested years of time learning Silverlight, whether it is valid or not, is that they are about to become dinosaurs. For people focused on WPF this news was not as threatening or shocking because, well, WPF was not the new kid on the chopping block anymore. Silverlight was. Until now. Chop!

An awkward time passed, with lots of angst and nail biting in the development community. People who were glad to finally be done with the horrors of cross-browser compatibility and dealing with the latest breaking changes in their DOM abstraction library of choice soon realized that Silverlight was slipping through their fingers. Instead, a hot new technology meant to solve all the world’s woes was soon to plop into their hands: HTML5 and JavaScript. This does not bode well with people who are used to the luxurious and productive world of C#, .NET, and the full powers of Visual Studio 2010. The situation seemed grim, and there was a lot of confusion about the future of .NET and Silverlight. Certainly Microsoft must be planning to explain things more clearly, to put these fears they stirred up to rest.

Unfortunately that didn’t happen. Rather, the opposite happened. Microsoft gave the world a sneak preview of Windows 8 and touted the fact that you can build apps for it that have the Metro UI style using…HTML5 and JavaScript. That’s right, world. Suck on that for a while. In the future we will (should? must?) build desktop Windows apps with the crap that we were trying to get away from on the Web when moving to Silverlight. I’m sure there is a good reason for all this, but I must admit that seeing this go down makes me super-duper happy that I’ve been diving head first into iOS and Android programming. If the future of developing Windows apps means abandoning C# and the .NET Framework and instead using HTML5 and JavaScript, I’m out. See ya, Microsoft. Good luck with that.

Perhaps the world at large does not follow all of this nonsense as closely as the people who bother to blog about it do. I have heard from several friends in major U.S. cities, including New York and Boston, that there are many opportunities for experienced WPF and Silverlight developers. Brief searches on confirmed this. The “real world” seems to have just recently (past year or two) wholeheartedly adopted WPF and Silverlight. I have noticed that it takes a long time for large organizations to adopt new technologies, so perhaps all of this handwringing is for naught. Unless you depend on cutting edge technologies for a living, there’s really nothing to be concerned about. But there is something else to be interested in…

Jupiter is the code name for some new UI programming platform that supposedly might be available in Windows 8. There is a lot of speculation and rumor on the Web about what exactly Jupiter is, and is not, but there have been no official announcements as of yet from Microsoft. I have heard tales of it being a replacement for WPF on Windows 8, using XAML (amidst rumors of the XAML team at Microsoft being disbanded), it supposedly is called DirectUI, and it supposedly will support being used with native C++. All I can say is “Cool!” and I hope that this Jupiter thing turns out to be awesome, but I don’t care much about it until I can fire up VS and kick the wheels.

Supposedly all will be revealed and clarified at the upcoming BUILD conference in 2011. I suspect BUILD will answer some questions and unleash a new wave of turmoil in the developer community. Regardless of how successful the Microsoft PR machine is at that conference, one thing is certain. These are strange times in the world of Microsoft developers.

Mole 2010 v1.3 is now available

June 19, 2011

Molosoft shipped a new version of Mole 2010 today! Go download it here.

The Mole 2010 v1.3 release contains a large number of enhancements based on customer feedback. Existing customers can simply install the new version on top of the previous one. If you are interested in trying out Mole 2010 before purchasing a license, please visit our Demo page to get a full-featured free trial today.

For more information about Mole 2010 v1.3 check out the announcement post over at Molosoft’s Web site.

Happy debugging!

Advanced MVVM now available on Kindle in Germany

April 21, 2011

Guten tag! If you happen to live in Germany and would like to read my ‘Advanced MVVM’ book on your Amazon Kindle device, you are in luck. Amazon just made my book available in Deutschland. Note: the book has not been translated to German.

You can grab a copy here:

By the way, folks in the UK can get Advanced MVVM on their Kindle here.

Learn more about Advanced MVVM here.

On a side note, I am shocked at how many copies of my book have sold. Over the past year, I’ve sold many thousands of copies and received a ton of great feedback, mostly positive. It has definitely been a great learning experience for me!

PADNUG Mole 2010 Presentation Material

April 7, 2011

I had a blast on Tuesday at the Portland Area DotNet User Group (PADNUG) speaking about Mole 2010. There was a lot of excitement about Mole and good bit of feedback and feature requests. Thanks a lot to everyone who attended!

As promised, I am making the presentation material available for all attendees. The slide deck and DispatcherOperationManager class files are available below:

Mole 2010 PADNUG Slidedeck

DispatcherOperationManager class

Extending the reach of Mole 2010 via Mole Type Loader

April 4, 2011

Karl Shifflett just posted his fantastic utility application that makes Mole 2010 easy to open for your own custom data types. His tool is called Mole Type Loader. Check it out and download a copy here.

Great work, Karl!

New version of Mole 2010 available

April 3, 2011

Molosoft has been hard at work. We incorporated some customer feedback into Mole 2010, added a killer new feature for WPF and Windows Forms developers, and fixed a few minor issues. Read more about it and download the Mole 2010 v1.2 installer here.

Mole 2010 at the Portland Area .NET User Group

March 28, 2011

On Tuesday April 5th 2011, I will be giving a presentation at PADNUG, the Portland Area .NET User Group. The topic of the evening is Mole 2010, the new debugging tool that I helped create for Visual Studio 2010 users. We will be taking a guided tour of Mole 2010, checking out all the cool features. Also, we will discuss the problems that were faced while developing the tool, and how those problems were solved. It should be a lot of fun. See you there!

Use Mole 2010 to explore data from the F# Interactive console

March 15, 2011

I got an interesting e-mail today from someone interested in Mole 2010. He wanted to know how to open Mole 2010 to visualize the data in his F# Interactive console. I didn’t really understand what he meant at first, but this evening I researched it and found a solution for him. According to the fellow who sent me the e-mail, the F# community has been itching for a tool that they can use to visualize their data while working on the F# command line, so hopefully this will satisfy their needs.

I wrote up a short walkthrough document on how to use Mole 2010 in the F# Interactive console. If you are interested, please download it here: Mole 2010 in F# Interactive

I’m not an F# developer by any means, so please pardon any glaring stupidities in my F# code snippets. If you know a better way to write that code, I’m open for suggestions. 🙂

Note: This usage scenario is definitely not supported by Molosoft at this time. Mole 2010 and Visual Studio’s debugger visualizer infrastructure were not designed to work in the F# Interactive console. Please see this as an “experimental” solution to the problem. I’ve listed some  known issues in the walkthrough document.

Happy Moling!

Sacha Barber reviews Mole 2010

March 11, 2011

The Microsoft MVP and legendary author on CodeProject, Sacha Barber, posted a review of Mole 2010 on his blog here. His review of the tool is from the point of view of a veteran WPF developer. Enjoy!