Reader Feedback: Macs as a Superior Development Platform?

24 Comments

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 (s 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.

24 Comments

Nick Santilli

Wow – thank you for so many great comments. This is definitely the valuable feedback I expected out of our great readers. My apologies for the long delay in responding. This post dropped while I was on vacation, and then upon return I had to dig out from under all of my bajillions of emails that awaited me. I’m finally back to being a contributing member of society again.

Anyhow, that’s everyone for the feedback. Sounds like I really need to check out Eclipse. As I mentioned, it’d been a while…

Rick Blair

I work in a windows/linux shop and develop java/SQL on a mac. I have used NetBeans, Eclipse, and Intellij. I prefer eclipse first then IntelliJ. I also have MySql, PostGres, Tomcat, Ant and Apache loaded in /usr/local. Pretty much a great development platform. It is real straight forward to download and install packages using the terminal and command line tools. If you are used to *nix with a terminal and a command line, then you will feel right at home. Getting PostGres, and MySql to run at startup is different than on linux, but the process is the same. You edit/create a little script and put it in the correct place. Googling for how to do so will find the solution. Like wise with a custom install of apache or tomcat.

CVS and SVN support are built in as is emacs and vi. Yes people still use them!

I have much fewer problems with my mac than the windows guys and the linux folks are a bit jealous as well!

All in all a great OS development platform!

Cheers!

Robert Wenc

I use IntelliJ IDEA on OS X. I’ve used Eclipse/WSAD before and I’ve very impressed with IntelliJ (even if it does cost some $) it’s worth it. Spring support is really good in it. I run it in 64-bit mode, but it has some quirks mostly due to Apple not have a super-stable 64-bit Java6 JVM yet. I’ve been using the latest builds and it’s getting much better compared to the first 8.x releases. For database, I use local MySQL with CocoaMySQL or you can download Oracle SQL Developer (which runs well on OS X) if you got Oracle.

Rob Oakes

It appears that the experience can be very different depending on the tools you intend to use. For database work based on MySql and Java, the Mac is an excellent solution. However, the setup can be quite onerous. I recently made the decision to switch from a proprietary solution (Matlab) to an OpenSource one (Python). This was done slowly and after translating most of the base code myself.

The original plan was to purchase Macs and use them for our main development environment. I started by buying myself a 17 inch Macbook Pro and trying to configure it for cross platform work with both Mono and PyQt. This turned out to be a rather substantial nightmare. It turns out that the Mac installation of Python and several of the other base technologies were added as an afterthought.

On K/X/Ubuntu Linux, a full development environment can be configured in just a few minutes by typing “sudo apt-get packagename.” You then patiently wait for the package to be downloaded, configured, and updated automatically. And though a similar solution can be found in MacPorts, I found much of the software to be out of date or buggy. As a result, in many cases I found it necessary to manually download the source code, resolve dependencies and build the software from scratch. I also discovered that the released source often included bugs or errors that had to be manually patched prior to successfully building the binaries. Rather than just a few moments, the setup of my build environment required nearly four months work of weekends and evenings. And things still don’t quite work right.

I have since decided that our primary development environment will be on Dell workstations driven through K/X/Ubuntu. It is more cost efficient, all of the same OpenSouce tools are provided, but other people worry about the setup, configuration and updating.

One other though, while I rather like TextMate for a code editor, it has just enough quirks that I get rather frustrated while using it. (My life would be much happier if the developer could get around to doing a proper implementation of properly indented line wraps or code folding.) I’ve tried nearly all of the other text editors and can’t find one with which I am completely satisfied. In contrast, the e-TextEditor for Windows and Linux gets all the small things right and supports TextMate bundles.

Rather than Mac, I would recommend Linux workstations. Though most Mac users brag about real Unix underpinnings, the truth is that Unix and OpenSource is poorly integrated into the software. In contrast, Linux is much better integrated. Further, you will get much more capable hardware for the same price. The Apple premium is very, very real.

Christian

Hi,

i switched to Mac (again) on 2006 for a test drive on an 17″ iMac and soon (August 2006) i made a MacBook Pro my primary machine.
I develop for Oracle using, JDeveloper, XCode(!), TextMate, Shell (iTerm mostly), CornerStone (subversion), EClipse, TOAD (in Windows using Parallels 4) and all the windows only Oracle Tools (BI Suite/Forms/Reports and so on).

The platform is highly efficient for me. I can run the shell scripts that are supposed to run on our linux or other unix db and/or app server locally before i deploy them.

Having a real unix with a efficient shell really helps a lot as soon as you realize you have it! After years on the windows platform you almost forget what can be done using shell scripts.

I even use XCode to develop Unix/Linux serverside C Programs on the my Mac and deploy them to linux using gcc compiler finally.

Also the integration of all the programs on the mac (drag a folder on iterm or Terminal.app to get its full path into the shell) increases performance when coding an working step by step.
The only time i have to boot my mac is when system update are immanent, the windows vm is also stable since more than 2 years, mostly because there are no more installs to be done on it, i use only 4-5 Oracle specific programs in it, where there are really no counterparts on the mac.

System management on the mac is kept a the absolute ZERO effort level. I naver have to dig down into the system to make it work as i had to my windows machines.
That alone justifies the buy. Price will not make a difference comparable capable machines for windows haver almost sames prices. Only the 79.95 for either Parallels or VMWare have to be taken into account. The (Windows XP!?) licences from your old dell machines can well be used inside parallels.

My adwise: GO GET MACS.

Gerd

– Eclipse 3.4 for Java-development.
– DB Solo for database work.
– VMWare for your local test-environments. I created thin WinXP and Linux clean installs and then reimage whenever necessary.

Daniel Kvasnička jr.

#16: What “better than OS X commandline utilities” and “server tools” do you mean — considering Java & SQL development?

LPC

You might want to think about posting this in a Windows-based forum, as well, just to really get both sides of the argument.

MS

If you don’t really care about the Xcode kind of development for applications, you’d be better off IMHO using an Ubuntu Linux setup + MySQL or Postgres SQL + Java/Eclipse IDE. This gives you better than OS X commandline utilities, server tools, open source software packages and also the security (no Windows, so no bluescreens, no viruses).

There is a reason why LAMP (you can Google that) is considered a highly cost effective and mature stack.

Zachary Abresch

I use Espresso as my main code editor / FTP. Terminal gives you all the command line love you can handle. I recently discovered Sequel Pro which is a great remote SQL client. I’ve been developing on a Mac for over 10 years (converted from a PC geek) and will NEVER go back for ANY REASON!

Ricki

We do Java, Flash/Flex development on Macs. Our setup is:
Eclipse with:
MyLyn task manager
Trac connector
Subclipse

This hooks up to Assembla.com for Trac, subversion, wiki, scrum logs, tickets etc. absolutely brilliant service for a low price, we could not get close to hosting our own code server without paying at least 10 times the Assembla rates.

My favorite part of this setup is that I never have to leave Eclipse, everything is integrated, not even a browser or a subversion client is running when Im coding.

Come to think of it, I could be on a PC 80% of the time and not notice it(disregarding the design jokes and win pop ups) that is a perfect setup in my book:)

Some C# code and data base maintenance/tier programming is done on Windows boxes because there isn’t much to rival Visual Studio there..

The right tool for the job.

Patrick

If you’re primarily building web applications then I would say a Mac is your best bet. CSSEdit is wonderful for doing CSS and I’ve yet to find a solution that is as good on the PC. Apache built in is also very strong while still managing to stay out of your way. Also, machine for machine, my Mac feels a lot better than an equivalent PC when I’m doing my normal work.

Like Dan says – if you’re deploying to Linux then I’d insist on using Linux or a Mac as your development machine. You want your development environment to reflect the production/staging environment as closely as possible. Also, if you spend your whole day in a unix shell, when it comes time to figure out what is wrong with the server you won’t be juggling windows and unix commands in your mind when trying to figure out what’s wrong.

As much as love my Mac for stuff in general, if I was deploying to a Windows server and working in a Windows environment then I’d want to just work with a Windows machine.

I spend all day coding on a Mac in Ruby on Rails and deploying to Linux servers. I have to do a bunch of CSS on a regular basis and Textmate is really awesome for a lightweight developer’s text editor. At my previous job I used a Windows machine to write desktop applications for other Windows machines and I spent all day in Visual Studio building .Net applications. Gotta use what works.

Luis M Urbina

You will find that for many of your choices it will boil down to personal taste and preferences.

I find Netbeans very elegant and intuitive. It has been pushed by Sun as the ‘up to date, JSR compliant with the latest features’ IDE… as a way to push the community (IBM/Eclipse) by way of competition towards adopting new Java features. With regards to marketshare Eclipse is bigger, and Netbeans has grown. IntelliJ IDEA (commercial paid licence) has a loyal following (small marketshare) who literally swear by it.

With regards to update speed and implementing new Java features I would say that Netbeans comes on top, closely followed by IntelliJ IDEA.

Netbeans 6.7 coming out in less than a month will have a native look-and-feel, and rumours state that Eclipse is following suit.

Pros on using macs: tight control on the platform, easier to have a standardized platform used by all developers.

Cons on using macs: java updates come through quite slowly (although you can use soylatte’s open source jvm instead) and some options are not available (afaik only the Sun CDC CLDC emulators for Java ME).

For MySQL development I have used MAMP as a localised installation (a one click apache/mamp/runs out of the box installation) on my laptop before deploying remotely, and I haven’t come across any issues.

I use bootcamp regularly to switch to windows/vista for some Java ME development. Surprisingly (or unsurprisingly?) I tend to be more productive when I do so as my Windows installation is quite spartan – It is hard work to be distracted there – I use my home computer so in your case your mileage may vary.

Overall I tend to switch regularly between mac os x and windows and I find both useful. The most irritating thing in Windows I have come across is the automated updating/rebooting (which drove me absolutely bonkers) but now I do all my updates manually. I am not ‘religious’ about the O.S. I use.

E.T.Cook

Navicat is still superior to all the native Mac SQL apps, including querious and sequel, if for no other reason than the fact that it supports http piping.

I personally prefer “lighter” environments like Espresso or Textmate for development over the likes of Aptana, Eclipse, Zend for Eclipse or Netbeans.

MAMP Pro is also a decent purchase IMHO, the administrative control panel is fantastic.

Daniel Kvasnička jr.

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.

Dan

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!

ManOfSnow

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

Richard Goodwin

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.

Brian

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.

dmaille

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.

Eric

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.

Tim

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)

CookBook Chef

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.

Michael

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.

Comments are closed.