I recently bought a new-to-me Thinkpad X230, and in keeping with my ongoing theme of naming thinkpads after their color, I called it Sable, which in addition to being the heraldic name for the colour black is also a small dark-brown animal in the mustelid (weasel) family.
I've become quite fond of Sable. It's only an inch wider than my former laptop, Cygnus (named after Cygnus X-1, the first X-ray source to be widely accepted as a black hole), about ten times faster, and the same weight. The extra inch makes it exactly the right size for me to put one of my Thinkpad USB keyboards flat on top of it. One may wonder why I would even want to do this, but I can move the keyboard to my lap when one of the cats wants to sit on my desk. (The cat is almost always Desti, who is also black, but naming a laptop after her would be confusing.)
Anyway.
One of the problems with getting a new computer is getting it configured the way I want it, which usually means "pretty much the same as the last one". Most people do this by copying as much as they can off the old one, (on Linux that's typically their entire home directory), and then installing the same collection of applications (packages, in Linux terminology). It's tedious, and when the architectures or operating system versions are different it leads to a wide range of random glitches and outright bugs that have to be tracked down individually over the course of the next week or so. Even if it doesn't, home directories tend to include a large amount of random stuff, like downloads and the contents of your browser cache, that you don't necessarily want.
And if you're trying to set up a home directory on your web host, or your work machine, or something tiny like a Raspberry Pi, well... What you really want to do is start afresh and just install what you really need.
That's where the turtles (because home is wherever you carry your shell, as it says in the song) come in. Specifically, Honu, which is a collection of makefiles and scripts that does almost all of the setup automagically.
Honu (Hawaiian for the green sea turtle) requires nothing more than a shell (the Linux/Unix command-line processor, and anything Posix-compatible will work), an SSH client, the git version-control system, and make. In fact, if you can install packages on your target system, the first thing Honu's bootstrap script will do is install the ones you don't have.
Make was one of the first programs for building software automatically,
and I'm very fond of it. It lets you define "recipes" -- actually, short
shell scripts -- for building files out of their "dependencies", and it's
clever enough to only build the things that are out of date. It can also
follow rules, like the built-in one that tells it how to use the C
compiler to turn a .c
file into a .o
object
file, and the linker to turn a .o
file to an executable file.
(On Windows the executable file would end in an extension of
.exe
, but Unix and its descendents don't need it.)
Make can also follow chains of rules, so if your source file changes it will rebuild the executable, and (unless you tell it not to) delete the object file after it's sure nothing else needs it. And rules don't have to result in actual files -- if you give it a recipe for a "phony" target it will simply notice that it isn't there, and run the recipe every time. This is good for things like "install-pkgs" and "install", which are Honu's main make targets.
Turn it loose with a make
command, and Honu's makefiles
happily go about installing packages, creating directories, and setting up
configuration files ; the whole process takes well under an hour.
I wrote Honu to be pretty generic -- it knows a lot of my preferences, but it doesn't know my name, email address, current projects, or hosting service. I also have another package, Mathilda (our name for the particular happy honu who narrates "Windward"). Mathilda sets all of that up, pulling down the Git repositories for my current projects, blog archives, websites, songbooks, build systems, and so on; putting them in the right places so that I can sit down in front of Sable, open the lid, and be right at home.
...Except, as in most moving projects, for tracking down all the little pieces that got left behind, but that only took a couple of days.