Plausible Deployment

2014-02-16 02:04:34 -0500

This week, I've gotten a plausible burndown list together, which is always as useful for the things not on it as for the things that are ("yes I know that part would be interesting to hack on and we know clever things about doing it, but it's not in the way of the deployment so back off of it for now.") One or two things may turn out to be dependencies (getting RSS generation right might require actually implementing the parser so I have the classic material to start with, although it's also possible that I can treat those as legacy components for now just to get this out the door, since I have generic blogging working.)

Since this is a relatively small static site on a tiny network, the constraints on web server choice aren't weighted the same, and in particular "sane configuration" takes precedence over performance (because none of them are that bad at just throwing files over the wire) once the basic feature checklist is satisfied. This led me to satisfy my decade of frustration with Apache configuration by tossing it out the window and using nginx instead. The configuration is still arcane, of course, it's just not syntactically horrifying, and it does start with more modern assumptions about what things should be easy to express. It's also nearly as pathologically undebuggable as apache configuration is, and could really use a higher level configuration language that generates the one it includes - or at least a macro language - I could easily take the hundred lines of config I have now and drop it down to fewer than ten descriptive lines just using cpp but it's not really worth doing that here and now.

I also need to start using a simple problem-tracker to remind me of things like that, but a few text files are working out well enough as well, and I really shouldn't let that get in the way of deployment :-)

A codes-well-with-others shoutout to moreutils; a pattern of roughly

chronic flock $command 2>&1 | ifne mail -s "failed" $me

makes a decent git post-update hook for triggering a deployment command on a push to a particular repo.