Thoughts on OS X Yosemite, Arch Linux and xmonad

I've been using OS X as my main machine for quite a while now, mainly because I got into Ruby development, and having a Mac is just the thing you do when you write Ruby (at least that's what I thought back then.) One of the main reasons why I really fell in love with the Mac is that things just work. There is no hassle in setting up your drivers, or connecting a printer, or getting your favorite app to work. Everything works out of the box.

We even have homebrew, which is really nice, as long as the thing you need has a formula that someone has tried before. This is where things start to get a bit hairy sometimes though. Things that are popular usually work 100%, on the other hand, programs which aren't in the core repertoire of a Mac developer either don't have have a formula at all, or it is broken and/or outdated (I know there are things that work wonderfully on the Mac that don't work so well on other platforms, but that's not the point here.) To put this in another words, as long as I was doing what everyone else was doing I really enjoyed the Mac.

One thing I really admired about the Mac is that everything was designed to be perfect. The key word here is was. We got a whole new user interface with the OS X Yosemite update, which I actually do like a lot, but we also got a huge number of buggy and incomplete things. There are parts of the UI that are clearly broken, especially in the dark skin. Handoff and continuity works only when it wants to work, and when it does, it is really slow. The most annoying thing is that when somebody calls me on my phone, and the Mac start ringing, and I pickup the phone because I have it close, the Mac keeps ringing loudly for another 3-5 seconds, making it impossible to hear the person on the phone. While this might seem really minor, it gets so annoying that I turned off the feature after 2-3 phone calls. There are more things like this that are tiny and broken, it just isn't the Apple it used to be.

This is when I decided that my next computer isn't going to be a Mac.

Choosing the right Linux distro

I've always been using Linux on the side, mostly because you can get a tiny 13” Lenovo for 1/3rd of the price of a Macbook Air (Macbook Air starts at about $1500 in my country, while the Lenovo I'm typing on right now costed about$500.) I always just installed Ubuntu, since that's the thing that works.

The thing is that I never really liked Ubuntu itself. It's an OK distribution, and I would recommend it to anyone who isn't familiar with Linux, just because you can get it working really quickly and there are no surprises on the way.

But I don't want to be a casual Linux user anymore, I want to customize everything based on my needs. I don't want to use 95% of the apps that come installed with Ubuntu, not even Gnome. The reason why I used it is because it installed in almost a one click install, but that's a poor reason to choose a distribution.

This is where I made the choice to go with Arch Linux. I tried it once a few years ago, but it didn't really stick back then, becuase my mentality was to install everything and make it look like a Mac, which obviously didn't work because I was lacking the Mac apps.

But now I think I finally understand the philosophy that one should follow when using a distribution like Arch Linux.

It's been only a few days, but I can already feel the power. Just being able to hit the keyboard once and have a terminal pop up instantly is an amazing feature. I'm not sure if it's the terminal emulator I'm using, or if it's xmonad, but opening a new terminal is really, really, really fast. If I didn't have such a slow ~/.zshrc it would open as fast as I let go of the keyboard, but right now there is about 100ms delay (yeah I'm gonna have to optimize my zsh.) This might not seem like a big deal, but actually being able to open a terminal at any time, type one command, and immediately close it is amazing. I can be browsing the web and see something I want to try, and without grabbing the mouse just open a split terminal window and re-write the command from the web page, then close the terminal and keep browsing, all without ever touching the mouse.