I’ve switched to Hugo for maintaining this blog from Jekyll.

Hugo is noticably faster in generating the static content. Getting Hugo installed is also considerably easier than setting up the Ruby environment.

GitHub Pages does not support Hugo directly but it is easy enough to generate the pages to publish manually.

Most of the content was quick to port with only the category/tag frontmatter needing adjustement. The layouts were the toughest to migrate and Go’s template language isn’t the easiest to pickup. Also, there are aliases that help migrate older URLs.

Besides the speed, Hugo has greater flexibility in Go’s template language, more support for complex taxonomies/categoriation/tags for content, and existing support for some blogging features such as adding social metadata which seem to be better than Jekyll’s.

1Password is one of the best password managers available today. While the iOS, macOS, Windows, and Android clients are obviously the primary clients, they also have a command line tool.

You can automate the upload of files and other secrets to 1Password via the CLI. For instance, here’s a script to zip up a directory and upload the contents:

#!/usr/bin/env bash

set -euxo pipefail

FILENAME=secrets.zip
DIR_TO_ZIP=mydir
zip -r $FILENAME $DIR_TO_ZIP

op create document $FILENAME --title="My Secrets File" --vault="Personal"

rm $FILENAME

You can then download the latest secrets file via the CLI with a little help from jq:

#!/usr/bin/env bash

set -euxo pipefail

FILENAME=secrets.zip
DOCUMENT_UUID=$(op list documents --vault="Personal" | jq -r 'sort_by(.updatedAt | fromdateiso8601) | map(select(.overview.title == "My Secrets File" and .trashed == "N")) | [ .[].uuid ] | last')

op get document $DOCUMENT_UUID > $FILENAME

unzip $FILENAME

To setup Google Cloud for use with Terraform, create a Google Cloud project using the Google Console.

Then, I create a Google Cloud Service Account. After creating the account with the appropriate role, I create the service account key and download and save the private key data in JSON format.

Once you have the service account key, then you can export an environment variable like GOOGLE_CREDENTIALS with the path to the JSON file. See the Google Cloud Provider Terraform documentation for more information.

Finally, you can create and run your terraform commands which will use the service account to create your Google Cloud resources.