I first attempted to use linux on a laptop sometime in 2003 or 2004, when I downloaded a SUSE CD and tried to install it on my Thinkpad T40. I got the CD to boot and went through the installation, but when I rebooted the machine all I saw was an error about something called grub. I had to call IBM tech support (this was before IBM sold the thinkpad line to Lenovo), and amazingly the first person who picked up the phone recognized grub and walked me through recovering Windows on the machine. They couldn’t provide support for installing Linux.

A few years later as a freshman in college I finally succeeded installing Linux on a laptop with Ubuntu (I think it was 5.10). Thinking I’d learned a lesson the first time around, I spent a few days backing up my hard drive to a stack of CDs in case I needed to recover it. There was something incredibly refreshing about those old versions of Ubuntu compared against Windows Vista+. Sharp lines and browns gave a raw, light feeling that I can’t explain but made it so much fun to use the machine.

I eventually switched back to Windows on my laptop for some specialized software for school, but once I hit junior year and had some money from an internship I built a desktop, put two hard drives in it, and installed Linux alongside Windows. I went through a series of distros (Gentoo, Ubuntu, Fedora, Arch) and learned a bunch about how operating systems work from a user’s perspective (e.g., how do you let a user start programs when a machine starts, how do peripherals get attached, that desktop environments are a thing). I’m so envious of kids these days with virtual machines and the RAM to run them, but looking back I learned a bunch from trying to get things booting on real hardware.

At some point through the years, as I’m sure happens to many of us, I started to have less time to tinker with computers. I eventually settled into a philosophy that I’d keep two personal machines: a desktop machine where I can make sure to buy hardware that supports Linux, and a laptop that will “just work”. Since ~2008 I’ve owned a series of Macbooks that always booted, and a few desktops that were usually functioning but that I felt comfortable messing around with. They typically dual-booted windows (for games) and Linux, and I was happy. At work I’ve used macbook pros for software engineering since 2011. There’s stuff I miss from Linux on OSX (especially as Linux containers became more of a thing), but by and large for everyday work I find OSX very nice to use and the hardware beautiful.

In 2016 I bought a top of the line 15” Macbook Pro for work and my feelings started to change. The new macbook pros make a few design compromises that aren’t what I’m looking for:

I recently left my job to start a new company and needed to buy a laptop (my 2013 macbook air, while functional, is really starting to show its age). I considered the new macbook pros (reading some reviews online that the 2018 models have fixed a bunch of quirks since 2016), the XPS developer edition, and the Thinkpad X1 Carbon.

I ended up picking the X1 carbon. I’m sure the XPS is a nice machine, and I really appreciate that they support a model with Ubuntu pre-installed, but at the end of the day I’ve used thinkpads before and respect the brand. I bought the 1TB, 16GB ram model with the lower resolution (1080p) screen for ~$1850 USD.

Ubuntu and the X1 carbon

Use Linux on the desktop long enough and you start to learn some lessons. While pretty much anything is possible if you try hard enough (ask me sometime about running a RAID array on my desktop in college) you’re going to experience a bunch of pain if you go too close to the bleeding edge. So while I run arch on my desktop at home and have nice 4K screens, for the laptop I chose the regular 1080p 14” screen and decided to install the latest Ubuntu LTS, 18.04. As far as I can tell both Gnome and KDE still don’t have great support for varying screen densities. You can do non-integer text scaling and it works OK (some interface elements are wrong-sized, which is ugly, but I can click things fine), but they don’t support different scaling on different screens (e.g., 1.25x scaling on screen A, and 2x scaling on screen B). Windows 10, by the way, handles multiple monitors of different DPI very, very well. You can even drag screens across windows and it somehow keeps them looking reasonable while they’re spanning to screens of two different scaling factors.

Installing ubuntu 18.04 on the thinkpad was a disaster. I wanted to dual-boot Ubuntu alongside windows. I’d bought the 1TB SSD model to keep Windows around for the occasional customer visit where screen sharing requires installing a .exe from cisco (this is a thing I promise). It turns out that if you start installing ubuntu 18.04 but abort the installation at this step (clicking Quit), and are on a machine with secure boot, something terrible happens. I don’t really understand secure boot, but there’s some area on the machine where the OS can set “EFI variables”, and by getting to this point in the install you’ve set some, including something that tells the bootloader to try to load mmx.efi. You can read about the problem here.

Anyway, I started the installation, got to that screen, hit quit, and then rebooted the machine (successfully) into windows. From windows I resized the windows OS partition to make space for my Linux install, then tried to reboot back into the Ubuntu installation. That turned out to be impossible. Every attempt to boot into the ubuntu installation errored out with this:

alt text

I “fixed” the problem following this comment and was able to continue with the installation without any further problems.

Happiness

Everything has been great and stable since the install. I’ve had none of the sleep problems people reported (my bios has an option to switch from “windows” to “Linux” sleep mode, so I think I have a version with a fix lenovo put out). I can leave the laptop unplugged overnight with the lid shut and open it in the morning with basically the same amount of battery left and it resumes from sleep immediately.

Battery life has been excellent (in my opinion) out of the box. I haven’t done any scientific testing but I’m getting at least 5 hours of battery while doing “real work” (a handful of docker containers running, a dozen Firefox tabs, emacs, slack). I know there are people out there optimizing this and getting 10+ hours of battery, but I’m just thrilled to be able to use it away from an outlet for a few hours at a time, which I’ve never been able to do on any of the Macbook Pros I’ve used.

The 1080p screen is great. I haven’t done any color calibration but the fonts are crisp (maybe I’m getting old, but 1080p at 14” is sharp enough for me). For some context I find the old 13” macbook air 1440x800 screen noticeably grainy, my 15” Macbook Pro screen gorgeous, and a 2560x1600 27” display to be fine but not as sharp as 5K.

The laptop has run cool and I haven’t noticed any loud fan noises.

I love the Macbook Pro trackpads, especially the new one on the 2016+ models that’s huge. It feels so smooth and completely responsive. That said, I only really use it for scrolling documents, I don’t do graphic design and most of what I do on a computer is through the keyboard. I thought the Thinkpad trackpad was garbage for the first few weeks I was using it, but it turns out I just don’t like the way Firefox implements scrolling. In Firefox when you’re doing two finger scroll the window jumps in chunks, it doesn’t give you the pleasing feedback that e.g., safari on osx does where the screen seems to be moving exactly with your fingers. Turns out that’s just a Firefox thing, though, and in Chrome I have none of those problems and scrolling is just about as nice as it is on OSX. I haven’t looked in to whether any of the gestures I used on OSX are available, but the Gnome super-key behavior that zooms out the windows and gives you a type-to-launch application search is enough for me.

The trackpoint (red rubber thing on the keyboad) settings are way too sensitive and I haven’t gotten around to fiddling with them, so I sadly just don’t use it.

The keyboard feels very nice, though it’s kind of a “fake” mechanical keyboard feel to it. The key travel is pleasing, but you have to firmly press the keys to get them to register. I’m used to my das keyboard on my desktop, where you can half-press keys and still register the key. The Thinkpad keyboard feels similar in the clickiness, but I keep missing letters. (Note: after another two months of use my frustrations have gone away. I really like this keyboad.)

The machine has been totally stable.

Wifi is so much more reliable than it was the last time I used Linux on a laptop around 2009. I’ve had no problems connecting to a variety of networks.

I’ve connected external displays with the usb-c port and they worked. Closing the laptop lid and then waking the external screen up by hitting a button on a USB keyboard also works fine.

Final thoughts

The X1 carbon brings back the joy I got when I used my first Macbook back in 2008; it’s a solid feeling computer that’s nice to touch where things seem to “just work”. I’m frustrated that in 2019 I was able to completely bork my installation just by clicking buttons on the graphical installer, but I’m thankful to the community that I could eventually get it working and that we have access to such amazing open source tools.