Friday, August 8, 2008

My Current Development Environments on PC and Mac

(I am constantly tweaking my environment. I'd love to hear how you've set up your dev machines. Post in the comments.)

Why I Develop on a PC

I develop on both PCs and Macs, but mainly use my PC for these reasons (in order):

1. My development background
2. I'm used to the keyboard layout of a PC and have a lot of muscle memory built up
3. My laptop has a huge screen and I can plug it into a dual-screen dock in my office
4. I still write Win32 Apps in Microsoft's Visual Studio 2008

One PC User's Pet Peeve about the Mac

I love the feel of the keys on my Macbook, but it drives me crazy that different applications use different "schemes" for selecting and moving around text documents (Entourage is different than Thunderbird which is different than Netbeans which is different than Eclipse, etc). I can't for the life of me tell you how to "select page down" in every application. In fact, I don't think I can tell you how to do that in any application (something with the 'fn' key I'm sure, but which applications does that work in???).

But before Mac users get their undies in a bunch because a PC user said a Mac is less-than perfect, see below.

Why I Develop on a Mac

I do develop on a Mac when I want to:

1. Do a lot of *nix type stuff. You don't have to download and install putty, msysgGit
2.
Work with my images on Amazon's EC2
3. Create iPhone web pages using Dashcode
4.
Write iPhone applications with Xcode (I've had the SDK for a long time, but I just got invited to the Beta so I'm going to look into this more)

One PC User's Pet Peeve about the PC after using a Mac

My PC and Mac are comparible in terms of memory and CPU, but my Mac is SOOOO much zippier. I fully understand why people say that Vista feels unfinished and unrefined. I can restart my Mac book about 10 times before Vista is finished "shutting down". When I do an action on a Mac, it is very consistent in terms of how long it takes to launch. On Vista, if you open an explorer window or copy a small file, sometimes it just sits there for a while before it starts the task. To paraphrase John Carmak from id Software: the PC is performing billions of operations per second so there is no excuse for anything to be less than instantaneous.

Apple, please make a Mac with a large screen and full keyboard.

Here is What I Use

Since I do switch between PC and Mac often enough, I needed an environment which I can use for cross-platform development (in no particular order):

FlexBuilder (which uses Eclipse) for creating Flexible Rails apps. I have also installed several Eclipse plugins so I use it for PHP development as well. One license can be used for a single developer on both machines.

Xampp for quick
development on the LAMP stack. Although I install Apache and MySql separately from time to time.

Netbeans for Ruby on Rails development. Since you have script/console and development.log, you will find yourself stepping through code less on Rails than C/C++, nevertheless I like being able to set breakpoints and debug.

Netbeans has the best debugger for RoR. You can set breakpoints and watch variables which can be a godsend when you just can't figure out why your controller is returning the wrong JSON data to your Ajax request. Netbeans is also great for Java development although I don't do any right now.

vim (standard on Mac, gvim on PC). Although I'm older than the
combined ages of the employees of most startups, I'll confess and say I HATE vi. It just doesn't resonate with how I like to write, but since I use IDEs and ssh into my servers on Amazon's EC2, I need a single file editor to touch up Apache config files, /etc/hosts, capistrano configurations and so on.

git
(standard on Mac, msysGit on PC). For the record I also use Cygwin, but find that the msysGit bash shell has most everything I need (ssh, scp, etc).

There are other non-platform-specific web services I use regularly such as Github, Basecamp, Lighthouse, RightScale, etc.


No comments: