It wasn’t until I wrote the entry Build a laptop stand for cheap, that I realized that we have lots of stuff here at the office that would help other developers, especially newbies! One of them is the practice of categorical drive partitioning.
I have been a software engineer for quite some time, and I have witnessed some of the worst software catastrophes possible. A large majority of these could have been prevented or remedied quickly if proper precautions and/or procedures had been in place. I have witnessed everything from people knocking an entire Big Gulp into an open case system while it was compiling, to stupidity like a crew using the source control box as their test box on a piece of software that had to be tested by forcing the OS to crash to the blue screen of death! (you know who you are).
Categorical drive partitioning:Having source control is great, but it shouldn’t be your only solution for recovery.
So to plan for the worst, we partition our drives into three parts: “System”, “Development”, and “Entertainment”. I realize that “Entertainment” implies games and maybe we should change it to “Applications”.
The “System” partition, it is exactly that. We try to keep as much of the unaltered, original system on this partition. We avoid loading anything onto the “C:” drive that is not absolutely required. This does a couple of things for us. First it helps the system run smoother because the less stuff that is being written to the system partition the less file fragmentation occurs. So the system boots quicker and it helps prevent Windows rot. It’s also nice because you can backup or Ghost only the system portion of the computer and archive that away. It makes ghosting and things like that easier because the system’s foot print is smaller.
Now onto the “Development” partition. This always ends up as our “D:” drive and is where all of the development related programs and source code reside. Even if a library path or something is hard coded, which we try never to do, and the project is passed to someone else, they only need to know that all development happens on the “D:” drive.
Another safety precaution we take is that at the first of each month we burn a DVD image of the “D:” drive. Therefore if something really bad happens and it couldn’t be recovered from source control or the hard drive, we have a physical DVD. This is particularly important if you don’t have any source control.
On drive “E:” is the partition where all applications and programs are loaded. That way if one decides to go nuts, they are away from the development stuff. Also I have found it easy to find registry entries for programs because the program is on drive “E:”; you just search the registry for “e:\*” and find paths to software keys of applications (nice for removing dead keys sometimes).
Now I can tell you from firsthand experience that when a hard drive dies it usually jacks up the “C:” partition the most. Not always, but it is usually on boot up when the drive fails. I have never seen a drive fail once it is spun up and running. So if you have everything on “C:” when this happens….well it is pretty hard to get anything back off. This is because the FAT or NTFS tables and all that usually become the victim. By having the drive partitioned, the other two parts get their own volume information and file tables which usually survive.
I have crashed laptop drives without source control with a lot of work on them. All of my projects were on “D:” drive so I just took the drive out of the laptop and interfaced it with a USB to hard drive enclosure on another box, and poof! I was able to copy all of the project and code from the “Development” partition.
So there you have it. If you want to make sure your development system runs well and is safe follow these rules.
- Categorically partition your drive
- Keep as much stuff from being loaded onto your “System” partition as possible.
- Put all your project and development stuff on its own partition.
- Use source control if available.
- Make a monthly DVD backup of your “Development” partition.
- Keep a USB to IDE / PCMCIA hard drive enclosure around (they cost 10 bucks)
- Don’t run non essentials on your development system.
You can read more and follow me and Neuron Games, Inc. here: