The funny thing for me, is that the better I've gotten at programming, the less time I've spent with my hands on the keyboard writing code, and the more time I've spent pacing around my desk or staring at the ceiling.
For me keyboard efficiency is becoming less and less relevant as my code becomes more sophisticated.
I find myself doing the same, but keyboard inefficiency still frustrates me which is why I still find it important. Once I know what I want to write I want to write it now.
Out of curiosity, why did you switch to OSX? I'm on OSX now, and I love much of it, but the author's points ring very true. I'm less and less sure every day why I stay on Mac as apposed to Arch, which I use on my servers.
I personally find X to really annoying due to it's architecture, no matter how pretty Gnome and KDE get. Just one example that happens all the time for me on linux.
1. Taskbar yells that I have updates.
2. I click the notification icon.
3. Nothing happens. No hourglass.
4. Wait.
5. Click it again.
6. No feedback.
7. Two copies of synaptic pop up. One flips out because another copy is already open.
The analogous version of this never happens to me on Windows or OSX.
Sure it's not the end of the world, but when weird stuff like this happens more than once a day, it gets annoying. It's like having that toilet where you need to jiggle the handle.
None of the problems he listed are caused by X, they're caused by various decisions in GTK+, Gnome, and Synaptic. Moving to Wayland won't fix any of those things.
It will get you slightly faster compositing, though.
It might be possible to fix these things without changing X, but I get the impression that it is harder to write an app that does not annoy me in X than in OS X.
1.You can disable automatic updates.
2.You can remove the notification applets in the gnome-panel.
3.Probably it was a case of bad network. And hourglass belonged to Windows, you shouldn't expect it here.
4.That's what you do. Be patient.
5.You shouldn't have clicked it again because the first instance is still loading.
6.Be patient.
7.I told you, point 5.
If you think that these are valid enough reasons to believe the usability of Linux is poor, I really sympathize with you. And all of this is about updating the system. When I can update Windows or OSX by just issuing a command like "sudo apt-get update && sudo apt-get upgrade" I will change my operating system.
That was just one simple example to illustrate X goofiness. I wasn't complaining about updating in particular, I was complaining about the UI when I perform a common operation.
I just want reliable feedback to say that my operation is running. It's fine if the hourglass is a windows thing, but how am I supposed to know an app is actually loading on linux then? Pull up a terminal, run 'ps -Af | grep synaptic"? Not very friendly.
But if we want to stick with the update example, try opening System Preferences on OSX or the Control Panel on Windows twice. Even on purpose. It's pretty tough to do. And yet it happens to me all the time by accident on linux all the time.
The first point does not need much elaboration, but I simply can't live without Lightroom, InDesign, and Illustrator. If I ever switch back to Linux on the desktop, I probably need a Windows VM to run those applications.
Also at home, Linux cannot provide the same level of integration as the Mac, iPhone, and Apple TV. I like being able to stream a video on my iPhone to our TV, or use my laptop to stream an album stored on my Mac Mini to our TV.
No one else can tell you why you should use OS X, Linux... Or (gasp) Windows, for that matter. There is no empirical claim of superiority when it comes to tools. It's whatever works for you.
Our lead developer uses TextMate with a mouse. Quite honestly, I think I use more keyboard shortcuts in TextMate than he does, and he doesn't use a stitch of Vim, where I'm fairly comfortable with it.
I can feel the condescending smirks from here, but my knowledge of keyboard shortcuts doesn't make me a better programmer. Far from it. I can hardly code my way out of a paper bag. Your tools do not make you a good programmer!
Having said all that, there's no reason you shouldn't try different tools. You should, actually. Just make sure you haven't convinced yourself that "tool XYZ will make me a better programmer." It may make you a more comfortable programmer, but beware of Yaks in need of shaving. If you find yourself spending more time setting up your environment than actually coding, you'd be better off with a system that denies you the temptation.
I feel like I'm in the same boat as you, Linux didn't cut it for me, and I moved back to OSX.
I don't need to have Terminals covering my screen, there's only so much I can focus on at a time anyways.
I too don't like reaching for the mouse, but found that I really don't need to that often anyways.
Yes, at work I use vim, and Mutt and various other command-line tools on Linux (in fact, the only thing that's GUI is my Jabber client and web browsers). But for some reason when at home or working on non-work projects I prefer TextMate, Sparrow and my OSX.
Yeah, I have found OS X a lot easier than Linux to get things done with in general (related to development). The lack of general support for commercial apps and the inability of a credit card to solve problems is a huge problem for a lot of problems.
Sure I'll use a virtualized Linux environment for dev now and then, but OS X now is not bad at all for dev.
This goes threefold once you talk about getting anyone else setup like you. It's just so hard to get people not running the exact same flavor of Linux into the same development configuration for many tasks.
Very true. It sounds like the author is doing some hardcore stuff that he needs a bit more brute force. For the majority of us, OS X may be exactly what we need.
Kudos to the author on his depth of hardcore computing, but there are a million ways to use computers, hack, and code and the majority of them don't need that level of l337ism.
While I appreciate the sentiment this obviously comes from an author who has very little Unix experience in general. For instance he claims that Darwin is an odd duck and that "Things which build & run cleanly on other *nixes won’t necessarily build & run that easily on Darwin."
Really? Ever tried to compile anything on HP/UX or IBM AIX? Darwin is a bed of roses compared to that. Even Solaris has its problems when compiling things. The author obviously thinks that Linux = Unix even though the heritage of Darwin / OS X is that of the BSD branch of the Unix family whilst Linux takes a lot of inspiration from the System V family.
I kind of agree with the article in general I just think it was so badly written and some of the claims so down right ignorant it masks a decent point.
Oh and as for managing daemons, launchd is a significant improvement over the standard Linux initd and cron scripts. At least launchd will restart crashed / stopped daemons when needed. Plus you don't even need to run the daemon at all times on OS X. It will be automatically started when an incomming request for it is made. To do that on Linux you need to move over to daemontools (which actually also works on OS X as well so that nullifies that advantage).
His profound disgust for Terminal.app to me is a case of Princess and the Pea syndrome: I remember typing into actual glass terminals, so—without trying to sound too much like grandpa here—he sounds a bit spoiled to me.
I knew a lot of people like this guy. I'd be sitting at a SPARCstation in the computer lab running twm and there'd be some dude next to me that was never content with something that just fucking worked and he was constantly trying to optimize everything. As someone else already said, whenever I see people like this, I want to ask, "Better for whom? Better for what?"
And what of this? "I don’t think I need to further argue this sub ject—we all agree open-source is good." Hello?! You're talking to Mac users here, they may not agree to some statement that you find blindingly obvious, given that they're not using a $300 netbook based on Linux.
Yeah, all things considered, maybe I'd prefer to program Unix on a FreeBSD box, but I do more than just program.
I've done programming on computers that didn't even have a proper backspace key, you had to literally hit CTRL+H, written hundreds of thousands of lines on a system with no windowing system whatsoever, and this guy is complaining because you can't "full screen" or use the mouse in Terminal.app?
If you want Linux, install Linux. Not hard. No reason to write an angry post about how OS X isn't X11.
It is amazing how your opinion of terminal apps gets colored by actually using stuff like the Z19, vt100, or vt220. I do wonder what Plan 9 users think about the whole thing.
I can't take this seriously. The author complains that MacOS X's support for Valgrind is in its infancy. Well, how is DTrace support in Linux coming along?
One could write an essay like this that accentuated either platform. For example, I'd like a diff/merge GUI like Changes on my Ubuntu machine. What do I have at my disposal? Meld? I can't even navigate & merge individual changes with the keyboard. Darned thing actually makes me use the mouse. The mouse...on linux.
I generally prefer to use Linux on a desktop myself but honestly I really haven't had any issues using macvim and the default terminal on my MBP and doubt i'll ever buy a non-apple laptop ever again. For laptops having a *nix interface on reliable hardware that works, the MBP just makes sense.
I actually refused to try it for a long time and stuck up for linux but after yet another hardware issue and a laptop lasting for a year I decided to open up my mind and try osx out. I don't consider myself a fanboy in any sense but I have found osx to be a suitable workstation running on laptop hardware for both working as a sysadmin and doing web application development. I do use homebrew.
Those points are all reasons I get closer, every day, to switching to Arch. However, OSX still has a lot over the Linices. To name a few advantages:
Great applications/uses that require a Mac:
1. Todo lists (Omnifocus or Things): I manage far too many things, and need to rapidly move through my data in a way org-mode doesn't allow. A GUI, a beautiful one, is key here.
2. Interfacing with my iPhone.
3. 1Password, Alfred, DaisyDisk, Delibar
4. Honestly…I'm struggling to come up with a lot more. I really like my calendar application (BusyCal or iCal, depending on the year). Mail.app is nice, but I just haven't taken the plunge to command-line applications yet. I wonder which I'd prefer if I put in the time required.
What stops me from switching to Linux is that I value my time. On Linux I have to spend time on meta things. My video driver stopped working, how do I get flash to work, why isn't it finding my memory card, how do I get sleep to work right, why doesn't copy and paste work between these two apes, why did the dropbox menu item disappear when I updated my distro, etc, etc, etc.
Personally I switched from Linux back to Windows 7, but continue to do all of my software development in Linux (Ubuntu). I have VirtualBox installed in Windows 7 running a Ubuntu Guest.
There were 2 pain points, setting up the resolution correctly in the Ubuntu guest (you need to use VirtualBox guest additions, but it is not bulletproof) and getting the guest OS an IP address on my network other than the host machines so I could run Redmine & a development server on it.
But at the end of the day, I can drag my mouse from one screen and be in Linux running all the goodies for software development to the other screen with Chrome and everything I want on Windows.
If I had a Macbook Pro, I'd do the same with Mac OS X and Linux.
It just ended my Windows vs Linux angst. And it is far easier running Ubuntu as the guest on top of Windows than vice-versa.
Stops being valid when you buy a Linux computer instead of installing Linux on hardware designed for Windows. They (System76, ZaReason, etc.) vet the upgrades, the drivers and it should "just work". If it doesn't you know who to blame.
Apples to oranges. You built your own Linux box but you bought your Macs from a store. Someone has to make sure sleep works, video cards work, etc. When you choose to build your own box that responsibility falls on you. You're blaming the OS because you bit off more than you were willing to chew.
The internet has largely fixed the "app problem". Not just for Linux but for OSX as well. It won't fix proprietary hardware integration for you, so if you want to use an iPhone and want 0 hassle (as you can probably get 3rd party tools and use it on Linux, but with a little more work) then you do want OSX. I doubt you'll have a problem with those other issues though!
I am always puzzled when I read articles like this and people say *nix when its clear they means "linux". I remember working on Solaris, HP-UX, IRIX or AIX and it was always full of little annoying variations.
The dominance of Linux and package management made everything so much easier, articles like this just make me appreciate it more.
Meh. I stopped using Linux a few years ago because KDE 4.1 was ugly and slow, and there was only one viable WebKit browser (Chrome) while Firefox was laggy, and pretty much everything X was laggy and so was apt, which took forever to read its package list...
More recently I tried xmonad on my college's Linux desktops, enticed by the idea that it might solve my window management woes and that it was a "killer feature" of Linux, but I couldn't stand not having control over window placement-- it was too hard to just temporarily maximize a window. Maybe I needed more practice, but it didn't help that I couldn't figure out how to get dzen2 to not go off the screen in the desktops' dual monitor configuration, so I didn't have a working clock on my desktop.
I could switch to Linux on my laptop, but I love OS X's trackpad gestures, and as far as I can tell the only Linux support for them is by some proprietary "Gesture Suite" crap that only supports Synaptics trackpads.
Yeah, Terminal.app doesn't support a mouse (although it is extremely fast and responsive, like everything), and MacPorts takes time to compile things, and I had to manually patch gccgo to compile on OS X. And I love open source and hate to be running code I can't read. But all in all, it's hard to conclude that Linux is worth the pain.
I had pretty much the same experience as the author. After several years developing on OSX, the development tools, package management and simpler desktop experience of Linux just were more appealing.
It also isn't a disadvantage that now my desktop setup is a lot closer to what we also run on the servers, down to exactly same packages and dependencies.
And it has to be said I love the regular upgrade cycles of major projects like GNOME and Ubuntu. Every six months I get a new version with many incremental updates. No need to speculate what Apple will put in or leave out from the next big cat
I never understood: why do people hate macports so much?
Ok, it kind of duplicates half of the libraries in the system, but it has worked fine for me for many years, and it's usually reasonably up to date and quite large.
For me, the constant re-downloading of dependencies was a pain in the ass. I got MacPorts in order to get the apps OSX should have come with, like wget and curl. In the process, it fragged Python to high hell by installing just about every version out there (often several for each package), which broke the bangpath in all my scripts. I'm aware it's probably a pretty easy fix, but a program whose use breaks other programs is a fundamentally broken and Bad one.
I still use MacPorts on occasion if I really need a package, but my dreams of using it to make the OSX terminal as functional as that of Linux is long dead.
At my last job they gave me an MBP when I started, so I thought I'd give it a go. The solution I was given to "this isn't working" is "blow away /opt and try again". I wasted three days trying to get a usable Ruby dev environment before wiping it for Ubuntu.
It is a system external to osx. XCode is a beast of an install so I can see that gripe. I think that an external system is required for macports and osx to exist peacefully; If they did not have the separation then the core osx might have trouble with a library upgraded to an incompatible version. This would mess up the "it just works" user experience methodology that Jobs wants to have.
I don't use OS X myself, but it seems like half the mac-specific bug reports I get are caused by Macports screwing things up in ways that I haven't fully understood myself.
But what is the alternative? If scripts like this[1] or homebrew are the solution I don't understand how it is an improvement over macports.
(As a side note: I highly recommend you try out GraphicsMagick, it is mostly equivaklent but has a third of the dependencies and does not pollute $PATH with a dozen commands)
Unless you're developing an app that targets OS X, I don't understand why not just develop in a Linux VM. As a bonus, you get all the benefits of a VM - easy snapshots, can run multiple at once, crashing the server doesn't bring down your IDE, etc.
Im mostly doing web development; and while I could do it in a vm, I don't feel any need to. All web related stuff works just fine in osx the same way it runs on my ec2 ubuntu servers. I use same zsh and vim, same apache and nginx, same nodejs, same ruby compiled with rvm. Why should I introduce additional complexity of running a snapshot. If I really need to check something on a Linux box (and that doesn't happen very often) I connect to one of a dozen boxes available for me on the net.
How often have I crashed a whole system while testing software on it? Not very often, but it really sucks when it happens.
But it's quite common that I want to see how some server code runs on the exact same kernel as will be used in production. This is a pain if that kernel is also running your IDE.
The corollary to this is corrupting your VM on a crash. For whatever inane reason, my Mac reboots itself every few days. I grew tired of corrupting my VM and having to rollback to a snapshot, losing whatever I had in there since the last snapshot. So, I gave up on that and just develop on the Mac natively.
Reading this thread, it's strange to see how many people assume that developers are software-only. I'm in a company that needs access to hardware for development and although we have a win/osx/lin mix of developers who can all access the hardware in their manner of choosing, there are definitely 'developer differences' between the OSs in this respect. Juggling USB numeration into a virtualbox VM can be a real pain, for example (older VirtualBox didn't even support that).
tl;dr: 'developers' can sometimes need direct access to hardware, OS selection can affect that, and while VMs are awesome, they can also cause additional overhead.
OS X became so popular as the unix hacker laptop over the last few years, because it "just worked". That and "normal" apps from MS and Adobe run on it.
Imagine it's 2003-2006 or so - sending your linux laptop to sleep/hibernate was like russian roulette - will it start up again? Won't it? Kernel panic? ACPI improved things, but often still has hardware specific issues.
If you really want Linux with all the bells and whistles when developing, but also enjoy using a computer for other things like Music and web browsing, boot up a Fusion image and you're off.
What's not functional about Linux for music and web browsing? There are certainly areas where it's not quite there for some things, but I wouldn't say those two had ever been pain points for me..
I love Linux's elegance and power for development, but can't use it as a "regular computer" for three reasons:
1) The GUI is terrifyingly ugly, in every single distro I've seen. Ubuntu is trying, but they're still way behind. If I only ever needed command line interface on my computer, I would've fully switched to Linux yesterday.
2) It doesn't have Netflix, Vudu or anything else with Silverlight. This is not a "don't have it yet" type of deal - Linux doesn't have it and won't have it in foreseeable future because of philosophical differences (because it's using proprietary Microsoft code)
3) Most things don't work out of the box, and need some tinkering with. This is not such a big deal, since I love to tinker and after tinkering, they usually work much better than anywhere else. But for many non-development things, I love when programs I install on my machine just work. For that, OS X is light years ahead of everything else, and Linux is dead last.
> Most things don't work out of the box, and need some tinkering with. This is not such a big deal, since I love to tinker and after tinkering, they usually work much better than anywhere else. But for many non-development things, I love when programs I install on my machine just work. For that, OS X is light years ahead of everything else, and Linux is dead last.
It depends on the hardware. If you pay attention up-front, it's very easy to end up with zero-hassle just-works-for-everything. Anecdotally, I've been using Thinkpads with Intel graphics drivers as my last three laptops, and the last time I had to manually edit a config file for hardware was back in early '07. With OS X, on the other hand, I can't use my phone to tether without navigating a bewildering driver labyrinth.
GNOME3 isn't too bad, visuals-wise. But it has to be noted the author was talking about Xmonad, which is basically a completely chrome-free, tiling desktop
ProTools? Sibelius? Sure, there are free GNU/Linux alternatives, but (last I've seen) they are pretty weak in comparison to the proprietary tools that run on OS X and Microsoft Windows.
I just bought a new MB Pro and was getting ready to install Parallels on it for the first time...I've always used Fusion in the past. I thought Parallels was currently the leader in the shootouts regarding speed/features? Anyone keep up to date with their horse race or have a good reason to use one over the other? I already have licenses for both.
Although it was a bit arrogant at times, I find myself at a similar place as he seemingly was before he switched right now. I'm doing all my development on MacVim and iTerm2, which is way more smooth for me than the TextMate / Terminal.app combo I came from. I am however increasingly annoyed, like the op, by having to use my mouse at all while developing. Divvy is making window management manageable, but it's still not quite the way I want it. The package-manager-situation is just the top of the iceberg for me. I think maybe my time may have come, so to speak.
I still love Apple hardware though, which leads me to my question; what is the best distribution in terms of support of Apple hardware? Especially MacBook Pro 5,5 which is my day to day development machine for the time being.
Out of curiosity, how does iTerm2 help you more effectively use the command-line? I've seen many people say it's better.. but the features listed on the site just don't seem to be things I need (or things more appropriately done elsewhere, e.g. my zsh does completion).
The author cites mouse events, but this is something I've never missed (and never use it when I'm working on Linux). Is that something you use? If so, what for? You use MacVim, so presumably you don't need mouse events in your terminal for vim.
I should note I don't use a vanilla Terminal.app - I use it with Visor (http://visor.binaryage.com/) to quickly invoke the command-line from anywhere, and I use MacVim as my editor.
I get what he says about package managers. MacPorts really was something I loathed. I recently discovered homebrew and "breath of fresh air" covers it exactly.
Well, for one, with iTerm2 I don't have to use visor, the app itself handles this. To be totally honest with you though, iTerm1/2 over Terminal.app hasn't really been that big of a change, I mostly like the improved key-settings and the theming. What motivated that change was that I was having a lot of trouble with getting the modifier keys do what I wanted, as strange as that sounds. Changing to iTerm just fixed it, and I liked what I saw, so there never was any reason for me to go back and figure out what I did wrong.
The biggest change by far for me was going from TextMate to MacVim/vim, which has boosted my programming speed immensely (after the usual month of pure frustration and all development grinding to a near halt).
Hardware support in Linux is heavily tied to the state of the kernel that your distribution uses. Newer kernels generally have better support for newer hardware.
I am not aware of any distribution which is better or quicker at patching their kernel to fix Apple-related issues, so I suspect that your mileage will be about the same using most distros, especially as your MBP is not particularly new.
I switched from Slackware to OS X precisely because I felt OS X did more things automatically for me. Also, If you've used slackbuilds, they are actually quite similar to homebrew, in my opinion.
His evidence from the author of Redis is not accurate - chronologically speaking Salvatore jumped to the other side of the fence to OS X more recently than two years ago on 8/27/2010.
He stated in his interview for usesthis.com that:
"In the past my desktop was running Linux as well, I used fvwm2, for more than 10 years, with this minimalistic setup. Now I miss it a bit… but switched to Mac OS as it delivers a much better “just works” experience for me, every time I want to do Skype, print a document, or alike."
I posted a comment over on reddit, but someone who thinks linux is the greatest thing ever (I've been using it since the mid nineties, don't get me wrong) should be able to give me just a few of the unix server development features I get for free on OS X:
I run macosx along with 64bit Arch Linux and 32bit unbuntu under VMware Fusion. If I ever get around to upgrading to a quad core notebook with 8 gig of ram I think I should be able to get about 10 years out of that computer instead of the usual 3. Of course I will probably need to buy at least 6 smartphones/tablets during that time between me and my family. Everybody sees the trend, right?
I am in the same boat as the author is. I have vnc running on the linux box which I connect to from the Mac. Mac is just a dumb play box for me when html/js/css/py is being hacked.
Only time I am using native Mac is for mobile app developing using xcode/eclipse.
I am thinking of getting a ghetto laptop with linux installed so that I don't need to have my linux box switched on 24hrs a day.
If your Mac is powerful enough, why not just run a VM? With the great
For the past 5 years, I have yet to have a web-app dev environment meaty enough to require more than a small VM (Oracle CRM can be nightmarishly huge) which ran fine on my macbook.
With git/svn scripts, it's easy to build and unit-test on your local VM, then push to your stage/prod-test box.
At this point, I just prefer the way gedit renders text compared to OS X. It seems crisper and easier to read than OS X's anti-aliased with no regards to the pixel grid. That's the main reason I do all of my non-mac development on linux.
You need OSX to revolutionise social, and engage your target markets in the mobile sphere. That and the other reasons the guy above uses OSX. Get traction, get OSX.
For someone who is singing the praises of linux, his website (it does look like his personal website) is pretty awesome. Specially http://cloudhead.io/
The closer is arrogant too:
"If every thing I said went over your head, and you think I’m crazy, it just means your time hasn’t come yet."