Articles
Building a Python random IP address generator for testingSoftware developers regularly need synthetic IP addresses when building network-aware applications. Whether the goal is stress-testing a firewall, validating a…
Exporting DenyHosts Data With Python's csv Module for Deeper AnalysisI built DenyHosts years ago to keep brute-force SSH attacks from hammering my servers, and the project has grown into something I still actively maintain.…
Crafting a Python Module for Apache Combined Log FormatAustralia's web infrastructure keeps humming along in data centres stretching from Perth to Brisbane, and somewhere in nearly every one of those facilities an…
Automating SSL Certificate Expiry Checks Across Multiple Hosts with PythonExpired TLS certificates remain one of the most common causes of preventable outages, and Australian businesses running e-commerce platforms or government…
Building a python circular buffer for in-memory log rollingSoftware that runs continuously eventually fills its disk with log lines. For services deployed across Australian data centres in Sydney, Melbourne, and…
Building a Cron-Style Task Scheduler in PythonOff-the-shelf cron daemons have powered Unix systems for decades, yet developers occasionally need finer control over scheduled jobs than the system scheduler…
Crafting a python debugger plugin for regex highlighting in log filesLog files are the silent storytellers of every server, and anyone who has stared at gigabytes of Apache access records knows how easily meaningful patterns…
How I Created a Python Script to Batch-Resize Images with PillowResizing a folder of images by hand is manageable until a project produces hundreds of files. Product photographs, screenshots, scanned documents and web…
Building a Python-based configurable log file watcher with callbacksModern deployments produce a steady stream of log files that need to be watched, parsed, and acted upon. From a small web app on a Linode in Sydney to a fleet…
Running shell commands with Python's subprocess modulePython developers frequently need to bridge the gap between their code and the operating system. The subprocess module remains the standard tool for spawning…
