Brainstorming is a bad idea (yet again)?

I love these articles – I blogged about this in response to articles a couple of times (here  and here) and the issue is always the same. They refer to brainstorming as “throwing a bunch of people in a room and letting them come up with ideas”.

Of course this is ineffective. How could it be otherwise? Would you expect to throw a bunch of programmers in a room with no process and expect good results? How about throwing a bunch of kids on a field with no structure and expecting them to be a football team?

Without a process and without structure, any group collaboration will fail.

I maintain, however, that brainstorming can be effective, when done in a structured and facilitated manner. At some point I will have to throw together some references on this, because I have seen them, but I think to say that “brainstorming is a waste of time” just because unstructured brainstorming with no process is ineffective is completely unfounded.

Microsoft is evil, lame, and sucks, right?

WRONG!

Give me a freaking break!

I was just reading a post over on TechCrunch. I do not know why I allow myself to get drawn into reading this drivel, but I always seem to.

When are the anti-Microsoft crowd going to grow up and realize that this is a business, and we are all in it to make money and increase the value of that business.

(including, of course, Google and Apple – but it is somehow ok for them)

For those who do not want to waste time and bandwidth reading the actual post, I will summarize a bit:

  • Microsoft participated in the consortium which purchased the “Nortel Patents”, even though MS apparently did not need to
  • Microsoft is pursuing licensing agreements with Android phone vendors based on other IP which MS already had
  • Microsoft stands to make a lot of money from these agreements
  • Microsoft is obviously “lame” for doing this (seriously, who actually uses the term “lame” anymore?)
  • Microsoft is doing this (obviously) because they cannot compete with Android by being innovative.
  • It would be OK if Apple were doing this, since Apple can do no wrong

So lets take a look at this from a more realistic point of view.

  • Microsoft is a business. It is in business to make money, and increase shareholder value. Period.
  • Microsoft owns certain patents. A lot of them. It owned this IP before participating in the Nortel deal.
  • Microsoft felt that participating in the consortium to buy the Nortel patents was valuable in terms of protecting its IP position.

So far so good. Lets look at the Android situation.

  • Android (apparently) infringes upon a number of patents which Microsoft owns. I am not in a position to assess this, but I would suspect there is some validity to the claim or Android phone vendors would not be signing agreements with MS without fighting.
  • If this is the case, Google is making money selling something for which they do not have clear intellectual property rights. And this is somehow Microsoft’s fault?

The statement is made that Android is winning because Google “out-innovates” Microsoft. Lets compare the two:

  • Google has a mobile phone OS named Android, based on an existing open-source OS, using a programming model which some believe they do not have valid IP rights to, and using a UI paradigm which clearly borrows heavily from another famous mobile phone (though I do think Android improves on it).
  • Microsoft, after lagging for a long time, has introduced a new mobile phone OS, written from the ground up, using a unique UI model which is clearly theirs, and with a development environment to which they own the IP, and which is also highly innovative.

Whether WP7 succeeds or fails, and whether you happen to like it or not, from an innovation perspective it is clearly well beyond Android.

So what is Microsoft’s strategy? Well, it appears to be two-pronged.

Having invested heavily in innovation, they are clearly focused on the future of WP7. They intend it to be a success. Whether or not they are successful is more a question of their timing and marketing ability than their level of innovation.

At the same time, Microsoft has quite rightly taken action to preserve the value of its intellectual property. They have also leveraged their ownership of this IP to make money and increase shareholder value.

It seems to me like Microsoft is doing exactly what a business is supposed to do, and doing it well in this case.

Finally, I just have to comment on this little snippet form the post:

“When Apple takes these agressive (sic) approaches on patents, it’s no more right, but at least they can argue that they have a winning product (the iPhone) that they’re trying to protect. Their goal isn’t to get other companies licensing their patents, it’s to run those guys out of the market”

At least he acknowledges that Apple is “no more right” than anyone else in this process. It is the final statement that gets me. So, it is more admirable to crush your competitors and drive them out of business than to license technology to them, allowing both parties to survive and make money?

Of course it is, since we all know it is better to only have one choice in the market, as long as that choice is Apple!

(in case that was too subtle for any of you, that was sarcasm )

Some challenges with MS Surface Development

So I have been playing with the MS Surface for a couple of weeks, and have a pretty good handle on the basics of the development model. As I said previsouly, the nice thing (for me, anyway) is that it is pretty standard .NET stuff. You can do pretty much anything you need to using Windows Presentation Foundation (WPF). That being said, it is not without its challenges, and I would like to share some of what I have seen so far. 

1) The SDK only installs on 32-bit Windows Vista. This is a challenge for me, since my T4G laptop is running XP, and all of my other computers are running 64-bit Windows 7. The big value of the SDK is that it contains a “Surface Simulator” which allows you to experiment with Surface development without actually having a Surface. I tried setting up a 32-bit Vista VM to use for the SDK, but the simulator does not work in the VM. Now the good news, after a couple of weeks of messing around, I managed to hack the .msi file for the SDK, which then allowed me to install on 64-bit Win7. All seems to work great now.  

2) WPF experience is hard to come by. I can program in WPF, and understand how it works, but when it comes to the fancy styling and more creative aspects of what you can do with XAML, I am definitely no expert. Apparently, neither is anyone else I know!

3) Changing the way you think about the user interface. This is the biggy. The UI model for the Surface is different than anything else with which I have worked. yes, it is a multi-touch platform, which is cool, but hardly unique. If all you want to do is develope multi-touch apps, you can do it much more cheaply on a multi-touch PC (both WPF and Silverlight now support multi-touch development on Windows 7). The unique aspects of the Surface are that it is social, immersive, 360-degree, and supports interaction with physical objects. In order to make full use of the Surface platform, you have to think about all of these things. You also have to break old habits regarding how the user interacts with the platform. We are used to menus, text boxes, check boxes, drop downs and all the usual UI components we have lived with for so long in desktop applications. Or the content and navigation models we are used to on the web. The Surface requires us to forget all of that, and think of interaction in a new way. In this sense, it is more like iPhone development. However, even iPhone development gives you a fairly strict environment which defines how your app ahould look. The Surface on the other hand, is wide open. You can create almost any interaction model you can imagine, supporting multiple user working either independantly or collaboratively, working from any or all sides of the screen, with or without physical objects. This requires a whole new way of thinking, at least for me.

4) Ideas. This is another big challenge. I have lots of ideas for applications for the Surface. Some of them I am pretty sure are good. Some of those are even useful. Some of my other ideas are probably downright stupid. I would like to hear your ideas. I have always believed that, the more people you have coming up with ideas, and the more ideas you come up with, the better your chances of finding great ideas. So shoot me email with any or all ideas you might have – and don’t worry, they cannot be any more silly than some of mine!

Finally, I have added a little video showing just how far you can go with the Surface UI. Hopefully in the next couple of days, I will have a video of some of what I am working on to show.

DaVinci (Microsoft Surface Physics Illustrator) from Razorfish – Emerging Experiences on Vimeo.

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.

That’s why you play the game!

I just finished watching the Giants beat the Patriots in the Superbowl. I had not actually intended to watch the game, because I really had little interest in who won. Then I figured, no matter who won, a certain amount of sports history would be made.

Going into this game, no one (myself included) gave the Giants much chance of winning. Up until a few weeks ago, no one would have guessed that they would even be playing. That brings me to the point of this post – the fact that stats really are irrelevant. On any given day, any team can win. That is why they play the game.

This carries over into the “real” world. Whenever you are starting something new – whether it is a business, or a new innovation, or anything else you can think of – there will always be lots of people telling you not to play in certain games because there is no chance of winning. The fact is, there is almost always some chance. It may be slim – but what it comes down is whether you execute better than the other players on game day (only in the real world, everyday is game day).

So do not always run away from the game because there are players out there with better records and better stats. All you have to do is go out and play better.

Easy, right?

Free services devaluation: what’s next ?

I agree with the observation Free services devaluation: what’s next? that there needs to be (and will be) great evolution of the social networking business model away from what created FaceBook, MySpace and similar sites.

I disagree, though, with the use of Second Life as an example of a social networking site which does not work because of the model, or because of incongruity between corporate presence and user alienation by corporate presence. The problem with Second Life if the implementation – it is crap.

Is Software High Tech? If not is it a Commodity?

I was reading Is Software High Tech? If not is it a Commodity? « Tech IT Easy. It struck me that the question is not entirely meaningful. I agree with the statement “software by itself is no longer high-tech.”

However, the same question may be asked of many other aspects of technology. Take electronics, for example. There is no denying that there is a great deal of electronics which is obviously “high tech”, but being electronic is not, by itself, is not enough to make something high tech. Is a transistor radio high tech?

In the same way, there are many, many kinds of software out there which are decidedly not high tech (including much of the web). This is not to say they are not innovative – being innovative is about much more than the technology.