The Bone Yard

Browse posts by
Search posts by
Tag

One Step Back for Two Steps Forward

Musings on software stability

Nearly a month has passed since my last entry. It’s been a bit of a whirlwind summer for me, which at least in some small part has accounted for my sparse contributions to this blog. As I talked about in my last post, planning and traveling for our family vacation to the Caribbean consumed most of my late June into early July. And as I imagine I’ll be writing about in a future post, planning for my family’s move to a new home has soaked up much of the remaining time I’ve had the last few weeks. Additionally, I’ve been working on some C++ coding in my spare time, but nevertheless, I haven’t completely forgotten about this blog!

Actually, before tackling some of the new features I had planned for the blog, I wanted to take a step back and deal with a small issue that has hindered my progress here: system spread. What do I mean be “system spread”? Well, it’s all about the tooling and materials I use to create with. When I initially started work on this project, my main working machine was an Arch Linux laptop. Going back before that even further, I originally launched my personal site on top of CentOS 6 VM running from a Digital Ocean “droplet”. Now, as I mentioned a few posts back, after acquiring a new laptop, I moved off Arch to Ubuntu for my personal work. Also, at about the same time, I changed my site host from Digital Ocean to Linode, and as part of that switch, moved up to CentOS 7. Bringing things sort of full-circle, I have a very small Asus Chromebook upon which I still keep Arch installed, mainly because the Chromebook has an ARM chip, and Arch supports the ARM arch very well. This Chromebook is super light and very friendly for commuters, so I will use that from time to time on my trip into work.

So by this point, I’d say it should probably be fairly clear, by way of example, what I mean with the term “system spread” ;) I think more and more, as we talk about technology “convergence”, the blurring of lines between mobile and desktop, and the proliferation of cloud and VM resources, it’s clear that it’s much harder to maintain a stable working environment where you have a firm handle on your tools, package management and other dependencies that go into writing software. All of the Linux distributions in my personal space, Arch, Ubuntu, CentOS 6 and 7, have wildly different versions of tools like Nginx, Python, PostgreSQL, etc. Their versioning, installation path, configuration, dependencies and other aspects can vary quite a bit among distributions, more than you might think. If I want to make maintaining this blog simple and low-effort, I’m going to need to get better at organizing my artifacts so I can have a portable dev environment, and also a portable deployment target that won’t make things difficult should I again move to a new cloud provider.

From all that I see of technologies out there, and the research I’ve done, it seems like Docker Containers are the way to go to solve this issue. From what I read, they are fairly simple to configure and deploy, they enjoy ubiquitous support across the Linux landscape, and they are not as resource-intensive or rigid/demanding as VMs. The basic idea would be to move development of this application into a Docker container. I could then outfit this image with a singular set of tools, with known dependencies that I can control, and would allow me to precisely manage the project and migrate it seamlessly across platforms. Also, I’m guessing/hoping that this would lend some manner of version control, which is easy to do for the source code of the blog, but less straightforward for configuration pieces, and certainly binary artifacts (e.g. Python virtualenvs).

So that is what I mean by the title, insofar as I’ll be taking a slight detour to herd my dev/deployment cats a bit more carefully before moving onto further functional improvements. Anyways, part of the spirit of this blog is jumping into new technological areas, so why not make this diversion an educational detour? Ok, so that sums up what I’ve been thinking about, in terms of the blog, and what my short term agenda is. Once I streamline my dev lifecycle, I’ll be back with more news. Hopefully we’ll be moved into our new house by then (nothing like a family of 4 shoehorned into a 2 bedroom condo).

Until then...

Like what you're reading?
Let me know your thoughts on the content or arrangment of this blog.
How to Connect
Tags for this post
Linux
Skelton
Online
Boneyard
Blog
Software