I walk through building a simple Firefox extension that adds a right-click menu option to open an image in a new tab with its query parameters stripped, useful when CDNs serve resized or converted versions instead of the original. I cover the manifest, permissions, and background script, plus how to test the extension via about:debugging and enable it in private windows, with brief notes on publishing to the Add-ons store...
In this tutorial, I build a user login and session management system from scratch in Node and Express, starting with a simple cookie-based session counter and progressively adding file-based persistence, user accounts, logout, and password authentication using bcrypt. I also cover input sanitisation, secure cookies, and enforcing HTTPS behind an NGINX proxy. The tutorial is aimed at readers with basic familiarity with Node and Express...
A short walkthrough of manually renewing SSL certificates before expiry: downloading the new certificates from PorkBun, concatenating the cert and intermediate files into a fullchain with a newline between them (avoiding an issue from the previous renewal), and restarting the nginx Docker container to pick them up. Uptime Kuma and ntfy notifications confirmed the swap, leaving 84 days until the next renewal — which I still intend to automate...
A learning exercise in DOM manipulation: I build a classic todo list web app where users add items via a text input and cross them off by clicking. I move from directly setting textDecoration to toggling a completed CSS class, separating behaviour from presentation, and also discuss element id naming conventions and the risks of hardcoded strings...