Protoc Gen Whatever

Today I released version 0.1.0 of protoc-gen-whatever, a plugin that allows for protocol buffer definitions to be used as inputs to Golang’s text template library to generate files. It can be installed with go get -u or by downloading one of the release files. Usage is faily simple, for a given protofile as an input, you provide the template that you want rendered and the location of the output. Read On →

Managing AWS With Terraform

In December 2016, I started writing a book about creating and managing Docker Swarm infrastructure in AWS using Packer and Terraform. It was a lengthy book clocking in at 230 pages in 7 chapters out of 11 chapters total, not including source code. Ultimately, I came to the conclusion that it was trying to do too much and was spread too thinly across all of the topics and best practices that it was trying to cover. Read On →

Terraform, Docker Swarm, and AWS

This is a guide to using Terraform to create docker swarm clusters (swarm mode, not swarm engine) in AWS. The goal that I started out with was to have a single terraform configuration set that would automatically bring up a docker swarm cluster. I’ve also added some example configuration for lighting up services within that cluster once it is created. Requirements Before you start, you’ll need both packer and terraform installed locally. Read On →

Dumb Phone

This is a reminder to myself: You are chained to that smart phone and shouldn’t forget it. You aren’t chained to a smart phone and shouldn’t forget it. I’ve been giving some long and hard thought to giving up my iPhone in favor of a dumb phone and simplifying my day-to-day communication tech. The result that I came to was that I’m stuck with it. At this point in my life, these are the things I’m having issue separating with: I started writing this post to convince myself and serve as a reminder that I don’t want to give up some conveniences in exchange simplicity. Read On →

Web applications with TypeScript and Sequelize

I’ve been using TypeScript professionally for a short while now and enjoy working with it. I think it really smooths out some of the rough parts of developing server software in JavaScript. At Colibri, I’ve been working on a NodeJS project that is starting to move to TypeScript with some success. One part of that project, the storage subsystem, hasn’t been ported yet and I’ve done some research to best understand how to tackle it. Read On →

Warrant Canaries

Wikipedia defines a warrant canary as: … a method by which a communications service provider informs its users that the provider has not been served with a secret United States government subpoena. Practically, this ends up being a file or web location that states something to the effect of, “As of date, we have not received a subpoena.” The notice usually includes a disclosure stating that no warrants have been served to the entity or its employees and no searches or seizures have been performed on the entity or the employees of the entity’s assets. Read On →

IOT and Home automation, 10 months later

In December of 2013 I was given a SmartThings kit and that kicked off a home automation project. I didn’t go all-out and try to automate all the things, but instead tackled a single area, specifically my home office. Nearly 10 months later, I hardly think about it but use it every single day. If the office lights are on and I leave the house, the lights are automatically turned off. Read On →

Clean Build Versions With DocOpt

With some recent Go projects, I’ve been using docopt.go for command line argument parsing. It greatly reduces the complexity of dealing with arguments and options. On it’s own, arguments can be processed without much work: package main import ( "" ) var ( githash string = "" ) func main() { usage := `Awesome Usage: awesome [--help --version --config=<file>] awesome daemon [--help --version --config <file>] awesome thing [--verbose... ] <with> <more>. Read On →

Secure Email On OSX

There are a few really good articles out there on how to send and receive secure email using Thunderbird and GPG. This small guide will show you how you can use Mail app along with GPG Tools for the same result. Install GPG Tools First, head over to and download the latest release. At the time of this article, the latest stable release is 2.1. To start off on the right foot, before you install it, open up terminal and verify that you’ve downloaded a package that matches the following signature: ac7a636bfee1027d8f43a12a82eea54e7566dcb8. Read On →

Chef Application Cookbooks

This is a follow up to the blog post Creating A Chef Cookbook. Since writing that blog post, I created the preview project and several cookbooks for it. With it, I’ve done a few things differently and believe that they represent some notable trends in the chef community. Embed Application Cookbooks in Application Repositories Instead of having a separate git repository for each cookbook, all of the cookbooks for the preview application are in the preview git repository in the ‘cookbooks’ directory. Read On →