I also took some time to fully const my classes. Const is a C++ keyword that specifies that something cannot be changed. For example, in the following distance-formula function prototype. . .
int Distance (const Point &rPoint1, const Point &rPoint2);
The function is guaranteed not to modify the Point objects that are passed to it, as any attempts to call non-const functions in the Points will raise a compiler error. It's a great sanity-check for your programs, and it can often point out some errors. In my case, it did find a couple of problems where I was modifying a parameter I was passing rather than a copy of the parameter I made for that purpose.
Reminds me a bit of a freshman-level programming class I took in college, in which our professor was showing off a function comment-header from a commercial software product. One thing the programmers were required to document was "side effects", which was a detailed list of parameters or globals that were modified by the program. Using const, while a pain to enforce, is a way to not only document the changes you're making, but to actually have the compile help enforce it.
One piece of common wisdom when adding const to your objects. If you're adding const after the fact, start with your lowest-level classes and work your way up to the higher-level classes that depend on them. If you start the other way around, you'll eventually end up drilling down to the low-level objects anyway, so just start at the bottom and eliminate a step.
Most of my time, however, has been spent helping to set up Shelly with her Civil Engineering stuff. I put NT on the main net-surfing box, as AutoCAD works downright beautifully with NT. Upgraded the memory pretty heavily and reformatted the hard drive with NTFS. It made a big difference in the performance of the machine. Despite it only being a 233 Mhz Pentium, Shelly commented that it's probably the fastest AutoCAD machine she's used.
I had to switch out the video card, as NT just didn't get along with the Graphics Blaster TNT that was in it. I ended up getting completely frustrated and buying a 3D Blaster Savage4, which claimed to have good NT support. Thus far, it seems that the claim is true, as it's working just fine. The TNT supposedly is a better card for 3D, but the only games it's run so far are Windows Solitaire and Shi Sen, my wife's two weaknesses.
AFAIK, the TNT didn't improve their performance much :)
I don't wanna start sounding like Jerry Pournelle at Chaos Manor, but I've gotta recommend Partition Magic if you plan to change the OS on your machine. Using it, I was able to create a new NTFS partition, install NT in the NTFS partition, convert the old Win98 partition from FAT32 to FAT (because NT4 doesn't grok FAT32), and move over most of our old files to NT without losing a byte of old data. It's a terrific product, and it works well under Windows 98, NT, and DOS.
Also, kudos to HP for making a high-quality product with good driver support. Since Shelly needs to print out big AutoCAD drawings, we invested in a printer capable of printing 11x17 pages. After a bit of research, we settled on the HP 1120C. It's a big color inkjet that'll print to all sorts of paper sizes up to 13x19. Also, our local OfficeMAX had 'em for $499 with a $100 mail-in rebate, which made it a lot cheaper than the other 11x17 printers out there. Well, the NT drivers installed flawlessly, the utilities were easy to use, and Shelly was able to plot an 11x17 drawing first-time. Good work HP!
Finally, I've got a big slab of anti-kudos for ParaSoft. While buying the new memory for Shelly's machine, I noticed that my corner computer store had an old (1996) shrinkwrapped copy of CodeWizard (a command-line C++ tool that points out common errors in your objects) languishing on the shelf. Figuring that it was probably something somebody ordered and never picked up or was the result of a buyout of an IT department, I asked "how much?" The owner was surprised to see that I knew what it was, and he sold it to me for a low price. When I installed it, though, I found that I was supposed to call ParaSoft for a password. Upon calling ParaSoft, I was told that it was an old version. I told him that I was aware that it was an old version, how I got it, and that I'm just a one-man shop without much need for the latest version. The phone-rep refused to give me a password, instead offering to "upgrade" me to the latest version for the full retail price of $995.
Now, I understand that the product's an old version, and that I didn't pay full price for it. That doesn't mean, however, that I'm ripping off ParaSoft. The fact that the product was on the shelf indicates that somebody paid the licensing fee, whether it's the person who never picked it up or the department that bought it and never used it. This is a fully-licensed product. There was nothing in the package suggesting that I was breaking any kind of licensing agreement. For them to refuse me a password is, quite simply, bullshit.
I don't think anything's gonna come of it, but I intend to ship this product back to ParaSoft with a detailed letter explaining where they can shove their ad-hoc licensing policies. I don't think I'm ever gonna get a password out of the deal, but hopefully they'll re-think their policies for the next potential customer.
For the uninitiated: Jerry Pournelle is a sci-fi writer and columnist for the mostly-dead Byte magazine. His columns were basically rambling stories of the new stuff he added to the various cutely-named computers in his house. Then and now, nobody knows when he has time to actually write anything on his computers, given that he seems to do nothing but upgrade them constantly.