Evolution of a Work Laptop
This is sort of a sequel or companion to my previous article, Linux Turns 20: A Personal Reflection. It’s been a couple years since I switched to Debian, so I felt reflective about how I got here.
- Software: Unix is great. OS X was revolutionary when it came out — a pretty, abstracted GUI on top of a rock-solid OS. Unfortunately, there are some trade-offs. OS X adds a huge amount of overhead that rivals Windows in terms of bloat. The smallest Cocoa apps used hundreds of megabytes of memory. I constantly ran up against the RAM ceiling with my standard set of development apps running. Of course, this caused constant page faults and general slowness.
- Hardware: A bloated OS and software wears out your hardware. I was lucky to have the battery last 2 hours. The fan ran constantly at high speed, and was so loud that people wondered if an airplane was taking off nearby. The metal(!) body of the laptop got so hot that it was impossible to set on my bare legs; even with long pants it was still uncomfortable. There were other hardware problems; like most Apple products, it looked pretty but worked poorly. And of course, it had the standard downsides of Macs (expensive and limited upgrade options).
The MacBook finally got too excruciating to use. By this time Ubuntu had established itself as a solid, easy-to-use Linux distribution. I was the perfect candidate for moving to the Linux desktop:
- After working with Linux servers and OS X, I was more comfortable with *nix systems. Distributions like Ubuntu make Linux really easy to use, but you will have to dig into the command line and guts once in a while. If that scares you, then stick with OS X.
- There are (good) Linux alternatives for almost every Windows and Mac app, plus many, many more official and unofficial packages. (Also, neither Windows or OS X has a real, built-in software manager. App stores don’t count.) If you must have something like Photoshop, then you can fire up a VM and run it in that, and it might even be faster.
- I don’t care about window candy and shiny things. Linux desktops have less of this and let you tweak the settings or remove fancy effects entirely.
Unix/Linux is hands-down the best environment for development. They have a developer focus, and are filled with fast, useful apps.
The first Linux laptop I had was a ThinkPad. It was a hand-me-down that had Ubuntu installed by our IT techs. It worked decently, but the ThinkPad’s special hardware extras weren’t entirely supported, and the Ubuntu install may have had a few issues. I quickly moved to a System76 laptop.
Linux vendors like System76 are nice because they pre-install Ubuntu and make sure it works with the hardware — one of the pain points when installing Linux on a new machine. They also provide a software package repository specifically for your laptop model — though it may not be updated as long as you like. Pre-install vendors like this may be a good way to get a Linux laptop without the headache of setting it up.
Unfortunately, although Ubuntu is easy to install and use, it is incredibly unstable. With each release (every six months), the underlying software can (and does) change radically. Because of this, each distribution upgrade is an exercise in frustration — you’re better off just reinstalling from scratch.
Of course, that doesn’t fix the problem of the app suite changing with every release. Did you like that music player and add your MP3s to its library? Too bad, it’s gone now — not just deprecated or demoted to an alternative, but actually removed from the software repository. This has happened multiple times, in multiple releases (see: Banshee/Totem/Rhythmbox, ALSA/PulseAudio/OSS, etc). I know that open source projects often lose maintainers, but I was getting whiplash from the amount of software that changed with each release.
(Note that I’m talking about Ubuntu Desktop here — the Server version is much more stable because it doesn’t have all the consumer apps and the desktop software, where most of the volatility is.)
It doesn’t help that releases are often marked by sweeping changes to the underlying software as well. Everyone knows about the uproar with the Unity desktop — it took a couple releases before Unity was even usable. Many of these changes were half-baked and haphazard, breaking basic things like window rendering and management. It’s just a mess, and given Canonical’s new focus on tablet/touch devices, the standard desktop/laptop user is pretty much ignored. Their focus now seems to be making stuff pretty rather than functional — not unlike Apple’s business strategy.
Lately the devs have been working on Mir, a replacement for the Xorg system. This has generated its own controversy, and given their track record and the fact that they are building it from scratch, I’m betting that it will be quite broken when released.
So, my System76 laptop was getting old, and the battery no longer worked, so I was looking for a new laptop. I ended up getting a refurbished Dell Latitude. The price was good, and it came with good, supported hardware that you expect from a major manufacturer:
- Intel Core i7 (quad-core) — Enough for programming and development tasks.
- 8GB RAM — This is the only component I have upgraded. It came with 4GB, which would normally be enough for standard programming. But because I like to run multiple VMs simultaneously with more memory-hungry OSes (*cough* Windows) for testing, I needed more.
- Nvidia NVS 4200M graphics chip — It has a decent resolution and is perfectly fine for window rendering (and some games). The only downside is that Nvidia’s drivers are closed source, but the Nouveau drivers have been good historically, and Nvidia’s drivers are still available as binary modules.
- SSD hard drive — I would absolutely recommend a solid-state drive over mechanical drives, at least for the system drive if you can’t afford it for all your data. The difference is tremendous.
There are only two obvious downsides from a hardware perspective:
- It’s refurbished, so you have to select from the available options. Alternatively, you could buy a new one.
- There is a wifi hardware switch on the side, where I hold the laptop when it is open, and it can be switched off by barely even touching it. Often when I pick up my laptop, I accidentally turn off networking, even when the switch is still mostly in the “on” position. It is the worst laptop design idea I have ever seen.
I wanted to install Linux on my new Dell, but I didn’t want to use Ubuntu. Luckily, Ubuntu is based on the Debian distribution, so after some research and playing around with it, I settled on Debian’s testing (aka Jessie) branch. I’ve been very happy with it since.
Debian has multiple branches. For me, the “stable” branch was too conservative; its software is too out-of-date for me to work with. It probably would work for systems that need solid stability and long-term updates. The other branch is “unstable”. Things break when using this branch, which is more pain than I want for a nice work/personal computer. If I do want bleeding edge for a piece of software, then I can always install the latest version from the source.
The testing branch is what I would recommend to anyone using Debian for the first time. It is the closest branch to Ubuntu’s packages. Seldom does stuff break when updating system and software. If something does break:
- A fix is usually pushed out within a week.
- It is often caused by closed source, binary drivers. (I’m looking at you, Nvidia.) But again, these are usually fixed within a week or so. It’s just more annoying because they cause problems with the OS as a whole.
- It can be caused by changing dependencies or kernel upgrades. But because these usually must be installed using
apt-get dist-upgraderather than
apt-get upgrade, you can hold off on these updates for a little bit until the wrinkles are ironed out.
In the 2½ years that I’ve been using Debian Testing, I can count on one hand the number of problems I’ve had to research and manually fix. Like Apple’s bloated OSX built on top of a broken Unix, Ubuntu is just a bloated mess built on top of the best OS/distribution I’ve ever used. Use Debian with your choice of desktop environment (I’ve become accustomed to Gnome 3, but LXDE is a nice alternative that looks similar to Windows and Gnome 2) for the most productive developer experience I’ve ever had.
Logos are copyright their respective companies. “Tux” penguin created by Larry Ewing, Simon Budig, and Anja Gerwinski.