Ansible Is Awesome

Ansible is just the tool I was looking for, for my current level of ops mastery.


14 minute read

tl;dr - There are lots of ways to get smarter about how you deploy. Ansible is one choice, it’s not the fanciest, but it’s amazing. NOTE This is not an introduction to ansible, please check out their official documentation if you want that. For most of my projects, I use a GNU Make Makefile based build process. I do that because it’s cross-platform, pretty well suppported/known (for people who build software), and easy to standardize on no matter what project I’m working on.

Installing Python On CoreOS with Ansible (to enable Ansible)

How to set up Python on CoreOS from an Ansible playbook, for use with Ansible


8 minute read

tl;dr - Undestand & use the short Ansible playbook at the bottom of this post I have a bunch of posts that are backlogged (raw versions written but not pulled together & edited in anyway), but I’m going to skip the queue to get this post I think is highly useful out. If you’re out there messing with Kubernetes (‘k8s’), Ansible, and CoreOS, and trying to make them all work together you might find this post useful.

Quick And Dirty Forward-Only DB Migrations

Quick and dirty forward-only migrations, in just a few lines of make & bash


5 minute read

While working on the The Start’s jobs backend, I found myself at the age-old problem of how to migrate my database (which is surprisingly SQLite). I looked at tools like flyway, migrate, but they all kind of seemed like more than I needed. If anything I was leaning towards migrate, but flyway is a very well-known and often used solution that it was also pretty appealing. In the end, I decided to just write a quick makefile target (basically a bash script) for a few reasons:

Research Idea: Maintaining A Write Ahead Log For Application Runtime State

Exploring the stepladder of features that lead to well-engineered backends


13 minute read

tl;dr:What if there was a write-ahead-logging layer above/outside the database? Then you could get CQRS+ES capabilities and assurnaces from your database without rewriting, and even abstract out the database as a whole, going as far as to create your own DSL for application-level changes, ADD_USER instead of INSERT … INTO USERS …* I spend a bunch of time thinking about how I can waste less time writing applications. Over time I’ve worked on various protoypes, with varying levels of completeness, but as I move across languages, frameworks, databases, and stacks, I always find myself solving the same problems, and having the same worries.

Stop Worrying And Use Gitlab

Worried you (or your org) are not 'doing it right'? Get (or at least start following practices used by) Gitlab


6 minute read

tldr;instead of now installing/using JIRA, Trello, Github, Jenkins/TravisCI, and Teamcity, I can just install one thing – Gitlab, spend a little time configuring it, and be ready to take your development process to the next 5 levels (if you’re not already there) Gitlab 9.4 was just released and I’m pretty excited about it. A lot of stuff that Gitlab is doing is really showing that they value empowering developers and pushing ops in The Right Direction ™ – for me that means towards automating deployment, and getting smarter about how we ship and test.

LetsEncrypt Systemd Recipes

Some useful SystemD unit files


2 minute read

If you’re unfamiliar with Let’s Encrypt, it’s a project (I believe originally sponsored by the EFF) that creates a first of it’s kind free automated and open certificate authority. This means administrators who run websites can get free access to SSL certificates. In the past I’ve had to go to sites like StartSSL or purchase a certificate from my hosting provider (and of course, some still do), but Let’s Encrypt has been wonderful for me (I highly recommend donating to Let’s Encrypt).

Using dockerized Ghost with local SMTP

Getting Ghost (the open source publishing platform) working with local SMTP


2 minute read

Getting a dockerized instance of Ghost to use local SMTP When handling mail for a ghost instance, the official recommendation of the Ghost team is to use Mailgun. Since I have email set up on the server on which I’m running Ghost, despite the fact that Mailgun offers a pretty good free tier of services, it seems pretty extraneous/unnecessary to use mailgun just to send email from my own server.

Issues with Thunderbird and Dovecot

Issues encountered setting up dovecot, with proper TLS & thunderbird support


4 minute read

Issues with TLS auth while Setting up Dovecot & Thunderbird Recently while doing some server-administration tasks (setting up the server, enabling email, TLS, etc) on a Ubuntu 14.04 system, I ran into some problems with dovecot. For some reason, no matter what I tried, I could not get Thunderbird to auto-configure properly with the newly stood up web server’s SMTP server (postfix + dovecot). Maybe interesting to note that I never really had these issues on Arch Linux servers that I mentain… maybe the starting documents/wiki is just that much better/more thorough.

Default docker settings on arch

What happens when you don't RTFM

2 minute read

Default Docker settings on ArchLinux RTFM. Seriously. The Arch Wiki is seriously one of the most informative wikis I’ve ever read, and has excellent guides. If I had read it closer, I would have avoided one problem I’m about to explain below. Change the default filesystem While running on a VPS, I ran into problems deleting containers that were once functional when I was using the default devicemapper driver. The fix for this was simple (and also in the arch manual), and basically consisted of changing the default file system driver to overlayfs.


3 minute read

Moving from Hugo to Wordpress This post is one I wrote a while back but never published, as I’ve found some free time now, I’m going through and putting together posts that I jotted down but never got to publishing. tldr; I picked Hugo and used SchumacherFM/wordpress-to-hugo-exporter to transfer everything from my wordpress site. Picking a static site generator The blog you’re looking at right now (as of January 2017) is a staticly generated site generated with Hugo.