One of the incredibly awesome, and underused technologies available is virtualization. To give a brief background for anyone who is not familiar with IT lingo, a virtual machine or VM is basically a way to store your operating system as a bunch of files that have no interaction with the actual hardware associated with a computer. The idea is that you can install a product like VMware or Virtualbox on your current operating system and play any other operating system as a window or in the background without actually installing a new operating system at all. You can even load a virtual machine that someone else created with all of their applications and settings in a matter of seconds. It’s all done by copying the VM files on your computer and then using a player to run those files. The impressive thing is that you can run as many VM’s as you would like without changing or installing anything more than a simple player on your desktop.
Why is this important? I work for a software company that produces software for a windows environments, and is designed to run over a network. I spend hours every week reconfiguring server configurations and settings that were not setup correctly first time they were installed. The installation alone takes anywhere from 20-60 minutes and can be painfully difficult, if not impossible, if your operating system configuration is not setup properly. In many cases even the server may appear to be setup correctly and working fine when in reality it isn’t. This only further complicates things when our clients try to install and connect a number of clients to the server only to realize that there are problems. This is not uncommon for any type of software support model. The server client model is a very effective way to administer and share information over a network when it is configured properly. The problem for any software product is that there are too many variables, including OS configuration, software dependencies, and human error.
Now this would mainly benefit network applications that run on a client-server model and would only be plausible for the server setup, but imagine if it were possible to get the exact software installed on every server in exactly the same way with exactly the same settings. If you could take all of the OS, installation and a lot of the misconfiguration variables out of the equation, it might lead to a lot less support needed for installations and troubleshooting. It would be extremely beneficial for any software developer to create their software and put it on a virtual machine and ship the VM to their clients. Basically the client would only be required to install a simple VM player and then download all the VM files that contain the entire OS and installation for the software. One of the great things about this is that allows you to sandbox the VM so that any configuration changes you make to the server OS won’t have any affect on the the VM. And in many cases even there is a server crash it could be extremely easy to recover the data because all of your information is stored on the hard drive as a bunch of files.
There are some issues with this model of distribution, including the Windows licensing model which will not allow software vendors to sell Windows VM’s without paying a heavy fee to Microsoft. Many companies have worked around this caveat by distributing their product on Linux VM’s, which will run perfect in any Windows or Mac host environment. The idea of virtualization would not solve all of the software development and distribution problems in the world. For example, you would probably still need to manually install the software on each client that connects to the virtual server. This method of distributing software has recently become popular because it allows software developers to become OS independent.
Although we don’t use virtualization yet at my place of work, it’s tool that is still in infancy and many companies like Amazon and Google are already taking advantage its capabilities. It is an amazing concept and even more incredible in practice but the real test of time will tell if smaller companies are ready for virtualization.
For those of you who don’t know, I work for a company in tech support dealing with customers who have issues with their tax software. I know what you’re thinking, and yes, it probably is the most exciting job from sea to sea. The other day I was talking to one of my co-workers about how the customers are always lying to us. I don’t know if they think that lying to us will get us to give them a top level of support or if they are completely ignorant.
Example, I asked a customer if they were running the application on Windows XP, Windows Vista, Windows 7 or gave him the option if he didn’t know. Now, the easy answer is “I don’t know”, because I would just walk him through the process of looking up his OS. The customer gave the wrong answer and said he was on XP. After about 20 minutes of troubleshooting and setting up remote tools I logged in to find that, surprise, he was using a Windows 7 computer which was not supported. From the beginning the easy answer would have been “not supported” which means it won’t work which would have saved 20 minuets of time. The amazing thing is that knew all along that it was Windows 7, but just wanted to get that top level support to get his software running. The important lesson here is always assume that the customer is lying.
I was thinking someone should make a whole TV series about it, but then I was watching TV last night and realized that they already have… House. A whole TV show about patients lying to their doctor as he is trying to fix their very severe and life threatening problems. Then I realized, “Oh wait we do have that person where I work.” We’ll just call him Math McNeeley. Math is extremely smart and good at what he does, even if he doesn’t really know the answer to something he has a way of explaining it to make you feel like he just gave you a valid answer. He has the ability to talk around things and then give you 3 or 4 plausible scenarios that could be the answer to your question. The first thing I really remember about Math was that he was speaking to a customer, trying to tell them that they were lying. I really don’t remember if he actually used the words “I think you are lying,” but the jist of the argument was crystal clear. He selectively chooses his words like “I don’t believe that,” or “That’s not right”. I often find myself imagining some of my customers having the same conversation with Math.
“Yes Math, I can’t get my software to work.”
“Well are you using Windows XP, Windows Vista, or Windows 7?”
“Well that can’t be right, I don’t believe that. Are you sure you aren’t on Windows 7? Let’s check real quick.”
The other thing about Math is that much like his TV counterpart, he doesn’t like to talk to people outside his inner circle of doctors. He is always wearing earphones or pretending to be on the phone just to avoid talking to people. Sometimes I find myself poking him in the shoulder to get his attention. My life as an episode of House is astoundingly accurate, and, short of the addiction to pain killers I think we have our cast. The premise used in House is pretty widespread I’m sure, but if FOX ever decides to air the I.T. version of House, I hope that I’ll get at least a small percentage for finding the star… nothing huge, only like 8 million.