Skip to main content

Posts

Who to blame for all your problems

Who to blame for all your problems Conducting Blameless Postmortems This post is based off of my talk at PyCascades 2019 To start off with, what is a postmortem? There are two common uses of the term: A document detailing what happened during an incident A meeting to review an incident, usually resulting in the creation of the postmortem document This post is focused on the meeting, but I'll also have some recommendations for the document. Why Run Postmortems? Why do we conduct postmortems, anyway? Production broke, we fixed it, call it a day, right? Holding postmortems helps us understand better how our systems work -- and how they don't. If your system is complex (and it probably is), the people who work on it have an incomplete and inaccurate view of how it works. Incidents highlight where these gaps and inaccuracies lie. Reviewing incidents after the fact will improve your understanding of your systems. By doing this as a group and sharing what you found, you...
Recent posts

JavaScript: array.every()

I decided to relearn JavaScript after not having worked with it since school so I'm going through the JavaScript track at exercism.io . Yesterday, I ran into behavior I didn't expect with Array.prototype.every() , and after getting help from some actual JS developers, they were surprised too. The Exercism project I was working on was to create a class to check if a sentence is a pangram. (A pangram is a sentence that contains every letter of the alphabet.) My approach was simple: create a sparse array with 26 elements (one for each letter) walk the sentence, and for each letter, look up its index in the alphabet, then set that index in my array to true . After I was done walking the sentence, I then used Array.prototype.every() to check the results. Array.prototype.every() seemed perfect for this: it takes a callback function, and applies it to every element of an array. If it gets back a falsy return value from one an element, it stops processing and returns false. If it...

Testing Ansible roles with Molecule

I recently heard about Molecule , a tool for testing roles in Ansible. Essentially the whole of the conversation was: "Have you ever used Molecule?" "No - what's that?" "It's for testing Ansible roles. I haven't used it either, but someone told me it was cool." I went about reading the docs, and felt like they were not great for someone who had no idea what was going on (the API documentation is great, though). After doing some playing around with it, I think Molecule looks pretty useful, so here is what I wish the docs had told me up front. What is it? Molecule provides a lot of the boilerplate required to test Ansible roles. It provides tools to automagically stand up test hosts using Docker, Vagrant, LXD, Azure and many other virtualization and containerization providers, lint and run the role to be tested, and run Goss or Testinfra tests against the test hosts. Getting started You can install Molecule using pip: pip install...