And That’s How I Ended up Developing with a Chromebook

In my previous post on laptops for developers, I shortlisted a few options.  In this one, I share the story of how I will end up developing with a Chromebook.

I almost bought a Lenovo

After mulling it over, and taking into account the feedback I received, I was quite positive I’d be buying a Lenovo X1 Carbon.

And then I saw it: an HP Spectre ultrabook that was available at Costco. Gorgeous laptop. Brilliant screen, great keyboard, good specs, premium price, but not exorbitant. It is also lightweight and slim. HP markets it as the thinnest 13″ ultrabook in the world.

I don’t care too much about thinness (self-deprecating joke not intended), but boy, that laptop is sharp looking. So I bought one with the intention of dual booting Linux on it.

Time to install Linux

I brought my HP Spectre home, did the unboxing and was very impressed by the luxurious presentation, as well as the laptop itself.

Nice presentation

HP Spectre

It was a beautiful, fast machine and I was one happy camper. For a little while at least…

Failing to install Linux on the HP Spectre

Some people, including Leo Laporte, mentioned that they couldn’t get Linux to run on this laptop. However, one or two others claimed to have had success with it.
I bought the laptop on the off chance that those folks were right. However, that approach didn’t pan out too well for me.

The HP Spectre ships with 3 USB-C ports. One used for the charger, the others as USB or Thunderbolt ports. It includes two adapters, USB-C to Ethernet and USB-C to USB 3.0, respectively.

I placed Ubuntu on a USB key (with UNetbootin) that was connected to their USB-C to USB 3.0 adapter and proceeded to boot the live version of Ubuntu 16.04. Doing so failed.

Hp Spectre Linux error

Pressing F10 gets you into the BIOS, from which I tried disabling secure boot and enabling legacy USB support. No luck. (I must remark that the BIOS options were quite limited compared to those of many laptops.)

Researching the error, I was able to determine that the issue was related to booting from a USB 3.0 device. So I tried a USB 2.0 key. Nothing. Tried to boot from an external DVD drive. Same error.

OK, let’s try something with a more recent kernel? No dice. Fedora 24? Nope.

Installing Linux like it’s 1999

Further investigation led me to find a boot parameter that would allow the live installation to start. Pressing e with the “Try live” GRUB2 line selected enabled me to add acpi=off pci=noacpi to the boot command.

This started the live session, though once it was booted there were serious issues that were probably brought on by disabling ACPI. Truth be told it was 4 am at that point, so I don’t even remember what were the specific issues, but the gist of it was that the laptop was not usable at all with Linux.

It really reminded me of all-nighters I used to do installing Linux and recompiling kernels back in the late 1990s. In all fairness, today’s Linux is fantastic and a big component at play here is how new this laptop is.

I restored the laptop to its original configuration and returned it to Costco. They offer 90 day, almost no question asked, returns on electronics so I was able to promptly get a full refund without any hassle.

I felt a touch sad returning the little guy and even considered running Linux in a VM from Windows. Or perhaps even relying on the upcoming Bash within Windows. I know, I know… but that’s how much I liked it.

I almost bought a Lenovo, for the second time

With the HP Spectre out of the picture, the Lenovo X1 Carbon was tempting me again. I considered the Dell XPS 13, but the, quite honestly, stupid placement of the webcam at the bottom left side was very off putting. I also find the Lenovo keyboard to be superior to that of the Dell.

Okay, time to decide between Lenovo X1 Carbon vs X1 Yoga. The Yoga version is essentially the touch screen 2-in–1 version of the Carbon. It weighs a little more, it costs a few hundred more, and it lasts (battery wise) a little less.

I’m not huge on touch screens for laptops, so my decision was easy enough. Time to order a Lenovo X1 Carbon. Along with the MacBook Pro, I consider the Lenovo X1 Carbon to be the gold standard of developer ultrabooks.

Taking advantage of employee pricing I was able to spec out the Lenovo X1 Carbon I wanted for something like $2,300 (Canadian).

Now, that is, I fully admit, a lot of dough for a laptop. However, when you stop and consider the fact that laptops are what enable me to make a living, they end up being a very small professional investment (we are quite fortunate actually, compared to quite a few other professionals whose tools cost them tens of thousands of dollars).

I was this close to pulling the trigger on the order, but then the Lenovo site decided to malfunction. It did so multiple times, 404ing on me each and every time. I didn’t take it as a sign because I doubt that the Universe is all that concerned about my laptop choices, but it gave me enough time to reflect on my purchase.

Comparing Apples to Lenovos

I realized that, yes, I needed a portable laptop now, but I was about to spend a considerable amount of cash on a laptop without knowing what Apple would have to offer next soon enough.

Would I still buy a Lenovo X1 Carbon if a newly released MacBook Air 13″ with retina display was available today? Maybe, or maybe not.

I’ll be honest. Unless Apple screws it up, they probably have the edge, since I could triple-boot MacOS Sierra, Ubuntu, and Windows 10 on the same machine. But either way, it would be nice to make that call when the two laptops actually exist and can be compared in terms of ergonomics, price, and specs.

Apple is likely to release such a retina MacBook Air 13″ in September or October. Possibly a bit later in the year, though not likely further than the end of 2016.

A Laptop to hold me over

I began toying with the idea of acquiring a laptop to hold me over until the new Macs are out and I can make an informed decision on which laptop I want to pair to my existing MacBook Pro 15″ (which I use as a desktop).

A key consideration for such a laptop would be cost. It has to be cheap so that my purchase decision of the laptop I really want in the fall or winter won’t be impacted by the expense that I make now.

Old Laptops vs Chromebooks vs Cheap Windows Laptops

The three main categories of inexpensive laptops that can run Linux are:

  • Old laptops (either older models, refurbished, or used);
  • Chromebooks;
  • Cheap Windows Laptops (the few compatible ones).

Old laptops and cheapo Windows laptops tend to be more powerful than Chromebooks and, provided they are compatible with Linux, more straightforward to set-up as Linux laptops for development (Chromebooks require extra steps to dual boot.)

However, Chromebooks tend to have the edge when it comes to portability, weight, looks, and battery life.

Chromebooks are also interesting because of the upcoming ability (in the fall, though it’s possible to try it now) to run Android apps.

So I shifted my research instead to Chromebooks.

I almost bought a Lenovo, yet again

Fine, this is getting ridiculous, I know. While researching Chromebooks I came across a smoking deal on New Egg. A Lenovo T430 with docking station for $299 Canadian.

Much like Jesus, I was tempted a third time. Only, by Lenovo.

Lenovo meme

I think that the T430 above would have made for a great Linux laptop. However, you can essentially anchor a boat with that baby.

When you consider the lack of battery life, the old school TFT panel, the chunky charger, its size, etc, I quickly started to see the value that a Chromebook can add.

And I look forward to the Android app element as well.

Choosing a Chromebook for Linux

Alright, time to pick a Chromebook. I considered several models, but the ones that stood out for me where the Toshiba Chromebook 2, Dell Chromebook 11, and Acer R11.

I’ll cut an already long story short, and tell you that I ordered a Toshiba Chromebook 2. It’s almost universally well reviewed and most people consider it to be the best Chromebook for the money (unless you are willing to shell out more for a Dell Chromebook 13 or significantly more for a Google Pixel).

Great all around and the IPS Full HD display is particularly outstanding in its category.

Developing with a chromebook

Full disclosure here: I ordered it from the States. It’s going to take a week before it arrives, so what I write below is my plan rather than what I’ve actually already done.

If you are in the same boat, that wasn’t sunk by the T430 above, you should try to stick to:

  • Intel-based Chromebooks for maximum application-level compatibility in Linux;
  • Recent Celeron or i3/i5 processors;
  • 4 GB of RAM, because those Chrome tabs aren’t going to remember themselves;
  • SD card slots to easily and cheaply expand storage;
  • Decent, ideally IPS, panel so that you can be comfortable while staring at the screen for long sessions at the time;
  • Relatively inexpensive (or you might as well buy an ultrabook). The $200-$400 range is reasonable.

For me, the Toshiba Chromebook 2 ($299 USD) checked off all of those boxes. And I like that its hard drive is upgradable. It doesn’t hurt either that it takes 42 mm M.2 SSDs, which are quite cheap. If I like this laptop a lot, I’ll definitely upgrade its disk.

Chromebook as a Linux laptop for development

There are several ways to run Linux on a Chromebook for development purposes:

  1. Simply use the preinstalled Chrome OS (which is a restricted Linux) and leverage cloud-based development environments such as Cloud9 and Nitrous. And if you are a data scientist, use my team’s Data Scientist Workbench.
  2. Install Linux via Crouton. This chroot-based approach leverages the existing OS and allows you to cycle through a full-blown graphical Linux environment (e.g., Ubuntu with Xfce) and Chrome OS with Ctrl+Alt+Shift+Back and Ctrl+Alt+Shift+Forward.
  3. Do #2 + xiwi which allows you to run Linux apps in a Chrome OS window. Read the fine print, however, as performance can be a concern.
  4. Dual boot a lightweight Linux distro such as GalliumOS. In many cases, you’ll have to replace the firmware with a custom version in order to bypass Chrome OS restrictions. Check the hardware compatibility list to ensure your Chromebook is supported.
  5. Do the same as #4, but simply get rid of Chrome OS.

I like the dual-boot approach the best. If that fails to realize for some reason, I’ll fall back on the less secure Crouton approach.

Either way, it’s worth keeping Chrome OS for things like Netflix.

Reasonable Expectations

I think I’m going to enjoy the little laptop that’s currently on its way to my doorstep. I have reasonable expectations, so I doubt I’ll be disappointed.

Obviously, a Chromebook (Pixel excluded) is not going to run heavy IDEs or multiple VMs, and I don’t plan to use it for those sorts of purposes.

Still, there is plenty of development (especially web development) to be had on a lightweight Linux laptop like the one I just ordered.

Reasonable Expectations

Will I get a MacBook Air in the fall?

I may still buy that MacBook Air in the fall (or whenever the laptop becomes available). Though, there’s a chance that I might buy that Lenovo X1 Carbon after all, at that point in time.

Depending on how much I like the Toshiba Chromebook 2, I may keep it or sell it and recoup some money from it when I buy my portable development gig in a few months.

Maybe, just maybe, I might even just stick to the Chromebook plus the MacBook Pro 15 that I already have (certainly the most budget-friendly approach). I’ll share my decision and experiences developing with a Chromebook, in future posts.

If you have experience developing with a Chromebook, please feel free to share below.

Get more stuff like this

Subscribe to my mailing list to receive similar updates about programming.

Thank you for subscribing. Please check your email to confirm your subscription.

Something went wrong.

11 Comments

  1. Rob Bazinet July 27, 2016
    • Antonio Cangiano July 27, 2016
      • Rob Bazinet July 27, 2016
        • Antonio Cangiano July 27, 2016
  2. Rob Bazinet July 27, 2016
    • Antonio Cangiano July 28, 2016
      • Rob Bazinet July 29, 2016
        • Antonio Cangiano July 29, 2016
  3. László Földes July 28, 2016
    • Antonio Cangiano July 28, 2016
  4. david April 6, 2017

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.