Category: software

  • Retrofitting tests

    In this time of TDD, the obvious question is, “why?” (Or possibly “what the hell is wrong with you?”)  But I think I can explain… Why are there no tests to begin with? It is sort of obvious if you have been at this for a while:  legacy apps. All the Cool Kids have the […]

  • Why you shouldn’t care whether Ansible runs are re-entrant

    I recently wrote about a problem I had as a result of imagining that Ansible runs were re-entrant.  (Spoiler: they are generally not.)  After kicking this around a little I realized that you should not care whether Ansible runs are re-entrant.  I like cherry pie so I will explain myself with a pie analogy. If you […]

  • Re-entrant vs idempotent in Ansible roles

    I wasted a couple hours tracking down a problem with a raft of  new AWS ec2 instances generated using Ansible, and it’s worth explaining because it showcases problem common in a lot of Ansible roles.  While Ansible docs talk up the concept of “idempotency” (the ability to run a playbook multiple times without screwing up […]

  • Un-%&$-ing MySQL character sets and collations across an entire server

    Recently, requests to one of our data-backed web services started timing out.  It turned out the problem was that some of our data tables had been (re)created using the wrong character sets and collations.  And as everyone should know, and now I do: Indexes are useless for joins unless the collations match The carefully optimized queries […]

  • Ubuntu 14.04… apt-get install “disk full” error (aaack!)

    Recently we have been considering moving some MySQL database services from our cloud servers to Amazon RDS to simplify our management tasks, and wanted to run atop on some Ubuntu 14.04 LTS machines to get an initial sizing for RDS instances. While trying to apt-get install  the atop package, I was getting a “disk full” error, […]