Some thoughts on Debian and Ubuntu

I used to recommended Ubuntu to newcomers who were felt grief and pressure from upgrading to new Windows versions. After all, why spend  $200 on a new operating system and Office upgrades when mainstream Linux distros and software suites are essentially free?

$100? Yeah right. Hey Linux Guy, Linux is free, right?

Yeah, just pop in this LIVE CD.

A fresh Ubuntu installation gives you everything to get started: a text editor, office suite, music player, a browser and email client, plus Ubuntu Software Center to find and install anything you’re missing. The selling points I always drove home were that new users didn’t have to touch the command line, and advanced knowledge wasn’t needed to run their exotic printer or graphics card. Just assume everything just works out of the box. These were the greatest strengths of Ubuntu. You had a free, accessible, safe choice for people to get warmed up to Linux.

After about 8 years of being enthusiastic about Ubuntu, I mostly switched back to Debian.

Ubuntu had it’s first launch in 2004 after being forked from Debian. You can really see how the two have strayed: Debian continues to focus on stability, and Ubuntu works on shinier features, like integration in its phones and tablets. Growing pains are now where Ubuntu suffers the most. Performance complaints pepper message boards and blogs. I’ve written my fair share of those. In 2012, Canonical made a bizarre choice to alienate their users by including Amazon search results in the Unity shell.

Some oversight also plagues core features. I’ve seen bug report boxes showing up within an hour of a fresh install, and the installation wizard on the live CD still neglects to activate your swap partitions, leading to crashes when you’re low on memory.

Ubuntu is straying from its strengths. Microsoft did roughly the same thing. Sales figures aside, I know a lot of Windows enthusiasts that will proclaim love of Windows XP and 7 over Vista and 8 any day. Is this resistance to progress, or just progress in the wrong direction?

Microsoft decided to build upward, adding more features before stabilizing existing ones. Some were gimmicky: Aero for eye-candy. Some were useful: ASLR, randomizing memory allocation to increase security. Windows 10 lets you add dynamic apps on the start menu, but does this provide any productivity advantage to the user? Does it crash less, work better, increase security, or provide any other tangible benefits? (There may be some, help me find them.)

Debian doesn’t build up endlessly, it fortifies.

One of the biggest complaints you’ll find from Debian users is that the stable branch has some old packages. GIMP is 6 releases behind so to get the newest version I would have to switch to the unstable branch of Debian. (Even then, I’ve found the “unstable” branch of Debian 8 is more stable than Ubuntu 14.04 LTS.) Your system will be reliable and fast at the cost of some software looking rusty. The difference really is palpable on virtual machines and netbooks. If you want to breath life into an old computer, Debian has you covered. Just keep in mind you can’t be shy of digging into a terminal to install software.

This isn’t a sales pitch. Ubuntu 14.04 is still on my desktop and I plan on using it until it reaches its end of life. Computers are ultimately tools, and so are the operating systems and other software you choose. Rather than endlessly looking for the ideal toolkit, you should settle on one and keep practicing. So that is my recommendation.


  1. My initial reason for switching back to Debian on my laptop wasn’t the minor grievances with Ubuntu. It was due to excessively poor performance. Debian Sid (unstable) with LXDE made the old hardware usable again. All of my new virtual machine instances now use Debian rather than CentOS too which taxes my desktop less. I run those instances headless (terminal only).
  2. I write Linux for stylistic purposes, but in most cases I mean GNU/Linux. People that don’t know the difference wouldn’t care, and those pedantic enough to notice already know. :)


Rainbow String Lights (and other updates)

Rainbow String Lights

Sorry if you were burdened by this email by my automatic newsletter sender. I will only send these manually now. Atomic-specific updates are at the bottom.

Using an Arduino Micro and some low-level port register writing you can drive TM1803-based tri-color LED string lights. The challenge was getting the timing correct on the output pin. An extra CPU instruction or two introduced from refactoring can throw off the timing since there’s only around 200ns tolerance on the RZ line. Fortunately I had my Tektronix Oscilloscope (pictured, BEBOP) to spy on the signal and nail it down. I may someday use what I learned here to write a faster driver for the TFTv2.

I’m taking a break from Arduino stuff for a while, though and focusing on my bigger projects. I’ve written up a great deal of the protocols and specs for the Distributed Neural Network AI project, including the machine vision, voice recognition, and node setup scripts. The purpose of this project is to have a self-hosted neural network AI that can delegate pieces of its service over Multipath TCP; the goal here is Jarvis meets Siri meets IBM Watson, all hosted on your own consumer hardware. I still have some editing to do so the papers will be published sometime around August. I’ve spent a great deal of time and care working on each individual system and unifying them in a useful way is very challenging.


Atomic ListAtomic is still at the top of my project list. Most of the hard grunt work is finished, which really just leaves synchronization and some UI adjustments left before the initial release. I split synchronization tasks off into a separate tool. This may seem like a weird choice, but there are actually multiple command line tools already–and scheduling synchronization in a cron job or Windows Task Scheduler would be a piece of cake if you could call it without arguments.

I just sent out the first newsletter about this app. If you’d like to hear more updates please sign up on the project page.

My favorite pictures from inside my EE lab

I’ve been curating equipment (and photos) of electronics. Here’s my top 12:

Memory Leak in Xorg (due to Video Drivers)

Run your computer for long enough and you may notice the process /usr/bin/X begins to slowly consume all of your memory.

Well, it’s a known bug. The workaround at the moment comes from Brian Trotter:

Reverting from the fglrx (proprietary) driver to the xserver-xorg-video-ati (open source, tested) driver solved the problem for me.

Going back to the generic driver works too, but then I can’t overclock. This is one I’m choosing to live with until ATI/AMD provides an update.