First Thoughts on Microsoft Surface Development

A brand new Microsoft Surface development unit arrived this week in the Moncton T4G office. As I start to develop some prototypes, I will be doing some related posts, but I wanted to start by talking about the platform a little, and the development environment.

For anyone who has no idea what the surface is, it is a multi-user, multi-touch platform released by Microsoft a couple of years ago. Have a look at this video to see what it can do.

Other the last few weeks, before the unit arrived, I have learned quite a bit about the Surface. The first interesting thing I learned was the the surface is not a touch screen in the sense that your iPhone or multi-touch laptop are. The surface of the Surface is just glass – it is not a capacitative or pressure sensitive material at all. All of the touch behaviours and interactions are based instead on a computer vision system. Inside the box there is a fairly standard PC running Windows Vista, with an DLP projector pushing the image up to the table top. There are also 5 cameras inside the box which perform the actual "vision". These feed into a custom DSP board which analyses the camera feeds into something a little more manageable for the PC. The fact that it is a vision-based system leads to some interesting capabilities, as well as some idiosyncrasies.

When the Surface is running in user mode, the Windows Vista UI is completely suppressed. There are no menus, no windows, and no UAC dialogs – nothing that would indicate it is even running Windows. There is also an Administrator mode which shows a standard Vista UI for administrative functions or for development.   

As far as development goes, the good news is that it is all pretty standard stuff. There are two approaches to programming for the Surface. The first is to use the Microsoft XNA Studio platform, the other is to use Windows Presentation Foundation (WPF). Using XNA gives you a little bit more power, as well as access to more of the "lower level" information like raw images from the video feed. Using WPF is a higher-level programming model, and comes with a set of controls specific to the Surface UI model. The nice thing is that all you know about .NET and WPF programming applies to the surface. And from a larger architectural perspective, Surface can tie into any infrastructure accessible to any other .NET-based model. It is just a different .NET UI layer.

The bigger challenge in developing for the Surface is changing the way we think about the UI, and selecting the right solutions. First and foremost, Surface applications are not just a port of a standard Windows UI. Stop thinking about Windows, Icons, Menus and Pointers (WIMP). The surface calls for a completely different models, one that I am just learning. One of the interesting statement I have read describing the Surface model is "the content is the application."
The Surface is more than just a multi-touch platform. Sure, you could implement a multi-touch solution on the Surface exactly the same as a Windows 7 multi-touch solution, but that is only using a subset of the Surface capabilities. The key characteristics of Surface interaction are:

  • multi-user, multi-touch (up to 52 simultaneous touch points)

  • social interaction – multiple simultaneous users, collaborating or working independently

  • 360 degree user interface – users on all sides of Surface at the same time, with UI oriented to support all of them

  • Natural and immersive – like the physical world, only better

  • Support for physical objects integrated into the experience (tokens, cards, game pieces, merchandise)

When it comes to selecting a solution to deploy on the Surface, the two most important keywords are "social" and "immersive". Social, because the best Surface applications are those in which the computer is not replacing human interaction, it is enhancing it. Immersive, because you want the user(s) to forget that they are using a computer, and to only be thinking about what they want to accomplish. The how should be transparent.

Over the coming days and weeks, I will post more about the Surface and what we are doing with it. Hopefully next week I will be able to post a short video. If you have any thoughts or suggestions, I would love to hear them.

Some Thoughts on the Economy

The economy is in trouble – or at least it seems to be. This is hardly a shocking statement for anyone who has not been under a rock for the last year. I sit and I wonder (as I am sure many people do) just how we ended up where we are. I am not an economist or politician or any of the people who are presumed to have an understanding of the dynamics of national and global economies. I am just a poor dumb physicist/mathematician/software developer/business person, making a few observations.

1) Is the state of our economy driven largely by media? I have noticed during my lifetime that at all times, there are certain people in the press, on TV, publishing books, etc. with “end of the world” stories about the coming economic crises. It seems to me that at certain points, mass media starts giving these doomsayers much more attention than they deserve, and further that a year or so after that happens, our economy tanks. I wonder at times if it is not at least partially a self-fulfilling prophecy – if the mass media tells us for long enough that things are bad, then our resultant behaviours cause things to get bad.

It is kind of like a (not serious) theory I have about airplanes. What if heavier-than-air flight is really impossible? Maybe airplanes really only work because the people on board believe that they work? At any given time, there will be some people who do not believe, but as long as enough believe, the everything is great. But what happens when suddenly a critical number of people on the plane start thinking “Hey, this can’t work”? Poof, the plane crashes.

Maybe the economy is something like that.

2) Big banks, Wall Street, rich people, major corporations. Everybody’s favourite targets. Have they done a lot to contribute to the current problems? Of course. Are they and they alone to blame? Hardly. Our economy got where it is because pretty much everyone involved drove it here. The real estate industry predicated on constantly rising home prices. The mortgage bankers finding new and creative ways to allow people to afford the ridiculously expensive houses they really could not afford. Consumers expecting that they should be able to afford these houses. Consumers digging themselves huge debt loads buying things they could not afford. You. Me. Everybody. We are in this mess because we all created it. Maybe to greater or lesser extents, but we all played along (except maybe for the segment of the population who never had the opportunity to play, because they have been in an economic crisis the whole time.)

People are talking a lot about this psychology of entitlement, mostly referring to executives at banks and on Wall Street. I think the problem goes much deeper than that. Our whole society has a feeling of entitlement. We work hard, so we deserve that bigger house, that newer car, that big vacation – who cares if the numbers don’t work out, we deserve it, dammit. It is the whole “American Dream” (or in my case, “Canadian Dream”) concept. It is just that, however. Just because you have worked hard and you deserve it, does not mean it will happen.

3) Values. Not religious or moral values, but the values we place on things. Who are the highest paid people in our society? Corporate wheelers and dealers. Professional athletes. Movie stars. TV stars. Musicians – at least the popular ones. I know and understand the economics of why these individuals are paid such ridiculously huge amounts of money relative to their contribution to society. I understand that what they get paid is an investment by someone, and they get huge amounts because those paying them expect to get much, much greater amounts in return for their investment. The athlete gets huge sums of money because he/she puts butts in seats at stadiums, and sells merchandise.

The problem is with the people who buy into this crap. The people who pay silly amounts just to see a sports game, or a movie, or a concert. The societal value system that says these people are worth paying to see.

It is also silly that in our society, these people are valued at such a level, when the people who really have the power to solve the worlds problems – researchers in science and engineering and medicine and throughout our universities have to fight tooth and nail to get enough money just to keep the research going. Not to mention the value we place on our educators and the infrastructure around them. Education and fundamental research should be getting the big pay checks, not people playing games, playing make-believe on a movie screen, or pumping out music.

This inversion of value is endemic in our society, and we will not truly break out of the current cycle of economic crises until our values change. Period.

Just my thoughts – but they are, of course, correct. 🙂

Conservative Fundamentalists Scare the Heck Out of Me!

Conservative fundamentalists (of any religion) scare me. Actually, any fundamentalists/extremests scare me. Check out this piece of mindless drivel: A Waste of Taxpayer Money by Rob Hood

By this logic, all scientific research should stop, because our 4 year olds already know the answers.

Where did life come from? God spoke it into existence.

What are the basic laws of science, chemistry, mathematics, etc? Who cares, God makes it work.

Why do people die of cancer, AIDS and other diseases? Because God wants them to (for one reason or another).

How will we survive global warming? No problem, God will fix it.

Maybe this guy is, on his own, proof that evolution is false – natural selection should have emptied his end of the gene pool long ago.

BTW – don’t get the idea that I am anti-religion, because I am not. I am against mindless application of dogma (religious or scientific).