-- Ben Armstrong, Virtualization Program Manager
Talking about core virtualization at Microsoft (Hyper-V, Virtual PC and Virtual Server).
I have been meaning to blog about this for a long time now, and since I seem to be writing a number of insufferably long blog posts lately, I figured there was no better time than the present.
Most of you know me as someone who has been working on Microsoft virtualization software for as long as there has been Microsoft virtualization software – but how did I end up in this role?
My virtualization journey starts in Australia in early 2001… The backdrop
At that point in time I was living with my 3 month pregnant wife in a small house on the north skirts of Brisbane. I was working for the University of Queensland as a database developer / systems administrator / desktop support for one of the divisions there. In my spare time I played around with many various operating systems. Understanding low level operating system functions and how different architectural approaches can be taken to solve some of the fundamental problems and challenges of computing has always been a deep area of personal passion.
The only problem was that: living in Australia at that point in time, with the sort of job that I had, did not afford me with much money to spend on computers. As a result the vast majority of my computers were put together from the left over parts of old broken computers that had been given to me / I had bought for a song. I personally enjoyed the challenge of resurrecting this old hardware (and hardware hacking / modification is still a passion of mind today). But the downside was that a lot of my hardware had a tendency to break (especially in the middle of a hot Australian summer).
My main computer was a Pentium II 400 MHz system with 256 MB of ram (it also had a Voodoo II card!). I had this system configured to multi-boot 5 operating systems:
Now – let me be clear on this – multi-boot sucks! Let me take a moment to enumerate the reasons why it sucks:
This combination of shoddy hardware and the multi-boot system from hell resulted in my wife often observing that I spent more time fixing and setting up my computers than I did actually using them, and frankly I was getting sick and tired of it.
The turning point
I longed to throw out all my broken hardware, and just buy one really nice computer that was stable (and fast) but I could not figure out how to do this and still satisfy my desire to play with various operating systems.
I had looked into the various virtualization / emulation software of the day. I did not like VMware Workstation 2.0 (I will leave that discussion for another day :-), and all other software was too slow. I had used Connectix Virtual PC for Macintosh, and knew that it could run all of the operating systems that I wanted to run – but it was way too slow when I had tried it on the old decrepit Macs that I had (my best Mac was Performa 6320 – remember, most of my hardware was second hand).
I could only think of two alternatives:
I spent ages deliberating over this. I even debated heading down to the local Apple supplier with an arm full of software to see if they would let me sit out the back for a day and try out Connectix Virtual PC on an iMac to see if it could meet my needs.
Then it happened.
One day as I was debating these two options – I went by the Connectix website (one more time) to look over their documentation and see if I could glean any relevant performance information out of it – and there it was: The announcement of the availability of the beta of Connectix Virtual PC for Windows.
I was stunned. My heart beat rapidly in my chest, my throat went dry, I felt light headed, and I walked outside my house and let out a cry of exultation. Sadly, I did not just make any of that up. That is literally how I responded. I am that much of a nerd.
I then ran back inside the house and signed up for the beta. As soon as I had downloaded the bits, I went over to the newly opened web forums and signed up there as well. I was user #62.
Ben the beta tester
I went to town, and was not disappointed. Sure, it was beta software. It was slow and buggy. It crashed a lot. But I was able to get so much to run on it. Many operating systems required a lot of coaxing, but I persevered. Each time that I figured out how to work around a bug, I would go back and dig into it to see if I could figure out as much as possible about the bug to report to Connectix. I would then go and post the details on the forums.
While this was going on, I also tried hard to help out other users on the forums.
By the end of the first two weeks, I had made slightly over 170 posts on the Connectix forums. It was then that I received an email from Eric Traut, the then Software Vice President of Connectix, asking me if I would like to participate in a private beta program (I was later to find out that I was the first person to receive this privilege). My response to this was to kindly inform my wife that I would not be getting much sleep for the next couple of months.
I had a great time testing Virtual PC and helping out other users on the forums. Tracking down bugs in Virtual PC proved to be a fantastic use of my broad operating system knowledge – and I was getting to do what I loved.
Some highlights of the beta program for me were:
But, all good things must come to an end – right?
The beta was coming to an end, and I was starting to burn out from the amount of time I had spent on it (while continuing to do my day job). I also needed to be spending more time with my then pregnant wife. So I sent an email to some of the people who I had chatted with at Connectix and informed them that I had had a great time, but when the beta was over I would be out of there. I also attached a copy of my resume and stated that if they were interested in hiring me, I would be there in a heartbeat (I had cleared this with my wife ahead of time).
I honestly did not have high hopes that anything would come of it.
They hired me as a tester :-)
Ben the Connectix Tester
My wife and I arrived in America 6 weeks before my son was due to be born (he ended up arriving 11 days early). We had ~$6,000 US to our names, a couple of suitcases and half a shipping container of stuff that would arrive in a month or two. We had never been to America before, and we knew no one in America.
We often look back at that moment and ask “What on earth were we thinking!?!?”
In fact I have a very clear memory of the trip to America. We left Australia with a one way ticket to America about 6 weeks after the fateful events of 9/11. We had sold or given away everything that we could not afford to ship to America.
I can remember standing in the airport in Australia and telling my father that I felt uncomfortable – because I had no keys. I had no keys, because I did not own anything in the world that actually needed a key to open it.
I started working at Connectix two days after I arrived in America, as a tester. I reported to the Connectix test manager – Jeff Woolsey (Ah ha! bet you did not see that one coming!) I had never worked as a tester before, but I was determined to do a good job.
I set myself a personal goal of filing 7 bugs a day.
I met this goal for about 3 months.
And then Connectix changed my position to that of an “Application Engineer”.
Ben the Connectix Application Engineer
This role was a combination of pre-sales technical support / top tier enterprise support / documentation / program management. Put simply – it was: “do whatever it takes to help us to make Virtual PC for Windows a success in the enterprise”.
The problem that Connectix had was that they were used to making Virtual PC for Mac for home users. Individual users who tended to want to run commercial applications on the prevalent version of Windows for the day. Connectix had very little idea about what to do when an enterprise wanted to know how to use Virtual PC to run software that had been developed in-house on an arcane operating system, and deploy and manage it on hundreds of desktops.
For me there was a defining moment that was responsible for my move from tester to Application Engineer (I do not know if this really was the defining moment – but it sticks out in my mind):
One night when I was ready to head home, I stopped by the office of the Chief Scientist (and company co-owner) John Garber to chat with him about random things. He bought me into his office and showed me what he was working on. There was a potential customer who wanted to use Virtual PC for an old DOS application they had. The problem was that the application was not working properly under Virtual PC.
This application connected to a server component that ran on a Novell NetWare server. It started correctly, but would fail soon there after complaining about not having enough connections. John had been debugging the issue for days, but could find no fault in Virtual PC.
After talking to John I walked back to my apartment. All the while this problem was eating away at me. When I got home, I started browsing the web for details of the DOS NetWare client. I eventually hit on the issue that was bugging me. I quickly called John up at the office (he was still there) and over the phone I stepped him through an alternative configuration to try for the NetWare client. 10 minutes later the software was running perfectly.
When we contacted the customer and informed them that it had been a configuration issue all along – they were mortified. It turned out that this was an issue they knew about, but they had not realized that the configuration data for the work around to this issue resided in the network adapter driver configuration file. When they had changed the network drivers in order to work under Virtual PC – they had forgotten about the need to copy across the changes to the driver configuration files.
I had a great time working as an Application Engineer, and worked with a great team of people. Some of the activities that I was engaged with at this time were:
I also spent a lot of time meeting with potential business partners like Microsoft, Novell and Dell.
Coming to Microsoft
The acquisition of Connectix by Microsoft was announced internally one month prior to the actual acquisition in March of 2003. During this time I was offered a position as a program manager (to be honest I had no idea what this really meant).
To start with there were three program managers on the team. Mike Neil was the group program manager – and Jeff Woolsey and I reported to him.
Early on, Mike called Jeff and I into his office and asked us which products we wanted to head up. Almost simultaneously Jeff said “Virtual Server” and I said “Virtual PC”, and thus it was settled.
Ben, Virtual PC 2004 Program Manager
I arrived at Microsoft with little idea of what it meant to be a program manager, what it meant to ship software at Microsoft, and a 3 month deadline to ship Virtual PC 2004.
We did not make the deadline (but we did do it in 5 months, which is pretty darned impressive).
It was an amazing experience. I learnt a lot about Microsoft as a company, as well as meeting some great people at Microsoft. When we started on Virtual PC 2004 our team was about 80% Connectix and 20% Microsoft. Where we benefited most was through being exposed to Microsoft’s approach and rigor around testing and security.
I can still remember standing up in front of the team when we shipped our beta release of Virtual PC 2004 and saying “This beta is higher quality than anything Connectix shipped as RTM!”
After shipping Virtual PC 2004 (and taking some time off) I helped Jeff with the shipping of Virtual Server 2005. Just as we released the first version of Virtual Server 2005, I started this blog (in October of 2004).
Ben today
For the last four and a half years I have been working solely on Hyper-V. Today I am a lead program manager (or a program manager manager) and my team handles most of the user-mode components that have to do with Hyper-V.
Every now and then someone at Microsoft will ask me if I ever think about retiring the “Virtual PC Guy” handle. My answer is always “No”, for a couple of reasons:
Well, that is all I have to say today. I hope you have enjoyed reading this post as much as I have enjoyed writing it :-)
Cheers, Ben
Hi, virtual guy, very nice to read this article. Actually I'm feeling a little bit interest. Plz keep going. Wish you all the best. Thnx.
Facinating, I love to hear these sorts of stories, Cheers.
Been following your blog for a few years now, don't remember how long, probably very early on. Enjoyed all of your posts.
This particular blog post is a faciniting read. Keep them(the long one's)coming.
Also, thank you for your detailed and very useful posts over the years.
Ben,
Really interesting to hear how you made it to where you are today. Moving from Australia to the US with a newborn baby (almost) and no family backup... wow, that shows some commitment!
Mark
Really good read Ben :-)
It's easy to see how passionated you are about your work! :-)
Ben, undoubtedly you wrote this up while you were lying on the beach, after the RTM ship party, right? :-)
Someday these types of stories need to be collected into a book. The human side of technology is often more interesting than the technology itself.
P.S. I take it you came over on an H-1B visa? These days, of course, Australians come over on E-3 visas. But back in 2001, the tone of the immigration debate (especially skilled immigration) was different.
Don't you miss Noosa? How often do you get back to Brissie? Maybe you could work back there and RDP to the US through a VPN?
Do you still miss VisualAge for Smalltalk as much as I do>
I used to watch your live speech in Shanghai,keep going, and also wish to see you again here.
Hi Ben
A very interesting read, and explains quite a bit your afinity with Beta Testers :o)
Keep up the good work, and you never know, one day we may see Hyper-V on client OS :o)
Cheers
Janson
Tom -
Yes, I came across on the H-1B visa. The whole visa / green card process is an entirely different story though :-)
Peter Klavins -
Yes! I do miss Noosa. I come back to Oz about once every year and a half.
Jeff Odell -
Yes, I do. I miss extreme object orientation, I miss absolute weak typing and I miss being able to connect a method to an event, and pass a parameter - all through the UI builder. Sigh...
Asuka -
I had a great time speaking in China, and hope to return in the future.
Cheers,
Ben
a great post!
http://www.ccnacertificationguide.com
<a href="http://www.ccent.ws">ccent</a>
Great post! Are you involved in the Windows Virtual PC at all? I always wonder if Virtual PC is just a tune down version of Hyper-V, which will be nice, or just completely on it's own. One of the channel with desktop users is that we have more cores (2 to 4) then we can consume with one OS, and with virtualization, we can make good use of the investment by making those extra core works. Can you dedicate a core for each virtual in the new Virtual PC?
Yeah I've got to admit OS/2 was/is a great OS. I've got an old PS/2 running a very old version of OS/2. I've also got a copy of OS/2 warp around someplace that I've been meaning to install on VPC.
I'm also surprised that BeOS ran on VPC. Can <a href="http://en.wikipedia.org/wiki/Haiku_%28operating_system%29">Haiku</a> (a BeOS clone) run on VPC?