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.

xmonad

Choosing a window manager was probably the easiest decision. At first I
thought about not using a GUI at all, and just live in a tmux session,
but that wouldn’t really work with the web-based development that I do
these days, so I just grabbed the next closest thing to tmux, which is
xmonad.

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.

I’m still waiting to try this on a bigger screen than my tiny 13”, but
I’m pretty sure that once I run this on a big screen, I won’t be able to
go back to using a regular ol’ OS X (yes there are xmonad-like things
for OS X, but they don’t really work in my testing.)