Tim Bray on Software in 2014

In his article “Software in 2014” Tim Bray says about the present state of front-end development:

Thus, for ac­tu­ally build­ing ap­pli­ca­tions, you’re going to have to pick a higher-level frame­work. There are lots of them and they com­pete vig­or­ously, it’s easy to poke around the Web and find knock­outs and cage matches; one good high-level com­paro is Rich JavaScript Ap­pli­ca­tions – the Seven Frame­works (Throne of JS, 2012) but wait it’s eigh­teen months old thus prob­a­bly now wrong, which is a symp­tom of the prob­lem. “What prob­lem,” you ask, “choice is good, right?” It is, but this isn’t an or­derly choice, it’s a Cam­brian Ex­plo­sion. I’m sure the soft­ware arche­ol­o­gists of 2113 will enjoy study­ing it, but it’s a prob­lem.

ongoing by Tim Bray · Software in 2014.

I completely agree, right down to the term “Cambrian Explosion”, and I ranted a bit about it in one of the few posts I wrote last year. Client-side development is a scary mess right now, where almost every choice you make stands a chance of blowing up in your face a year down the line.

The developer’s mantra

I’d like you to take the time to learn the developer’s mantra:

The Tester is always right. I will listen to the Tester. I will not ignore the Tester’s bug reports. The Tester is god. And, if this ever happens again, the Tester will personally rip your lungs out.

This comes courtesy of Abi, who subverted the Babylon 5 mantra for the purposes of educating inexperienced developers.

Ivanova and Sutherland

Using virtual machines for development

Although I’m still enjoying my Mac, I’m spending most of my time on my Windows machine at the moment, because that’s where I’m doing most of my current development work. And after having merely dabbled with virtualization technology for a while, I’ve now made the full and complete move into the world of virtual machines (for development purposes, at least).

I did a clean reinstall of Windows back in August, and I had every intention of keeping it nice and clean and shiny…for at least a few months. Well, that didn’t quite work out. Download fever hit, and the normally slow accumulation of cruft turned into an avalanche of demos and betas. Then last week the PC said “forget it”, and refused to start up properly. It would get me into Windows, but without sound, network connectivity, or a clutch of other essential services.

Rather than wiping the hard disk and doing another reinstall, I tried doing a Windows “Repair”, i.e. sticking the Windows installation disk in the drive, and just letting the setup process smear itself all over the existing installation; and that did the trick. Incidentally, this is also where I first noticed that if you have a Google account (e.g. through Gmail), Google is now tracking links you have visited, and tells you if you how often you have visited a link before, and when the last time was you went there (via Google’s search results). Fortunately, I’ve given up on finding Google’s tracking behaviours creepy and intrusive.

Google's tracking information

Anyway, where this is all going is here: no more installing development tools or random crap on my main machine. It all goes into Virtual PCs now. I’ve created a couple of “base” VPC builds:

  • Vanilla Windows XP build (XP with all service packs and hotfixes, and Firefox.
  • Vanilla Visual Studio 2003 build (as above, but with VS2003, IIS, SQL Server, MSDN Library, FileZilla, and a few other basic widgets)

I’ll create more base builds when they become necessary (a Visual Studio 2005 build will happen very soon). Each project I’m working on now has its own virtual machine, cloned from one of these base builds. No more worrying about software I’ve installed for one project interfering with another, because they each have a whole machine for themselves. The virtual machines are portable, so I can bring them with me on my laptop; and if I need to reinstall Windows on my main machine, I no longer have to worry about all the pain and hassle of getting my development environment up and running again, because it’s as simple as grabbing a copy from my backup disk.

It’s very, very cool, and I should have done this a long time ago.

The only downside is that my Windows PC is a couple of years old now (Athlon 2500+, 1GB RAM), and using Visual Studio in the virtual machines is definitely slower than working on the host hardware. Not intolerably slow, but slow enough to make me wish for a multi-processor or dual core workstation upgrade, with another Gig of memory, so I could have more than one VM open at the same time. But this would also mean getting a new motherboard, which then means a new video card, and it all starts to get expensive rather quickly.

Never mind. It’s good enough for now, and it is more than worth it to avoid the hassle of software interference.