Latest Posts (15 found)

Goodbye Disqus - Your injected ads are horrible

IntroThis will be a short and sweet post. I’m not big on goodbyes. Disqus started showing ads for their “free” tier comments system a few years back. At the time, the communication they sent out via email, seemed quite laid-back and had the tone of “don’t worry about it, it’s not a big thing”. Which in part lead me to almost forget it happened. At the time, the disqus comments system looked quite smart and sleek.

0 views

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

IntroI’ve been searching for a secure and efficient Node in Docker setup for a little while now. And I think I’ve found it! A couple of years ago, I’d install the latest LTS version of Node/npm on my Windows machine and be done with it. In my day job, I could be working on one of 4 different front end projects, and have my own front end projects I’d work on in my spare time.

0 views
ryansouthgate.com 1 months ago

ZSA Moonlander - A keyboard review

IntroIn Jan 2024, I’d had enough. Upon finishing a day of coding my wrists would start to ache and I’d feel a tightness in my ribs, shoulders and upper back. I’d recently turned 35 and my body isn’t as adaptable as it was 10 years ago. Where I could sit on a cheap office chair and use the computer for hours on end, and feel no ill effects. Time has moved on and my body is not as accomodating as it once was.

0 views
ryansouthgate.com 7 months ago

Cronjob vs systemd timers - how to create a systemd timer

IntroI’ve been using cronjobs for a long time. More recently I’ve been testing systemd-timers as they allow dependency management, so I don’t have to check (in the script I’m running) to see if certain services are up/running before my scripts can do their work. In this post I’m going to demonstrate how to create a simple systemd timer service which runs a script on a schedule A quick comparison with CronI’m all for learning to use new tools.

0 views
ryansouthgate.com 7 months ago

Custom C# JSON Deserialisation for Object property Types

IntroductionRecently I’ve had to work with a data model in C# that the team I’m on doesn’t own. We are using System.Text.Json for our Serialisation/Deserialisation needs. The Data model we are using has multiple classes with a object properties, and it’s difficult to work with. Using System.Text.Json we could customise the conversion for all properties where the type is object, but that is too far-reaching and might cause an unwanted impact on other classes/objects in the heirarchy which you don’t want to touch.

0 views
ryansouthgate.com 11 months ago

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

Today on my Linux Mint install (21.2) I got the error cups-pki-invalid when trying to print a document. In this short blog post, we’re going to fix it, without having to remove/re-install printers. A quick Google search shows that this is likely due to an expired certificate, but we knew that anyway with “pki” in the error code, didn’t we? Why this certificate doesn’t re-gen (or have a longer expiry) is unknown to me, but it is what it is, and we’ll fix the error.

0 views

2024 - My year of the Linux desktop

I’ve been a Windows user since first using a mouse. Windows 10 will be the last version of Windows I’ll daily drive, and here’s why… IntroductionMy first operating system was Windows 3.1 - when my uncle gave us a computer he no longer needed. From that point on, he helped me keep up to date with the latest versions of Windows (with hardware upgrades to match). Over the years, Windows has been a constant in my life, I’ve used pretty much every desktop version of Windows, and most Windows Server OS too.

0 views

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

This is a short and sweet post about creating Nemo Actions in Linux Mint. Since moving from Windows 10 and daily-driving Linux Mint. There’s been few things I’ve missed. However, one small feature of the Windows file explorer I’ve been missing has been the “Copy Full Path” when you select a file, hold shift and right click. This small feature copies the full path of the file to your clipboard. And I’ve just come to realise how much I miss it.

0 views

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

In this post I’m going to demonstrate how I use F# to retrieve data from a website (HTML), parse and expose it to Home Assistant which allows me to receive weekly notifictions on when to take my bins out for collection by my council. This isn’t going to be a waste of time! (expect more bin puns) The ProblemI’ve not got the best memory… Every week (on a Thursday) my local council (Coventry City Council) empty our (and our street’s) bins into a refuse truck.

0 views

Public Key Encryption with the JavaScript Web Crypto API

In this post I’m going to show you how to implement Public Key Encryption in the browser with standardised APIs in JavaScript. These APIs have been implemented by the browser, so there is no need to reference and use any other JavaScript libraries. Browsers standardising on APIs and being made available to developers means we’re able to use battle-tested, trusted encryption code. And let’s be honest, we wouldn’t want to write that ourselves, would we?

0 views

Ridiculously cheap offsite backups using rclone and AWS S3 Glacier

In this post I’m going to show you how to achieve massive savings for data backup. With a small amount of setup effort (and scripting), you can get tons of storage space, to use as an off-site backup, for a very very reasonable price. Having built my own NAS (Network Attached Storage) device a couple of years ago, and storing more and more files on it (along with tons of media), it’s never been a better time to ensure that important files (documents, photos, music, videos etc) are backed up offsite.

0 views

Reclaiming disk space for the dotnet developer

This is a short and sweet post, reminding myself (and you too) of a few ways to reclaim Drive space on your development machine. As a dotnet developer, we have to install a few tools and SDKs. Packages we use (through NuGet or Packet) are downloaded/cached locally and don’t get cleaned up. Below are a few steps which help reclaim some of that space. Most of these are windows-centric, however some can also be used on Linux machines too.

0 views

ASP.NET Core CORS Wildcard Subdomains

This post will demonstrate how to setup wildcard subdomains for your CORS config in ASP.NET Core The SituationRecently, a company I work for has been exploring the idea of starting a SaaS business model. Without going too far into the details on this, essentially they are offering a Platform for their users (with their own branding/subdomain). The backend is written in ASP.NET Core. There’s lots of Terraform which sets up the environments/services in AWS etc.

0 views

Visual Studio - Http Files

IntroWant to run a GET/POST/PUT request from inside Visual Studio 2022? Now you can, using .http files. These are very simple text files with the extension .http. They allow you to declaratively build a HTTP request which can be executed by the IDE. It’s really simple…create a new file in your Solution/Project, for example endpoints-to-test.http and paste the following code: ### Do a GET on my homepage GET https://ryansouthgate.com Your IDE should look like this:

0 views

Optimising Images for the Web

IntroI’ve recently moved my blog from Ghost to Hugo. Previously, I was using the hosted version of Ghost, where they manage everything for you and collect a tidy sum for the trouble. You can read more about the reasons for my switch here. Now I’m self hosting this blog on a laptop in my house, I’m more concerned about bandwidth and traffic. I don’t have the fastest internet connection in the world (I’m not yet on Fibre).

0 views