The 2014 Lenovo X1 Carbon: Lenovo Giveth, And Lenovo Taketh Awaypermalink categories: technology originally posted: 2014-06-19 16:57:13
If I could stand using trackpads I'd probably buy Apple laptops. Apple laptops have amazing build quality. And since they sell so many of them, an enormous ecosystem has emerged behind them--they get lots of neat peripherals, and you can get them fixed anywhere. Sadly I hate trackpads--my laptop mouse control of choice is the little rubber joystick mouse.
So I only buy Thinkpad laptops. Thinkpads also have excellent build quality, and tend to run Linux really well, my nerdy operating system of choice. And most importantly they have a wonderful joystick mouse, under the trademarked name "TrackPoint". One feature that's unique to Thinkpads is middle-mouse-button scrolling: hold down the middle mouse button, then use the joystick mouse to scroll the current window up and down (and sometimes left and right). I got used to this a long time ago, and I love it and use it constantly. Which means I only want Thinkpads.
Unfortunately this Thinkpad-only policy left me high and dry for a long time when it came to "thin and light" laptops. Apple introduced the Macbook Air in 2008, and it was a revelation: thin, light, but still powerful enough to do real work. The Macbook Air quickly became the laptop of choice for many programmers. I was jealous. But they didn't have a joystick mouse, so I simply wouldn't consider them. I had to wait for Lenovo to catch up.
The 2011 X1
Lenovo's first try at a "thin and light" was the X1, introduced in 2011. Sadly I feel it was a bit of a mis-step. The problem: making a proper thin and light requires some compromises that Lenovo apparently wasn't willing to make--or thought their customers wouldn't put up with. So it wasn't that thin, and it wasn't that light. It was wedge-shaped, 0.65" thick at its thinnest, and 0.84" thick at its thickest--compared with the Air, which was 0.68" at its thickest. And it weighed 3.7lbs; the heaviest Air at the time weighed only 2.9lbs.
The X1 had some neat features (slice battery, rapid charge) and some antagonistic design choices (rubber door over the ports, only available with a glossy screen). Ultimately it was a bad compromise; it wasn't a good traditional expandable Thinkpad, and it wasn't a good thin-and-light. It was kind of a laptop for nobody. I still preferred it to my other Thinkpads, but I had to wait for more than a year for Lenovo to really deliver.
The 2012 X1 Carbon
Lenovo's second attempt was the late-2012 X1 Carbon, so named because of the carbon fiber used in its chassis. It's thin! It's light! The 2012 X1 Carbon was only 0.68" at its thickest, and weighed a mere 3.0lbs. In my opinion this was the first decent Macbook Air clone.
To get that light and skinny, the 2012 X1 Carbon makes some of the same compromises the Macbook Air does: the RAM is soldered to the motherboard, and the hard drive is SSD-only and uses a funny custom connector. Upgradability suffers--which is totally fine, since the usual upgrade path for a laptop is "buy a new laptop".
The 2012 X1 Carbon was available with a matte screen, and they even ditched the irritating rubber covers over the ports. They really fixed everything I didn't like about the 2011 X1--it's simply a great laptop. The only downside was that it had a brand-new power connector, which meant you couldn't reuse your old Thinkpad power bricks. But that was inevitable--the old connector was too big to fit in the X1's slender chassis!
The 2014 X1 Carbon
So I monitored with interest the continued evolution of the X1, in the hopes that they'd continue to refine the design. After a minor refresh in 2013--the X1 Carbon Touch, which added a glossy touch screen but otherwise left the specs alone--Lenovo announced a proper refresh, the 2014 X1 Carbon. Haswell chipsets, for improved performance and lower power consumption! Super hi-res screen! Oh, rapture!
If Lenovo had stopped there, simply upgrading to Intel's latest chipsets and bumping the resolution on the screen, I'd have been seriously in love. But they didn't. And many of the other changes they made are seriously irritating.
The Good, The Bad, And The Ugly
What follows is a list of differences between the 2012 and 2014 X1 Carbon laptops, from my perspective as a Linux user.
Let's start with the good:
The battery life is much better with the 2014 over the 2012. I haven't done a scientific comparison, but it feels like when I'm watching videos I get maybe three hours of life out of the 2012 X1 Carbon battery, but on the 2014 it's more like five. (Don't quote me on this though, I could be way off.)
Relatedly, the 2014 draws less power than the 2012. The power adapter that shipped with the 2012 (and 2011) X1 laptops drew 90W; the power adapter that shipped with the 2014 only draws 65W. This is presumably due to the improved (lowered) power consumption of the 2014's Haswell chipset.
Why does this matter? It means the 2014 X1 works great on airplanes. Airplanes with power outlets at the seats generally restrict how much power you can draw. Drawing 90W made the airplane mad at me, and it'd shut off the outlet at my seat. So far the 2014 X1 has run off of airplane power without incident every time.
I fixed this situation with the original X1 Carbon by buying a 65W power supply, designed for the Lenovo Yoga. This was enough to keep the laptop running, and even charge the battery slowly!, without annoying the airplane most of the time.
The 2012 X1 had two USB ports, one USB 2.0 and one USB 3.0. The 2014 X1 also has two USB ports but they're both USB 3.0.
Although it sounded great on paper, the 2014 X1's hi-res, high DPI (dots per inch) screen is both good and bad. It really does look great! But I use GNOME 3, and GNOME 3's support for high DPI screens while good isn't perfect. I gather the problem is even worse under Unity.
On a related note, some apps aren't resizable, and wind up dinky on the 2014 X1's screen. For example, if you let Chrome use its own "title bar and borders", they're eensy-weensy. The biggest hit to usability I've found is PySol, my preferred solitaire game. PySol's window is less than three inches wide on the 2014 X1 Carbon, and the cards themselves are smaller than my pinky nail. Frankly it's irritating to play on the 2014 X1--thus killing one of my major timewasters on airplanes.
And now, sadly, a long list of the bad:
Like the rest of Lenovo's 2014 laptops, the 2014 X1 doesn't have a "real" TrackPoint. According to Lenovo's own website, TrackPoint consists of not just the joystick mouse, but also the two or three hardware buttons below. In the interest of making the trackpad larger Lenovo has done away with the hardware buttons. They're now simulated by pressing on the trackpad, which itself has been made pressable like one giant button.
Unfortuantely this doesn't work for several reasons:
- Though Lenovo added some bumps and ridges to help you differentiate different areas of the trackpad, I still don't hit the right area 100% of the time. I never missed with the old hardware buttons.
- Under Linux, the drivers don't support middle-mouse-scroll. Middle-mouse-scroll was implemented in the "TrackPoint" driver, which handled the joystick mouse and the hardware buttons. But the trackpad is handled with the "Synaptics" trackpoint driver, which doesn't have any clue about middle-mouse-scroll. There's a hacked driver for Arch Linux that adds support, but currently no solution for Ubuntu users like me.
- Kinesthetically-speaking the giant button doesn't feel right. It's hard to depress and it has a very short travel. The dedicated Trackpoint buttons on older laptops had a light spring and a longer travel which I find much more comfortable.
The 2014 X1 doesn't have proper function keys. Instead it has this wild new glass function bar, which is switchable between five different layouts:
- "Home mode", with some application launcher shortcuts,
- "Web-browser mode", with browser forward/back and refresh,
- "Web-conference mode", with quick access to microphone and visual configuration controls,
- "Function mode", with the standard twelve function keys, and
- "Lay-flat mode", which is like a reduced version of "Home mode".
With the exception of "Function mode", all these modes have volume and brightness controls on the left.
I liked the idea initially--hey, lookit me, I'm like Ed Dillinger from the original TRON! But I quickly discovered... it sucks.
The downsides of the function bar: as a programmer, I use complicated function key presses all the time. (For example: Alt-F4 closes the current application window, Ctrl-F4 closes the current tab in the current application window, and F10 brings up a context menu.) Touch-typing specific function keys on the smooth glass bar is inconsistent. The problem is that there are no button edges for you to tell where you are, and zero feedback to whether you pressed on a button or between two buttons or what. Again, with the dedicated function keys of the 2012 X1 I hit the right one every time.
Even worse: all the support for the function bar is implemented with Windows drivers, which means isn't supported under Linux. So I can't switch between modes--I'm stuck in "Function mode". Now, granted, that's what I want most of the time. But this means I don't have any hardware keys for brightness or volume!
And worst of all, the adaptive bar has occasionally failed on me after a couple days of uptime. Rebooting it fixes the problem. But what was the last laptop you had where part of the keyboard would die on you, necessitating a reboot?
Update 2014-07-03: Recently I booted the machine and discovered I could switch between two adaptive bar modes! Hitting the mode button now toggles between "function mode" and "home mode", which gave me back brightness buttons! (It also gave me volume buttons, but they don't work.)
Once I started using it, I realized that as designed it's an awful user interface. It makes a small part of your keyboard modal. Keyboards don't really have modes--okay, there's Caps Lock, and maybe NumLock and Scroll Lock, but these are rarely used and universal. Modes on the adaptive bar make it that much harder to touch-type with--you need to look at it and confirm which mode you're in before you try and use that function. And if your laptop suddenly starts playing a loud noise in a quiet environment, and your hand flashes up to mute it, and you were in "function mode"--whoops! sorry, that key isn't there.
I wanted to like the adaptive bar, honest. But I hate it.
The 2014 X1 doesn't "hibernate" properly under Ubuntu 14.04. If I tell Linux to hibernate, the screen shuts off, but the CPU seems to go to 100% utilization--I can hear the whine of the fan kick in and the bottom starts to get hot. Worse, the laptop simply will not wake up from this state. This is probably the fault of the kernel, so it'll presumably get fixed. (Perhaps it's already fixed--the kernel that shipped with 14.04 is already out-of-date.)
The 2014 X1 makes maddening and unnecessary changes to the keyboard:
- The Caps Lock key is gone. Instead you can double-tap Left Shift to turn on Caps Lock. What was the Caps Lock key has been split in half and turned into Home and End.
- The Backspace key has also been split in half, and Delete put on the right side.
- Tilde (~) and back-tick (`) are now on the bottom row, between Alt and Ctrl on the right side of the space bar.
And yes, as a programmer I use all these keys, and I don't appreciate having to retrain my fingers at the whim of some overactive designer and their ill-concieved experiments.
Unlike the 2012 X1, the 2014 X1 doesn't have an SD card reader or a built-in ethernet jack. If you need those things, congrats, that's two more adapters you have to carry around everywhere.
The 2014 X1 also removes the wireless hard switch, moving the functionality to the "adaptive keys". It's only available when in "Function mode", which at least is the default under Linux. But this loses the certainty of the hard switch, which also can be adjusted while the laptop is off or while booting. (And, unlike the "adaptive bar", it always works.)
This is clearly a bug, which means with luck it'll be fixed. But: when typing into a terminal window in GNOME, at random intervals something will inject a stream of ANSI control sequences into the window. Generally this causes the window to maximize, and behaves like I typed "^]6H" a bunch of times (or some similar key sequence). It's maddening and I don't even know where to start to debug it.
Bottom line, I simply don't enjoy using the 2014 X1 Carbon. I made myself stick to it for several months, but when I switched back to the 2012 it was like changing out of an itchy suit and into comfy sweats. The 2012 X1 Carbon has real buttons, in the places I want them, and the lower-DPI screen just works better with current software.
So: if you're in the market for a Thinkpad thin-and-light, and you use Linux, and you care about function keys, TrackPoint, or you're a programmer, I urge you to buy the old model! At this point, why mess around--buy the top-of-the-line, model number "3444F8U". It's got a 2GHz Core i7, 8GB memory, 256GB hard disk, and a matte non-touch display. Try searching for that model number on eBay. (Note that, as of this writing, there's a vendor claiming new stock of the 3444F8U on Amazon: "J-Tech Digital". I bought one from them... and they sent me the wrong model! They later told me they didn't actually have any 3444F8Us in stock, so I returned it for a refund. Apparently they haven't corrected the problem.)
And here's hoping Lenovo gives us back real function keys and Trackpoint buttons in 2015!
Bound Inner Classes For Python
originally posted: 2013-12-24 09:39:02
(This blog entry is my contribution to the 2013 Python Advent Calendar. I'm the entry for December 25th,; however, due to the time zone difference between here and Japan, I'm posting it during what is to me the morning of the 24th. Merry Christmas!)
In Python, something magic happens when you put a function inside a class. If you access that function through an instance of the class, you don't simply get the function back. Instead you get a new object we call...
Continue reading Bound Inner Classes For Python
Getting 7.1 HDMI Audio Working Under Ubuntu
originally posted: 2011-11-19 23:40:01
I run Ubuntu and XBMC on my home theater PC (hereafter HTPC). I connect my HTPC to my receiver and TV via HDMI. The HTPC is an nVidia ION 2 machine, so it's using nVidia's HDMI implementation. I also have a full 7.1 speaker system. But out-of-the-box, Ubuntu refused to recognize my full 7.1 system. All it would let me choose were stereo and 5.1 configurations.
After beating my head against this for a day or two I finally stumbled on the solution. The trick is...
Continue reading Getting 7.1 HDMI Audio Working Under Ubuntu
Quick One-Positional-Argument Function Currying In Python
originally posted: 2011-11-01 14:48:12
Function "currying" in Python means pre-adding arguments to a function. If you have a function that takes two arguments, you can create a new function from it that only takes one, if you can somehow automatically set the second parameter. (My understanding is that the term "curry" isn't totally correct here; the correct mathematical term would be "partial application". Calling this "currying" is but one of the Python...
Continue reading Quick One-Positional-Argument Function Currying In Python
Rise From Your Grave
originally posted: 2011-11-01 14:44:23
It's been three years since I last posted. I have an excuse: in April of 2007 I got me a Internet Job! And sadly it's left me no time for essay-writing.
But I'm gonna try and revive my blog. To that end, I've finally added a reStructuredText renderer to my homegrown blogging tool PySa. Previously I had to write blog entries in HTML; precise but laborious. Now that I can write in ReST perhaps I can knock out essays a bit faster.
Also, my blog is now...
Continue reading Rise From Your Grave