Cache-busting CSS and Javascript with Python
A practical guide to solving browser cache issues for static assets using a Python-based approach, with code you can drop into your deployment and templates.
A practical guide to solving browser cache issues for static assets using a Python-based approach, with code you can drop into your deployment and templates.
PostgreSQL spawns a new process for every client connection, which becomes expensive under load. Learn how to install and configure PgBouncer to pool connections and keep your database performing well at scale.
A practical, phased runbook for migrating PostgreSQL from an old primary/replica pair to a new primary/replica pair using logical replication for the major-version move and streaming replication for steady-state high availability.
When multiple feature branches depend on the same code, your branch strategy can either keep development moving or create merge chaos. This guide covers two practical approaches: daisy-chained branches and sibling branches from a shared base.
A comprehensive guide to deploying a Next.js application on a production server using Nginx as a reverse proxy and PM2 for process management and zero-downtime deployments.
From early home computers to modern Linux servers, the terminal has been a constant companion through four decades of change.
Learn how to use systemd timers to schedule recurring system jobs. Systemd timers provide better logging, prevent overlapping jobs, and integrate seamlessly with the rest of your infrastructure.
Learn how to manually create and install Let's Encrypt SSL certificates using DNS or HTTP validation when automated renewal isn't an option.
Learn how to configure an SSH jump server to add an extra layer of security to your production infrastructure by routing all SSH connections through a single hardened proxy.
When a PostgreSQL query gets stuck or runs too long, it can consume database connections and cause your application to become unresponsive. Learn how to identify and terminate these queries before they bring down your system.
Learn how to configure the VSCode SFTP extension to automatically sync your local files to a remote server whenever you save, making remote development as seamless as working locally.
top, htop, and btop all show you what a Linux system is doing, but they are not equally useful in every situation. Here is when to use each one and why top still belongs in your toolkit.
Learn why keeping DNS records current is necessary to prevent attackers from taking over a subdomain.
Trying to register for the SAT but there’s no availability? Here’s how to find a seat using Python.
If you send email from a Postfix mail server, configuring OpenDKIM is necessary to authenticate your domain. Without it, email providers like Gmail and Yahoo will junk or reject your emails. Here’s how to set it up.
It is the responsibility of web developers to understand how their code is impacting the server environment. Here are a few essential commands to gauage your impact.
This tutorial covers the bare minimum configuration and hardening you should apply to any new Ubuntu server.
To help understand how DMARC compliance works, and why SPF and/or DKIM alignment is necessary, I find that a postal service analogy works best.
A tutorial on how to configure Postfix mail server to receive messages addressed to any recipient and subdomain.
This tutorial shows you how to configure Apache to run as a Subversion server on the Ubuntu Linux operating system.