Technical

Nested containers w/LXD

A couple days ago, someone asked me why they should care about nested containers. It’s a good question, so I thought I’d talk about how I’m using them.

Perhaps my favourite benefit of containers is keeping workloads isolated, and not just in terms of process space. It’s also a great way to avoid dependency bit rot and version conflicts. I have containers for my home media server, for jenkins, for various database servers that I need for this project or that.

Nested LXD on Ubuntu 16.04.2 (Xenial)

Edit – 1 Jun 2017: The issue is a problematic patch that caused a breakage between 2.0.9 and 2.13. LXD 2.0.10 is currently in the SRU review queue, and once it lands in xenial-updates the problem should go away. tl;dr: Nested LXD containers on Ubuntu 16.04.2 (Xenial) will break if you’re running LXD 2.12+ on the host machine, because the Xenial cloud image ships with LXD 2.0.9 and a version conflict between host and container causes nesting to fail.

bzr "Insecure string pickle"

I’ve been bit by a bug in the bzr source code control system where running a commit throws an ugly stack trace blaming an “insecure string pickle”, but I’ve found a workaround.

Migrating to Hugo

Hugo, the static website engine, not the award.

I’ve grown frustrated with Wordpress and Dreamhost. Running a Wordpress site on a shared web host is a ticking time bomb. More users crowded on a server. I threw turned on caching and Cloudflare; readers should have had little trouble using the site, but my sessions were consistently timing out while using the admin dashboard, which makes posting new content a frustrating experience.

Ubuntu on Mac

I recently rebuilt a Mac Mini to work as the forth screen in my workflow. I googled around and pieced together what I needed to do by cherrypicking from various guides, and everything was running well until I updated to a new kernel and rebooted. I spent the better part of two nights trying to get the machine to boot. Unfortunately, it happened just after I blacklisted a module to work around a USB bug that was causing one of my drives to go haywire occasionally, and it took a while before I finally figured out it wasn’t a problem with my change but the kernel itself.

Announcing Benchmarking with Juju

Benchmarking and performance are interesting problems, especially in today’s growing cloud-based microservice scene. It used to be a question of “how does this hardware compare to that hardware,” but as computing and service-oriented architectures grow the question has evolved. How does my cloud and application stack handle this? It’s no longer enough to run PTS on your web server and call it a day. Measuring every microservice in your stack, from backend to frontend, is a complex task.

sshuttle workaround for OS X 10.10 (Yosemite), Juju and Vagrant

Making OS X, Go, and Brew play happy

GO and OS X I’m doing a little hacking with juju actions before they land in a stable release but I ran into some hurdles getting Go working with the brew-installed version. Trying to install Go packages failed with a bunch of ‘unrecognized import path’ errors. Here’s how I fixed it. STOP, GO, STOP Even though you can install Go via brew, there’s more to be done to get it working.

A brief introduction to Juju

I had some concerns about how I was going to integrate posts of a technical nature with my blog, which has been predominantly writing-oriented for several years. What I failed take into account is that many of us who write Science Fiction are armchair technologists. We look at gadgets, scientific breakthroughs and tech policy, and make conjecture about what might come next. What I talk about is less important than how I talk about it.

New job!

I am delighted — tickled, in fact — to report that as of last Monday I am employed by Canonical, the company behind Ubuntu Linux. I’ve joined the Ecosystem Engineering team, part of Cloud Development and Operations, as a software engineer. More specifically, I’m working on Juju, the cloud orchestration tool chain. I’ll be writing charms and documentation, working on optimizations, and helping to make a cool product even cooler.