Making a Janet Button

The Good Place is almost over, but the fun isn’t. For Halloween this year, we dressed up as Jason and Janet for our Halloween party and thought it’d be fun to make a Janet Button. If you don’t know what that is, it is the magical reset button that is used to reboot Janet. In the show, as you approach the button, Janet begs for you to not reset her in all of the hilarious and imaginative ways that you would expect. Read On →

You really need to slow down

I’ve been using Facebook less and less over the past several years. At the top of the list of reasons is privacy concerns and a growing mistrust of the organization. There are other reasons, but not at the bottom of the list is a simple one: I really don’t need or like the constant stream of information. Fortunately, there are a lot of people who agree with me. Services like mastodon. Read On →

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 →