What I'm Thinking

I recently introduced a new function in Nixpkgs named buildGoModule. The new function allows you to package Go application (or modules) with ease, provided the modules have added support for Go modules upstream.

... Read More

Over the past couple of years, I’ve been using Hugo on and off for my blog, as well as for some static websites I maintain. On many occasions, I have started to hack on my site, only to realsize that my theme – as submoduled into the repository – is no longer compatible with the most recent version of Hugo that I have installed on my system.

This blog post describes how to migrate from an environment controlled by the host operating system to a reproducible environment regardless of the host.

... Read More

Overview

It’s been quite some time since I shared my knowledge and the daily challenges that I overcome. I always wanted to get back into writing as it has always been therapeutic for me.

Today, I’m going to talk about how this blog is being hosted. We will start from the top down by looking first at the application level, then we will take a look at the hosting, the deployment, the server and finally the cloud provisioning.

Micro-Containerized cluster

The most ideal stack today would be:

  • Etcd2 cluster with at least 5 nodes.
  • Kubernetes cluster with at least 3 master nodes and 2 minion nodes.
  • Let’s encrypt generated SSL certificates for all websites.
  • Route53 for managing the DNS zones.
  • All managed using Terraform.

That’s exactly what I did for work, but it’s way overkill and financially unacceptable for a blog.

The stack I designed for this blog:

  • One t2.micro instance running NginX containers with support for SSL certificates from Let’s encrypt.
  • Route53 for managing the DNS zones.
  • All managed using Terraform.

... Read More