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 ⟶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 ⟶
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 ⟶
Oh Brothers, where art thou
Last weekend, we backpacked in the Olympics and climbed the brothers. The route itself is straightforward up to Lena lakes (where almost everyone at the trailhead was headed to). Once you cross over to the ...
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 ⟶
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 ⟶
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 ⟶
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 ⟶
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 ⟶
Oh Brothers, where art thou
Last weekend, we backpacked in the Olympics and climbed the brothers. The route itself is straightforward up to Lena lakes (where almost everyone at the trailhead was headed to). Once you cross over to the ...
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 ⟶
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 ⟶
Oh Brothers, where art thou
Last weekend, we backpacked in the Olympics and climbed the brothers. The route itself is straightforward up to Lena lakes (where almost everyone at the trailhead was headed to). Once you cross over to the ...
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 ⟶