Joel on Software in KoreanThanks to Acorn Publishing Co., my latest book is now available in Korean!

Making Summer Plans

Yes, it’s true… there will be a filmmaker, Lerone Wilson of Boondoggle Films, working out of the Fog Creek office this summer creating a documentary about our summer internships.

As I wrote earlier, “This summer, Fog Creek Software has hired four summer interns from Yale, Duke, and Rose-Hulman. Our selection process was extremely competitive, with over 800 kids applying for only four positions.

“Instead of wasting their talents giving them the usual dull and unimportant tasks of a typical summer internship, we decided to let the interns create a complete new software product, from beginning to end, over the course of one summer. With experienced software developers as mentors, the team will design, program, test, and roll out a complete software product over the course of one hectic summer, going from concept to paying customers in about ten weeks.”

Now, I’ll be the first to admit that this product will be a 1.0 version… the minimum thing that can possibly work. We’ve thought long and hard about the amount of code it will take, and we’re fairly confident that three interns can get a beta version out in about 4 weeks. One chunk of the project is basically an enhancement to the “fogshop” ecommerce engine; another chunk is a couple of simple features added onto an existing open source program; the third chunk is possibly the simplest sockets-based server you can imagine that still does something useful. Each chunk would be a reasonable programming assignment in Yale CS323 or MIT EECS 6.001 (insiders will recognize these as two of the most challenging programming courses on the planet, but, hey, we hire the kind of people who love challenges).

The fourth intern is going to focus on product marketing so he will be working on a brand name, pricing, the website, advertising, and PR. The product we’re building is something we need internally anyway, so it’s almost worth the expense even if nobody buys it, but we think it should be useful to a lot of other people, too, so I see this as fairly inexpensive market research.

We’ll keep a weblog so you can track the interns’ progress, and, if we’re lucky, at the end of the summer there will be a DVD documentary you can get to see the whole thing in living color.

Special thanks to Mark Lemmons and his crew at Thought Equity, who have offered to loan us an HDV camera for the production of this movie!


One of the most crucial tools in our toolbox is VMware Workstation, which I’ve been recommending for years. The basic idea is that it lets you run a whole PC inside a window, with its own operating system and hard drive. Here’s an old picture so you get the general idea:

Since 4.0 you’ve been able to run multiple machines in tabs, a nice addition.

Anyway, they’ve recently released version 5.0, which is a big leap forward. It has the very slick ability to store multiple snapshots and build up a tree of systems with slightly different configurations, sort of like object-oriented inheritence. That saves a ton of disk space when you need to test systems with only small variations.

Here’s an example. The first thing that FogBugz Setup does when you run it is to test that all kinds of prerequisites are installed, like IIS and MDAC and VBScript. In order to develop and test that code, I need virtual machines that are missing the prerequisites, so I can test all the code paths.

With VMware 5, I can build a stripped down virtual machine containing, say, a minimum Windows 2000 installation without any of the prerequisites. Then I can take a snapshot of that, and install prerequisite 1. Then I can take another snapshot of that, and install the prerequisite 2. Eventually I end up with a bunch of snapshots with different configurations and I can go back or forwards to a particular configuration in one step.

Here’s another example of why VMware is critical. Let’s say I’m testing the upgrade code in FogBugz for upgrading, say, from FogBugz 2.0 to FogBugz 4.0. In about one minute I can be running a pristine copy of Windows 2000 that looks just like the day it was installed. Two minutes later, it’s running FogBugz 2.0, and I take another snapshot. Now I run my upgrade code on that, and, of course, it fails, thanks to Murphy’s law, but it leaves FogBugz in a “half-upgraded” state. The brilliant part of VMware is that I can click to go back to the 2.0 snapshot and in about 30 seconds I’m back to a pristine FogBugz 2.0 installation.

Our other major use for VMware at Fog Creek is for supporting Linux. FogBugz runs on all kinds of different distros and we use VMs to develop and test with them all.

Over the coming months our four summer interns are going to be developing a product that requires a server and two clients, so we’ll need three VMs to simulate the complete environment. We bought high-end, dual-Xeon Dell workstations with dual monitors and 2 GB of memory each (that’s our new standard developer workstation) which will make it easy and fast to simulate the complete production environment on every intern’s computer. It’s probably overkill and you can run VMware happily on less pumped-up computers, but if you’re simulating a network of three machines VMware definitely benefits from lots of RAM and CPUs.