34 comments

[ 3.3 ms ] story [ 98.2 ms ] thread
This article raises a question I've always wondered about, and since there are a lot of Mac users here, maybe I can get an answer. I've used Linux for everything for the past seven years. If I switched to Mac, my first concern would be setting up Emacs and Bash. Nearly all of my application use is Emacs/Xterm/Browser.

It seems to me like a lot of people have similar requirements, but choose to use a Mac. What am I missing out on? Is it a perception that Linux is inconvenient, or is there something I'm not understanding here?

The two are fairly similar. What people pay the premium mac price for is typically:

* better looking/feeling hardware

* more "it just works"

On the second point, what I mean is that using Linux often involves some 2-3-hour stints getting some weird driver problem sorted or installing the latest version of KDE or what not. I'm not saying that's a killer problem, but it is inconvenient and wastes time. This type of stuff doesn't happen very often on Mac OS.

If I couldn't afford a Mac, I would be using Linux too.

From recent personal experience, the 2-3 hour stints are increasingly a thing of the past.
Even when installing software? I'm not talking just about Linux proper here, but also its application-space. Mac apps tend to have a good level of finish, both in terms of UI look and feel, and in terms of the "it just works" mentality.

Anyway, great to hear things are getting better. I guess 2011 will be the year of Linux on the desktop then...

It goes both ways. I've found setting up Ruby and Python environments (not whatever system defaults, but development environments, including database drivers etc) much easier on Linux than Macs. As a developer I spend most of the time in the terminal anyway, so polish and glitz are relatively unimportant; I can see the appeal of the Mac to designers though.
Really? rvm (http://rvm.beginrescueend.com/) has made setting up Ruby development environments on my Mac a breeze. I generally only run a few versions of Python (2.6 and 3) and do most work in 2.6 so I can't speak to that as much, but I haven't had issues with Ruby or Python on OS X.

PHP is still a bit annoying, as the default PHP that comes with OS X kind of sucks, as does compiling PHP, but I'm used to it by now. And there's probably eight million tutorials on doing it if you aren't familiar :-)

I know several people who can afford Macs, and like the better looking/feeling hardware enough to actually buy them. However they're software developers and so to get the "it just works" they need to install linux on their iMacs and MacBook Pros.

The 2-3 hours stints to get a new version of KDE are long gone, you should give it a try sometime, you might be surprised.

My criteria in 2005 were simply that I wanted a UNIX with popular support, rendered type properly, ran Photoshop and Illustrator, and was low maintenance. OS X was the only thing that fit the bill. Linux can be coerced to fit these criteria now, but it's key to remember most Mac advocates didn't just switch in the last couple of years.
Even after Linux became more than viable for dev boxes, it still had rough edges for laptops e.g. sleep, suspend, battery life, wifi etc. This was excacerbated by laptops often being weird one-off productions rather than a big box full of standard parts (and that you can assemble yourself if need be). There are other issues (using Microsoft Word and Adobe products, classy looking hardware) but I think for a long time that was a major factor.
The solution I have for this is to buy old refurbished Thinkpads.
I don't think it's much of a problem anymore. Despite Linux not "making it on the desktop" or whatever, there's now more than enough people using it that a quick Google will reveal whether any random laptop has full linux support (including 3G modems, touchscreens, fingerprint readers and other weird odds'n'ends) and probably a community providing the software to fill in the few remaining gaps till the the required fixes hit the mainstream distros.
I do this, too. Great computers, great Linux support. It's a win-win.
To be fair, many of the laptop issues have less to do with Linux and more to do with the hardware manufacturers. There's lots of hardware out there, and the manufacturers just don't produce drivers for anything but Windows. Certainly, the community has contributed buckets of drivers, but "stuff just works" on Windows and Mac laptops because hardware has support for those OSes.
Sounds a lot like me, and I'm phasing out most of my monitor-connected Linux boxes in favor of Apple machines.

For me it was mostly about Gnome more than Linux per se. I can't stand GConf. I dislike how NetworkManager is in a constant state of flux. Gnome Do has had some hilarious 99% CPU usage bugs. (And KDE is simply a non-starter for me.)

Like the others say, the Linux situation is constantly improving, and I'm not averse to moving back at some point.

There are things I miss, and there are things that aren't perfect on the Mac too, but if something is annoying me to the point where I don't want to use it, not using it always seems like more of an option on the Mac than it ever did on Gnome/Linux.

There are a lot of neat tricks that aren't essentially part of the standard Mac OS X setup that are very nice. My favorite recent one is the ability to add custom keybindings for many emacsish editing commands to all standard text fields with a very simple configuration file.

For me it's a couple of things:

1. When I close the macbook, then later open it, I am confident that resuming from a sleep state will just work. No other laptop ever (including modern linuxes and modern windows) has given me that confidence. Since I move my laptop around a lot, this is a vital feature for me.

2. Awesome simple networking. As in, who needs the full power of iproute2 on a laptop very often? VPN, wireless, connection sharing, etc just work right and powerfully enough that I never have to think about it. But I have a full suite of tools for liberating Internet connectivity at conventions that was not to hard to port from linux.

3. Good support for presentations. I can plug in a monitor and just go, presentations are a breeze. Unless things have changed in the last few months, linux still just doesn't play nice with this.

Now, Mac isn't perfect: things I still miss from linux land:

* Total keyboard control over window placement. Seriously, this is something that Mac people don't seem to get.

* Apt (ports, fink, and homebrew are attempts at this, but none very good and have poorly maintained repos)

* Highlight-to-copy mouse semantics (Now the counter argument is in the mac everything copy/pastes the same where as on a linux system there can be couple competing clipboards glares at kde.. this is of course a strawman the semantics are nice and have nothing to do with n clipboards).

HTH

>> Total keyboard control over window placement.

I recommend Divvy or SizeUp

Agreed. I got Divvy when it was being offered on sale, but I totally would have payed full price for it. The ability to map out sizes to custom keybindings is priceless.
SizeUp, while not free is a pretty nice Window manager: http://www.irradiatedsoftware.com/sizeup/

Package management is indeed lacking considerably.

Highlight to copy can be enabled in terminal and there are Firefox plugins to do the same (I run Firefox fullscreen on one monitor and terminal fullscreen on the other, so it works for me. YMMV.)

Please try command-t.vim instead. That Article is from 2008 :)
Alternatively, with the latest version of FuzzyFinder add this line to your .vimrc:

    nmap <silent> <C-t> :call fuf#givenfile#launch('', 0, '> ', split(glob('./**/*'), "\n"))<CR>
fuzzy-finder-textmate (http://github.com/jamis/fuzzyfinder_textmate) is a separate script from FuzzyFinder (http://www.vim.org/scripts/script.php?script_id=1984). FuzzyFinder was the driver. fuzzy-finder-textmate was the adapter that gave command-T to FuzzyFinder.

FuzzyFinder works for things other than just files. It also works on tags, buffers, etc. Also, with updated versions of FuzzyFinder, you no longer need fuzzy-finder-textmate, just that line I posted above.

That said, if all you want is command-T, yeah...FuzzyFinder might be overkill.

command-t doesn't rank results in the right order. 90+% of the time I find myself having to scroll through the results to get the file I'm actually looking for. Fuzzy-finder, while a lot slower in running time, is actually faster to use and requires less mental load, since the right result is almost always the top one.

Unless Command-t can implement the ordering right, it's pretty useless.

I keep hearing good things about the PeepOpen plugin though.

Open a ticket and explain exactly how stuff should be sorted :)
One of the comments in the article.

"zt, zb and zz are commands that I use pretty frequently. They keep the cursor on the current line, but re-position the cursor at the top, bottom or middle of the screen."

Priceless! Was wondering how to do this a couple of days ago. Thanks David Frey.

I personally prefer `set scrolloff=999` which ensures the cursor is always in the vertical middle of the screen - this helps me always see the context of the current line.
On a widescreen I sometimes setup a file in multiple vertically-split windows, offset by one page, with scrollbind turned on. With scrolloff=999 I can now set 2 or 3 or 4 screenfuls of context around the current line.
z<enter>, z. and z- work for this too.
Except that they also move the cursor to the first non-blank character on the line. In other words, z<CR> is like zt^, etc.
These make it so the next time you hit 'n' to continue a search, it centers the screen around the result.

    " Mappings to keep the cursor in the middle of the screen most the time {{{
    nmap n nmzz.`z
    nmap N Nmzz.`z
    nmap * *mzz.`z
    nmap # #mzz.`z
    nmap g* g*mzz.`z
    nmap g# g#mzz.`z
    "}}}
I'm still using textmate on my mac.. and missing my favorite vim features.

What I miss the most isn't a particular feature.. but to be able to control exactly where I want to go next instead of relying on (right,right,right,right,right) or things like that.

i.e. To select the word contained between quotes, bct" instead of like "back back", alt+shift+right + shift+left+left (to remove unnecessary selected stuff).

I know there is a textmate plugin which let you use vim inside.. but it didn't quite worked for me. I might give it another try.

Instead of bct", ci". Text-objects FTW.
Add PeepOpen and

  map <D-t> <Leader>p
  imap <D-t> <Esc><Leader>p
Awesome and increasingly faster.