Steve Ballmer Keynote - 2

Continuing from the previous post

Guy commented on how Microsoft is different. Responsive, helpful and a change from what Microsoft's image has been historically.

Some questions from the audience

On Adobe

They are a big competitor in some areas. Specifically in the Silverlight and .NET vs Flex and Flash arena. There is no expectation that they are going to "go away". Will continue to work with Adobe where it makes sense.

On Internet Explorer not moving at the speed of .NET

Many innovations, including the browser, were tied to the "next O/S after XP". Microsoft .NET was not. It was because they took dependencies on the O/S. That will not happen in the future. Future IE will incubate the innovations outside of the O/S and move them into the O/S once they have been proved out

On the PHP applications that Yahoo has

There will be some refactoring of the search, ad and email technologies when Yahoo and Microsoft get together. Some technology will come from Microsoft. Some will come from Yahoo.

On the Synergies between Microsoft and Yahoo

Scale is an advantage in the search game. More search = more ads = higher bids on ads. The more ads you have, the larger the number of ads that can be inserted into the results of a search. Google has more ads that either Yahoo or Microsoft. The merger will help scale out in this market.

On the Virtualization Server Licensing Scheme

The question was regarding the licensing cost for virtualization to be able to compete with Amazon's computing in a cloud (ECC or EC2, I can't remember the acronym). The answer was that Microsoft has plans to provide a similar service.

On Silverlight on the iPhone

Microsoft would love to get Silverlight on every mobile platform they can. There is currently no free runtime license for apps on the iPhone. Apple apparently wants 30% of all of the revenue generated through the iPhone. So while it would be nice to have, the expectation is that developers are unlikely to bite. And it was suggested that perhaps Apple is not being embracing of external developers.

On Silverlight and Microsoft applications

The question is whether Silverlight will become part of Microsoft apps, such as Hotmail. As the product cycle for the relevant products is appropriate, Silverlight will become part of the deliverable. But only on those technologies where appropriate. MSN Messenger was called out specifically as not a likely choice.

On HD DVD vs Blu Ray

Microsoft doesn't make peripherals. They support the devices where the demand is and will continue to do so. In the long term, the format isn't that important, as content is more likely to be delivered over the network.

On Enterprise adoption of social networking

The ways in which people interact with each other within the corporation is changing. Sharepoint provides collaboration services, so there is already some knowledge about how people interact. The key is to leverage these areas to provide more 'social-like' capabilities. This area is early technology, so there will be advances in the future.

Steve Ballmer Keynote - 1

The keynote is actually an interview between Guy Kawasaki (as interviewer) and Steve (as interviewee). A number of interesting points.

Regarding competing with Google

Of the four areas in which Microsoft is focused, Google is really only present in one of them (on-line ads). But the on-line ad space is expected to be the next big thing.

On why he keeps working

This is the answer that everyone should give. He:

  • Loves what he does
  • Works with smart and energetic people
  • Enjoys the challenge

From personal experience, this should be what everyone strives for.

On the place of XBox in the Microsoft world

Steve put it into perspective. XBox has 25 million users world wide who are passionate about the products that Microsoft creates. But there are 1 billion Office users. It makes sense to focus efforts on driving passions appropriately

On Web and Windows forms technologies

Microsoft is trying to blur the boundaries between Web and Forms, in terms of capabilities. Apparently 1.5 million Silverlight downloads per day. WPF currently has a broader reach because of Windows Update

On Apple's MacBook Air

"My laptop is lighter", "It's missing half the features of my laptop", "Where's the DVD?", "We'll get rid of this (the Air that Guy has) and get you a real machine"

On Vista

The number one issue for Vista is application compatibility and driver compatibility. Made choices to create a secure O/S. The result is that compatibility is hurt. As drivers and applications are updated, the compatibility issues have decreased. With SP1, the uptake in the business market will increase.

On Microsoft's Skill Set

Microsoft is trying to focus on two skill sets: consumer devices and business platforms. Most companies only attempt to create one. Microsoft is lucky enough to be able to focus on two, with a third and fourth still a possibility

On Social Networking

People will continue to use the Internet to keep in touch, to find friends, to connect with people. It is unlikely that any one company/website/technology will be able to stay on top forever.

Ray Ozzie Keynote - 2

The idea behind the concept of connected devices is to create software to provide a personal device mesh using the Internet as a hub. By having a central personal data store, complete with synchronization, the devices will become much more a part of 'you'. A current research team has been working on this starting with the PCs.

A second scenario is connected entertainment devices. The vision includes having DRM be transferable between your own devices. Purchase music and be able to listen to it on your computer, your Zune and your XBox without requiring additional licenses.

Office Live Workspace, opened up to a broad public beta as of yesterday, has a major role in the connectivity picture. You will be able to tag Office documents and make them available to people who are interested in what you have to offer.

You will be able to run Exchange, Sharepoint and Office Communications Server in either the typical, on-premise server or as a hosted service (called Exchange Services, Sharepoint Services, and, well, you get the idea).

He also touched on SQL Server Data Services as a developer database in the cloud. I'll have to check that out.

And  now, on to Scott Guthrie.

Ray Ozzie's Keynote - 1

If you want to know why Microsoft made the play for Yahoo, look no further than one of the three main focuses that Ray Ozzie sees for the near future. He expects on-line ad revenues to double to $80B annually over the next two years. And to not make such a play is to basically concede the bulk of the market to Google (my opinion, not his)

The second prong in Microsoft's strategy is based on the idea that the Internet has become a hub of a large number of devices. The list goes from PC to gaming systems to cell phones to cars. The idea of the Web is to bring together a collection of personal devices. And one of the guiding principles of Microsoft's software offerings is to provide a mechanism to facilitate this future.

The business side of the "Internet is a hub" is being brought out in virtualization. Current software will be "refactored" to support virtualization in many different ways.

"Small pieces loosely joined" (a Weinberg quote, I believe) is the new motto.

More to come...

Looking for Clues

So one of the question about MIX is whether there will be a 'surprise' announcement. Last year, it was the Windows Live Streamer that allowed people to store video in the cloud and have it served to your site.

I don't think the availability of Silverlight 2 qualifies. There are many sessions that have a Silverlight 2 label and in the hands-on lab section, I was told that the Silverlight 2 labs that are in the list won't be available until after the keynote. So not much of a surprise there.

However, there is a block of hands-on lab computers that were not active yesterday. And there is a rumour of a session titled "X talking about Y" that will be dropped into one of the open session blocks. Both of these suggest that some announcement in the tool realm will be dropped sometime in the next couple of hours. Stay tuned.

An Old Problem is New Again

I ran into a problem yesterday that brought back memories. And not the good kind of memories either.

I'm doing some work using TypeConverters. In particular, I'm creating a Windows Forms control that functions in a manner similar to a PropertyGrid, but with a user interface that looks more like a typical Windows form. You know, with labels, and text boxes. Because this is a generic control (that is, the fields which get displayed depends on the object associated with the control), I'm doing a lot of reflection to retrieve the properties that are required. And I'm using reflection (the GetValue/SetValue) to interact with the object. This last part (the SetValue method in particular) means that I'm using type converters to move the string values that are in the text boxes into the actual properties themselves.

Now type converters are quite useful. They expose a ConvertFromString method that (not surprisingly) takes a string value and converts it to a value of the associated type. If the string is not valid for the destination type, an exception is thrown.

Problem 1: the raised exception is System.Exception. I have no idea why the exception surfaced from ConvertFromString is an Exception. The InnerException is a FormatException, which is the type of exception that I would have expected. But no, ConvertFromString throws Exception. This forces me to use a pattern that I loathe - try {...} catch (Exception) { }

Whenever I teach, I always harp on this. You should (almost) never catch the general Exception object. You should only catch specific Exceptions. But because of ConvertFromString, I have to add to my list of cases where catch (Exception) is required.

But why should this matter, you ask. TypeConverters exposes an IsValid method. You should be able to check for the validity of the string value prior to calling ConvertFromString. This would completely eliminate the need to catch any exceptions at all. And it's the best practice/recommended/ideal way to go.

Problem 2: Int32Converter.IsValid("bad") returns true.

Think about that last one for a second.

According to the type converter for Int32, the string 'bad' is a valid integer value. In my world, not so much. If you spelunk the various classes in .NET Framework, you find out that IsValid is supposed to be overridden in the various converter classes. But the numeric classes don't bother to do so. As a result, the IsValid that actually services my request just returns a true regardless of whether the string is valid or not.

What's worse, this is a known bug that will never be resolved. Apparently to make IsValid work for Int32Converter is considered a breaking change.

So my suggestion (courtesy of Dave Lloyd) is to add a new method to the TypeConverters. Call it IsReallyValid. IsReallyValid could then be implemented properly without the breaking change. It could take the CultureInfo object necessary to truly determine whether a string is valid. For the base type converter, it could simply return a true.

Heck, let's go a step further and mark IsValid as being Obsolete. That would force people to move to IsReallyValid and correct any problems in their applications. And maybe, in a couple of versions, Microsoft could reintroduce a working version of IsValid and mark IsReallyValid as being obsolete. In this way, four versions from now (that's about 10 developer years), IsValid will work the way it's supposed to (and everyone would expect it to).

WPF Found a Home!

The more I see about Silverlight, both 1.0 and 1.1, the more I realize that WPF has found a client to service. From the moment I heard about XAML and WPF, I questioned where it was going to fit in the real world. A large part of the 'coolness' of XAML revolved about transitions and transformations. But business applications don't really need that. Business applications are, generally speaking, not flashy, demo-candy-ful systems. So this disconnect between the needs of business and the strengths of XAML left me wondering.

While I don't believe that WPF is going to replace Windows Forms anytime in the near future, I think that it's pretty obvious that the raison d'etre of XAML is to support Silverlight.

But it's important for developers to realize that XAML/WPF/Silverlight is sill new technology. The one thing I haven't seen here at MIX is an integrated development environment. Orcas doesn't have a XAML has a link to edit the XAML in Expression Blend. The data binding story in XAML is a step back from what ASP.NET developers gained in .NET 2.0. Jasper and Astoria are interesting technologies, but the security and error management stories are still being developed. In other words, temper the excitement of some very, very slick technology with the realization that we still have a little time before it becomes 'real'

Drilling Down on the Silverlight Hype

First off, I do think that Silverlight is a very cool piece of technology. Want to see just how astounding? Check out the Top Banana demo application that was part of yesterday's MIX keynote. You can also find it here.

What I found most astounding is that Top Banana is a browser-based application with cross-browser support.

Silverlight is also touting that it allows .NET to run on the various browsers. Which it will do at version 1.1. Keep that in mind. The Silverlight that was released as a beta version yesterday (albeit with a "Go Live" license) does not have .NET support. Programming against the object model is done using JavaScript. The version that contains .NET support was released as an alpha version without the Go Live license. In other words, the cross-platform .NET support is only available as a preview.

Not that it won't be cool when it becomes 'real', but keep that in mind when you're looking at the various demos. Remember to ask which version was used to put the demo together.

Expression Web

I just sat through a session on Expression Web. They were showing some of the functionality that was currently being used, along with some of the plans for the next version. There are a couple of points that I'd like to make clear that came out of the session.

  • Expression Web fills the same space as Visual Studio. They are targeted to different audiences, naturally (Expression Web is aiming at designer-type people), but they are both development environments. They even work on the same project structure, although Expression Web is incapable of modifying the code behind files.
  • Expression Web does not currently have any support for Team Foundation Server. My first thought was 'ewwww'. But (and this is a killer but) you can only modify the Web pieces of the application. No code behind can be touched. While I'm not thrilled with not having integration, I'm more willing to relax it for the Web content.
  • They are currently thinking about whether to include TFS support in xWeb (the cutesy name for Expression Web) in the next version. If you want to influence their decision, send them a message through

I'm looking forward to playing with the elements of Expression Web to see what kind of trouble I can get into. :) If you want the same opportunity, you can download a trial version from

Computer Canada Feature Article on Employees as Assets

The April 20th edition of Computer Canada had a feature article on (generally) the asset value that employees bring to a company. I mention this because, as it turns out, I'm quoted in the article. I believe that documentation is not the solution to the knowledge leakage problem discussed in the article. Developers don't like documentation, so the trick is to keep code clean and easy to read. Standards are important. Unit tests are important (they document the assumptions made by the developer). Enforcing both standards and appropriate levels of unit testing would, quite naturally, be even more important.

This combination is a significant benefit (albeit a soft one) that a company can accrue by using tools such as Team Foundation Server. Imposing process on software development efforts can be challenging, however. The metaphor that a development team is like a herd of cats is frequently quite accurate. Getting them to buy into the process is very important to it's success. But a well planned implementation that takes into consideration appropriate levels of training along with a process that mirrors the current situation can greatly help a company achieve it's goal with respect to securing application knowledge.