A Rant on Technical Debt

Posted by Matt Farmer on December 07, 2016 · 5 mins read

I’ve been thinking a lot about technical debt lately. It’s something that every codebase has, but also something that we still fail to fully consider the cost of. As such, I thought it would be appropriate to walk through some of the ways technical debt has affected my life in the last 24 hours.

VM File sharing

This is something that always comes with a lot of promises, but never seems to deliver. And, to boot, when it fails it always fails in really interesting ways.

Today, the file sharing in Parallels failed me. At Domino we recently added LevelDB as a dependency. I’ve been largely working on another project so it had been a minute since I had compiled the main application and tried to get it working. Things didn’t go so well.

It seems that if you attempt to use LevelDB over a Parallels file share you’ll get an error that things can’t be set up correctly. All of that will boil down to:

IOException: Invalid argument

Let me count the ways in which this is a frustrating condition to find yourself in:

  1. What the hell kind of error message is “Invalid argument.”
  2. What the hell kind of error message is “Invalid argument.”
  3. VMW file systems are typically supposed to be a substitute, and ideally something that performs better than, some network file share like NFS or SMB. In all cases that I tried, except Parallels, they have abysmal performance (but that’s probably an entirely different blog post).
  4. What the hell kind of error message is “Invalid argument.”

X11 / XQuartz / Remoting

After this experience I decided a more conventional Linux experience might serve me better. As a result, today I tried (yet again) to get X11 remoting working. I had tried this on a company issued Lenovo earlier. After failing to use Linux as a primary OS I reverted to using Windows - because my experience with Linux reached a point where that seemed like a more reasonable option. (Perhaps that’s a different blog post.)

Anyway, we arrive at today where I attempt to redo the same experience on my Mac box using XQuartz. I got XQuartz installed, I got Atom installed on my VM, and then I ssh’d into the Ubuntu VM from the XQuartz session and started Atom.

Performance was abysmal, but not intolerable. So I decided to give typing in a new document a try.

This is a st ofybord

Hm. That doesn’t seem right. If you’re looking at this and you think “Whoa the ‘e’ key got mapped to backspace” then you’re a cleverer person than I, because it took me a little bit to figure out what was going on.

After much Googling, tinkering around inspecting X events, trying to figure out ways to work around this, attempting to connect to the X server without a wrapping session, I then proceeded to give up.

I don’t quite know what the underlying cause of the technical debt here is. I don’t know if it’s in X11, ssh, XQuartz, or something else. It’s not something that happens in the xterm terminal, so I’m inclined to think that it’s some weird X11 interaction with Atom.

I don’t quite know how I would classify this technical debt. However, I feel confident in attributing it as technical debt in spite of my lack of knowledge with X11. (Or maybe perhaps because of what I do know of X11?)

Installing kubuntu on Parallels

After the above failed, I attempted to install Kubuntu in a Parallels VM and start emulating an entire Linux environment with KDE as my preferred alternative to the mainline Ubuntu Unity.

The installer crashed before it even got started. So, there’s that.


My day has the distinct flavor of a lot of shit that should just not be possible. It has the distinct flavor, in my mind, of technical debt.

So, next time you’re trying to figure out how to weigh trade offs in your project please imagine that your project will be wildly successful. And then imagine that there’s going to be someone like me. Staring at his screen. Asking his software to just please finally work.