After attending TechEd Europe 2005 last week, I decided to give my free copy of Virtual Server 2005 a go on the development server at work. My initial impressions were very good, in fact, the whole system in general works much better than I had expected. I'm not familiar with any of the VMWare server offerings however, so I don't have any reference. What I was expecting though, was a server application to split my machine's resources into a bunch of virtual machines, install operating systems on them and then remotely access those, through remote desktop, filesharing, etc. The general interaction with the virtual machines however works much better: there's a web-based management interface installed on the server, where you can configure all machines (like put an ISO in their virtual diskdrive) and actually connect to them through the virtual server application. This connecting can be done either using a seperate client application or an ActiveX control in the browser (this requires IE though ofcourse). The ActiveX control works just as well as the client and is accessed by clicking on a virtual machine on the management website.
So far so good, I installed Windows XP Pro on my first virtual machine, ran a couple of WindowsUpdate cycles over it, installed the virtual machine additions package (which is similar to the one that comes with Virtual PC 2004) that mainly allows better integration with the mouse (you don't have to switch the mouse from real to virtual machine, it moves around seamlessly). After some very basic configuring I decided to copy this virtual machine to create another that would be used to install betas and ctps on for testing. Copying a virtual machine is simple as well: the .vmc file is an XML file that contains information about the virtual machine, the most important is the path to the accompanying .vhd file, a virtual harddisk. Just make a copy of both these files, change the path to the .vhd file and add the .vmc file to the virtual server using the management interface. The only error I got when booting the copied machine was that the computer's name already exists on the network, which is easily fixed.
After that things went downhill, because this morning I've been trying to install the July CTP of Visual Studio 2005 on it. I downloaded the ISO from MSDN subscriber downloads, put it in the virtual diskdrive and went to My Computer on the virtual machine. The first thing I noticed was that the DVD drive's icon was incorrect, double-clicking it was even stranger:
To which my first instinctive response was to think: "Ofcourse, I know that!", followed by some kind of surprise that it somehow misinterpreted the double-click. Actually just typing in D: in the address bar does display the contents of the disk, so it was not a big deal. The setup.exe and vs_setup.msi then also came up with weird and unexpected errors (the setup.exe does not appear to be a valid win32 executable either and the vs_setup.msi cannot be opened?) After that I figured that the ISO was probably corrupt, but the installer started up fine on my real machine.
So then I tried to copy the data to the virtual machine and then run the installer from a directory on its local disk, since there's probably something wrong (or at least incompatible) with the ISO file. Copying it over the network (from a directory on the machine running Virtual Server) caused the client connection to the virtual machine to close, the copying itself also failed with a cryptic error about a network name no longer being valid). Perhaps there is a normal cause for this since the virtual machine is not part of the domain of the server, although in real-world situations I do this stuff a lot and it normally works. It's a Windows 2003 server though, so perhaps this is some new secure quick timeout scheme.
The last thing I tried was copying the ISO contents from the server to the virtual machine. Unfortunately I'm not sure whether this was successful, because when it started to copy the files (very slowly) the virtual machine client got disconnected again and the remote desktop connection to the server itself as well! I can't restore either connection, so this looks like it ends in a trip to the server room.
It's been an excellent week at TechEd Europe! I know it's been over for two days but I just now found some time to write about it. I've visited lots of sessions, mostly the ones about SOA since that was my focus this year, to get a good idea of what the concepts are before I dive in and start to think about how to apply it (my experience is that if you do it the other way around you end up mapping what everybody says onto your original (and probably wrong) ideas about the stuff and incorrectly believe that you already knew what it was all about).
The coolest thing however were the sessions on the upcoming Domain-Specific Language (DSL) Tools that Microsoft is working on. These are a suite of tools that let you define a domain model, define and relate shapes to the concepts in it and provide templates to do code generation based upon it. This looks like it could be a very interesting tool as I believe that code generation is something that should be leveraged much more in the developer community. The opportunity to make your own along with a visual modeling tool is just too tempting to pass up, so I'll be playing with the CTPs and probably post on my experiences in that area.
So TechEd was great, also because I got to hang out with some interesting people, including my good friend Frans Bouma who's always up for a technical discussion. It's amazing how much you can learn about stuff just by having a discussion about it with people that have good insights on the issues.
For the past two days I've been visiting architecture sessions (ARCxxx) and a single one on Visual Studio 2005 Team System. After that I remembered why I don't like sessions that focus on tools and instead prefer to just work with them myself for a while to get an idea of the functionality: every time I'm at a tool session every demo provides more questions than answers. I keep wondering about the situations where it could be useful and immediately think about whether it will or won't work in those scenarios.
For instance, there was some talk of allowing you to set constraints on a check-in in the source control system, which seems like an excellent feature. When demonstrated, it showed an example where you had to associate a check-in with a work item and where you had to run code coverage. I then wondered how this would work: can you specify the type of warnings coming from code coverage to allow before a check-in is possible? And if you have to associate a work item with a check-in, can you only check-in on work items that were explicitly assigned to you? All in all, I think I'll stick to messing around with CTPs to find out how the tools work.
The architecture sessions are very interesting. The focus this year is clearly not on implementation technology: last year there was a lot of talk of webservices and infosets, probably to get everyone to at least play with the tools. This year the message appears to be that business modeling should be the basis for coming up with business processes to expose and creating autonomous services around that. Interesting, but it appears that this is fundamentally very much like most component-based development concepts (even though it's true most component-based architectures are hardly correct in this sense, but does anyone really believe the architects will get it right this time around when they roll our their SOAs?)
What's very interesting to me is this shift from mapping OO onto everything to a more document-based approach when dealing with services. OO is ofcourse a great methodology to model software, but it's quite pointless to hold onto this when describing services, that should be aligned with business processes that live in a mostly procedural world. So does this mean that responsibility-driven design will take a backseat again to the use case approach? This time around, these might actually map better onto services.
I'm not attending any preconference sessions but to avoid a queue tomorrow morning I decided to drop by today and register in advance. So there's not actually anything to report right now, except that I got my bag and it's better than last year. This year it's a proper backpack that could actually see some use during the holidays, as opposed to last year's bag that served no purpose except making anyone that saw it point and laugh at you. Here's a picture of this year's bag: