« Adventures in Optimization: OpenGL | Main | "Math is hard" »

Cross-platform development

I clicked "Restart" after Apple Software Update applied what I thought were minor system patches, and my computer rebooted into Windows....

No, Apple has not thrown in the towel in the OS wars. I installed Boot Camp, Windows XP, and VMWare Fusion yesterday to work on Graphing Calculator 4 on Windows. I was concerned when the Windows Startup Disk control panel showed no Mac OS X option, but that was due to Windows not recognizing the Mirrored RAID set acting as my Mac OS X startup disk. I was more concerned when holding the option key down did not, as promised, provide a choice of OSes during the boot sequence. That was due to the boot loader occuring before the bluetooth keyboard was recognized. I was getting a trifle worried when, after plugging in a USB keyboard, holding the option key down, selecting the Mac OS X startup disk, the machine still booted into Windows. That seems to have been a bug again related to the mirrored RAID set which shows up during boot as two disks, only one of which actually works.

Now that I have my Mac back, I can launch Windows in the background under VMWare and mix Windows XP windows on my Mac OS X desktop. It's peculiar seeing the Microsoft Visual Studio project window next to the XCode project window next to the CodeWarrior project window. I've resisted the tempation to install Codewarrior for Windows just to complete the set. I can now build Graphing Calculator on Windows and run the Windows release in a window on my Macintosh next to the Mac OS X release to compare bugs.

It's not nearly as nice as during Graphing Calculator 3.2 development, however, when CodeWarrior on Mac OS Classic could "Build All" to compile both the Mac OS and Windows binaries under the same IDE. I expect debugging to be easier, however. Back then, I ran the Windows build under Virtual PC, but VPC was too slow to run the CW IDE and debugger and on a single-processor machine I couldn't convince CodeWarrior's two-machine debugging facility to work on a single computer with the other "machine" being faked by Virtual PC. It hit a deadlock condition starving one process of time while also waiting for it to respond.