Thinking of impossible things before breakfast

11 June 2007

As is my wont, I was musing to myself this morning about what seemed to be an impossible feature and how great it would be to have.

It all came of a comment made to me at TechEd last week.

Oh, yes, that reminds me: TechEd was last week and we were there. What with one thing and another I forgot to make the announcement here on this blog. Sheesh, what is the world coming to? This particular TechEd was an interesting one: we had a one-off t-shirt printed and gave them all away (so, sorry, but you can't have one, but the crowds we had at the booth all got one), we moved our booth to a more favorable place (so if you tried to find us on the map we weren't there, but you'd have found us eventually due to the huge crowd getting a t-shirt), we were showing off the new C# 3.0 refactorings and getting daily builds so if you came back the next day you'd have probably seen something new (cue more crowds and a morning of Orcas crashing during demos), and I did a presentation at a talk for the first time in a while (with no crowds at all).

Where was I? Oh, yes, impossible things. Someone asked me for this at TechEd.

Imagine this: you work in a team, maybe a large team. For whatever reason not everyone in the team uses the same plug-ins. Sure they all have Visual Studio 2005 installed, but some people use no extra plug-ins, some use CodeRush and Refactor! Pro, some Resharper, some something else entirely. You, you're the guru mentor for the team and often help developers out while at their machine. Of course, the most intractable problems occur with those people who don't have your favored environment of CodeRush. You're suddenly reduced to typing it all out longhand. You are no longer programming at the speed of thought (say, that's a good slogan).

Don't you just wish for CodeRush on a Stick? A full install of CodeRush and Refactor! Pro on a USB memory stick that you can plug into a USB port and say the magic incantation and, hey presto, it's there in the other developer's Visual Studio IDE.

Done? Unplug the stick and walk away and CodeRush is no longer available in that install of Visual Studio.

Possible or not?

First off, you might say it's all files and registry entries. Just have a super-light "install" program that sets up all the right registry keys that point to the files on the USB drive. Then start Visual Studio and program away with the full support of CodeRush and Refactor! Pro. Unfortunately, when you want to unplug, you've got to remove all those registry keys otherwise things will get really dicey, And that would probably require Visual Studio to be shut down at the minimum and the use of some super-light uninstall program.

Second issue is that DXCore, the part of CodeRush that talks to Visual Studio, uses COM. It has to: the VSIP interfaces it wraps are all COM interfaces. Even after all these years, I think this is the big problem: you can't install COM stuff on-the-fly and just have it work.If COM weren't in the picture we might be able to swing it.

Third issue is the GAC. We install our CodeRush assemblies in the GAC. Big problem if we don't want to copy files all over the place when we insert the USB stick. Now I may be wrong here, but I think we could get away from having to do this; I haven't had a chance to talk to Mark or Dustin about it.

So, all in all, I think it's impossible, unless the plug-in architecture for Visual Studio was drastically changed.

But how about this? Visual Studio on a stick? You install VS and all your preferred plug-ins on a USB drive and carry that around with you. Again, impossible at the moment, but I think it could be oh so tantalizingly close...


3 comment(s)
Jim Clark
Have you looked into Application Virtualization? Not that it is the solution but it would allow you to have Visual Studio on a stick, it would just have to be a big stick. We have a .NET WinForms app that uses the XtraGrid and Crystal Reports and it will run from a single file. That's right, no install and no special permissions required. We have hit a few snags but it works and the performance cost is minimal. I think this could become quite common in a few years.
12 June, 2007
Paul Fuller

You've described what I think should be the basic behaviour of everything under some future OS.  Every application should just be a plug-in to the OS.  There should not be any need to install software and have it plastered all through the registry and the file system.

So your developer steps up to a machine and plugs in his memory stick.  All applications, personal settings and files are notified to the OS.  They are added to whatever is available locally or on the LAN.  In fact some entries can just be a URL like pointer and authentication that gives access to his material wherever it actually resides.

Now the OS has an increased set of applications that can be run.  Perhaps this guy has a different association that causes .png files to load into his preferred graphics editor rather than the default one etc.

The guy has CodeRush and a bunch of customised keystrokes and templates.  These become active in VS.  There might be a menu option to choose which 'personality' to use so that VS can use the new settings or the original ones.

You unplug your memory stick and everything that was added is withdrawn from the OS.  The memory stick is the key to carrying around your environment.  In some cases it contains all of the required SW etc.  In other cases it just provides the pointers to those resources that reside elsewhere.  The OS can do things like cache the contents locally in memory or on disk to speed things up.  Once the key is removed though the local version is no longer available to the machine and other users.

One big change is that you licence and install applications to the person.  Once the person is licenced and the application installed in their home location it becomes available to them on whatever device they happen to be using at the time.  You can already see the trend in licencing music and other content to the person for use on a range of devices.

.Net with its manifests, assemblies and reflection capabilities is already heading in this direction.  NAL sort of lets corporates implement something like this on their networks.  Sun's vision of thin clients was also heading there but a bit prematurely.

.Net cross-platform via Silverlight or Mono points to this working not just under Windows but on any OS that supports the model.  JIT compiling means of course that the CPU architecture is irrelevent.

Of course the 'memory stick' needs pretty good security.  Probably biometric.  You won't have to physically plug it in and maybe it will be embedded in your phone, watch, necklace or under your skin.

Ubiquitous computing resources, networks and virtualised programming models could put an end to the tyranny of installing software and not having access to it except on a particular machine.  Same for data (including e-mail).  Same for money.

If we are talking about impossible features then that is what I'd like - with appropriate safeguards of course.

14 June, 2007
Gary Gibbons

I'm behind in reading this post, but yes, anything "on the stick" and functioning properly will be huge - very huge.

This could also be married to service oriented applications.  No access to your web app service(s)?

Whip out the stick, baby!

20 July, 2007

Please login or register to post comments.