At heart, I'm a hacker, and I want an environment that I can hack on when I need to.
Also: focus follows mouse is not an optional or an extra.
I've been using a Linux desktop since 1996, and as far as I'm concerned, it's about 100 times easier than it used to be, so whining about things not being 'just right' fall on deaf ears, especially when for me 'just right' means focus follows mouse and other things like that that I have dialed in just how I want them.
It may be OK for you because you require focus-follows-mouse to be built-in, but "It's better than it was in 1996" is pretty faint praise. If somebody told you he'd clubbed 90% fewer baby seals this year than he did in 1996, would that lead you to think, "Wow, what an upstanding guy"? All operating systems, including Windows, BeOS and Amiga, have improved since 1996.
And I think for most people, a working wireless card is more of an out-of-the-box priority than focus-follows-mouse. (Though personally, I would have liked Linux more if it just didn't cause my keyboard to stop functioning after the computer came out of sleep mode.)
I am sorry, but nothing beats needing MySQL, PostgreSQL, some Emacs thingie or a splittable terminal and being able to instantly issue a "sudo aptitude install" on a terminal and have everything taken care for you.
Some developers adapt to OSX, but, if you read TFA, you'll realize this is not a cross section of the hard-core hacker types: 80% of the sample prefers Windows.
OSX is quite acceptable in roles traditionally reserved to Windows PCs in the corporate world. It runs Office, Outlook, talks nicely to Exchange and runs Eclipse just fine. Many corporate Java developers (a bunch that traditionally used Windows) can use Macs for work and enjoy some advantages in relation to those who use Windows.
You may argue that Linux is not as polished a Unix as OSX (I disagree, but smart people believe it), but no serious hacker thinks Windows is acceptable for development unless they are also targeting Windows for deployment.
Indeed installing mysql on ubuntu is simpler and faster then on OSX. But installing major packages only happens that often.
What happens much more often is having to constantly fiddling with your Linux machine for it to continue working flawlessly. Upgrades tend to break things, external devices not being supported, etc, etc, etc. You need to constantly invest time in keeping it going. Much less so on OSX.
For me OSX is a Unix that just works and has a beautiful GUI.
It's not just major packages: minor things like screen, tree, zsh, libraries, tools, extras and plugins. I don't care how often I have to install stuff, the hassle OSX causes for that is not worth the beautiful GUI that still doesn't maximize windows properly. Anything complicated is painful on a Mac and I do complicated stuff everyday.
And it's more likely your fiddling is breaking your Linux box than the other way around. Either that or 1995 wants its Linux back.
A 90% reduction in some crime stat is also quite drastic. The point is that if you started out behind, you have to go a long way just to get where the other guy was when you started.
I agree that desktop Linux is drastically better than it was in 1996, but unless you like hacking your system's innards or just have an ideological opposition to Apple (both of which are reasonable — don't get me wrong), I can't think of a lot to recommend Linux as it exists today over OS X as it exists today.
I wholeheartedly recommend MacOS for people like my mom, who certainly doesn't need to fire up something like Emacs.
However, for those who like to explore technology in creative ways (hackers, in other words), and want to deeply understand the systems they use, the freedom involved with a system like Linux is still the place to be, IMO.
And for when you're just getting stuff done, I don't think it poses any major challenges these days; or at least it doesn't for me. If you're a graphics guy and need Photoshop, clearly things are different.
Ok so my basic question is, why can't OSX be a "hacker" os? Or even windows for that matter? Not having source has at times made things more fun to explore. Look at the sheer creativity of virus writers.
Why is having a workstation that you don't need to babysit due to version upgrades a bad thing? Note I've used linux since 1997ish, might have been sooner I can't be arsed to check.
Note: I run with chrome/emacs/iterm/vmware basically, and my "day job" gives me more of the linux kernel and scsi/fibre stack than I'd really like. I've dug through enough of their sources fixing problems we encounter that I hope I at least get the title of honorary hacker.
But complete understanding of everything I run? Meh, there is more to life than that, maybe I'm getting old, but administering my home machines has gotten less appealing as time goes on to the point that I really just want to see things mostly working without me needing to spoon feed things.
I can setup a new mac in about 30 minutes. Course I can do about the same on linux. Mostly just a git clone and run a few scripts and I'm setup. As far as distros, i've had them all blow up in one way or another, debian, gentoo, linux from scratch, arch, ubuntu, opensuse, suse, redhat, fedora, centos, those are all I can remember using at the moment. The one thing I've found is after 6ish+ months of updates something managed to break my xorg config or nvidia driver installs. So far Arch is the only one that makes updates simple enough.
Sorry got on a bit of a rant there. And for that upgrade unavailable, the laptop I'm typing this on just got a new lion install from leopard via a usb drive. Yes I couldn't upgrade it, but to be honest I don't do anything overly too off the wall to care. No need to have snow leopard, just do what I did for friends that bought it after they installed it, get a buddy to burn the dmg to a usb drive, or dvd I guess.
> Ok so my basic question is, why can't OSX be a "hacker" os?
The basic problem is that development and hacking are different use cases for the machine than the general public needs. Apple considers the general public primarily, and the development and hacking public secondarily.
Completely agree. OSX hides so many things away from me. It would take days of configuration of a fresh OSX install to get to a state where I could work with. Having to install 10 payed 3rd party programs to make the system itself usable(SFTP, File manager, KEEP A WINDOW A TOP(!)) is ridiculous. Also, having a Unix where half of the stuff was moved around is not a good starting point in case you're working with a ton of Linux Servers.
It sounds like you did this before. In which case you should have restored from a TimeMachine backup. Your restored account is pretty much identical to your old one. The only reason you can tell it's not your old machine is because you have a physically different machine. Takes maybe 1-1.5 hours.
The Lion updates will soon (devs need to update their software) make things even better for users. Auto save and built in versioning.
While I've tried using various distros of Linux as my primary OS (and I used to really love hacking and tweaking my UI like crazy), I'll say that nowadays I want an environment that I can hack on when I need to, but that I rarely need to hack on.
OS X fits that role for me. I just feel like there isn't enough time in the day to hack and tweak my OS and write code for clients and my own projects.
I rarely need to hack on Linux these days, but have in the past:
1) I hacked up a patch to make it boot better off of USB keys. Sadly I'm not sure they ever accepted it in the main kernel, despite being way better than their own hacky (wait N seconds for the device to settle) method.
2) I hacked up a nice little environment for a coin-operated internet machine, to stick in the corners of hotels. It was pretty cool, unfortunately the guy running the operation with me screwed up the business side and it never went anywhere.
I run Linux ... virtualized in OSX. Because OSX and MacBooks has wireless that just works. It has networking that just works. And it has suspend/wakeup that just works. But its bundled UNIX toolchain sucks, and Macports, et. al. don't just work.
I run the VM headless, sized similarly to a typical Rackspace Cloud server. This setup lets me use the GNU toolchain while being highly mobile.
Absolutely. I love Vagrant. Last night one of my virtual machines flaked out, and because everything was managed with Puppet, I just deleted the VM and told vagrant to recreate.
10 minutes later I was back in business like nothing happened.
Had a physical machine of mine failed it would have been a fun few hours of machine debugging, instead of "oh, I'll just destroy and recreate the VM, no biggy"
Interesting - I see we both have projects on github called "vagrant-base"!
On mine (https://github.com/drench/vagrant-base) each branch sets up a different environment (Drupal, node.js, generic "LAMP", etc.). They currently all use shell scripts for initialization, but converting them to Puppet is on the list. I may borrow from your project's Puppet manifest.
Some context. I started this current gig 18 months ago. I develop on Ruby on Rails (of course), and ultimately deploy it into the Rackspace Cloud. I also wanted to mess around with Opscode Chef. I had also watched friends and business partners struggle with MacPort for years, and watched them struggle with bundler and rvm more recently. I wanted to skip that.
I'm actually using VMWare Fusion. My employer had an extra copy. I run VirtualBox at home. The platforms are not exactly the same, but my beefier gaming box running (now older version) of VirtualBox seem slower. For the purpose of developing in a VM, I don't think it really matters between VirtualBox or VMWare technology-wise, as long as you have some sort of command-line tool to bring up new VMs.
I wrote some bash scripts to clone VMWare images, including filters to search name references and rename them to the image. You can use Vagrant to do the same with VirtualBox, and from the demos I've seen, it is a easy way to get into this setup on your MBP.
I built out a template with 256M + 10 GB slices, just like on Rackspace Cloud. On the i5 MBP, I allocated a single core to each slice. On my current i7/8GB setup, I'm allocating two cores. I've also had to beef up two of the slices from 256M to 512M and 1G so that I could run the full rspec against the apps. I have tried allocating all 8 hyperthreaded cores, but I guess VMWare Fusion isn't quite like Xen. I generally run no more than two slices at a time. VMWare Fusion makes it relatively easy to suspend VMs, and I don't jump around on a number of projects so I have not needed to hot-potato things much.
I had not had problems with VMWare with regards to idling. Both VMWare Fusion and VirtualBox are now using Xen-style paravirtualization, so when it is idle, it sits idle. When it does eat up computing cycles when idle, it has more to do with Rails (or Merb) polling inappropriately. With this setup, I've had problems on the i7 MBP kicking up the fan for no apparent reason and I suspect it is Chrome or Flash.
Wakeup/suspend by closing the lid works on the VMs. Linux doesn't even know the VMs have been suspended, so I don't mess with any kernel settings for that. On the downside, these VMs currently run on an independent wall clock which means resetting the clock if I want accurate timestamps on commit logs. There's probably a setting to fix that.
I'm using Gentoo for the distro, but that doesn't matter as much as using the distro you like or better yet, using the distro you are deploying against.
Editor-wise, I am shelling in with ssh and using vim + Rails.vim against screen. (I'm also using Terminal.app + Visor and iterm2 w/ visor mode). I have a customized /etc/hosts file with shortnames for the VMs so I can shell in fast on the occasions I do shell in. (I have flirted with shelling in and using Emacs -- it works wonderfully well, if I wanted to abandon VI modal editing).
Each slice is configured with two virtual ethernet devices, one going to physical ethernet device (bridged) and one going to the virtual LAN (no NAT). Since I sometimes go use free wifi and they require IP authentication, I don't see the point of exposing the internal slices to the world. Instead, I installed Nylon through MacPorts and have it turned on to accept SOCKS5 requests from anything inside the virtual LAN. On the VM side, I have proxychains set to talk to Nylon on the outside. This way, I only have to web-authenticate once on the free wifi and prepend my git pushes with proxychain. With the virtual LAN, the intent was so I can always shell into my vm on my laptop regardless of my external network connectivity.
One nice thing about this setup: at some point, when the Gems start accumulating and start bogging down load time for Ruby and Rails, I can drop it and clone a new VM.
Due to some circumstances, I'm going to be getting an i7 Air by the end of this month and I'll replicate the setup. I may use Homebrew or Gentoo Prefix on the host side, but I'll still continue to use some sort of virtualization of Linux. I'm skeptical about drinking the 'brew ...
I have a friend with a similar setup. The friend has to run Windows to do proper browser testing so he has different requirements. He also has FUSE running with a Samba shared folder so he can use TextMate on the host side and run things on the Linux side. I've only had a few occasions where I wished I could do that, virtual DropBox-style, but it hasn't reached the level of scratching-itch yet.
Gentoo can be a pain in the ass, but the occasions when I need package masking and using precise, specific library versions, there's nothing else that does it.
Ultimately, I think Homebrew will win out because:
When sitting in very long, boring meetings, or very long train/airplane rides, I can still hack away on vim (or occasionally eclipse) for hours despite the complete lack of power outlets. The fact it's bash/posix means that I can run most of my tools locally as is necessary when I cant ssh to my real development servers.
So basically its not that I prefer OSX as a dev environment, it that OSX provides the same dev environment with a much, much longer battery life.
(oh also good Exchange integration via ical and mail.app don't hurt).
It's way better. I have a 2 year old MBP 13". Replaced the optical with another HD. Still gets 4 hours battery life. Little more if I am seriously doing work and not messing around.
The convenience of something like apt for quickly assembling or installing your machine with all software automatically updated is hard to beat. Mac OS also tends to ship with older versions of software and rarely gets newer versions without a full OS update - meaning they will get older and older with time.
OTOH, there are many scenarios where a Mac is the only option. Any development for iPhone or Mac is painful on other platforms.
I use homebrew "for quickly assembling or installing your machine with all software automatically updated" and really have nothing to complain about. Mac OS X ships things like Python and Ruby, not because Apple envisions you will use those things to build custom applications but because there are system tools that depend on them. That's why upgrading these system packages too aggressively is a bad idea, even on Linux (and that's why RHEL is still on Python 2.4). You always have cleaner way to get and use newer versions of almost all packages without breaking the system.
I was lost without apt for a while too until I discovered homebrew.
The list of packages available in homebrew is growing at a pretty crazy rate as well. It's currently the most forked project on github (https://github.com/popular/forked).
I know I can coerce OSX into being a Unix-developer-friendly OS, but, unless you require the hardware it comes bundled with or some specific feature only OSX provides, why not start with a more server-like OS? Most of the servers I deploy to run Linux. If I develop and test everyday under Linux, I'll have less surprises when I deploy to production.
I don't see why upgrading packages (like Python or Ruby) is a bad idea. For instance I have Python 2 & 3 installed on my laptops (Arch Linux) and it just works well.
Well, macports/homebrew seem to fill the package manager gap pretty well. I upgraded to Lion the other day - one "port selfupdate && port upgrade" command and an hour of downloads/compiles later I had my dev environment back to normal including fresh compiles of php, postgres, apache, memcache, redis, imagemagick and any number of their dependencies.
With homebrew I didn't even have to do that, since the Lion upgrade leaves /usr/local and launchd alone. The only rough spot I had was installing the App Store version of XCode, because I was a dumbo and installed the beta version of XCode in /Developer (never do this).
hombrew is awesome! previously my big complaint about os x was the difficulty of installing packages a la linux. you can't really say that any more. perhaps it doesn't quite have the sheer size of packages, but what it does have is much more up to date than linux repos for the most part. it sucks that you have to pull down xcode to develop on mac(huge download, and i understand that many people doing development on a mac will never use it), but i'm doing iOS development anywho.
My old setup was a Mac, with keyboard and big screens, with an xemacs window open to a linux box. Then, I lost a hard drive on the mac (while time machine was in self borking mode). Migration ensues. (some of which was planned)
So then, I've got 2 ubuntu boxes, and a mac that needs rebuilding. Dev stuff has been moved from hw linux to a redundant array of cheap virtual machines. One of the HW linux consoles is repurposed to run vms, run the vm generator, and also do some ui stuff, since Xemacs and chrome are pretty much the same anywhere. All well and good.
So, linux box #2 doesn't like to have a keyboard plugged into it for any length of time. It starts to ignore it. (Why, I don't know). But it runs VMs like a champ, so there it is.
Linux box #1 does fine for months, until this morning, when Xorg fubars itself, and then proceeds to do it every 15-20 minutes.
So, now, I guess, I'm back to the mac. Since it's hd has been rebuilt in the intervening time. Though I'm still getting used to the terminals in Lion.
But that's not what I came here for, The real point of the story is:
emacs --daemon
and emacsclient -c.
So now, in the dev vm start up emacs in daemon mode. Then, you can connect to that process from any tty or xserver. With all your state. I like state.
I used Linux (Slackware, Debian then Ubuntu) since 2000, and as my main OS since 2002. Last year I had to switch to Mac OS in order to develop for iOS, I have several issues with Mac OS, mainly I don't like their window management at all (when I close a window I want the app to be closed, I don't like the menu bad not integrated with the windows, I don't like how works the resizing,...).
But when I see what is gnome on Ubuntu 11.04, I don't really know if I would like to switch back know. I don't know how to put it, but my desktop pc is _not_ a touchscreen, I don't understand why they changed everything as if it everything was an iPad... Moreover it seems to me that the state of Firefox (yeah I'm still rooting for FF) on Linux is largely lagging behind win/mac at least for its UI. And worst of all, I'm feeling that a lot of skilled developers have switched to Mac OS recently and putting their skills to develop .app instead of .deb now.
I'm actually a bit sad because I love Linux more than anything.
For window resizing, I can recommend http://irradiatedsoftware.com/sizeup/ - there's a free demo, and a full license is cheap. No affiliation with the author: just a happy user.
I'm using Windows and Ubuntu. Why? Because where I live (Croatia) a Mac Mini 2.5GHz costs the equivalent of $1300, which is almost twice the $799 price tag on Apple Store. Nuff said.
I'm a bit of a Linux nut, but I'm seriously considering getting a MacBook Air for my next machine as there doesn't seem to be any comparable non-Apple hardware out there. Does anybody know of any?
I used a Mac laptop for years (PowerBook 12") and, although the OS was pretty good (that's high praise from me) from a user perspective, the hardware was awful.
Aluminium is not an appropriate shell material for a mobile device. Being able to swap the hard-drive is essential, unless you want to buy a new device each time you drop it.
The Thinkpad is so much better than the Apple in every way. I run Ubuntu on mine, and it works perfectly.
The Thinkpad even looks better than a Mac. Not immediately out of the box of course (new Macs look lovely), but after a few months of use, the Thinkpad's magnesium alloy shell still looks pretty good, while a Mac's aluminium is scuffed and scratched.
Gonna have to disagree here. My 15" mbp has survived a motorcycle crash (long story short, it ended up as back armor). Only thing that isn't working is the dvd drive, and thats more due to me being too lazy to bend the aluminum back into place.
No real scratches on it of huge amount, but aluminium as shell works quite nice thank you very much. I've had this laptop for almost 3 years now, outside of the whole case being warped around due to impact its pretty much same as it ever was.
Ultrabooks will start appearing soon, and far cheaper than the Air. For example, the Acer Aspire 3951 was just outed. 13.3" display, 13mm thick, Sandy Bridge, 160GB SSD $960, or $770 for the lowest spec which basically means no SSD.
Aren't those still rumors? Considering that the picture that was used was apparently also used for all Macbook Air rumors floating around before it launched.
Yes, until Acer confirms or denies it. But Intel has laid out what classes as an Ultrabook, which includes a machine less than 20mm thick, Sandy Bridge second gen chip, and a sub-$1000 price tag. So even if the Aspire turns out to be just a rumor, other laptops will appear with similar specs soon.
Really, the same pictures? I haven't seen any mention of that in the current stories. Do you have a link. The machine looks great, especially at the price points mentioned. Why does it feel like everything is taking too long to come out.
Not right now, but soon (in a few weeks - months) there will be a whole avalanche of laptops coming out based on Intel's Ultrabook platform; very much 'inspired' by the MacBook Air.
After, or in addition to my Thinkpad Edge which I am moderately pleased with, I consider getting an Asus Eee. They seem pretty solid and appear to have good Linux compatibility. They also appear to be one of the most popular notebooks for FreeBSD with extensive guides online.
I own a lenovo X1, which I don't think it's a direct competitor of the Mac Air, but it's light enough, the keyboard is really really good, and Linux works out of the box.
The Samsung Series 9 is pretty similar. I've got a MacBook Air and I've played around with the Samsung. Build-quality and hardware-wise the Samsung is, in my opinion, at least as nice as the air, but I've heard that it's currently a bit of a pain to get everything working under Linux.
I'm in a similar position: I use Linux (Ubuntu) for my development needs (I'm a computer engineering student), but I'm thinking of getting a Macbook Pro 13'' on a future trip to the U.S. (I'm from Europe, so buying it in the U.S. would save me money due to the current dollar value). However, I'm not sure if it's worth it, as I might work in security when I finish my degree next year, which might mean that I would mostly run Windows...
Any laptops have very similar specs? I've heard that the newest Vaio SB overheats sometimes...
I'll be moving to a MBP when the next refresh hits from Ubuntu as well, and I plan on running Windows in a VM if I ever need to. I'm sick of having to deal with Linux's shitty support for iDevices, as well as the awful battery life.
Yes and No. I like my Air for developing and you would have to pry it from my cold dead fingers, buuuuut: I tried to install python PIL just yesterday and thought easy as pie, not! easy_install complains that gcc is getting the ARCH_FLAGS as ppc not x84_64, plus a couple of other nitpicks. So I used ports, but that means I had to install a new Python interpreter ... and well I have better things to do that replace apt.
Apt > (ports,mac,brew) anyday, but rarely is it an issue.
No package manager is perfect though. Installing rubygems through apt for example is a pain because it's a custom version that will install gems to a different directory than vanilla rubygems.
Trivial to fix if you know about it, but you have to figure it out which easily wastes as much time as having to install macports.
I know exactly what you mean. I tried installing PIL and OpenCV a while back on my MBP and it was completely frustrating with all the different problems I was running into.
Finally gave up, installed Ubuntu on a VM, and synced my dev files on OS X with my dev environment with Dropbox. Ran all my code on in my Ubuntu VM just fine.
Some things I love OS X for, other things I leave to Linux because they're still much much easier to develop for.
I use Linux and BSD servers (hardware and virtualized), and Macs for laptops and some desktops.
I use Linux desktops for serious sysadmin tasks, due to focus follows mouse, but I really like having CS5.5, iWork, etc. even on a desktop. I'm also a lot happier with OSX for mobile devices due to power management, device drivers, etc. And, I love the iPad and iPhone, and the Mac is a much better host for those.
Really, mac ports covers 95% of what I need on a machine. Being able to scroll in a non-focused window really covers most of my need for pointer-focus too.
I pick OSX over Linux because why can't my dev box also be my everyday box? I have access to all the GNU/open source dev tools I need on OSX, so why give up Photoshop, Office, iTunes, etc just to say I'm using Linux? I have a dedicated Windows machine and at the end of the day, I'm still using Windows in Parallels over a dedicated Windows box.
My old setup was a Mac, with keyboard and big screens, with an xemacs window open to a linux box. Then, I lost a hard drive on the mac (while time machine was in self borking mode). Migration ensues. (some of which was planned)
So then, I've got 2 ubuntu boxes, and a mac that needs rebuilding. Dev stuff has been moved from hw linux to a redundant array of cheap virtual machines. One of the HW linux consoles is repurposed to run vms, run the vm generator, and also do some ui stuff, since Xemacs and chrome are pretty much the same anywhere. All well and good.
So, linux box #2 doesn't like to have a keyboard plugged into it for any length of time. It starts to ignore it. (Why, I don't know). But it runs VMs like a champ, so there it is.
Linux box #1 does fine for months, until this morning, when Xorg fubars itself, and then proceeds to do it every 15-20 minutes.
So, now, I guess, I'm back to the mac. Since it's hd has been rebuilt in the intervening time. Though I'm still getting used to the terminals in Lion.
But that's not what I came here for, The real point of the story is:
emacs --daemon
and emacsclient -c.
So now, in the dev vm start up emacs in daemon mode. Then, you can connect to that process from any tty or xserver. With all your state. I like state.
Also: focus follows mouse is not an optional or an extra.
I've been using a Linux desktop since 1996, and as far as I'm concerned, it's about 100 times easier than it used to be, so whining about things not being 'just right' fall on deaf ears, especially when for me 'just right' means focus follows mouse and other things like that that I have dialed in just how I want them.