ryansouthgate.com

A blog about technology & software development, by Ryan Southgate

merge-pdf.app - A free, privacy-first PDF Merging tool

Creating a free, privacy-first PDF Merging tool. How I built a privacy-first PDF merger using Vue 3 and pdf-lib that processes everything locally in your browser - keeping your data right where it belongs.

Goodbye Disqus - Your injected ads are horrible

Disqus turned my clean blog into an ad-riddled mess. Here’s why I pulled the plug—for your privacy and reading sanity

A secure & efficient Node/npm in Docker setup for frontend development

npm package vulnerabilities are increasing, and the bad guys want your data. Here is an Node in Docker setup for frontend development. Keeping you productive and your files safe

ZSA Moonlander - A keyboard review

A review of the ZSA Moonlander, 1 year after purchase

Cronjob vs systemd timers - how to create a systemd timer

cronjobs have a new contender. In this post I create a new simple systemd timer and compare with cronjobs

Custom C# JSON Deserialisation for Object property Types

Dealing with Object property types on C# models, with System.Text.Json, is hard. But it doesn't have to be, in this post we'll enable custom deserialisation for specific properties

Fixing 'cups-pki-invalid' printing error in Linux Mint/Ubuntu

Removing and generating an expired SSL Certificate for cups

2024 - My year of the Linux desktop

Upgrading from Windows to Linux Mint and becoming more productive in the process

Creating Right-Click (Context Menu) actions in Linux Mint - Nemo

How to create right-click (context menu) actions in Linux Mint - Nemo

F# and Home Assistant helping take the bins out on time

Combining F# and Home Assistant, with native mobile notifiactions to take the bins out