Hi there, welcome to my space.

Here I post about my day to day discoveries in tech.

Dynamic images in Hugo

As you may have noticed, this website can be displayed in either light or dark mode (toggle with sun/moon top left of page or with Alt+T). An issue is that images and diagrams are perfectly visible in light mode, but when flipping over to dark mode they either are surrounded by a big white box or lost all contrast if the background is transparent, or vice versa. ...

November 25, 2025 · 3 min · David Isaksson

Setting up a local reverse proxy with Nginx Proxy Manager and Let's Encrypt

This is part 2 on the topic of a short series about setting up DNS hosting with Cloudflare and using DNS-01 challenges to get TLS certificates from Let’s Encrypt See part 1: Moving DNS hosting from Namecheap to Cloudflare In this post I am sharing my experience setting up a reverse proxy that acts as a frontend for my internal self-hosted web services. What and why? A reverse proxy is a service that acts as an entry point to one or more kinds of services, often web services, but it can vary. The reverse proxy is a layer in-between the user and service. ...

November 23, 2025 · 10 min · David Isaksson

Weekly and daily note templates in Obsidian

I use Obsidian extensively for both personal use and work. Today I’m sharing a trick using the Templater plugin that makes it possible to create daily and weekly notes that based on their file names can auto-generate links in-between them. Super handy! Install Templater and in the template directory of your vault, we will create two files, “Daily Template” and “Weekly Template”. Weekly note template Here is an example of how a generated week note could look like ...

June 15, 2025 · 3 min · David Isaksson

Moving DNS hosting from Namecheap to Cloudflare

This is part 1 of a short series about setting up DNS hosting with Cloudflare and using DNS-01 challenges to get TLS certificates from Let’s Encrypt for locally hosted web services in a homelab. See part 2: Setting up a local reverse proxy with Nginx Proxy Manager and Let’s Encrypt I bought this domain via Namecheap a few years back. Namecheap’s services has been working fine. Not a very expensive domain name and the DNS hosting was good. My requirements for DNS hosting are very simple – I want to be able to add some extra records and keep them up to date via Dynamic DNS (DDNS) if (when) my IP addresses change due to e.g. DHCP leases running out so the domain name always points to a valid IP address. ...

May 16, 2025 · 5 min · David Isaksson

Debug stripped executables with detached symbols in GDB

Say you have an executable that will be shipped to target machines and you don’t want to include any debug symbols, but at the same time if an annoying bug occurs you’d like to debug the executable with symbols. Is it possible to have both ways? As a matter of fact, yes! GNU Debugger (GDB) has a feature where it can load a separate symbols file to make it easier to debug stripped executables. This would allow you to ship stripped binaries, archive symbols files and when needed load them both into a debug session. ...

April 27, 2025 · 6 min · David Isaksson

Using Tailscale in pfSense to access my LAN

In this post we’re going to explore how to set up Tailscale in pfSense to be able to both route all traffic through pfSense for secure browsing and how to route traffic to local subnets with split DNS to resolve local hostnames. My history with VPNs I’ve had a pfSense box now for a few years and been relying on its OpenVPN integration to access my internal network from the outside. This has been working fine, but a few years ago I stumbled upon ZeroTier which is a kind of VPN service that via UDP hole punching can create a flat and global network without the need to open ports. This technology is called Software-Defined Wide Area Network (SD-WAN). I could now use ZeroTier to access firewalled devices without opening any ports! ...

April 21, 2025 · 5 min · David Isaksson

Ctrl+P in Docker container

I strive to be efficient on the command line, and some of my favourite keyboard shortcuts in Bash are the ones that allows me to navigate and execute previous commands easily. Some of which are back and forward through the command history with Ctrl+P and Ctrl+N combined with Ctrl+J for executing the command. The problem This is all well and good until you jump in to a Docker container and suddenly Ctrl+P isn’t working as expected anymore. ...

July 21, 2024 · 2 min · David Isaksson

Back up your Bitwarden vault in a future-proof and secure way

Introduction Your Bitwarden vault contains (hopefully) all of your passwords and other sensitive data, so it would be good to have a backup of it in case something goes wrong. In this post, we will explore how to export your Bitwarden data, keep it safely encrypted with PGP, and set and complete backup reminders using Todoist. ...

November 19, 2023 · 6 min · David Isaksson

Format JSON in Vim with jq

jq is a very powerful command-line tool designed to manipulate JSON data. One of its great features is that it automatically formats JSON output for better readability: $ echo '{"is_jq_awesome": true}' | jq { "is_jq_awesome": true } But in Vim? Can we utilize this inside of Vim? Of course! In Vim, there’s a feature called filter commands that enables us to use external applications to modify our buffers. Filter commands take a range, which is a set of contiguous lines, and a command that processes these lines. This feature is exactly what we need for our purpose. ...

April 13, 2023 · 2 min · David Isaksson

Backup files quick with Bash's brace expansion

Alright, here’s a quick trick that I use at least a few times a week. Problem Let’s say we have a file that we want to make a copy of for whatever reason. In this example we’re creating a backup of the SSH server config before modifying it: $ cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak This is fine and dandy, but a bit verbose… We’re writing the same string two times and to be frank, it’s not fun. ...

April 8, 2023 · 1 min · David Isaksson