
Windows to Mac to Windows to Mac to... Linux? It doesn't matter. - themcgruff
http://37signals.com/svn/posts/3074-windows-to-mac-to-windows-to-mac-to-linux-it-doesnt-matter
======
wulczer
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
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.

~~~
SomeCallMeTim
I develop mobile game software (Android/iOS), but what kills me (and keeps me
on Windows, unfortunately) is the fact that I can't find an editor that keeps
me as productive as the one I use on Windows (Visual SlickEdit).

It's honestly not perfect, but for C++ and Lua it's unequaled in getting
references and autocompletion correct.

And since I also have a Windows target, I can take full advantage of the very
clean debugger that Microsoft Developer Studio provides (for the cross-
platform code). I spent a year with Linux on my desktop, trying every debugger
tool available, and nothing comes close to working as well.

Yes, I've tried vim and emacs. I even use vim when I need to edit over an ssh
link to a server. And I could imagine getting my fingers used to the many-more
keys I'd need to hit to do everything I do in SlickEdit in vim, but vim is
STILL is missing two of the most important features I use (the cross-
referencing/smart completion I mentioned above, and an auto-completion from
the same file that I get by hitting shift-ctrl-< or ->). The features vim does
support require more keys -- and keeping track of editing "modes", which is
something else I don't want to have to do. And since I can write code much
faster using those features (and fewer keypresses), I can't imagine switching.

I used SlickEdit on Linux for the year I was there, but it's based on X, and
doesn't integrate with modern desktops as well as a result. It even has a
built-in gdb wrapper, but unfortunately it can't do as much as Developer
Studio on Windows. :(

~~~
dekz
You don't really need to keep track of the vim mode, you start typing text and
either your text is entered or you now have half of you code all in capital
letters. But seriously, as with everything it has a learning curve which is
quite minor when you use it as your main editor. It becomes quite essential
when you have the need to ssh into different machines on different platforms
for distributed testing etc.

~~~
SomeCallMeTim
I use vim when I ssh into machines for doing quick-and-dirty edits. I know how
to use it.

It's pretty well established that forcing a user to keep track of mode is just
bad UI design. I actually use vi relatively frequently, to the point of having
internalized the mode concept, and I STILL occasionally make mistakes. If
you've got vi in six different shells, how CAN you remember what mode they're
all in? You can't. You need to look. Which interrupts the flow of development,
at least for me.

And I can't forgive the extra characters you need to type to do just about
anything. I was just using gvim on Linux, for example, and to paste from the
system clipboard took 4? 5? character presses. You simply can't defend that as
reasonable.

For serious development I would NEVER switch to vim/gvim, at least without
some major keyboard remapping to, well, the defaults that you'd find in any
modern editor. It's more than getting used to it--more keys means slower
development, period.

Just now I was able to select the previous sentence with about 3 keypresses.
Copy and paste would be a standard ctrl-c/ctrl-v. No worrying about mode, or
counting characters -- and I'm in the edit window in Chrome. It shouldn't take
me more characters and a completely different set of finger reflexes to do the
same thing in my programming editor.

~~~
dekz

      Just now I was able to select the previous sentence with about 3 keypresses. Copy and paste would be a standard ctrl-c/ctrl-v. No worrying about mode, or counting characters

j-V-p = 4 which is a lot less than 3+2+2 of what you described. So your point
about vim requiring more keypresses seems moot.

~~~
SomeCallMeTim
First, I was inserting, so it would be ESC-up-V-something, and ESC requires my
hand to leave the wrist rest. Problem is, I occasionally don't notice I'm
inserting (or not), and as you pointed out above, that means that half my
buffer is now screwed up and I have to shift mental gears to fix the damage.
That alone is unforgivable.

Second, I hit Shift-Up-Ctrl-Left-(Release Shift)-C. I wasn't selecting the
LINE, I was selecting the sentence, which ended in the middle of the line. And
the keys are all grouped usefully AND ergonomically. Between the arrows,
shift, control, home, and end, I can select characters, words, lines, here to
the start of line (or buffer), here to the end of line (or buffer), and throw
in insert and delete and I can copy, cut, and paste, as well. All using keys
that are standard to almost every app on Windows (and Linux, for that matter).
When it's that easy, why would I also feel the need to train for a completely
different set of key strokes?

I was giving as an example how MOST of my finger key memory works even when in
Chrome, and the same is true of almost any Windows application I'm in. I don't
need two vastly different sets of keyboard skills depending on whether I'm
programming or writing on HN.

When I AM in SlickEdit, I can hit 'up' 'ctrl-c' to copy the previous line
(copy is set up to copy the current line when no text is selected). If I want
to select lines like you did in vi, I can hit ctrl-l. A square block, ctrl-b.
The current code block, shift-ctrl-]. Everything nice and mnemonic, and
automatically "visual". But most importantly, no modes to remember, manage, or
otherwise distract me from coding.

You can argue all day that one key press plus or minus doesn't make much
difference. But some key combinations are well designed from a user interface
perspective, and some less so -- and regardless of the merits of the design,
using the one that works everywhere that ISN'T vi means you're that productive
everywhere.

Where vim/gvim really falls short for me (beyond anti-ergonomic key bindings)
is that I really want it to be an IDE, not just an editor. I can ask SlickEdit
to open a file by typing a few characters of its name and then selecting it
from a list of all files in the project that match. I can tell it to build and
end up with a list of errors that I can jump to. I can ask for symbol cross-
references throughout a project and it will find them. Even if it's a symbol
like "init" that's defined in a C++ template; it might find a few it's not
sure about, but mostly it can figure out what classes derived from that
template and show me just that list, ignoring other functions called "init".

vi can do SOME of these things, but in general only if you jump through a lot
of hoops to get it all set up. The last time I tried to configure "tagging" so
I could get references, though, it completely failed with respect to templated
classes. Maybe it's better now, but back then it worked in SlickEdit and not
in vi.

------
zerostar07
_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
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.

~~~
zerostar07
python, for starters. scipy/matplotlib dont work with osx's shipped python

~~~
brisance

      Lots of open source software doesn't even work on osx.
    

Failing to work out of the box (for whatever legal reasons) is very different
from "doesn't even work". Finality was implied in your original post.

Enthought has binary distributions for the various platforms for a long time.

~~~
zerostar07
Sorry i meant "doesn't compile", which is the essence of open source programs
anyway. If that wasn't an issue on OS X there wouldn't be so many porting
projects (macports, fink etc). And if you work with non-popular (e.g.
scientific) programs that's not even an option.

~~~
edu
Compiling software is not trivial, that's why you have macports, fink, etc...
Like you have apt, portage, pacmacn... on Linux distros or ports on FreeBSD.

------
andrewheins
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
Or anyone making music, or editing video. The commercial offerings in those
areas still far outstrip anything available on Linux.

~~~
jebblue
Would that explain why Linux is used to develop so many special effects in
Movies, not Windows?

~~~
cageface
Video editing and modeling/rendering effects are completely different
toolchains. Tools for the former are still very crude compared to what's
available on Mac/PC. Support for the latter is good on Linux, probably thanks
in large part to the Unix legacy imparted to the effects industry by SGI.

But a lot of the Linux machines you see in VFX shops are just headless render
nodes. People doing the creative work often use Macs or PCs.

------
jlarocco
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
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

~~~
MatthewPhillips
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.

~~~
lucisferre
The homebrew comment (which I can't reply to for some reason) is good, but not
totally fair. Homebrew has to compile everything, while this isn't a huge
problem with todays machines it is still a bit of a time sink. Homebrew
regularly has packages that fail to build. There are over 400 _open_ pull
requests for the project at the present time to illustrate this problem.

Homebrew != apt-get or any other linux package manager.

~~~
tkrajcar
Well, hang on there. I'm not here to become Mr. Homebrew Defender, but saying
'this project has 400 pull requests, that's a problem' isn't fair at all. The
majority of those pull requests represent users updating formulas to new
versions of things, or adding new formulas, not fixing problems that prevent
things from compiling.

Like any solution, particularly a 100% opensource solution, it's not perfect,
but it does do the job, the majority of the time. YMMV, but I have 24 Homebrew
formulas installed and have had zero problems with any of them.

~~~
ajross
I think the point was more that in comparison to the package systems deployed
for Fedora or Ubuntu or OpenSUSE (also "100% open source"), Homebrew looks,
well, pathetically primitive. Seriously, look at the way launchpad or koji or
OBS work sometime.

------
simonsarris
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
"Someday we'll have xmonad as a Firefox extension."

(bursts into tears, runs out of room)

~~~
weaksauce
The state of memory leaks in firefox extensions is terrible even for trivial
extensions... I can't imagine how bad it would be with something non trivial.

------
buro9
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
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.

~~~
justsomedood
How is copying in the windows terminal hard? Highlight and press enter.

~~~
spacemanaki
I just tried to do that on a Win7 machine sitting next to me and it didn't
work... it doesn't seem to let me highlight anything at all? I normally
wouldn't comment about something like this but I wanted to do this literally
10 minutes before I read your comment. Anyway I don't think it's controversial
to suggest that the stock terminal on Windows kind of sucks, although I gather
that PowerShell is pretty good.

~~~
Someone
Hit alt-space (?) or click in the top left corner to open the system menu (?).

It has menu items for copy and paste; 'Properties' allows one to enable a more
useful way of copy/paste (QuickEdit mode, IIRC).

It isn't enabled by default in case people want to run DOS apps with mouse
support. Someone should start a pool for people predicitng when this default
will be changed.

------
virmundi
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
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.

------
bryanh
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
I have used Cygwin for quite some time. Not great, but not bad either.

~~~
wollw
Not bad, but not what I'd really call good either. I was forced to use cygwin
while working on a project last year and while it gave me some familiar ground
for sure but it seemed like every which way something was just... off. I can't
really think of much in the way of examples at this point but I don't have
fond memories. One thing that did annoy me was a total lack of decent terminal
emulators and I ended up using something based off PuTTY. Cygwin was certainly
better than nothing but I'll take the real thing any day.

~~~
adam-a
I always go for mintty [1] on Cygwin and have generally found it pretty good.
I agree Cygwin is not perfect though.

[1] <http://code.google.com/p/mintty/>

------
dekz
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
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
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
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
Photoshop. It's what keeps going back to Windows/Mac OS. Make Photoshop
install without headaches in Ubuntu and I'll switch tomorrow.

~~~
coderdude
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
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
Just a note; Illustrator does have some alternatives...

But Photoshop is still irreplaceable.

~~~
m3koval
Can you suggest a good Illustrator alternative for Linux? I've tried a few and
was never satisfied largely because the GUIs were very difficult to use.
Perhaps I tried the wrong ones!

~~~
nvk
There is Inkscape, but honestly... There isn't anything i like.

Very few "front end" types in the Linux community.

------
zyb09
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
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
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
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

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

------
kayoone
Well it does matter if you do anything else than webdev..I develop games with
Unity which is only available for Windows and Mac... Also building native iOS
apps is only possible on one plattform...i would consider Linux otherwise, but
no choice. So OSX is the way to go, and i love the tight hardware/software
integration which makes the macbook sleep/wake-up etc without any issues,
which is always a pain on Linux to get right.

------
b2spirit
Ryan said: "it’s not some political statement about free and open source
software"

Free and open source software is not motivated by politics, but by a
development strategy to get as many people as possible to find and fix bugs.

Free software is politically motivated, by the love for freedom and the hate
for slavery. If freedom matters to a person, it will matter to him whether he
uses Linux, Microsoft or Apple.

------
moreorless
I find these articles to be silly. A lot of it depends on what you need to
accomplish on your computer. The right tool for the right job.

------
evandena
I'd love to run Linux at home, but gaming keeps me on Windows. Sure I could
dual boot, but it's such a pain for little gain. I tend to hang out voice chat
programs while gaming, and interrupting conversations to reboot to Linux after
a gaming session is an inconvenience. Same story for OS X.

------
HalibetLector
It does matter. I'd love to do my social game development in Linux (and I even
tried it, for a while) but the technologies I use are Flash and Unity 3d.
There is no effective way to develop with either of those technologies in
Linux. So I settle for the one supported OS with a shell: OS X.

------
axiom
Wait a year.

Ubuntu has a very powerful tendency to slowly develop crud and become
unusable, until you just need to start from scratch and re-install the OS.

Not sure if this has changed, but laptops tend to be a mess with Ubuntu.
Things like closing the lid and going into sleep mode would fail seemingly at
random.

------
jiggy2011
I find myself using VMs allot since I have a set of preferred applications for
doing my work. The majority of them are platform agnostic but some are not and
the ones that are not are all for different platforms.

------
alexbell
Unfortunately it matters if you do mobile development, iOS being one of the
two must have platforms and requiring a Mac. I do use and like Ubuntu though,
and could see myself switching over with minimal hassle.

~~~
MatthewPhillips
I was developing for iOS on Arch linux last night. The platform being
html/css/js.

------
iamdave
So... to summarize this post:

Use whatever feels comfortable and enables you to get work done.

Insightful post.

------
dangrossman
DHH doesn't seem to agree. If you're running Windows 37Signals isn't going to
hire you.

<http://david.heinemeierhansson.com/arc/000433.html>

~~~
exDM69
I can relate to them. Good hackers tend to gravitate towards Unix based OS'es
for some reason. So out of personal experience and anecdotal evidence, I would
say that the conditional probability of a voluntary Windows user being a great
coder is less than, say, a Linux user.

Many Windows users are also at a disadvantage because many of them have
only/mostly used Windows. Pretty much any Linux or Mac user has probably had
to (voluntarily or not) use Windows at some point. Also, I have yet to meet
the Windows user who can rationally reason about their choice of using it and
not another OS.

If you've only used one operating system in your life, you are at a
disadvantage compared to people who are proficient with two or more OS'es.

edit: I know this is controversial. There might also be a regional bias, since
I'm located in Helsinki, the hometown of Linux :)

~~~
kenjackson
_So out of personal experience and anecdotal evidence, I would say that the
conditional probability of a voluntary Windows user being a great coder is
less than, say, a Linux user._

If this is true, it's only moderately true and only recently. Historically
Windows had a pretty big advantage in terms of great coders. Including
virtually every game shop almost exclusively (incuding legends like Carmack,
Sweeney, etc...).

It was in part just due to the fact that if you wanted to make money, you
wrote Windows apps. It's like iOS is today, except a magnitude more dominant.

It's only in recent years with the web and mobile where this has begun to
change. But I'd say that only mobile has typically had super strong devs. The
web until just the past year or so has not been a place you could hire
generalists. We've really just begun to see devs that I'd hire to do any work
at our company -- not just web people.

~~~
adam-a
As a counter example, Carmack wrote Doom on a NeXT workstation[1].

These days OSX seems to be pretty hot for game dev, certainly if you want to
do any iOS stuff, and OSX is creeping up as a platform too, with Steam now
available there. No doubt windows will be king for a while yet though.

[1]
[http://en.wikipedia.org/wiki/Making_of_Doom#Building_the_gam...](http://en.wikipedia.org/wiki/Making_of_Doom#Building_the_game)

~~~
kenjackson
Yes, Carmack did like NeXTStep a lot. With that said, most of his career
Windows was his main dev box. Even post Doom he went back to Windows as his
main desktop: "The upside is that windows really doesn't suck nowdays. Win 95
/ NT 4.0 are pretty decent systems for what they are targeted at. I currently
develop mostly on NT, and Quake 2 will almost certainly be delivered on win32
first." <http://rmitz.org/carmack.on.operating.systems.html>

And more importantly, as it relates to DHH's statement, excluding Windows
developers isn't like some odd niche. It's probably a healthy percentage of
the best developers in the world. Fortunately for DHH he's at a webdev shop
where pure coding skill is probably less important than cultural fit.

~~~
286c8cb04bda
_Fortunately for DHH he's at a webdev shop where pure coding skill is probably
less important than cultural fit._

I would argue that, at most programming jobs coding skill _is_ less important
than cultural fit, once you've passed the level of "reasonably competent
developer."

------
jebblue
Chrome, Eclipse and Java are all I need. Those are all on Linux, Mac and
Windows too which works out quite well.

------
stefanve
I have used solely mac's in the last 4 years. At my new work they use windows
I didn't like the idea at all. But actually I don't really care anymore vim,
eclipse, chrome, spotify etc it all works. I need to buy a new laptop and it
is not going to be a macbook pro 15" since I think its to expansive especially
since I had this epiphany :)

~~~
gldalmaso
I sure did mind when my employers changed from Ubuntu to Windows machines. But
the things that really bugged me to no end were:

\- Mouse scroll only works in the active window; \- No native way to pin a
window in front;

For both cases I had to download workarounds, but they don't work very well.

------
Craiggybear
Have both Mac and Linux -- usually prefer Linux.

The article is correct: I too find the experience generally on most levels
between OS X and Linux indistinguishable, although Linux has far more easily
accessible programming tools that are totally free (most Mac equivalents that
do the same job come at an unreasonably high price) and I feel Linux is more
comfortable to program with, generally.

Installing certain tools under OS X BSD layer is generally more of a faff than
just apt-get install or whatever. I also like the fact build-essentials is
much faster and easier to set up in Linux than having to install the whole
XCode stack and then say Brew or MacPorts to get the same level of
functionality.

I spend most of my time in OS X on the command line and use tools like mutt
and cmus in preference to GUI mail and iTunes, so in that respect the
difference between OS X and Linux are not really noticeable. But as someone
else mentioned earlier, if Adobe _did_ Linux ports of all their applications
I'd never leave Linux again.

I never use Windows nowadays. Just looking at it/thinking about it makes me
feel ill, although I have in the past written a huge amount of software in
Windows for other people. _Bleargh_ ...

~~~
billpatrianakos
You mention Macs doing the same job being real pricey and I'm wondering how
you figure that? I have a 4 year old iMac and a netbook running Xununtu. The
tools I use on both machines are basically the same with the big difference
Bering my text editor (Chocolat on Mac and SublimeText on Linux). Other than
that all the tools are free for both platforms. I've got my AMP stack, RVM,
PHP, Apache, SQLite, etc., etc., all free. Even Xcode 4 is free on Lion and
3.6 is free if you run anything less. The Mac itself is more expensive but
doing any equivalent work as I would on Linux doesn't require a real powerful
Mac anyway. I love them both equally but prefer my Mac. It may be a comfort
issue as my Linux box is a netbook but I digress. I'm just wondering, besides
the cost of a mid grade Mac to begin with, what makes you say Mac development
is expensive?

~~~
Craiggybear
"You mention Macs doing the same job being real pricey" -- No, I never said
any such thing. I said _some_ software tools that are free on Linux (some
programmer's editors for example, but a few other little things as well) have
rather pricey equivalents on the Mac (unless you _can_ find something on
Macports or Brew that will compile on OS X. fdupes, mutt and cmus I must have
for example).

Also some things demand I use a specific version of OS X, Why _should_ , say
for example, an editor, _demand_ I use 10.7? Which I've no intention of using.
Why do I need XCode when all I want from out of that is gcc? Not that this is
a major ordeal in any way.

Mac hardware is _slightly_ pricey but it is very good. I have no gripe
whatsoever about that. I _never said_ Mac development was expensive. I said it
was slightly more of a faff to set everything up.

You mention you've a Linux netbook -- so do I. And here's the thing: it also
boots OS X as well and that runs _really well_ on that limited hardware. Maybe
even running better than Linux. I also have two proper, actual Macs as well as
an AMD based Linux PC and _that_ ended up costing slightly more in the end
than a Mac would because of some of its hardware.

Go back and _read_ what I said. You're putting words in my mouth.

~~~
billpatrianakos
I'm sorry, I wasn't trying to be argumentative at all. I was just curious
about how you figured the Mac was so much more expensive but I misunderstood
your comment so the question doesn't matter anymore and when you put it in
terms of software then there's no question the Mac will end up costing you
more. I only mention my experience not to argue that you're wrong but just to
see what you're doing so differently that would make things expensive. But
again, I misunderstood what you were saying to begin with so it doesn't apply.
I know we can all get into heated debates around here but please don't jump
the gun and be on the defensive as not every comment is meant as a rebuttal,
and I was just asking out of curiosity. Sorry, man.

~~~
Craiggybear
Hey, no problem. I just don't want to be misunderstood, dude ;-)

------
funkah
I boot into Windows for work since our whole stack is Windows-based and it's
just easier that way. I agree that to a pretty large extent the OS doesn't
matter when developing. This is especially true when everything is up and
running fine. But there's the rub -- when things go south, that's when you
find out what your preferred OS is.

Troubleshooting a recent virus/malware problem on Windows turned into
rebooting countless times, Windows Update incantations, several malware tools,
and so forth until the OS was unbootable and I had to wipe it and install
everything from scratch. Knowing what I know about Windows and Mac, I know how
much easier it would have been to deal with this problem on the Mac, not to
mention that it most likely would never have occurred in the first place.

So, that's my two cents -- when everything is running the difference can be
negligible. When you hit problems, the difference may not be so negligible
anymore.

------
billpatrianakos
The main point is right but the post glosses over some critical details.

Switching from Mac to Linux is pretty easy. Switching from Windows is
trickier. The languages are the same but setting up your environment is a
chore. Most instructions for setting up local development environments are
focused on Unix like systems. If you learned on Windows and switch to Linux or
Mac things can be strange for you but luckly there's no shortage of easy setup
instructions and terminal one-liners to get you started. If you learned on Mac
or Linux and switch to Windows then you'll have a harder time as you always
have to make sure you're looking for the Windows instructions or tools.

Want to set up an AMP stack (on your system not using Xampp) on Windows?
You're jumping through hoops if you came from any other OS. Want to use
multiple Ruby versions? RVM and RBENV don't run on Windows. Experienced
programmers can make these switches easily with only some minor annoyances but
someone in the first few years of their programming journey will have a much
harder time. The way Windows does things isn't necessarily wrong and it's no
one's fault that it doesn't have any sort of Unix heritage like every other
popular OS these days. But the case can be made that switching to or from
Windows can matter depending on the programmer while a Mac to any Linux distro
switch has a negligible effect on workflow and productivity.

This isn't about Windows being sucky. It isn't. It's just different enough to
warrant a disclaimer, that disclaimer being "while it doesn't matter what
platform you develop on for the most part, Windows does things differently
enough that switching to or from it can matter if you're somewhat green".
These days documentation for most popular tools assume a Unix-like development
environment. Windows users need to Google for instructions.

It's also worth noting, like one of the commenters on the original page said,
that most Linux GUI tools aren't as good as they are on Mac and Windows so of
you're not totally comfortable in the terminal youd better get there or use
another OS. There's no shame in preferring a GUI tool and it isn't necessarily
the mark of a noob or bad programmer. I'm an alright programmer myself, very
comfortable in the terminal, know vi and nano well but prefer a GUI text
editor. It's not bad, just different.

So I guess what I'm saying is that the article's point stands but it's a bit
of an oversimplification.

~~~
steverb
Actually, Microsoft now makes it ridiculously easy to install an AMP stack on
Windows. Just run the web platform installer and select the bits you want.

<http://www.microsoft.com/web/downloads/platform.aspx>

