What IT can learn from Video games
As I sit here in front of my computer, I hear my roommate in the other room talking to his Xbox 360. He’s actually playing in a multi-player online game and communicating with people via the in game voice chat. I think it’s Halo 3 but the actual game he’s playing is irrelevant. They all seem to have the same technology these days–high resolution, hi fidelity landscapes that one interacts with with friends and strangers alike. So what relevance does this have to IT? It’s _simple_. Simplicity is something we in IT seem to run away from as fast as possible. His video game presents a cohesive interface that allows him to interact in a virtual world more vibrant than the sci-fi portrayed by major motion pictures 15 years ago. It is high technology made accessible and put in the hands of the masses. Comparatively the interfaces of our IT computing systems are in the stone age. At best the collaboration tools I use are overlays in my environment. Band-aids slapped on a series of deep wounds. So what am I complaining about? My problem is that software development and management should think deeply about the medium in which it is presented. I spend my day working in 4 windows. My email, my web browser, my instant messenger and my shell session. I happen to like my shell session most of all. It’s the most powerful interface I have because it can encompass the other 3. I can control just about anything from it and with one command I can travel from Durham to Boston, Florida even China. I’m talking about bash and ssh by extension. There are days when I want to be entirely in a shell session. I run screen, I have finch for IM on one window, mutt for email on another and listen to music or control video playback on a third. I used to work on mainframes and there it was TSO over TN3270. Terminals are very powerful interfaces to those who know how to drive them. Individual pieces of software can be wonderful. However, whenever we have to change context, change from one user interface to another, it takes time. It’s the integration that is the problem. The glue. We need to thing about changing the paradigm of the way we get to interfaces and creating a landscape that fosters innovation. My roommate has a persistent Voice over IP (VOIP) connection with everyone in his game. He doesn’t have to start to initiate a voice call, it’s already going. Everyone is in the same landscape with different views of the same information. In a day and age of working mobile, virtual team, and reduced travel budgets, IT solutions need to make screen sharing and collaboration as intuitive as Halo 3.
Have you seen any of these articles saying how Vista is terrible and Vista has failed? The truth of the matter is that Vista tries to be everything to all and failed. This is no fault of Vista. The problem is that the paradigm of individual operating systems is changing. A slashdot meme that is slowly fading is “imagine a beowolf cluster.” Now we talk of virtualization. What changed? The hardware got more powerful than it wasn’t as important to make look two like one as to make one look like two. I read an article recently that touted the IBM mainframe because it was able to have 85% utilization vs. 15% utilization of commodity hardware. In the same article a VMware spokesperson made the claim that their software also allows hardware to be 85% efficient. I used to work on mainframes and everything was done on a tn3270 session. Mainframes were carved up with z/VM to allow lost of z/OS images to run in parallel, but it was always done with a tn3270 session. One interface. I never saw most of the machines I worked on because I didn’t need to. The only time I had any sort of physical interaction was when I had to load tapes for maintenance and even that went away at the end.
Command line interfaces aren’t going away any time soon. Microsoft’s offering a headless version of Windows 2008 is an acquiescence of that fact. However, a text mode console isn’t always the best interface. They are ill suited to deal with images, or non-linear editing or casual users. At the other extreme of a command line interface is immersive 3D. There’s been a lot of talk about Second Life recently. To anyone who’s read Snowcrash by Neal Stephenson, you recognize that Second Life is a poor interpretation of The Steet. Second life is a video game. It’s a user interface that attempts to be a representation of data. It is a top down approach and as a result is semantically entirely unlike the street. The street was an abstraction of data, an aggregate of interfaces to systems, but it’s a vision of what might be.
These days I work with the previously mentioned “commodity hardware” and while I’m working with decentralized hardware, I still can do remote administration via KVM over IP. KVM over IP is wonderful although it can have a few limitations, like the need for an addition module for remote hard power cycling. The rest of my time I use VMware. When I’m sitting at my computer doing remote administration. KVM over IP and VMware present a very similar interface. The catch is that I can’t access them from the same interface. The latest VMware server beta has a Web interface. The console doesn’t work properly in Firefox on Ubuntu, so I go to a VMware image running windows and access it that way. The abstraction of processing data and power is no longer at a individual OS level but data center level. A result of this shift is that I don’t care if my computer crashes nearly as much as I care if my connection is down. Whether testers/developer/it professionals/users are presented with VNC, Remote Desktop, a RMA or VMware console or KVM over IP doesn’t matter, to the end user it’s a window. The paradigm of “my machine” has changed. So the way we give them the box should be changed. We need to envision our entire IT infrastructure as a cloud which we carve out bits which are given to people as needed and returned to the cloud when finished. Amazon’s Elastic Compute Cloud (EC2) and Simple Storage Service (S3) are early examples of this mentality. S3 provides a simple API for data storage of any size and similarly EC2 provides a API that allows creation and control of an Amazon Machine Image (AMI). These services are too homogeneous for an test organization because they currently only supports x86 Linux images. However it points toward a comprehensive test framework with network sandboxing, storage and different architectures all controlled from a common API.
What should IT look like in the future? The paradigm of “my computer” are going to look a lot more gray and we must answer the question of how we bring together communication and work sessions. How do we pull together VOIP, chat, shell sessions, email and other collaboration tools? Lets start by looking at video games.
