Why Mac OS X Is Unsuitable For Web Development
Hugh Pickens writes "Ted Dziuba has an interesting and amusing post on how he made a big mistake when he was offered a choice for his company laptop. His options were a Lenovo Thinkpad or a MacBook Pro, and he picked the Mac, thinking it would be closer to what he was used to. So what's wrong with using the Mac as a development machine for Milo, a Python application backed by PostgreSQL and Redis? 'I've only poked around a little, but so far I've found three separate package managers for OS X: Fink, MacPorts & Homebrew,' writes Dziuba, adding that when you are older, you will understand the value of automated version dependency satisfaction. Next is that your development platform should be as close as possible to your production platform, but 'OS X and Linux have different kernels, which means different I/O & process schedulers, different file systems, and a whole host of other implementation details that you'll write off as having been abstracted away until you have your first serious encounter with "It Works On My Machine.'" Finally, he says, Textmate sucks. 'Sooner or later, you have to face facts. Man up and learn Emacs.'"
That's like saying man up and go see the new production of Glitter Boys on Broadway and then go get a pedicure.
I think he must have meant "man up and go learn vi".
...unless you expect it to let you do Linux development.
Of course, you can dual-boot Linux on it or run it in VMWare. But you knew that, right?
doesnt matter.
'xammp in some flavor' running in your desktop os, still means 'different from the production environment' you are going to run the thing on. xammp on mac will need to behave as xammp on a mac.
Read radical news here
Most projects have the binaries packed nicely, so you don't have to fiddle with fink/macports/flavor of the month.
Different I/O and process schedulers? Oh noes! If only we had posix and libc to abstract that crap away!
Last one is the best. I guess I didn't get the memo about textmate being forced on all mac users.
I don't get why he doesn't just install Linux on his Mac.
But at that point, what has using a Mac really gained you? I guess some people just love the hardware that much?
Damn skippy.
You should be using vi (1), with cscope (1).
When will emacs or vim be available for Mac??? Python packages are also a huge problem on a Mac. It is not like setuptools exist for Mac OS X.... Also, when I develop for the web I always format all my devices to HFS+. I will never use FTP or SAMBA as they do not work on Mac.
...developing Gopher sites, you insensitive clod.
There's no -1 for "I don't get it."
Switched my work machine from a Mac Pro to Ubuntu PC a couple weeks ago, largely because of XAMPP. XAMPP doesn't do a good job replacing OSX's built in Apache/PHP, and that makes CLI PHP work (CakePHP's console) unnecessarily hard. Possible? Absolutely. But eventually I got tired of fighting with it, and wanted PHP to just work.
Implicit Evaluation with PHP
Dude, OS X gives you access to great development tools (XCode, Pixelmator, Adobe CS). Plus all the Unix goodies to publish your content (scp, rsync). I develop on OS X, and have a bash script to post the content to a local vm or the production server.
I will not mourn that which I never had to lose. - Unknown
After looking at his website, I really don't think he should be offering advice on what tools to use for designing websites.
Just saying.
The real Sig captains the Northwestern. This one captains
So he has to pay over the odds for hardware, and then buy a separate Windows license, instead of just buying the Lenovo? That doesn't sound too smart to me.
This is a stupid article. An operating system is just that - it provides an interface to hardware so you can run your programs. You can use anything to do web development. When he has a complaint about vi then I will read it. Otherwise this is a waste of my time. I just posted this because I needed to say it.
I shop around VMs to try and find at least one environment that the software will run within and call it good.
Nullius in verba
OS X and Linux have different kernels, which means different I/O & process schedulers, different file systems, and a whole host of other implementation details that you'll write off as having been abstracted away until you have your first serious encounter with It Works On My Machine.
I can't imagine writing code so finicky and unstable that it can only be cajoled into running under such a specific environment. If those details are important, then the software should be developed specifically to handle various cases. They way he describes it, it's a bunch of voodoo that can't fully be understood, and whenever the product doesn't work they simply place blame on some nebulous external factor.
Better known as 318230.
You just initiated a PC vs. Mac and an Emacs vs. Vi flamewar in one article? Are you MAD??? Don't you understand the potenia#%#$^#$^ NO CARRIER.
For all intensive purposes, "whom" is no longer a word. That begs the question, "who cares"?
Which is great until you realize that your production environment runs on a case-sensitive filesystem, while you've been developing on HFS+ which is not case-sensitive*. Or something equally stupid which causes immediate fatal errors on your next deployment. Yes, I've been bitten by this several times. My company has all developers working out of VMs that are configured identically to our production environment (OS, software, yum repos, etc) for this reason. I can even use our standard deployment mechanisms locally and not destroy my system's crontab because even that's virtualized.
* By default. And there's a ton of OS X software that was written sloppily, so setting up your boot drive on case-sensitive HFS+ is basically pointless. I suppose you could set up a case-sensitive partition or drive and develop against that, but you might as well virtualize everything else at that point anyway, since something else inevitably won't line up.
How are sites slashdotted when nobody reads TFAs?
That is exactly his problem. He has a deployment environment that's different from this development environment, and he expects them to be the same when they're clearly not. This is quite possibly the stupidest drivel I have ever read, and obviously he's an amateur programmer. If your deployment environment is Linux, then get a Linux box to develop your code. His argument is just as stupid as saying "Windows is unsuitable for developing Linux software". This clown should be catapulted into the sun.
Furthermore, if this guy is a Web developer, then why is he concerned about underlying architectures? Stick with HTML and CSS and leave the heavy coding for the adults.
What a whiner. I use a Mac every single day for doing web development. Know how I get over the fact that I'm not deploying to a Mac in production? It's called a continuous integration (CI) and staging setup! You build your app locally and ensure the core of the test suite passes and then you push your changes up to CI where everything gets run against a test server stack that should be nearly identical to your production environment. And if the CI passes then the code get auto-deployed to the staging server for QA evaluation by the client, or other responsible party. And after they've signed off you kick-off a deployment of the code into production. And if I can't, don't want to, run CI and staging environments outside my system, I can fire up Parallels or VirtualBox and create a test environment. Boo hoo! This problem isn't remotely interesting unless you don't know what you're doing.
Even if I knew that tomorrow the world would go to pieces, I would still plant my apple tree. -Martin Luther
Or get the Lenovo, be able to natively test IE, dual-boot Ubuntu, and spend the difference in price on some goodies.
Apple gives you loads of options.
Absolutely. They're famous for it. Apple's all about choice.
I think the problem isn't development on the Mac, but testing on the Mac. Code can be written anywhere, this is why we have nifty things like cross-compilers. You just have to test it on the target platform.
Give me Classic Slashdot or give me death!
Um, ahem...
This is a very reactionary post and does not belong on the front page of Slashdot. There are a lot of options to address the issues the author brings up and the premise of the article is misleading. Also, the author clearly references Windows development issues, which means he lacks essential open source credibility and should be shunned by the community.
I mean:
- How about Eclipse as an IDE? That should be better than emacs and textmate for most things.
- How about MAMP with SPMPT for Postgres? You could also script start and stop scripts for redis in MAMP similar to the ones that exist for memcached.
- While fink, macports and homebrew all do suck in their own special way (homebrew is a little suckier), what's to stop you from writing your own ports for them? Isn't this the way rpms caught on, where people knew how to compile them in the first place?
Maybe the polyphany of OSX package managers leads to issues but the same issues have existed in the Linux world for years and it's taken a lot of effort to resolve them. People took the time to resolve them, and that's what lead to a better system. You can't criticize "Mac culture" for offering the same opportunities available to linux users, sorry you don't feel the need to contribute.
- As far as file systems go, so help me, most competent developers can deal with this pretty easily. Since the author cites 'grown up' developers in his article, I guess that means grown ups are too lazy to do something about file systems when writing applications. Like make applications for linux and BSD and ignore windows altogether, or use a windows machine for creating windows applications.
Written an article explaining that you shouldn't choose OSX when you need to develop for Linux, apparently...
I just spend $3200 (including tax) on a maxed-out 17" MacBook Pro. Call me crazy or dedicated or both.
But in my opinion, unless you're developing for iOS or MacOS X, the Mac is a poor platform for LOTS of different kinds of things. I'm a chip designer, for instance, and there is ZERO software for the Mac in this area. I have to run Windows in a VM just so I can synthesize for FPGAs.
The Mac also has a dearth of good code editors. On Linux, I really liked nEdit. It has everything, and it is intuitive (or at least I felt that way when I was using it). For Windows, I've enjoyed using Edit Plus and Ultraedit. But for the Mac, the editors generally just suck. Every single one of them has some kind of amazingly bad UI design flaw. For instance, I think it was TextWrangler where searching with wrap-around and search&replace in selection are mutually exclusive -- if you want to use hotkeys to do these things, you have to open the Find dialog and change settings to go back and forth, and the devs told me this was intentional, like it was a good thing. For a while there, I considered blogging about it, it was that frustrating. :)
Actually, of all of them, Smultron is my favorite. It's back in development. It's still buggy as hell, but the author seems to be willing to listen when I report bugs. It's lightweight, and the UI is simple, consistent, and intuitive. So, it's getting there. Give it a version or two.
For a lot of kinds of development, I just use the Mac as a client for some other machine. If I'm doing web development, I actually just mount files on a Linux server using SMB (because netatalk has problems and OSX doesn't support NFS well) and serve the web pages from there.
What the Mac IS good at is content development. Multimedia, documents, etc. If I want to make a presentation or diagram, I use Pages, Numbers, and Keynote, along with MacTex and OmniGraffle. There are quite a number of other net clients (like NetNewsWire and Adium) and other sorts of apps that are just wonderful.
You can use Netbeans and Eclipse on the Mac, but Java just doesn't integrate all that cleanly with other Mac apps. You can get used to it, though. But generally, the Mac just isn't so great for software development.
I have no idea why this troll of an article ever hit /.
With compelling arguments like "textmate sucks, man up and use emacs" (yes that really is the whole argument for what's wrong with text editing on OS X) I'd expect better from an IRC troll, let alone a slashdot troll. And hell, that's completely ignoring the fact that if you really want to, emacs runs just fine on OS X.
Personally, I consider a Mac to be pretty much the ultimate web dev platform, because it gives you easy access to all browsers on all major platforms, and gives you some of the best tools (yes, better than emacs, and even better than vi) to develop with. There are many imperfections, but it's better than all the other options.
Or, in this case, MacVim. You get all you nice butterfly-key commands, and the power of Vim. I actually use TextMate for my Rails development for the most part, and MacVim for some things. Maybe Python is the real issue. I don't know, I never liked it enough to go into depth with it. I've had no development, test, or production deployment issues for any of my Ruby, Scala, Scheme, Perl or Clojure development, and my production environments run from OS X Server to Ubuntu to Debian to (occasionally) Solaris.
Seriously, if you can't navigate the discrepencies between multiple environments, you need to "man up and code in the real world," not some academic fairyland where dev and prod environments are identical and Emacs is actually a useful editor.
To understand recursion, you must first understand recursion.
Sounds like an idiot who can't setup a VM. I mean really: "I need to run Linux, whhaaa!!!!" - set up a VM, you utter muppet. What a total retard. And "emacs" OK fine, but does he not know about Coda?
I've had complaints about OS X, but problems with case-sensitive HFS+ is not among them -- in spite of the fact that all the years I used OS X installed on case-sensitive HFS+, boot volume and all, with never a lick of trouble.
TFA is basically a clueless rant on how he's incapable of coding for one system while using another, something many reasonably proficient developers have been doing for years. The rant highlights his incompetence fairly thoroughly.
Caveat Utilitor
Lets just quote a line from the article:
Lets see:
Fink is based on Debian's apt system
Macports is a typical BSD style port system
Homebrew is not designed as a package management system but to allow installs of individual applications easily.
And this one:
Of course the point of all 3 of them is dependency resolution.
Gentoo of course originally was trying to bring a BSD style ports system to Linux, as an alternative to the integrated .apt, .rpm culture. So it seems to me this guy might want to understand package system on Linux before he comments further.
Make a dmg with a case sensitive file system, mount it, use it. Done.
Needed to do this to deal with a stupid svn repository that had the same filename with differing cases in the same directory.
Okay, if you want counter arguments to the "points" in the troll, here you go:
So you totally ignore the pathetic developer package management in OS X
The article complains that there are 3 different package managers for OS X and that choosing between 3 tools confuses him... Well here's news for him, there's *way* more than 3 package managers for linux. He then goes on to explain that he uses dpkg on linux and is very happy with it. If this is the case, I suggest he uses fink on OS X, as it's a direct port of debian's package manager. He also complains that he ends up compiling things all the time. Clearly, he fails at reading the manual pages, because fink is entirely capable of installing binary packages.
the fact no one uses OS X for serious web hosting
Entirely correct – this is why you use things like (insert favourite scm tool here) to deploy to a test environment and check that your code works in something extremely similar to your deployment environment. This is basic computing 101 – test your binaries where they'll be running. Sorry, but "I'm going to deploy to linux, therefore OS X sucks" is not a good argument.
then blather on about a cruddy text editor?
no, actually, I "blathered on about" a cruddy argument. If he had valid complaints about TextMate I wouldn't call him a troll, but instead he simply states "man up and use emacs" – this isn't an argument, it's just plain bare faced trolling.
You obviously don't develop.
Wrong, but this is only an appeal to ridicule, a well documented logical fallacy, so I'll chose to ignore it.
Guess you're another overzealous Apple fanboy.
Another appeal to ridicule, so I won't grace it by saying "Guess you're another overzealous anti-apple fanboy." Damn, I just did, guess I couldn't help myself.
Personally, I consider a Mac to be pretty much the ultimate web dev platform, because it gives you easy access to all browsers on all major platforms, and gives you some of the best tools (yes, better than emacs, and even better than vi) to develop with. There are many imperfections, but it's better than all the other options.
Author is bitching because he thinks the Mac is not an ideal platform to run the application.
With that I agree. Don't run the server-side of the web application on your development workstation.
Instead: save the files directly to a remote folder on an actual webserver running the target OS, by remote mounting the filesystem (or automatic synchronization), and run the application on the remote server, for testing during development.
Huh?
iOS bashing is big here, but Mac bashing, no.
I've met many Mac lovers who won't use iOS - there is a difference.
No, see Beelsebob's post above.
"Deploy"
It's a key step in your engineering process. It should be a repeatable testable process. It should take microseconds through automation. It should be configurable to permit deployment to dev, systest, SIT, UAT, stress, OAT, Prod, DR* environments without needing to change the packaged deployable.
You're entirely correct with "Don't run the server-side of the web application on your development workstation." but mounting production server storage from your dev machine is frankly almost as bad.
*adjust to fit your SDLC
So you suggest that people buy Apple computers even when they fail, because you can run a better operating system in a VM? Let me quote:
What a total retard.
c++;
OSX is a *great* operating system. It's just not a great web server, and it doesn't have a great package manager, and it's not close enough to debian that you won't notice the difference.
Likewise, a BMW is a *great* car, it's just not very good at transporting standard shipping containers. You need a truck for that.
My thoughts exactly - I set up a number of dev tools in an "all OSX" shop, then repeated the exercise on a vanilla Debian install on an ancient Dell box. Results:
Debian based installation of tools required 4 hours, OS-X / Fink / Google research required 40.
MacMini running the tools was "cheap" at $700, 10 year old Dell box was basically free, since nobody wanted it for a desktop anymore.
Mac based tools ran well, needed the occasional maintenance every month or two - Debian based tools ran for 400 days without touching them, serving more users and hosting more content.
So, if I am forced to do this on Mac hardware again, yes, I will be installing Linux over OS-X, either in a VM, or preferably native boot. But, why would anybody ever do this on purpose? (as opposed to getting hardware that's more suited to the purpose in the first place.)
Emacs works fine for python-based web development. I don't use it myself, but there's no particular reason it wouldn't work, and AquaMacs is actually a very pleasant version of Emacs, both true to Emacs's spirit and nicely integrated with OSX. I agree that in general Emacs isn't the best tool for every job, but there is historical precedent for using it to develop a language with strong dynamic types. It's clearly not the best choice for Java-based web development (I can say that with a certain amount of experience), but that doesn't mean it's the worst choice for all web development either.
Moreso, I just don't get the whole developing-on-the-target mindset. Maybe it's due to dabbling a lot with embedded development. If a developer cannot set things up to easily deploy to a test environment of her choice, maybe it's time for her to go back to basics. I happily run a bunch of VMs on my MacBook Pro, and a couple of them are CentOS development/test images.
A successful API design takes a mixture of software design and pedagogy.
emacs runs just fine on OS X
Better in fact - AquaEmacs is great - no X server needed, and it respects most of the standard OSX keyboard shortcuts and the standard Emacs keyboard shortcuts, since Macs use command as the shortcut prefix it doesn't conflict with the Emacs shortcuts.
Macs give you easy access to all those things, plus any specific mac/browser combination.
I don't see what the big difference is. He's complaining that he bought the wrong computer because he wants to run Linux, but the computer he bought can run Linux, so...?
Aside from the OS X license and EFI/GPT instead of BIOS/MBR (although it can be configured to use those too), there isn't any functional difference between a Mac and a Thinkpad!
"[Regarding the 'cloud,'] ownership was what made America different than Russia." -- Woz
It's not that he doesn't have a home key.. it's that on a mac, home jumps to the top of the page, instead of the beginning of the line. End works the same way.
BZZT! WRONG! Thanks for playing!
There are actually a ZILLION keyboard shortcuts built into OS X. In fact, some are REALLY arcane.
For what you want, try CONTROL+A (beginning of line/paragraph) and CONTROL+E (end of line/paragraph). Yes, it is a bit of a pain for people who use Windows; but you are still demonstrably incorrect regarding the Home and End behaviors.
I don't remember what ASCII codes (if any) the "Home" and "End" keys normally generate; but using my "Windows-centric" keyboard in OS X, CONTROL+LEFTARROW and CONTROL+RIGHTARROW do the beginning/end of line functions. The CONTROL+UPARROW and CONTROL+DOWNARROW seem to do beginning of document/end of document, as do the Home and End keys.
Honestly, though, the hardest thing I have to adjust to going back and forth between OS X and Windows is the Command C/X/V/Z/A conventions in the Apple world versus the Control C/X/V/Z/A versions in Windows. They are too similar. I know that Windows copied those letters from the original MacOS (who may have copied them from something even earlier); but they are too similar. In fact, I have suggested to many people who live in both worlds (especially ones who are used to Windows) to get something like Keyboard Maestro and remap the "Command" versions to "Control".
...sure. Pick an OS because it is the one that is the most hostile to being virtualized and has the most expensive hardware so when you do decide to run something in a VM you will pay dearly for the priveledge or simply be out of luck.
The real question is why bother with MacOS in the first place?
A Pirate and a Puritan look the same on a balance sheet.
BBEdit will run for 30 days before you need to give it a serial number. And TextWrangler is flat out free, but it doesn't have all of the HTML goodies that BBEdit has ... but for general programming costs, it'll probably do you.
Yes, it might seem strange to shell out $100 for a text editor, but it's like buying good power tools -- it lets me get the job done with less effort.
(disclaimer : I've been a beta tester for Bare Bones, and even have the 'it doesn't suck' t-shirt)
Build it, and they will come^Hplain.
Two things:
1) My mother and grandfather told me ages ago, "It's a poor craftsman who blames his tools." Related to that,
2) Use the right tool for the job. If OS X is not the right tool for the job, then DON'T USE IT. But don't go out and be a whiny bitch just because you don't understand what the fuck the requirements are for your job.
I've been developing web sites for 15 years this summer, starting with Windows 3.1 and Notepad. I've been using OS X since 10.0.3 and I've been using it full-time for web development for about 8 years (since 10.2, aka "the first usable release of OS X.") Saying OS X is unsuitable for web development is flat-out wrong.
Dear Slashdot: next time you want to mess with the site, add a rich-text editor for comments.
The article complains that there are 3 different package managers for OS X and that choosing between 3 tools confuses him... Well here's news for him, there's *way* more than 3 package managers for linux.
Which is akin to saying that Windows has more than one kernel. Yes, there's many package managers for Linux but only one per distro. Well, except for Arch but then one of those "package managers" compiles down to packages for the other, so in the end it's more or less the same thing.
no, actually, I "blathered on about" a cruddy argument. If he had valid complaints about TextMate I wouldn't call him a troll, but instead he simply states "man up and use emacs" â" this isn't an argument, it's just plain bare faced trolling.
You mean, like your comment about it being a better editor than Vi and Emacs? why, yes it is.
Honestly, in my opinion OSX isn't such a bad platform for web development, but Linux is better *and* free *and* it runs on my Thinkpad, AKA "the only series of laptops that have a keyboard worth crap" so OSX may as well be dead for me, but as always YMMV, some people do like those things Apple calls a keyboard after all.
No problem is insoluble in all conceivable circumstances.
Heh... I spent $1200 on my latest personal laptop and it's actually more agressive than the $1900 price ranged model.
Sure, you can spend $4k on a laptop (Current employer...) but you're talking an i7 with 16GB of RAM and the top of the line Mobile NVidia Quadro in it. Most of that expense is due to the insane amount of RAM and the Quadro in the thing. Apple doesn't provide that to the best of my knowledge- and if they did, you'd shell out as much as the company did.
Also worth noting: I don't buy your line there on the quality...
The only thing you're paying for is the "stability" that the constrained hardware Apple provides with OSX machines- that and the prestige price of buying Apple.
I am not merely a "consumer" or a "taxpayer". I am a Citizen of the State of Texas
Um, because more than one in ten of your website visitors is likely to be running OS X, and there is no other hardware that can LEGALLY run OS X?
Wrong, unless your website caters exclusively to the US. Apple's worldwide marketshare is far lower than in the Hipster States of America.
And, if you are RUNNING on a Mac, then then your bald-faced allusion that OS X is "the most hostile to being virtualized" is absolutely moot.
Not really, it isn't. There's a perfectly good argument for running only a barebones OS directly on the metal and everything else on VMs, but if you try to do that with Apple's dearest you have to be prepared to go to hell and back for it, even on Apple's own hardware. The GP's line about OSX being VM-hostile may have been a "bald-faced allusion", whatever that is, but one thing it's not is inaccurate.
As for the "most expensive hardware" claim, there are PLENTY of machines, especially laptops that cost as much, or even significantly MORE, than even the most expensive Mac laptops.And don't start with your "I can buy a laptop for $100 at Fry's" bullshit. Because everyone with more than two functioning neurons knows that that laptop will be in the dumpster, broken, in less than a year, whereas the Mac laptop will, by and large, be chugging along at the five to ten year mark.
The only ones costing more are luxury models, ala Ferrari laptop. A good Thinkpad however will cost you a fair bit less and will still be running long after the Mac hits the dumpster. Of course, by then most Apple heads will scream "but who would want to run a laptop that old!?", but then you're back with the "$300 laptop every few years" plan on the non-Apple side.
No problem is insoluble in all conceivable circumstances.
Spoken as somebody who's never used Emacs.
There are very good reasons why Emacs and Vi still command such popularity among professional programmers, and it's not because they're all teenagers needing to prove their masculinity. More the opposite, in fact, in that most of the people criticizing them appear to see their use by others as offensive to them for some reason.
Disclaimer: I'm mainly a Vim user, and as such prompt to take pot shots at Emacs when given the chance. I still recognize it's a damn fine editor, however, and any joke made at its users' expense is strictly tongue-in-cheek.
No problem is insoluble in all conceivable circumstances.
Angry much? ;)
Besides, my point was clear: you can run Windows on any damn hardware you feel like as long as it meets its technological requirements, and the same goes for Linux, FreeBSD, FreeDOS, Minix, and pretty much every OS I can think of, even freakin' Android. Only exception? Apple's "thou shalt only use thy copy on thy Apple-branded computer" OSX.
Now go back whence you came, angry troll, and trouble our threads no more.
No problem is insoluble in all conceivable circumstances.
Coders write text files for a living, all these programs (vi, emacs, textmate, even notepad.exe, hell, why not?) are, at their core, text editors. Beyond that...
I love watching religious arguments, sanity leaves otherwise rational people :)
Use what works for you and gets you paid.
You need a truck for that.
But evidently not a Mack truck.
Probably building stuff from source. And that would also explain why the Mini took so much longer. It has a laptop hard drive.
Check out my sci-fi/humor trilogy at PatriotsBooks.
Um, because more than one in ten of your website visitors is likely to be running OS X, and there is no other hardware that can LEGALLY run OS X?
This should be a meme. "Company puts draconian restrictions on its OS -- Reward them for it by buy their hardware"
Dilbert RSS feed