Mac vs PC for Web developers and programmers
I'm looking for some info before I make a decision about which laptop to buy. I'm a programmer/ Web developer just starting out as an intern and I'm looking for a system I can load up with all my preferences personally preferred tools and take with me between work and home. I do most of my work in open source php, javascript(and various frameworks), xml, AJAX and so on. I also use ASP, .NET and VB (very rarely), but getting a mac to run visual studio for the rare times I need it really isn't a problem(besides I wouldn't be surprised if visual studio started getting a mac port someday like office).
I am totally uninterested in comments like, "DUDEZ PC AM WAY BETT0RZ", or "Mac's are just better... I can't explain why, they just feel better." + "in my butt" --random PC guy.
Give me some real pros and cons so I can make a decent decision.
Some things I need to learn in the future are Ruby on rails or something like that and some other newer scripting languages.
Comments
When it comes to every day normal people apps they "just work" on OSX. When it comes to development, everything "just works" on modern Linux distributions such as Fedora, Centos, Arch, or Ubuntu. On OSX everything is non-standard and fucked up. I had to jump through all sorts of hoops and do other weird stuff with the homebrew package manager to get my code at work to run on OSX. Even then, there are certain things, like the search server, that only run on Linux. With an Ubuntu machine, I can apt-get everything and it works instantly.
Linux is almost always the OS of choice for a development machine except only in cases where the development environment only runs on one of the other two.
@Bruce: I'd say it depends a lot on your use scenario. If this machine is for coding only, meaning you boot up and you code and you do nothing else, then get a PC at the best performance/price point your wallet can bear and install Ubuntu. If you plan on doing anything else then get a Mac. You pay extra, but that is money well spent (in my opinion) since you get much reduced frustration due to stuff "just working". If you run into trouble doing dev work (which I doubt) you can always virtualise (if you're doing light work) or dual boot into Linux/Windows.
All of the Big Three OSes just work, in my opinion.
Let's say you need memcached. Well, the easiest way to get it is to use homebrew, an open source ruby/git-based package manager. Without homebrew, you would be fucked trying to use fink or macports which suck gigantic balls. Keep in mind, none of these are provided by Apple. They are all open source things that people had to make because OSX doesn't have shit for shit. Ok, so you brew install memcached. It works because homebrew is so great.
Now you want to start memcached. /etc/init.d/ no. /etc/rc.d/ no. No such thing! OSX is fucked up and different from everything else ever. Thankfully homebrew gives you instructions.
You can enable memcached to automatically load on login with:
mkdir -p ~/Library/LaunchAgents
cp #{prefix}/com.danga.memcached.plist ~/Library/LaunchAgents/
launchctl load -w ~/Library/LaunchAgents/com.danga.memcached.plist
Or start it manually:
#{HOMEBREW_PREFIX}/bin/memcached
Add "-d" to start it as a daemon.
launchctl com.danga what the fuck? You need some sort of plist file and weird shit.
What if you want to use something that doesn't have a homebrew formula? You're probably fucked. Sure, you can do the old configure; make; make install, and it may have been coded to work on OSX, or it might not have. If it wasn't, give up. If it was, you may get it to build after dependency hell. Then what, going to write your own plist file? Already it's time to kill yourself. You could have installed Ubuntu in less time than it took to do all that bullshit.
Keep in mind that homebrew, the only saving grace of OSX, is extremely new. As in, it wasn't good and usable until 2010. Before that, OSX was completely fucked as a development platform. I don't know how anyone managed to do anything at all with it. The OSX Terminal.app doesn't even support 256 colors. You have to go get iTerm2 beta for anything even remotely usable, and it still sucks compared to gnome-terminal.
Also, virtualization doesn't mean anything. You can virtualize any OS on any OS. I've got Snow Leopard in VirtualBox working just fine. However, for some reason VirtualBox on OSX is shit. Running it on Windows or Linux is great. You can get Parallels on OSX which is good, but it isn't free, and that is the other major problem with OSX. Things that are absolutely free for Mac and/or Windows cost money on OSX. OSX has a strong culture of charging for apps, even before iOS existed. Everyone on Windows and Linux uses free text editors be they vim, or emacs, or Visual Studio or Eclipse. Almost ever Mac developer I know uses these Mac-specific things like Coda or Textmate, both of which are not free as in beer. If you want to go the OSX route, you are going to be shelling out hundreds of dollars for software. On Windows or Linux everything you need will be free as in beer unless you need the non-express Visual Studio.
This is a blog post I read awhile ago. This guy basically wrote everything that I had always been thinking about why OSX is fail.
http://cloudhead.io/2011/04/18/why-osx-doesnt-cut-it/
How do you show hidden files in the Finder? This is a global setting. You have to do the same thing again with FALSE to hide the hidden files. There is no way to do this in a directory by directory basis, and no way to change the setting without hitting the terminal window and closing all finder Windows. If you want to be able to see your .ssh and your .vimrc in the Finder, you're going to see every hidden file in the universe in the finder. Even normal people need to see hidden files sometimes. How could they possibly do it considering they have no idea how to do ls -a on the terminal? This is absolutely unacceptable for a development machine.
The youtube movie player has all of its fonts corrupted on my mac. Some sites are unusable as well. The biggest issue being i am flash developer and the bug in question affects many adobe products.
Anyway my point was to correct your false statement about OSX being non standard and to point out that one can get pretty much everything to work on OSX just fine, and now you have turned the debate into "but it's weird, and you need some third party software, and it's ugly, and it's hard".
My father in law has a good saying: "Religious belief should have no bearing on the tools that you use". I can, have, and will continue to use whatever platform to do programming. I might have preferences and opinions but I'm not going to whine about them because the things that I'm doing are always more interesting than how I'm doing them.
There is no doubt that OSX font rendering is beautiful, much better than every other OS. Browse the web on a Mac, or edit text using any of the Mac Fonts in any Mac application, and it looks amazing. The same goes for iOS, iBooks has amazing fonts.
If you are a coder that means you usually want to use a fixed width blocky programming font, not some smooth anti-aliased font. However, the beautiful font rendering of OSX always gets in the way. Try to use a Proggy Font on OSX. It definitely can be done. I use it in MacVim and iTerm2. It's just that it's a pain in the ass. You have to do a lot of fiddling to get it to render properly. You also have to set it exactly to be 16pt, any different size and it will be all garbled. Oddly enough 16 isn't a choice in the font settings GUI on OSX. It goes from 14 to 18. You have to manually type in the number 16 to get the font to work among other things like turning on or off various checkboxes. On Windows or Linux these fonts "just work."
That's the thing with "just works." There are some things that just work on every modern computer. Want to do a Google search? Just works even in horrible old IE6. Want to play Doom? It just works even on a wristwatch. These kinds of things that people do every day work on almost everything. These people do not do weird or esoteric things on their computers. By their very nature, a weird or esoteric activity is something only a few people do, so there is little incentive to make sure it works smoothly and perfectly.
When you are a developer, everything you do is weird. All you do all day is make the computer do things it didn't do before. Everything is uncharted territory. That is why OSX, both philosophically and technologically is a bad choice for development if an Apple system is not your target platform. Can OSX get the job done? Absolutely. It is possible to get the job done on any of the modern OSes. Heck, it's possible to get the job done on really old systems. A netbook with a very old Linux or Windows XP will get the job done. Depending on what you are doing, a G4 cube will probably be sufficient. While it is possible, it's not going to be easy.
If you are a craftsman, you get the best tools for the job. Can a master chef cook a meal using some shitty knives from Target? Those knives may suck, but they can cut in the same way you can code on OSX. A real developer is going to have awesome computers like the chef has awesome knives. That means both hardware and software are going to be high quality, and kept in excellent condition. Fast CPU, GPU, solid state drives, faster unfiltered Internet connection, all the necessary software isntalled on the optimal platform for the project at hand. A professional painter wouldn't use some watercolors from a child's paint by number set, and a serious professional developer shouldn't use a Mac unless they are making iPhone apps or something.
Virtualization: VM ware in OSX running Linux and/or Windows? VM running Linux in Windows?
Multi boot: MAC running windows and or Linux vs PC's running windows and linux
obviously I'd rather run a VM scenario since I won't have to reboot to switch between tools.
Let's end this metaphor before it derails the conversation too far.
I wont argue esthetics with Scott, but I contend that his points are mostly subjective and based on personal preference, and that if you are a programmer that needs to have all his ducks in a row just so, before being able to code efficiently then you might want to work on that problem ;-).
It needs to be a laptop
I will use itunes, maybe some low impact games like eve online
it will mostly be for programming
I've started looking at PCs. I've looked at the latest dells, toshibas, and sonys and none so far seem all that interesting. Nothing really jumps out at me like Joe Biden in space.
http://shop.lenovo.com/us/products/professional-grade/thinkpad/x-series/x220/index.html
games are irrelevant in this decision process all in all because the system will primarily be for me to do work on.
Super awesome!;
}
elseif(I can dualboot linux){
Not so great but still useful;
}
else
poopy;