Technology
A collection of 28 posts
Automatic recovery using lvm-autosnap
Two vintage cars side-by-side. The one on the left is rusted out and missing headlights. The one on the right has been restored to good condition TL;DR: https://github.com/intentionally-left-nil/lvm-autosnap Running linux is an adventure. About a ...
Read more ⟶
Initramfs with systemd & LUKS
TL;DR [me@mycomputer]# cat /etc/sbupdate.conf | grep "^CMDLINE_DEFAULT" CMDLINE_DEFAULT="rd.luks.uuid=c1f995f5-a8f7-47f0-b085-6d3a159e1874 rd.luks.allow-discards resume=UUID=51384ac6-f197-41d9-b8c8-c9607d7e01c8 rd.udev.log-priority=3 nvme.noacpi=1 quiet splash root=UUID=a645810c-ef87-4a9a-9239-afdeaf292e6e rw" [me@mycomputer]# cat /etc/mkinitcpio.conf | grep "^HOOKS" HOOKS=(systemd keyboard autodetect sd-vconsole modconf block sd-encrypt lvm2 filesystems fsck) My old boot ...
Read more ⟶
Matching socks: Nginx + php = Wordpress (Part 3)
Part 1: Wordpress hosting, docker style Part 2: Cron + LetsEncrypt, docker style Part 3: Matching socks: Nginx + php = Wordpress Previously, we’ve covered terminating SSL connections and running cron jobs. Now it’s time ...
Read more ⟶
Adding a sliding animation in 2024 - WHY IS THIS SO HARD
A tower of blocks I had a scenario for a personal project where I had e.g. a (+) button, and clicking that button should insert a new thingy into the DOM. No problem-o. button.addAdjacentHTML(element, <div>thingy</div>) ...
Read more ⟶
Go concurrency the right way (e.g. my way)
My take on go concurrency is that there are 3 things that matter, and we can create a robust pattern using … 3 technologies to help us out. None of this is really new, but ...
Read more ⟶
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 ...
Read more ⟶
Easy, secure API keys
I needed to add API key authentication to our work environment. I needed: To develop the functionality quickly Be confident in the security of the system API keys should only be visible once when created ...
Read more ⟶
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 ...
Read more ⟶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 ...
Read more ⟶
Easy, secure API keys
I needed to add API key authentication to our work environment. I needed: To develop the functionality quickly Be confident in the security of the system API keys should only be visible once when created ...
Read more ⟶
Go concurrency the right way (e.g. my way)
My take on go concurrency is that there are 3 things that matter, and we can create a robust pattern using … 3 technologies to help us out. None of this is really new, but ...
Read more ⟶
Initramfs with systemd & LUKS
TL;DR [me@mycomputer]# cat /etc/sbupdate.conf | grep "^CMDLINE_DEFAULT" CMDLINE_DEFAULT="rd.luks.uuid=c1f995f5-a8f7-47f0-b085-6d3a159e1874 rd.luks.allow-discards resume=UUID=51384ac6-f197-41d9-b8c8-c9607d7e01c8 rd.udev.log-priority=3 nvme.noacpi=1 quiet splash root=UUID=a645810c-ef87-4a9a-9239-afdeaf292e6e rw" [me@mycomputer]# cat /etc/mkinitcpio.conf | grep "^HOOKS" HOOKS=(systemd keyboard autodetect sd-vconsole modconf block sd-encrypt lvm2 filesystems fsck) My old boot ...
Read more ⟶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 ...
Read more ⟶
Adding a sliding animation in 2024 - WHY IS THIS SO HARD
A tower of blocks I had a scenario for a personal project where I had e.g. a (+) button, and clicking that button should insert a new thingy into the DOM. No problem-o. button.addAdjacentHTML(element, <div>thingy</div>) ...
Read more ⟶
Automatic recovery using lvm-autosnap
Two vintage cars side-by-side. The one on the left is rusted out and missing headlights. The one on the right has been restored to good condition TL;DR: https://github.com/intentionally-left-nil/lvm-autosnap Running linux is an adventure. About a ...
Read more ⟶
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 ...
Read more ⟶
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 ...
Read more ⟶
Matching socks: Nginx + php = Wordpress (Part 3)
Part 1: Wordpress hosting, docker style Part 2: Cron + LetsEncrypt, docker style Part 3: Matching socks: Nginx + php = Wordpress Previously, we’ve covered terminating SSL connections and running cron jobs. Now it’s time ...
Read more ⟶
Adding a sliding animation in 2024 - WHY IS THIS SO HARD
A tower of blocks I had a scenario for a personal project where I had e.g. a (+) button, and clicking that button should insert a new thingy into the DOM. No problem-o. button.addAdjacentHTML(element, <div>thingy</div>) ...
Read more ⟶
Easy, secure API keys
I needed to add API key authentication to our work environment. I needed: To develop the functionality quickly Be confident in the security of the system API keys should only be visible once when created ...
Read more ⟶
Automatic recovery using lvm-autosnap
Two vintage cars side-by-side. The one on the left is rusted out and missing headlights. The one on the right has been restored to good condition TL;DR: https://github.com/intentionally-left-nil/lvm-autosnap Running linux is an adventure. About a ...
Read more ⟶
Go concurrency the right way (e.g. my way)
My take on go concurrency is that there are 3 things that matter, and we can create a robust pattern using … 3 technologies to help us out. None of this is really new, but ...
Read more ⟶
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 ...
Read more ⟶
Initramfs with systemd & LUKS
TL;DR [me@mycomputer]# cat /etc/sbupdate.conf | grep "^CMDLINE_DEFAULT" CMDLINE_DEFAULT="rd.luks.uuid=c1f995f5-a8f7-47f0-b085-6d3a159e1874 rd.luks.allow-discards resume=UUID=51384ac6-f197-41d9-b8c8-c9607d7e01c8 rd.udev.log-priority=3 nvme.noacpi=1 quiet splash root=UUID=a645810c-ef87-4a9a-9239-afdeaf292e6e rw" [me@mycomputer]# cat /etc/mkinitcpio.conf | grep "^HOOKS" HOOKS=(systemd keyboard autodetect sd-vconsole modconf block sd-encrypt lvm2 filesystems fsck) My old boot ...
Read more ⟶
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 ...
Read more ⟶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 ...
Read more ⟶
Matching socks: Nginx + php = Wordpress (Part 3)
Part 1: Wordpress hosting, docker style Part 2: Cron + LetsEncrypt, docker style Part 3: Matching socks: Nginx + php = Wordpress Previously, we’ve covered terminating SSL connections and running cron jobs. Now it’s time ...
Read more ⟶