So I need your help, dear readers. I’ve taken a new position at my big-boy job, and it’s throwing me back into the world of coding. As with the majority of businesses, ours runs on Dell PCs, but my new lead wants to change that (at […]

macDisplayWithBinarySo I need your help, dear readers. I’ve taken a new position at my big-boy job, and it’s throwing me back into the world of coding. As with the majority of businesses, ours runs on Dell PCs, but my new lead wants to change that (at least for our group). We’re a small enough company that a shift to Macs for a small group of us (who can support ourselves technically) isn’t out of the question. But we need some sound arguments to take to our owner as to why using Macs would be a superior choice for the new development practice in our group. Think you’ve got some solid input for us?

Ideally, we’ll answer two different questions here. The first would address the best arguments for using the Mac platform as our main development machines. What makes them a better, more flexible — even more cost-efficient — solution to our large, beefy, Dell machines that we’re currently using (in between blue screens). The second bit of feedback I’m hoping for, is what you’ve found to be your streamlined software configuration for such tasks. So let’s get to it.

I must confess, it’s been awhile since I could call myself something reminiscent of a code monkey. To be more accurate, it was before I was using a Mac full time (as an adult, that is). So while I’ve got a lot of experience with Macs, I’m not well-versed in the code development side of things in their current incarnation. Obviously, XCode rocks for the likes of app development for OS X and iPhone, but that’s not what I need. We’ll be working mostly in Java and SQL. Having tight access to the command line, databases, and code repositories will be important. Multiple environments (probably via virtual machine) will be pretty helpful, too. So these are the general parameters to form our Mac argument around. Go!

The other part I’d like to address is best software setups to achieve the above. NetBeans looks like a no-brainer for the IDE. (I am, of course, open to suggestions, hence this post!) But more specifically, how are you using the other tools like databases and virtual machines and such? Do you like to use the OS X in-built MySQL database and Apache web servers? Or have you found that installing them standalone or using the likes of MAMP results in a better set of options? Which OS X tools are useful, and which third-party tools are ideal? Basically, any firsthand experience as to what works best for developing on your Mac — even if it’s using some parts of Windows or Linux in a virtual machine — is what I’m looking for here. Should we win this little war of ours, I’d love to hit the ground running rather than reinventing the wheel.

As you may be able to tell, I’ve got my own ideas for some arguments. Perhaps some of the requirements I’ve listed are leading, but I’m truly looking for your experience and input. This really isn’t meant to spark another Windows vs. OS X flame war, so let’s please stick to fact and experience and leave the emotion at home. To that end, even if your feedback is that Windows has been better in your experience, let’s hear it! I’d love to use a Mac at the office, but if it’s not going to be the best tool for our needs, then I want to know that, too.

With Apple’s hardware slowly fighting the good fight in the workplace, I’ll wager that there are others out there looking for similar ammunition to take to their tech departments to get Macs in their own shop. If you’re looking for specific areas to strengthen your pro-Mac arguments, let me know those in the comments as well. If we get enough, we can do a follow-up article and try to get feedback for your needs, too.

A big thank you in advance for the valuable input that our reader base undoubtedly has to share.

  1. I work for a company which makes primarily Windows software. We have a small (but growing) group who use macs. We pretty much do what we can in OSX, and then do everything else in VMWare. It’s actually quite nice to have a proper unix command line for sshing into linux and solaris dev boxes. Also, most of us have multiple vms for different tasks, and even different operating systems for development and testing. I often have linux, windows and osx running at the same time. I can also have Windows XP, Windows 7 64-bit, Windows Server 2003, and Ubuntu installed on one machine in a way that is actually manageable.

    If everything you need can be done in OSX, you’re good to go. Otherwise, become a VMWare power-user, and your windows only tasks will still be easier than on a pc. The vmrun tool which ships with Fusion and unity will be your new best friends.

  2. CookBook Chef Thursday, May 7, 2009

    I am a Windows developer, and I bought a Mac Pro two years ago as my primary development machine (and I was working for M$ at the time!). It is a beefy enough box (8 GB of RAM) that I can do my development in a Parallells VM, and have virtual web and database servers in other VMs. It gives me a true distributed environment in which to develop, plus, I can create other client VMs with which to test any software.

    The memory upgrade wasn’t cheap ($600 at the time, I think), but I felt it was a better deal that most of the prebuild machines; most machines from Dell, Compaq, etc could not do the amount of memory the Mac Pro will do without going to a server class machine, which usually removes multimedia capabilities.

    Plus, I am now learning OSX and iPhone development, which has become enormously useful in the current economy.

  3. as a note you may want to look at the Eclipse IDE… it’s pretty popular and has a good following… I personally prefer it for my Java work… it’s rich in features and has plugins for pretty much everything.

    I cannot think of any reason why you shouldn’t switch to Mac for dev work… Windows has no benefits over OSX… whereas I do find compile times etc a little bit snappier under OSX and I like having Unix commands etc… you could use Linux.. but as you are a Mac guy you will be much more comfy going with what you know and love.

    I’d suggest you do some googling for mac tools for databases and see what suits you
    I personally installed a version of mysql straight off the mysql website + the admin and query browser tools (as I’ve always liked their simplicity)

  4. I certainly don’t want to start a religious war, but don’t assume that NetBeans is a “no brainer” decision. Eclipse is, in my opinion, a superior tool and is pretty much universally acknowledged as the market-share leader in Java IDEs. Plus, it is a platform on which you can build small plug-ins or entire rich-client applications.
    With Oracle’s impending purchase of Sun (and thus, NetBeans), the future of that product is somewhat uncertain, given the fact that Oracle is already a member of the Eclipse foundation and a big-time contributor to various Eclipse projects; they are heavily invested in Eclipse which means nobody knows what they will do with NetBeans once they own it. Even if I were not already an Eclipse fanboi, I would think long and hard before making an investment to adopt NetBeans as a dev tool.

  5. I recently switched to a Mac for all of my development. Here’s what I recommend. I don’t use MAMP because I wanted to understand the MySQL/PHP/Ruby/et al installations better and be able to upgrade them without waiting for a new MAMP release.

    I did use the default Apache and PHP installations and have had no issues with them. Everything with the installations was straightforward. The only sticking point I found was the PHP to MySQL socket – a quick Google, and you’ll find a bunch of tutorials that show you how to fix it (it’s literally a 2 minute fix).

    Since we (unfortunately) still do some old .NET/SQL-Server development, I installed VM-Ware. I have had zero issues – all the database development and code has run perfectly when uploaded to a Windows server.

    I installed XP using the BootCamp option, in case I wanted to run Windows with full hardware acceleration. It’s turned out to run so fast in the VM, that I have never booted into XP directly. Hence, on new machines, I just install XP in the VM. Installing in the VM also gives you the additional option of being able to “Suspend” Windows. Using the BootCamp option, you lose the ability to Suspend windows in the VM and you have to shut Windows down completely when you want to stop running Windows.

    For dev tools, I use the MySql Admin tools that come from MySQL. I also use Sequel Pro (http://www.sequelpro.com/). For text-editors I use Smultron and TextWrangler (each has their own nuances that work better for different tasks). For IDE’s I use XCode(of course) and Aptana (http://www.aptana.com/). I haven’t tried NetBeans or Eclipse on the Mac yet as these have served my needs for now. For FTP I use CyberDuck (http://cyberduck.ch/). For Office/Excel, I use Neo-Office (neooffice.org) and have had no issues converting documents (so far).

    If you use any Adobe products (Fireworks/Dreamweaver/Photoshop), you’ll want to have 4gigs of ram. I started with 2 and everything worked great, no matter how much I had running in the Mac and the VM. But when I tried to run an Adobe product (on the Mac) with the VM running, the machine would get slow. I upgraded to 4 gigs of ram and the problem went away completely.

    I agree with the earlier post that said “your windows only tasks will still be easier than on a pc”. I’ve been very happy with this setup and would highly recommend it to all developers – Windows, Mac, OSS or Other.

  6. Also, don’t just assume that NetBeans and Eclipse are the go-to tools for Java development because they are free.

    I highly encourage you to take a look at the free trial for IntelliJ IDEA by JetBrains. Its a great app, has a thriving community producing a lot of great plugins. Personally, after 7 years of developing exclusively in Eclipse/WSAD… I tried the 30 day trial, and ended up purchasing my own license to use at work.

  7. Richard Goodwin Thursday, May 7, 2009

    I use VMWare when the development depends on a complex systems config and I don’t want to mess with my mac too much (as well as Windows and Linux being my target platforms). It lets me match the config of a target platform. Also, its nice that you can “freeze dry” your work in a VM for later.

    For IDE’s I prefer IntelliJ, and Ecipse. But a lot of my work involves groovy, grails and maven so my view is slated toward IntelliJ for that reason.

    But, for a lot of work a huge IDE is just overkill to me. I have been using TextMate and Coda which have java bindings but don’t require you to take a coffee break while they start up. Smultron is also nice for a basic light weight editor. If you are unix savvy you can just use emacs or vi in a terminal too. (another nice thing about Coda is that it has a tabbed terminal built in).

    Also for version control I have starting using git. If you are mobile that is really nice. Just much nicer control on repo locations as well as letting you merge to a master repo later (Mecurial does this too). The other nice thing is that it can work in conjunction with another standard SCM system such as SVN or Perforce (we use perforce where I work). So you can keep changes and work that you don’t want in the corporate repo in git.

    Small tips: I also find AppleScript handy for starting in terminal processes such as Apache etc. I am not a fan of it as a coding language. But, if you have 4 different apache configs you need to run for 4 different projects it helps out. If you are doing Web Dev enable Safari dev mode (which is similar to firebug). Make sure to install XCode so you have gcc to compile packages such as apache or others if you need them in a custom config.

    Note: for background I work with Windows, Mac, and Linux on a regular basis.

  8. You need to contact these folks who have made the move from the MSoft development arena to the Macintosh one.

  9. Are you deploying to Linux? If so, that’s a +1 for using Macs for development since you have a real Unix underneath, making the dev environment more similar to production. This is also helpful if you end up needing a piece of middleware that doesn’t have good windows support.

    Not a Java guy myself, but word on the street is that IDEA rocks for that, so +1 on giving it a shot.

    Good luck!

  10. Daniel Kvasnička jr. Thursday, May 7, 2009

    I’m a (partly) freelance developer specializing in Java as a platform for web applications and I also do PHP — if I have to.

    I switched to Mac from Linux and I have to say, that for LAMP development, Linux has served me better. The whole package ecosystem of Ubuntu has proven to be a big advantage against MAMP in cases I needed to customize my environment. Well, maybe it was bad to use MAMP and not turn to MacPorts or Fink. Maybe it was just that.

    But for Java — which is my primary platform — Mac OS X is a superior dev system. 1.6 is available for Mac either as an official build or as SoyLatte, which is more than usable for headless (= no Swing etc.) development and I have no problems fueling my development Tomcat instance with it and then deploying the app to linux servers. I’m an Eclipse guy, but if you like NetBeans better, so be it :) but hey, Eclipse guys has recently started rewriting it in Cocoa :)

    All the JVM versions are neatly set up and structured in OS X — as usual with framework versions — and that’s good. You have a whole bunch of GUI tools for Java installed in OS X. Latest Java updates are not always coming in time… but when you deploy a mission critical app, you don’t swap its JVM’s versions with every update, do you…

    As for databases, I thik that available SQL tools for the Mac speak for themselves. There are some luxurious jewels among them.. although I’m perfectly satisfied with the free official MySQL tools.

    So with Java, I haven’t lost a bit of productivity in compare with Linux — I gained. Because of all the nurturing and joy of usage OS X gives me so that I can focus on my work.


Comments have been disabled for this post