If you want to build the kind of science fiction, futuristic GUIs that only exist in TV and movies (think: Minority Report) then you want to be looking at Windows Presentation Foundation (WPF).
WPF is Microsoft’s next generation API for developing applications and it’s possibilities really start to shine through when you look at Microsoft Surface, which was developed entirely with WPF and the .NET Framework.
The idea behind Surface is that any surface – vertical or horizontal – can be made so that you can interact with it in a very direct and natural way.
"We used to say a computer on every desktop and now we say every desktop will be a computer" — Bill Gates
This notion of interfacing with a computer through touch and gestures rather than mice and keyboards is all part of the next generation of user interfaces – termed "Natural User Interfaces" or NUIs for short (pronounced New-eee, like GUI with an "N"). The idea is that we began with Command Line Interfaces (okay, we began with blinkin’ lights, toggle switches, and punch cards – but…), progressed to Graphical User Interfaces, and we are now entering the next stage of this evolution.
"The last 30 years of computing have been about people learning the language of computers. The next 30 years are going to be about computers learning the language of people."
– Daniel Makoski, Interaction Design Manager, Microsoft Surface
There is this notion that content is the interface. That you can just walk up and interact with it. And even if you don’t have a $10,000 touch screen wall, WPF provides a whole new way of designing user interfaces on today’s PCs that allows you to break free from the old paradigms.
» Screens are rendered with a Painter’s Algorithm, which you can think of as a canvas upon which any element in your application can draw. Any shape is allowed, so say goodbye to yesterday’s rectangular windows and controls. And any element can add to the layers beneath it, allowing you to render 3D scenes on a 2D surface.
Imagine if photos didn’t have to be stuck in an unnatural row of perfectly spaced rectangles. You could scatter them across the "table", spin them around, group them so they overlap one another just as if you were handling the physical versions.
» All types of content – text, images, video, audio, 3D graphics, documents, etc. – are treated as 1st class citizens within a WPF application. They can respond to user input and issue commands, moving us away from PC constructs like buttons and menus, and towards the more natural model where content is the interface. WPF intrinsically supports things like 3D objects as "buttons" (imagine a spinning globe you can navigate and zoom in to find your destination).
» All content is rendered as 3D. This means you can apply transformations and animations to any object, allowing objects to respond to users just as real world objects do. Imagine a 3-Dimensional object moving just slightly when you touch it. It suddenly becomes more tangible than a static 2D image.
» WPF is vector-based, meaning that all drawing is done through mathematical algorithms rather than dots per inch, providing us with perfect scalability of our content (obviously, bitmaps not withstanding) as we zoom in and out.
This allows us to present information in an entirely new way. Imagine how we work with documents in the real world. If your desk is like mine, you’ve got papers scattered across it and stacked up in piles that others might call messy, but, of course, we like it because we know where everything is. Now, imagine a "project" on your computer that’s made up of text, spreadsheet data, images, audio and video where you can seamlessly navigate between all of the different components, zooming in on the areas you want to focus on, then zooming back out to a view that allows you to see what else is in the project. Just like you could do with the papers on your desk, but with the technological perks of rich media, in place editing, and whatever other nifty tweaks us developers can think of.
So, okay, maybe the future is still tomorrow, but I think we’ve got some very exciting things that we can do today to move us in that direction. And, if nothing else, there is the hope that…
"One day, your computer will be a big ass table" — Sarcastic Gamer.
Check it out:
» Microsoft Surface – check out their videos to see it in action
» Microsoft Surface Parody by Sarcastic Gamer – because we still love making fun of Microsoft
» WPF Bootcamp – Learn WPF with Microsoft’s bootcamp: 3 days of training videos and hands-on labs. Awesome stuff!
Bootcamp ’08 Video of the 2008 training. Highly recommended, but the labs aren’t on-line yet.
Bootcamp ’07 – Includes hands-on labs from the 2007 bootcamp you can use to augment ’08 training.