Morning Coffee 43

  • This week is the MVP summit. Hopefully, I’ll make it over there and see the Architect MVPs. Otherwise, things seem sort of quiet in the Microsoft wing of the blogoshphere.
  • Saw 300 yesterday on a relatively rare day out with just Jules. Really enjoyed it.
  • Nick Malik describes what goes into an enterprise platform roadmap.
  • Joe McKendrick recaps a vendor SOA suites podcast. With SOA, you can revisit your platform decision on a project by project basis which allows you to avoid the dreaded “vendor lock-in”. But supporting lots of platforms is an operational nightmare, so maybe lock-in isn’t as bad as it sounds.

Morning Coffee 42

Ever since I got back from vacation, it’s been all about the Morning Coffee. I’m happy to be getting a daily post out, but I haven’t written anything deep in several weeks now. My one non-MC post in the past two weeks was The Virtuous Cycle of Virtual Platforms which frankly I wrote over a year ago for internal usage and adapted for my blog after reading Dare’s post.

One of the reasons for my lack of “deep” posting recently is post vacation re-engagement. Also, things at work that I can’t blog about (yet) have been taking my attention. But I worry that this daily MC post is causing me to focus on “shallow” blog topics. Since I’m trying to average a post per day, that means at least two non-MC posts every week. Of course, more than two non-MC posts a week would be just fine.

  • On the XNA Team Blog, Michael Klucher announces the XNA Game Studio Express Update is coming in April. Among the new features are Vista compatibility, 3D audio, bitmap fonts, game icons and most interesting the sharing of compiled XNA games. Currently, the only way to share something you build with XNA with the community is by sharing the source code, which is less than optimal. For more, check out the XNA GSE Overview presentation by Mitch Walker from GDC.
  • Speaking of gaming consoles, Sony’s “big” announcement is a Second Life clone? Kotaku thinks “this is going to be one of those features that people didn’t realize that wanted until they get it.” Personally, I doubt that very much, but what do I know about game consoles? I just play, man.
  • Jafar Husain suggests a way to do Ruby symbols in C# 3.0. Sort of. He defines an extension method that returns the name of the property defined in a lambda function. On the plus side, it’s strongly typed. On the minus side, this.GetPropertySymbol(o =\> o.Name) isn’t as easy to type as :Name. (via DotNetKicks)
  • While pseudo-symbol support is fairly verbose, Scott Guthrie goes thru some of the new language features for terser syntax: automatic properties, object initializes and collection initializes. While I like object and collection initializes, I’m not really sold on automatic properties. Personally, I like the VS prop snippet approach, where you automate the creation of the property once time when it’s authored rather than leaving the shortcut syntax in the code in perpetuity.

Morning Coffee 41 – TechFest Edition

As promised, I spent about half of yesterday at TechFest. Ran into some folks I knew, met some new folks, the usual social networking stew of these sorts of events. Here’s some of the stuff I saw. Much of the stuff I saw wasn’t public, but everything below has either a public MSR page or a brief description on the TechFest demo page.

  • SecPAL – easily the most work-applicable demo I saw. SecPAL stands for “Security Policy Assertion Language”. It’s a language for expressing distributed authorization policies. We’re looking at authorization policies in the next phase of my MSIT project, so this was very timely.
  • 3D Video - Take a garden variety video shot with a camcorder and add computer generated 3D objects into the scene automatically. I actually saw this last year, but this year they’ve added automatic occlusion. In other words, it automatically calculates when a real-world object passes in front of the computer generated object and renders accordingly. Check out this video. This would be great for creating synthetic characters Jar-Jar Binks style (though hopefully less annoying)
  • Boku: Lightweight Programming for Kids – Sort of like LOGO, except beautifully rendered 3D, running on the Xbox 360 and programmed using an Xbox 360 game controller. Patrick’s not quite ready for this – Riley even less so - but I’ll be keeping an eye on this.
  • F# – nothing really new here, but I got to meet Don Syme in person.
  • Telescopic Pixel - Sort of like an LED screen but using significantly less energy efficient and faster.
  • Podcast Authoring using Speech Recognition – Instead of the standard waveform view of recorded audio, this app feeds the spoken words thru the Microsoft speech recognition engine and allows the user to crop the audio simply by selecting words. Not mind blowing technology like some of the other stuff I saw, but certainly an interesting combination of technologies.
  • Smart Workflow Foundation - Adding constraint solving capabilities to WF. Must noodle on this.

Morning Coffee 40

  • My boss let me borrow a Tecra M4 that he scavenged from his boss. The display is fairly twitchy, I think it’s a motherboard issue. But it’s very intermittent and I’ll get help desk to take a look. In the meantime, it sure is nice to driving a Tablet PC again. And it’s Vista ready to boot.
  • Speaking of Vista, Visual Studio 2005 Service Pack 1 Update for Windows Vista. It’s a mouthful but it’s now available. Soma answers questions about the new release on MS PressPass.
  • The DSL tools team keeps on rolling with the power toys. First it was the Designer Integration PowerToy, now it’s the DSL Tree Grid Editor PowerToy. Jeff Santos has the details.
  • I missed the TechFest keynote yesterday, but it’s available on demand. They also have descriptions and videos of some of the technologies on display. (well, only one video so far, but I assume since the page is labeled “TechFest 2007 Videos” that more are on the way.)
  • There’s new support for integrating WCF and WF coming in VS “Orcas”. Moustafa Khalil Ahmed has the details on what’s new for WF & WCF in the latest CTP drop. For me personally, the WCF/WF integration is some of the most important stuff coming in Orcas, second only to LINQ.

The Virtuous Cycle of Virtual Platforms

Dare is thinking about what comes after AJAX, building on Ted Leung’s post “Adobe wants to be Microsoft of the Web“. He mentions three things that any Rich Internet Application (aka RIA) platform needs to have: ubiquity, a consistent debugging experience and a continuum of dev tools. I agree 100% with the need for a good debugging experience and dev tools. But RIA platforms like Flash and WPF/E aren’t traditional platforms, they’re virtual platforms. (or should I say Platforms 2.0?) It turns out ubiquity and market penetration of virtual platforms is a lot less important than you might think.

At first glance, Flash Player’s 98% market penetration appears to be demonstrating the typical virtuous circle of platforms. The more people that have the platform, the more software written for it; the more software written for a platform, the more people get it. But the traditional view of virtuous circles assumes that switching platforms requires significant investment of time and money. The vast majority of non-geek users commit to a platform at the time of purchase.

However, Virtual platforms such as CLR, JVM, Flash not to mention the browser itself (aka AJAX) don’t conform to the traditional virtuous circle of platforms. Installing a virtual platform isn’t a “buy a new machine” proposition or even a “pave and rebuild”. At worst, in the case of CLR, it’s fifteen minutes to download and install followed by a reboot. At best, in the case of Flash, it’s two minutes to download and install with no reboot. That means the end user has made little to no commitment to virtual platform itself, either in terms of time or money. Furthermore, the user isn’t forced to choose between different virtual platforms. You can install CLR, JVM, Flash as well as multiple browsers on your machine side by side without conflict.

Think about the install process for a new version of Flash, especially from the perspective of a non-geek. They visit a site, it pops up a dialog saying “you need the latest version of Flash, go here to get it”. Even if the average user doesn’t understand what Flash is or does, they can click on the link. They are redirected to the Adobe site, Flash installs very quickly, and the user goes back to what they were doing and most likely forgets the entire install experience. Because no money changes hands and it takes almost no time, installing the Flash virtual platform requires zero commitment from the user.

Existing user install base is much less important when adding new users requires zero commitment. You can see this is happening with Flash by looking at its version specific market penetration. Flash Player 9 has reached around 55% market penetration in just over six months since it was released. Flash is not seeing the “compete with the previous version” effect that is prevalent with traditional platforms like Windows. I believe this is because users don’t need to make any real commitment to Flash. When a new version of Flash is released, the user is presented with the same install process which they just go thru again without even realizing they’ve done it before.

If the end user isn’t committed to a virtual platform like Flash, then who is? The developers who build software for that virtual platform. This is Virtuous Cycle of Virtual Platforms between the platform and developers instead of the platform and users. In the old model, developers go where the users are. In the new model, users go to where developers are. And developers go where they can be most effective.