top | item 3447559

Windows to Mac to Windows to Mac to... Linux? It doesn't matter.

105 points| themcgruff | 14 years ago |37signals.com | reply

149 comments

order
[+] wulczer|14 years ago|reply
I'm not sure I agree with the final point

  All you need these days to build great things is a
  browser, a text editor, and the programming language
  or tool of your choice.
Even when developing web apps there's sometimes need to use a network traffic analyzer, a debugger... Not to mention a plethora of tools for reading/analyzing/parsing log files, graphing benchmark results, generating test SSL certificates and a lot of other things that are not equally available on all platforms.

And there's another consideration: if you're deploying your software on Linux it's just plain easier to develop it on Linux as well.

[+] jballanc|14 years ago|reply
If you design chips, you might wonder how anyone gets by without an FPGA. If you develop a kernel, you might wonder how anyone gets by without remote debugging. If you develop drivers, you might wonder how anyone gets by without a C compiler or assembler.

The problem with your critique is that you're thinking at the wrong level of abstraction. If (and, yes, this is a big if) you are developing a web app on a platform where all of the low-level concerns are taken care of for you, then the final point is completely valid. I'd even go so far as to strike the text editor from that list. Already today, you could (in theory) develop a Rails or Node app in Cloud9, store the code on Github, and deploy to Heroku with little more than a ChromeBook.

Ok, we're not quite there yet, but I hope you get my point... That said, there are still chip designers, kernel programmers, and driver developers. And there will always be "backend engineers" (though I think we need a better term) who need debuggers, benchmark utilities, packet analyzers, etc.

[+] philjackson|14 years ago|reply
The thing that makes me squint at that point most is the lack of reasonable shell when talking about windows. I do so much 'meta' work in zsh/bash/perl that the thought of being without them, or having to use the bits that come with Windows make me wonder how people work.
[+] zerostar07|14 years ago|reply
I’m just as productive on Linux as I was on OS X

I think Linux is far better for developers. GTK, QT, wxWindows and all the python/ruby/you-name-it you want. Lots of open source software doesn't even work on osx. Keyboard shortcuts are everywhere. Best window management (i just love alt-right click). I wish they 'd stop it with the unity/kde plasma eyesore madness, and focused on basic things that ruin my experience such as printer support, multiple monitors / docking station, sleep and hibernate, not breaking my setup every time it updates etc; i 'm content with xfce.

[+] edu|14 years ago|reply
Not flaming, just plain curiosity, but what open source/free software have you found that doesn't work on osx?

I switched to Mac several years ago and any piece of software I've needed has worked, first using macports and now homebrew.

[+] billpatrianakos|14 years ago|reply
In a way you're right but really there is no best or even "better" platform for development. To really get to what is better you have to take into consideration

1. Are you developing for web or desktop 1a. If web, then what server environment 1b. If desktop then what platform

2. What frameworks, languages, and other tools will you need and prefer

I think Linux and the Mac are on equal footing with what's better being purely a matter of personal preference while choosing Windows seems to only be the better choice when developing for Windows or IIS, .NET and Windows only things in general. Mac is great for GUI tools as an alternative to the command line while Linux is great for keyboard jockeys.

I don't agree that Linux needs to cut it out with the UI craziness. They're just trying to make themselves a viable alternative to Win/Mac for everyday users and I think they're doing well. I myself prefer xfce and OpenBox over Unity, GNOME, and KDE too so I just choose to run xfce instead while leaving everyone else to use whatever desktop they like. It's better for certain distros to use the shitty interfaces by default so that normal folks are included while the rest of us use our skill to run an alternative. Also, there's too much of this idea floating around that doing everything from the terminal is a badge of honor. It's cool that you can but it doesn't mean you should. GUI apps are great and there's no shame in using them. Bad programmers can use the terminal for everything just the same as good ones can use mostly GUI tools. I think there's a small minority of programmers who just learned how to get around in the terminal and start bashing all other OSes because they're optimized for the mouse. That's just silly. The best choice is the one that you can most easily set up a dev environment in, supports the tools your workflow demands, and offers the features your personal preference dictates. Choosing anything else is just blind loyalty to some ideal of a "best", "free-est", "coolest" platform "for good programmers only".

[+] andrewheins|14 years ago|reply
For a full-time developer, I agree with the OP insofar as Linux and Mac are largely interchangeable. I develop on Linux and love it.

The biggest exception is for anyone involved in graphics, front-end development, or often works with graphic designers. The lack of native installation of Photoshop and Illustrator wrecks it.

That's what largely spurred my decision to buy a Mac. There's only one OS that currently offers a Unix CLI with native Adobe Creative Suite installation. If Adobe ever offers native CS on Linux, I'll be Linux for life.

[+] cageface|14 years ago|reply
Or anyone making music, or editing video. The commercial offerings in those areas still far outstrip anything available on Linux.
[+] jlarocco|14 years ago|reply
Unfortunately switching the other way isn't as easy.

Linux offers a LOT more customization than OSX or Windows, and after using it for a long time there's a lot of stuff I took for granted which isn't as easy to setup on OSX.

I'm still using OSX as my primary OS, but every once in a while I still come across stuff I can't easily do and think, "Gees, this was 10x easier in Linux."

[+] ecoffey|14 years ago|reply
What I've liked about switching fulltime to a mac laptop is the polish. It's a unix install that quickly sleeps when I close the lid :-P
[+] lucisferre|14 years ago|reply
The sleep comment is apt. Having run linux on laptops many times in the past, the regular incompatibilities and inconsistencies are hard to get past. From power management features, to wifi quirks there is always something that just doesn't work right.

I've spent the better part of my life, from age 6 onwards tinkering with computers, installing and reinstalling OSes and I can honestly, say I'm over it. Now I just want the damn thing to work like every other user. I think being burnt out on tinkering makes me a better developer though. At least as far as creating a good UX goes.

[+] MatthewPhillips|14 years ago|reply
Package management is not a minor part of the "unix install". When I get a just works Mac equivalent of pacman -S whatever, I'll consider using OSX for more than testing.
[+] mbq|14 years ago|reply
So does my Linux pc; it also wakes up when I open the lid, equally instantly.
[+] InclinedPlane|14 years ago|reply
I don't want my laptop to go to sleep when I close the lid, especially if it's plugged in. Is there a setting on Macs for that yet or do you still have to run a 3rd party app?

That behavior is one of the most annoying defaults ever, in my opinion.

[+] simonsarris|14 years ago|reply
Randall Munroe had a much more terse post on the subject:

http://xkcd.com/934/

(Some of you may balk that a cartoon is not a blog post, but commentary is commentary.)

[+] michaelty|14 years ago|reply
"Someday we'll have xmonad as a Firefox extension."

(bursts into tears, runs out of room)

[+] dextorious|14 years ago|reply
Well, "since we do most things on the web now" could also be translated as: "since we don't do much other than read emails, surf the web, do some IM/social stuff, and maybe exchange some documents".

Because sure as hell, 99.9% percent of us doesn't:

1) Write code on the web. 2) Edits images on the web. 3) Write documents on the web. 4) Maintains systems (admin work) on the web. 5) Produces/edits video on the web. 6) Produces/edits music on the web. 7) Watches movies on the web. 8) Does spreadsheets on the web. 9) Plays heavy 3D games on the web. 10) Does DTP on the web. 11) Does 3D modelling on the web.

Web stuff exists for all of these, but much much much fewer people use it than desktop apps.

Last time I checked, programmers use Emacs, Vim, Visual Studio, XCode etc. Those are not web apps.

It doesn't get much better for the general population, though.

Tons more people use something like Paintshop Pro and Photoshop Elements than something like Photoshop Express (the online flash photo-edit tool). And, Google Docs, which is much more realistic a substitute than some online "photo editing" app is, for it's market, is used by a tiny percentage last time I saw the numbers.

Maybe one day we'll do everything in the browser, but this is not that day, and limits in current web technologies (hell, even basic stuff like websockets are not universally available yet) and bandwidth will keep it that way for a while.

There are things that can be done nicely on the web, and things that would be frustrating and a huge throwback to the olden days of slow CPUs and pain. Text editing is one such thing. Everything that needs the handling of large volumes of data (or not that large, anything larger than, say, 10MB) doesn't work that well in the browser.

So, you, the one guy using Bespin for your programming work: good for you, but you are a tiny minority.

[+] buro9|14 years ago|reply
Aside from keyboard shortcuts (Mac still trips me up), I am fine on any platform and notice no difference.

I might occasionally find myself typing 'putty' in Spotlight, or 'dir' in linux, but largely it's all blurred together.

With Sublime Text 2 I'm even more confused. When I'm not in a terminal my editor is consistent everywhere.

Now the big question is more likely to be "What hardware?", not "What OS?", which is great as it gives me the whole world of products to choose from.

The only thing I'll add is: This is all only possible if you didn't put your life in one of the vendor's walled garden.

[+] j_baker|14 years ago|reply
I'm generally a Linux user, but I've grown to appreciate OS X's keyboard shortcuts. Cmd-C will copy text on just about any OS X app including the terminal and emacs. On the Linux terminal, you have to use Ctrl-Shift-C to copy (to avoid sending SIGINT to the current process), and God forbid you ever need to copy anything in the Windows terminal.
[+] virmundi|14 years ago|reply
I find the terminal just horrible in OSX. I'm on snow leopard and it can't even wrap lines properly. Trying to get vim with colors to work is a major headache.

I've also found that the uninstall mechanisms in Linux/OSX to be lacking compared to Windows. Perhaps this is a function of my lack of skill with the tools, but I have no idea how to uninstall the Tango library that the installer added. I'm worried about removing the dmd (D's compiler) since it installed in the /usr/bin. Linux is better that OS X in this regard.

Sadly I'm stuck in Windows for most things, even Node development. I just haven't found a good editor for free that is like Notepad++.

Fortunately for my Java/Scala development, Eclipse works everywhere.

[+] anykey|14 years ago|reply
The built-in terminal is terrible (although at least in Lion it has 256 color support...). I'd hardly consider it a mark against OS X though considering that it is just a piece of software that is included by default. There are plenty of other options out there. I'd STRONGLY recommend checking out iTerm2 next time you're on OS X, it's the best terminal emulator I've had the pleasure of working with.
[+] SkyMarshal|14 years ago|reply
Notepad++ was one of the few bright spots of my erstwhile Windows days, and I still wish for it when I occasionally find myself using Gedit for quick note taking. It was sooo fast with just the right features and nothing supurfluous. But I could never go back to it from Vim now.

As for uninstalling issues, if you can't use the package management tools to uninstall (you compiled from source and/or manually installed?), in the future try using GNU Stow or xStow to group all the pieces in a single directory and then symlinking them to the various system directories. It's brilliant. http://www.gnu.org/software/stow/

[+] tkrajcar|14 years ago|reply
iTerm2 (http://www.iterm2.com/) is a mighty fine drop-in replacement for Terminal.app that adds a whole basket of useful features. I live in it and love it. :)
[+] bryanh|14 years ago|reply
Try going from Mac/Linux to Windows (or vice versa) and see if "getting [your] development environment running for [your] applications [is] just as easy"...
[+] rbanffy|14 years ago|reply
I have used Cygwin for quite some time. Not great, but not bad either.
[+] dekz|14 years ago|reply
I have a Linux PC as my development work machine and a Macbook Pro as my home development machine. Agreeing with the author, yes they are almost indistinguishable when the main tools are Chrome, a termina, vim, tmux, and g++/javac.

There are things which I believe are nicer on the linux development machine (xmonad/apt,yum), but the thing that keeps me coming back to my Mac is that not only is it an above-par development machine, but it is also an excellent freetime/browsing machine. The application ecosystem is far superior, just compare Pidgin and Adium; Settings dialogs (so much unused space). I guess you could sum it up as design aesthetics but it truly makes the difference.

Would I reconsider windows again after a POSIX environment, I don't think I could, but I may try.

[+] tomjen3|14 years ago|reply
Mostly I used to agree with this.

But between a decent command-line, apt-get and gnome-do I don't like the idea of using another OS at all.

[+] emehrkay|14 years ago|reply
I guess it depends on what you do and how you do it. Some business dependent software do not exist across platform.

For example, we deploy to Linux servers so we want our dev environments to closely match that, kinda hard to do with Windows. We use Adobe products to visualize our applications, kinda hard to do on Linux. We need to test in IE, need virtualization software if we're running OS X.

All OSes are not equal. Browsers may be, but I don't develop in a browser.

[+] gurkendoktor|14 years ago|reply
I love my GUI-ish setup of TextMate and CornerStone/Tower; I can only do iOS work because I have a Mac; I will buy a dedicated Windows box when I want to dabble with Windows Phone; I don't know what I'd do with my iPhone on Linux; I like Xcode4 a lot more than MSVC, in any case they are as different as day and night; mice and keyboards are similar, but can you say that about trackpads already? (Honest question - I don't know)

There are a lot of differences between the major platforms. The article is true when all the moons align: You only do web (or Eclipse) work, your phone and all its apps are platform agnostic (OmniFocus locks me in), you have no games, you have no paid GUI apps, you don't care about iTunes ...

I have a whole family of real, existing humans that I'd love to free from their virus-ridden Windows machines. It just isn't possible for what they do.

Not sure what to take from this article. It sounds like indirect boasting about not being locked into anything. It would be more interesting to discuss if that is important.

[+] wenbert|14 years ago|reply
Photoshop. It's what keeps going back to Windows/Mac OS. Make Photoshop install without headaches in Ubuntu and I'll switch tomorrow.
[+] coderdude|14 years ago|reply
7 works like a charm with Wine under Ubuntu if you don't mind working with an old version. I personally find 7 to be sufficient for everything I do.
[+] nvk|14 years ago|reply
It is impossible for any serious Designer/Front end ppl in general to go to Linux, unfortunately, as much as i want to strangle Adobe (can't wait for Pixelmator to mature a bit more), we rely on Photoshop and Illustrator too munch.

And GIMP is not a viable alternative.

[+] nvk|14 years ago|reply
Just a note; Illustrator does have some alternatives...

But Photoshop is still irreplaceable.

[+] zyb09|14 years ago|reply
OSX is like a gateway drug for Linux. I used Windows for years, then had to work with OSX for iOS development. Didn't know a thing about it, hated it (at first). Time passed and now I ssh into vps to set up nodejs. Feels great =)
[+] jinushaun|14 years ago|reply
More correctly, I think OS X is a gateway drug for Unix. With OS X, you get all the "1337 hax0r" command line goodness without sacrificing MS Office and Adobe CS as you would with Linux.

Now... if I could only get a decent Mono set up on this thing. I could cut out Windows entirely.

[+] tjogin|14 years ago|reply
It matters a lot if you're using open source tools, I think.

The people running windows and doing development on open source tools are a tiny minority, therefore whatever platform specific problems they run into aren't going to get as much love and care.

It's different if you're using some proprietary soup-to-nuts toolchain, perhaps with support and all that jazz, then maybe it doesn't matter.

But as long as your support is the open source community, and your tools are the stuff that they put together, and as long as they're all running some flavor of unix or linux (and therefore don't really care about your weirdo windows vista edge case), it'll matter.

[+] webjprgm|14 years ago|reply
For a dev machine this is mostly true. I haven't been able to be as conveniently productive on Windows, since I always end up installing Cygwin eventually, then decide I might as well be using Linux.

However, for a relaxing machine, Linux doesn't have access to the same games as Windows or even Mac. Well, you can often do some clear hacking to get things running on Linux (Wine, etc.) but it's much easier on Mac or Windows.

Thus I still defend Mac as the best mix of Unix development environment + reasonable access to quality games. I usually mention ease-of-use, but as the poster mentions, Linux is much better than last decade.

[+] csomar|14 years ago|reply

  Perhaps surprisingly to some people, Linux hardware support 
  has improved to the point that everything worked perfectly 
  out of the box, just like on a Mac.
I installed the latest version of Ubuntu on my Dell Laptop. After a few minutes, I heard some strange noise from the Hard Drive. I googled to see what's going wrong and I found out that Ubuntu have some problems with Hard Drive Power management. The risks are damaging my SATA drive.

Unless you are using something supported by your Hardware provider, I really doubt Ubuntu will make it work out of the box, just like on a Mac

[+] akavlie|14 years ago|reply
My experience with hardware support was not so hot either. On a ThinkPad X220 with latest Ubuntu, I would get random crashes when unplugging the DisplayPort adapter, or right in the middle of working. Also, lack of proper built in fan speed control. And panels doing stupid things when switching between signel & dual display setups.

Switched to a MacBook Pro, and it's been rock solid.

[+] NegativeOne|14 years ago|reply
He makes some good points, but Linux is still lacking in some areas. Hardware support is a big one and If you want to watch Netflix or do any kind of serious graphic design then you'll have to go with Mac or PC. I'm in the process of building a linux box, but it's just going to be a headless server with remote desktop capabilities as well as running a few local servers for web dev. I can't give up Mac & PC just quite yet...