I <3 Playbooks

In my previous post, I discussed learning linux.  Now I want to talk about one of the cool things I’ve done with it. One thing that sucks about getting a new computer is going through all the program installations and configuration you need to do to really make it yours.  Things like: installing your favorite browser, setting up your password manager, choosing a desktop background, etc.  This is especially true for developers, who have to manage multiple tool chains of applications in order to do their work.  Not to mention, we tend to be very picky about our text editors and IDEs.  I’ve also been in the abnormal situation over the last year where I have setup my ubuntu desktop environment on five different computers.  That’s a lot of setup.

And when I’m setting up my computer, there is almost always something I forget until I actually need it, and then I have to both set it up and use it.

There is a better way: automation.  I can write scripts that will do that for me, so when I get a new computer I need to setup, I can login, type a few commands, and then be good to go.   This is difficult to do in the Windows world, though project like boxstarter are making it better.  On UNIX’s like Linux, though, this type of thing is richly supported.  So last spring, I started working on automating my desktop setup using a technology called Ansible.  All the code is available on github.

Ansible is a pretty cool technology. It is a way of declaratively describing your computer. For example, normally if you are installing a piece of software, you get the installer and tell the installer to install the software on the computer.  With ansible, you simply declare that the software should be installed on the computer, and ansible makes it happen.  It will test to see if it’s already installed, and if so, does nothing.  If it’s not installed, ansible will install it.

It’s not perfect, because there are certain things that I haven’t automated yet.  These are mainly around security issues, like setting up my ssh key, pgp key, connecting up my password manager, and things like that.  I also haven’t focused on specifying how the computer should be setup outside of my little user (for the most part).  For example, I don’t do anything with partitioning or video card configuration.  I don’t think it would be useful to add those things due to all the boxes tending to have different hardware.

Here’s what it will do:cowsay

  • Installs all the software I use.
  • Copies my well known configuration for applications like my shell (oh-my-zsh), git, and various editors
  • Sets my desktop theme and background
  • Sets up LaTex
  • Sets up my creative workflow for some vector editing when needed
  • And most importantly: sets up cowsay

So when I need to setup my computer, I just need to type four commands to kick off the automation, and I’m pretty sure I can get it down to one command.  Then I just wait for it to complete, usually 10-15 minutes later, and my computer is ready to be productive.

Any time I find a new piece of software that’s very useful, I just update my playbook to include that software, and then re-run the playbook.  It installs the software, and I’m ready to go.  But even better, I have three ubuntu desktops I use almost daily.  I can use my automation to keep those things synchronized, so my tools are available across all of them.  This makes me very happy.

Zork Zero and Bit Rot

I mentioned in my last post how one of my first “computer projects” was playing a game called Zork Zero.  It was in a genre of games called “Interactive Fiction” where the player would interact with a [mostly] textual world, solve puzzles, and advance the story line.  Zork Zero was a game in a long series of zork games that were characterized by what I would call clever silliness.  It was the first one in the series to have any sort of graphical component, and it came in the form of several classical logic puzzles.

I’ve sometimes wondered why the instructor allowed me to play a game for my project, but I think his goal was just to have us use a computer to really get used to it.  If that’s the case, it was really successful for me.  I spent endless hours playing this game, trying to figure it out.  It helped once I got the documentation.

One of the ways the publisher of Zork Zero combated piracy was to require the use of physical documentation to play the game.  The game came with several cool little artifacts, called “Feelies” back then.  For this game, it was a torn piece of parchment with writing on it, an in game calendar, and some blueprints.  To complete the game successfully, you need to have the documents, or at least that was the idea.

When I first started playing the game, I didn’t have access to these documents, but I was able to take the game very far.  I even reverse engineered the blueprints, which took hours.  This type of copy protection wouldn’t work very well these days, but I love the ingenuity.

The game was silly and clever, which I love.  It was the first place I heard the phrase “So long, and thanks for all the fish.” There was a game called “Double Fanucci” that one had to win in order to advance the game.  In order to win, you needed information from the Feelies, which I didn’t have.  I played Double Fanucci so much, though, because it’s simply a silly game.  I tried to reverse engineer some sort of rule set.  It didn’t work that well, because as far as I can tell, there wasn’t really a rule set.

For a while, every time I’ve bought a computer, one of the first things I’ve done with it is install Zork Zero.  Not because I still play it all that often, but I just like the thought of it being there, ready for me.  Over the years, it’s gotten progressively more difficult to get it to run.

Today, when I was preparing to write this post, I discovered that I had failed to install it on this machine.  After a bit of Googling, I discovered that it wasn’t going to be straight forward, either.  It’s going to take some work.

This is known as “Bit Rot.”  Over time, the bits that worked in the past no longer work as well, not because the bits change, but because we change.  There is so much lost technology.  _why came out of hiding to talk about it not too long ago.

It some ways, it makes sense.  Technologies improves, why do we need to remember the past?  Why do we need a text based game, when we have modern 3D games?

I think it is important for us to remember. I think it’s important for us to preserve.  In meatspace, we mourn losses like the library at Alexandria, because we imagine the riches it held.

It’s possible that in the future, this blog post (and others like it) are the only documentation available for this game called Zork Zero.  And maybe not even this blog post.  Maybe some other thing in the future that references this, and this is no longer available, because wordpress and mysql have rotted out of existence.

For now, I know what I’m doing today.  I’m going to get Zork Zero running on this computer.

Zork Zero can be downloaded here.