Hibernating is easy now?

Alternatively: S0ix is still awful My Linux laptop runs out of battery all the time. It goes to sleep, and then it just drains and drains until it’s dead. It’s a problem we’ve largely solved ...

Easy, secure API keys

I needed to add API key authentication to our work environment. I needed: I was able to use JWT tokens in a slightly clever way to make this happen. The best part is, there are ...

Automatic recovery using lvm-autosnap

TL;DR: https://github.com/intentionally-left-nil/lvm-autosnap Running linux is an adventure. About a year ago, I switched from MacOS to Ubuntu (eww snaps), then Fedora (fine), then Manjaro (yeah that was a mistake) until finally landing on the final ...

Introducing Async Service

Distributed tasks with Postgres & Rabbitmq TL;DR: Check out the code here At my workplace, we needed a mechanism to: Have service A tell service B to start executing long-running tasks, with notifications upon completion ...

Initramfs with systemd & LUKS

TL;DR My old boot process looks like this: UEFI (with secure boot on) systemd-boot unified kernel.efi (initramfs + kernel params + kernel all rolled into one efi and signed) initramfs (busybox) encrypt hook: detects that ...

Interfaces in golang

TL;DR: An interface just defines a collection of methods. When you create an instance, it’s just a wrapper around a concrete type. In addition to the concrete type, the interface contains an extra array of ...

Secure DNS

TL;DR: Use a VPN if you really care. Hey, you over there! Want to take something that works perfectly well and make it more complicated? Sure ya do! Oh, need a little more convincing? Okay ...