Showing 1—30 of 120.


Moving my website to Hetzner

7 minutes

If you're reading this, you read it from a server hosted by Hetzner - congratulations! My website is quite important to me. I want it to be reliable, stable, and yet still be something I can tinker with easily if I want to. Almost 2 years ago, I rewrote it…


Replacing a Proxmox boot drive

My server boots off a pair of SSDs, tied together in a ZFS mirror. Proxmox supports ZFS boot (thanks to its Ubuntu kernel), and lets you configure it through the installer. When I installed my server, this is what I wanted, as it meant the OS and data disks for…


Intermediary CNAME rewriting with AdGuardHome

7 minutes

As part of some recent infrastructure changes, I migrated my home DNS to AdGuardHome, from Pi-Hole. Being a single, self-contained binary, it's far easier to install and manage (it's in the AUR too), and it's got a few nice modern features like DNS-over-HTTPS and DNS-over-TLS. Sure, the ad blocking features…


Turning my website into a browser search engine

6 minutes

My website has search functionality. You can visit the search page (or the homepage or the magnifying glass in the top right), enter a search query, and if I've written something about it (which is quite likely), the matching pages will come up for your reading pleasure. Under the hood,…

Scattered white paper

Adding blog posts to my GitHub profile

4 minutes

In case you didn't know, I have a blog - you're reading it now. It's not like what most people think of when they think "blog". It's guides, tales and random thoughts about the things I do, play around with or find interesting. The same can be said for the…

Look Up

Exposing Docker's internal DNS with CoreDNS

6 minutes

Whilst Docker is a containerisation technology, it's not just about running applications - there's also networking. When you add a container to a docker network, it magically becomes discoverable by other containers on the same network with DNS. All containers use Docker's magical internal DNS server to achieve this. However,…

Volkswagen Polo GTI

Fixing the heater blower in a VW Polo

4 minutes

About 6 months ago, my car (a Mark 6 Volkswagen Polo GTI+ - not the one in the picture) developed a lovely fault: the blowers stopped working. Not completely, but enough to annoy me. Off worked, and full power worked, but nothing in between. Temperature control was unaffected, as was…

Lost in the light

Forcing dark mode in Android Auto Maps

2 minutes

I, like a growing number of people, enjoy dark mode. Not only do I find it clearer and easier to read, but it's also easier on the eyes, looks nicer and saves a little battery in the process. If a service supports it, it almost always ends up in dark…

January 2022 Closeup.

On Mondays, I update servers

5 minutes

Software updates are a critical part of using any kind of electronic device nowadays, particularly if it's internet connected, and even more so if it has any security functionality. If you have any kind of computer online, whether it be a phone, laptop or a server, you should really be…

" Identity layers " 
By penetrating any lower layer of a person, you can see a different face of that character and his appearance gradually disappears .

Changing the user-agent of urllib

3 minutes

If you need to make HTTP requests in Python, you're probably using the fantastically simple and ergonomic requests library (or httpx in the async world). However, it's another dependency to manage and keep up-to-date. If you want to make HTTP requests without an additional dependency, or another library author has…


Swapping Swapfiles

4 minutes

Swap (or the Page file in Windows) is a way of taking unused disk space and turning it into RAM. It's significantly slower than RAM, but it's definitely there and usable. Configuring a swapfile is as simple as 3 commands on Linux, or a few clicks on Windows. Swap helps…


GUIDs - How I messed up my RSS feed

4 minutes

If you're reading this post through an RSS aggregator, or were directed here from one, you may have already seen the issue I'm about to describe, and already swore my name. If you didn't, I'd recommend subscribing, for completely unbiased reasons. This is a tale of RSS, and an easily…

Little cabin on nightstand in altbau in Berlin, Germany. Available for rent for your next photoshoot via

Efficiently doing nothing in Linux

6 minutes

Computers exist for doing work, usually useful, often not. In rare instances, it's useful to make a program do nothing at all. My primary use case for this is Docker containers, where it's useful to have the container do nothing, so it can be exec-d into as part of another…

life is a succession of choices, what is yours?

Redirecting static pages

4 minutes

GitHub, my public code hosting platform of choice (I have my own Gitea server, too), has GitHub Pages, a free static file hosting platform. I use GitHub Pages for a few personal projects, where I either don't need or want to host the code myself, or I want to explicitly…

Lady Justice.

Just! Stop using Makefile

9 minutes

If you look at any software project, its codebase is rarely just the application itself. There's always a few other things in there: Tests (hopefully), linters, complicated setup scripts, incredibly complicated compile scripts. All of which take a lump of code and turn it into a full project. To make…


COUNTing is hard: A tale of types in SQL and Django

5 minutes

Using an ORM adds a handy layer between you and the database tables. Sure, you can write SQL, but most developers find it easier to think of a list of complex objects than they do a collection of rows. However, it's important to remember what's going on under the hood…

Nummernschild 100 (Hundert) auf einem Grab | number 100 (hundred) in a graveyard

Looking back on 100 posts

17 minutes

This is the 101st post on my website. Humans are fascinated with milestones, especially when they line up with base 10 numerals. As a human myself, I enjoy these milestones, and it's not often I get a chance to do some meta content, so let's give in and see where…


Automatic builder discovery with BeautifulSoup

4 minutes

BeautifulSoup is a very popular HTML parsing library for Python. It's about as popular for HTML parsing as requests is for HTTP requests. BeautifulSoup allows you to provide some HTML markup as a string, and then interrogate and mutate it however you need. Whether to find specific tags, add new…


My First CVE

2 minutes

Today is a special day for me, professionally anyway. It's a day I get to tick a fun item off my bucket list, that I didn't think I'd get the chance to. Today, a CVE was released where I am the discoverer: CVE-2023-28837. I have my first CVE!What is a…


USB off-site backup

Today is world backup day, a day to highlight the importance of backups, protecting data, and keeping systems secure (at least that's what Wikipedia says). I'm taking this day as a chance to review my backup strategy, and make sure I'm happy with the coverage I'm getting. I mentioned a…

Cyber security image

You're doing two-factor authentication wrong

10 minutes

It was recently announced that Twitter was going to begin hiding two-factor authentication (2FA) behind a paywall, or at least that's what a lot of people saw. In reality, Twitter is only allowing subscribers to their new (ish) "Twitter Blue" subscription tier to use SMS-based 2FA. Everyone else will need…

YouTube on a phone

Casting YouTube videos from Linux

4 minutes

Over the past few months, I've been watching a lot more content on the TV, sat on the sofa, than at my desk like I used to. The bigger screen is much more enjoyable, not to mention it's a different seat to the one I work in 8 hours a…


State of the Apps 2023

It's that time of year again, time to steal some of Cortex's search rankings to talk about my own "State of the Apps" - the applications and setups I use to make my life what it is. Since my last post, and in fact in just the last few weeks,…

Singapore light design

Server Setup 2023

13 minutes

For a few years now, I've tried as hard as I can to run everything on servers I control, ideally servers I physically control. Partly in an attempt to regain my privacy, party because it's much more fun this way. Over the last year, things have stayed fairly stable hardware-wise…

Monument to Prometheus at front and the Macedonian Assembly in the background.

Monitoring Prometheus with Healthchecks

3 minutes

Prometheus is a crazy powerful metrics and monitoring tool. Prometheus not only lets you scrape and collect metrics from other tools like Traefik and HomeAssistant, but also thanks to Blackbox, monitor the availability of other sites. Prometheus' main loop involves scraping a number of "exporters" over HTTP, looking at the…


Server CPU Replacement

11 minutes

Power bills in the UK are starting to skyrocket, and the costs of self-hosting are going up as a result. The average persons bills are going up pretty fast, and I suspect they don't have a server in their cupboard on 24/7. For a while now, I've wanted to swap…

The focus

What's this? A new website?

Hello internet, it's been a while. I've been working on something for a while, and today's the day I get to finally release it! Yes, I redid my website - again! But, depending on how often you talk to me, I redid my website finally. This update has been a…