Samsung SUR40 with Microsoft PixelSensesamsunglfd.com/solution/sur40.do
From the first post, I've really enjoyed the feedback around what kinds of verticals Microsoft should pursue with Surface. So many of you have raised your hand for education, which is awesome! There are some great blogs around experimental and philanthropic educational efforts on technorati that are worthy of exploration.
Other responses so far have talked about the emphasis on software development, and that's what I want to run with today. Robert's been posting a lot about our SDK, which is getting better with every iteration. As we begin to reach out to the developer community I'm curious about what experiences people have had using tools like Expression Blend and Visual Studio. And what web sites running on Silverlight are impressive to you?
Ultimately, software development is a marriage of people, tools and ideas. We want to hear from you about experiences using the tools above or other tools that you find particularly compelling.
In winter/spring of this year I was asked to do some applications-development training for our internal teams in China and Japan as well as our external partners. In addition to my own experiences developing Surface apps, I talked with many team members about what they thought future developers should know. One result of this process was a list of how developing for the Surface is different from the desktop. Over the next two posts I’ll share this list. I admit some of these things seem pretty obvious after you hear them. That’s often the mark of a very usable piece of information (at other times it can be the mark of restating the obvious.) Here goes:
The assumption that computer displays have one orientation starts high in the system and goes down deep. Even the computer in the projector has what it thinks is “up.” The OS, UI frameworks, and development tools all think you want an application where everything is oriented the same way.
We are highly reliant on WPF’s ability to rotate user interface elements in any direction you want. This ability to set a “transform” at any level in your UI is one of the primary reasons we decided to use WPF as the main platform for Surface applications development. In developing for Surface we often put the bulk of the UI in a “UserControl” so it can be replicated for multiple users and oriented to face them. The Photos demo is a good example of where each photo or video is a UserControl. There is a transform set on each of these so that the photo is scaled, positioned, and rotated however the user wants.
Designing the user interface without an orientation is also very difficult. It usually takes a few iterations before all the elements of the UI do not imply an orientation. A close look at the demo applications will reveal some places where the design assumes the user is on one side of the Surface.
There is a lot of similarity between a single “contact” on the Surface and the mouse pointer on a regular PC screen. Dragging your finger across the Surface is very similar to dragging a mouse. Unfortunately, the conventional computing system is built to expect just one mouse pointer. Even if you connect multiple mice to a single PC, you still just get one mouse pointer on the screen.
Fortunately, WPF is flexible enough to allow us to put Surface "contact" events into its event stream. So in addition to seeing the mouse events, your UI will see events generated from Surface interaction. WPF does not do much more for you at this point though. What your UI does with a bunch of contacts moving over it is up to the UI. In a paint application it can just draw on the screen lines that reflect the positions of the contacts it sees. For an application like photos it has to do some math with all the contacts it sees in order for the photo to respond intuitively to the user. This can be a lot more complicated than things are in the single-mouse world. A goal of the SDK is to simplify this for Surface application developers by providing controls that give you the behavior you want without having to handle all the events directly. Robert Levy will talk more about this in his posts.
More in Part 2.
I’m a big consumer electronics fan and will use the word "love" when speaking about some of the products I own. In all of those cases I can enthusiastically describe the product and it's benefits to someone who may get it and get excited about its benefits, but that's usually where the conversation ends. That’s how it goes even for first generation products like my digital video recorder. I’ll evangelize all of its capabilities and benefits and people respond happily with “yeah, sounds great, very cool; I’ll check it out.” However, I've found that for MS Surface it's a different and unique story. Here's how it goes pretty much each and every time someone touches Surface for the first time: We describe the product and it's benefits, people get it and get excited, and within a very short time of touching and interacting with Surface an uncontrollable smile or expression of delight appears on their face followed quickly by a long list of… possibilities. "You could do this, and this, and have you thought of that, and what about this, or even that", and it goes on and on. I call this the "explosion of possibilities" and I have not seen this happen with any other product. The best part is that this explosion happens pretty reliably to everyone regardless of technical literacy. Like you, I too have relatives who are technophobic and never understood or appreciated anything I've ever worked on until now! Even they kept me on the phone for hours on end explaining the great ideas they have for Surface and the possibilities we should be exploring.
Of course, this is very gratifying and cool, but it actually tells me something more. This "explosion of possibilities" tells me that our designs (especially the interaction paradigms) were so clear and compelling that people get it (Surface), and they get it so much that they can quickly personalize it and extend its use and value to their world and their own ideas that go beyond what we have shown them. Surely, this can be considered to be some sort of valid measure or benchmark. Now, if there were only some way to convert this into some sort of leading indicator of business value / success!