Rust and Go department directories

Continuing my journey with Rust, I recently completed a suggested exercise from “The Book": Using a hash map and vectors, create a text interface to allow a user to add employee names to a department in a company. For example, “Add Sally to Engineering” or “Add Amir to Sales.” Then let the user retrieve a list of all people in a department or all people in the company by department, sorted alphabetically. [Read More]

Caddy vs Traefik

This post will be a relatively short account of my preference for Caddy over Traefik. A fair few months ago, enough that the details have been lost and all that remains is the lesson I drew, I tried to use Traefik for a new very simple deployment. I had previously successfully used Traefik for a toy project on my raspberry pi, with it automatically registering Let’s Encrypt certificates with docker containers. [Read More]

Rust match guards and exhaustive conditions

I have started learning the Rust language, to see what people find attractive about it, and to understand cases where I may want to use it. A post on correctness with types by Amos (fasterthanlime) seemed to offer some tantalising benefits. It reminded me of some of the struggles I had with Go when I first started learning it years ago – things like my inability to control exactly how my types are used to prevent programmers from making mistakes, and my inabilty to create types that could do certain things that the core language types can do (e. [Read More]

Easy updates for your Hugo blog using Caddy

Previously I wrote about my initial plan for creating this blog using Hugo. This is a brief post on how to make it super easy to deploy updates to your blog. In fact, as easy as a git commit! All it takes is pushing your latest changes for your blog to your git repository, and it shows up automatically on your live site. Please note, this post assumes familiarity with Docker. [Read More]

On hold music is the worst

On hold music is the worst, and kind of perverse. It is designed, I assume, to assure the caller that they are still on the line, and that they should just continue to wait. However, for the caller it has an undesirable consequence: the shorter the call, the less assurance you need, but the longer the call, the more you want the music to get out of the way. When I am put on hold, I put my phone on speaker so that I can continue to work at my computer while I wait. [Read More]

Hosting my new blog with Hugo

Welcome to, my home in the cloud! In the last few days I’ve decided it’s time to start my own blog, so here we are! This blog is intended to contain a mix of topics such as programming/technology, philosophy, and other random thoughts, with an emphasis in that order (primarily technology). In making this decision, I found myself asking the question, “Do I really want to use Wordpress?". For my work, I run a small but growing software development company, where we focus mostly on integrating systems and creating internal tools (usually in the form of web-apps). [Read More]