The Rest of My Development Environment

As a professional software developer the vast majority of my experience has been working on C#.NET WinForm applications. I started using .NET shortly before the 1.0 framework was released. I can’t remember if I ever did .NET development under Windows 2000; I generally use Windows XP. If you’re wondering why I don’t use Vista I have to assume that you’ve never tried Vista yourself. It’s not good. I’m waiting for Windows 7 and hoping for the best.

The tools that I use for C#.NET are pretty standard:

C# Development

The one thing that is sorta strange about how I do my C#.NET work is that I do everything on a Mac Pro with XP running in VMWare Fusion. I’ve had a similar setup at home for a couple of years but I’ve only had this setup at work since January.

There are definitely a few quirks that I had to get used to, working in Windows running in a VM on OS X. But the benefits of this setup far outweigh any inconvenience. The ability to take snapshots of the entire VM is awesome! If a program screws with my registry and Windows starts acting funky I just roll back to the last snapshot!

The other huge benefit to working in VMWare is memory. Unless you’re using 64-bit Windows (which can be problematic for many reasons) you are limited to 2 GB of memory. Windows sucks at managing virtual memory so I always try to keep my open applications below that 2 GB limit. Since my Mac has 12 GB of memory, if I need to do something else, I can just boot up a second VM.

Most of the software that I’ve written for OS X has been personal projects. Nothing fancy, just various tools to scratch some itch. Since getting my iPhone I’ve been doing more work in Objective-C and Cocoa.

Because I’ve done so much work with managed and interpreted languages, it feels a little weird to work in unmanaged C/ObjC. But it is kinda cool too. Objective-C is a fairly simple language and Cocoa is a very nice framework. There are some things that I don’t like about Obj-C (not having namespaces and gimpy string manipulation come immediately to mind) but I really appreciate being able to actually use Cocoa controls for UI work. It is almost unthinkable to do GUI development for Windows without buying a set of third-party controls.

My must-have software for writing Mac/iPhone applications:

Cocoa Development

And finally, a few additional pieces of software that are invaluable to me. These are helpful regardless of what type of software I am writing.