Skip to main content

Blog

Miscellaneous articles relating to the use and development of Tuskfish CMS.

Copyright, all rights reserved.

In this collection

Review: S2Pi Aluminum NAS case with Ice Tower cooler

TLDR: Recommended for Raspberry Pi 4b. Excellent construction but fan is noisy at high loads; can mitigate with an improved fan control script (provided). The S2Pi Aluminum NAS case provides a rugged housing for the Raspberry Pi 4b with M.2 SSD storage and an Ice Tower heat sink for strong cooling performance. It's an excellent package for upgrading your Pi to a lightweight server.

I have developed an improved fan speed control script that turns the fan off when not needed, and ramps with CPU temperature. Available for download within.

Testing Starlink internet from a Qatar Airways flight

Well, it works great. Very cool. And free, yay!

Raspberry Pi 5 + PCIe SSD: A Legitimate Server Platform

Pi 5 with 16 GB RAM, 1 TB Samsung 990 Pro M.2 SSD, and Geekworm P580 PCIe case.
Pi 5 with 16 GB RAM, 1 TB Samsung 990 Pro M.2 SSD, and Geekworm P580 PCIe case.

I recently got dunked on for saying the Raspberry Pi 5 makes a great home lab server if you equip it with an SSD drive. And I don't really blame the guy, because until the Pi 4b, they were pretty awful, and for the 3B and below you were stuck with running the OS from a microSD card. His mental model was probably stuck somewhere around there.

The Pi 5 is a huge level up in performance, especially once you add SSD storage via its PCIe slot.

Tuskfish 2.2.7 released

A minor patch to fix a bug in collection pagination.

Tuskfish 2.2.6 released

A minor maintenance release to harden the WebAuthn service class.

Tuskfish 2.2.5 released

A minor patch:

Tighten access-control-origin header, close open redirects, improve validation and add resource limits to JS.

Tuskfish 2.2.4 released: FIDO2 / WebAuthn login

Tuskfish CMS now supports login with Windows Hello, Touch ID, Face ID, iOS and Android devices, and hardware security keys like the Yubikey. This is implemented as a second factor after password check for two-factor authentication (2FA) login security.

Users can register and revoke their 2FA credentials by visiting Preferences => Two-Factor Authentication in the Admin panel. Registration of a credential only takes a few seconds. Once a credential is registered, two-factor login becomes mandatory, so it is a good idea to register more than one device to avoid lock out. Users can revert to simple password login by revoking all their 2FA credentials.

Technically this is an implementation of the FIDO 2 / WebAuthn standards. Users register passkeys from platform authenticators (Hello, Touch ID etc) or hardware security keys (CTAP2 authenticators). Credentials are public-key based and origin-bound; no shared secrets are stored.

Tuskfish 2.2.3 released

Minor bugfixes:

Reverted cache writes to avoid use of remove(), as this function is normally disabled in php.ini; tidied cached file names (prevent param separator being used on first param); fixed bug in gallery logic that prevented dynamic changes in columns to suit display width.

Tuskfish 2.2.2 released

Minor cosmetic improvements and bugfixes: Changed radio button controls to coloured toggle switches; removed deprecated / redundant curl_close() calls; corrected some type initialisation and return values errors; and fixed bug making custom RSS feeds carry generic site title/description.

PSA: If you're frustrated with ChatGPT's lies, try the command line version

TLDR: Recently ChatGPT just started wildly lying, inventing rubbish and disregarding my instructions. The root cause seems to be that OpenAI has instructed it to reduce use of the search tool (you can see references to this in the chain of thought). I imagine this is to conserve resources, but without some factual context to go on ChatGPT hallucinates like hell.

But there is a better way: Use the command line version of your preferred AI tool. Watch NetworkChuck's video for details! These are available for Gemini (free), ChatGPT and Claude (both of which require a standard subscription). Why is it better? You can force the AI to remember rules and context for any given project, agent workflow, or output style, making it much more reliable.

Firewalla WIFI SD dongle works on Raspberry Pi

According to the marketing materials, the proprietary Firewalla WIFI-SD USB dongle/antenna only works with their (excellent) hardware firewalls. But I needed an external WIFI antenna for a Raspberry Pi, so I inserted it into a USB port to see if it would work, and yeah it does. The downside is that the Pi only seems to have drivers to use it on the 2.4 GHz band, while the antenna is supposed to be a WIFI 5 device.

It is apparently based on the dual-band RTL8821CU chipset (802.11ac). Probably you could get it working on 5 Ghz if you were prepared to tinker with drivers but I'm told this chipset is notoriously difficult to work with, and kernel updates would probably keep breaking it, so I'll pass. Anyway, if you login to a Firewalla box via SSH the default username is 'pi', so you can probably guess why this works.

Tuskfish 2.2.1 released

Tuskfish V2.2 brings a lot of improvements, including a group permissions system to control access to routes and individual content items, fourteen new colourful themes, and a new default theme preference for flipping the look and fee. of your site. All content types can now be set as 'static' with a new 'in feed' toggle switch, there is optional support for better thumbnail generation and colour space support with ImageMagick 6 available. The entire codebase has been reviewed with AI assistance for bugs, security issues, and compliance with PHP 8.4/8.5, Bootstrap 5 and HTML5. Core libraries have been updated. Note: I pushed a minor bugfix update so the current version is 2.2.1.

Moving on from FontAwesome: IcoMoon

I like FontAwesome (I'm a backer), but I'm so over subscription services, there's only so much many times I want to pay for the same icon collection, you know? I'm also annoyed that they withdraw access to the subsetter app once your subscription expires. That's miserable, given that subsetting the icons is mandatory to control file size, as the full icon library is too large to use.

IcoMoon has a free online tool that lets you convert icon collections into a custom font. You upload your icon SVGs, select the ones you want to use, and export them back out as a font, which is trivial to incorporate into your project. The files are much smaller, and do not require any Javascript. I will probably remove the FontAwesome script from Tuskfish and re-implement the icons as a font. This will also allow other icon sets to be integrated, as you aren't limited to the FontAwesome set.

Practical review: Garmin Forerunner 965 - worth an upgrade?

I upgraded to the Forerunner 965 from a 945. After using the 965 for a couple of weeks I would say there are two significant improvements, neither of which is a 'must have':

  1. The new AMOLED display of the 965 is a lot better. It is very bright and clear compared to the previous MIP displays found on previous generation watches, including the 945. It also has  a much higher resolution (454x454 pixels vs 240x240). On dynamic apps like the compass it really does look great.
  2. Touchscreen functionality. You can swipe to navigate through screens and select items, and on maps you can pan around and zoom with your fingers, which makes the limited screen far more useable for navigation. On previous gen watches like the 945 you have to use buttons for everything, which is slow and clumsy at least as far as maps go.

So: Is it worth the upgrade? If you use the mapping applications a lot then I would say yes. Being able to pan with your finger is a game changer.  Otherwise, the functionality is very similar to the 945. There are a few more apps but nothing that you are likely to miss.

More Tuskfish development

I keep thinking there is nothing left to do...then I think of something. So here's the latest developments:

  • Fourteen new colourful themes from Bootswatch!
  • New 'default theme' preference for fast site-wide changes!
  • Any content type can now be designated as static.

Release will follow an appropriate period of testing.

Tuskfish development update

I've nearly finished the native multi-lingual branch of Tuskfish. It turned out to be much more complex than I thought, touching nearly every operation. Extensive review and testing will be necessary, as it is quite a large divergence. I found myself wondering if I really want to rebase future Tuskfish development on the multilang branch or not, and the answer seems to be that I need to think about it. Maybe I'll keep it as a parallel project that I wheel out when needed, for a while. We'll see.

I will add a couple more block options for V2.1 to enable placement of a feature video block, and maybe a feature audio block as well.

I will also add a few attractive open-source themes. I always thought that everyone would want to use their own custom theme, but turns out no, most people just want something they can use out of the box. The default bootstrap starter theme is a bit grim (black and white), so I'll add a couple of nice themes you can tweak without having to replace them. Shout out to Bootswatch and Start Bootstrap for offering open source themes, thank you!

PSA: Controlling Crohn's disease with a keto / carnivore diet

If you don't have Crohn's disease you can skip this article, it's not relevant to you. 

TLDR: Ketogenic diets turn out to have real and substantial anti-inflammatory properties. If you have an inflammatory condition you might consider trying it.

How to avoid the Microsoft 365 Family price increase

If you have a Microsoft 365 Family subscription, you probably got an email notifiying you of a 30% price increase. This is a con and you don't have to pay it. The truth is, you are being silently upgraded to a higher subscription tier with the same name. The new tier includes Copilot AI integration, and that's what you are being charged for on the sly. To avoid the price increase, you can opt out of Copilot integration. Instructions inside.

The COVID smell test

I thought I had the flu. But on day 5 I opened a fresh bag of coffee beans and stuck my nose in which is normally an "invigorating" experience. It was like the bag was empty. I couldn't smell anything. After a few moments wondering what the hell was wrong with my coffee, I did a RAT test and found a very, very faint positive.

I started wondering if it knocks out your smell completely, or if it's somehow selective, and could this be used as some kind of proxy diagnostic tool? Anyway, after going through the kitchen draw, this is what I can and can't smell...

Tuskfish development update: Towards V2.1

I was tempted to call this the "2025 update" but since I usually take leave in December and spend most of it tinkering, quite likely I'll do some of this before new year or at least by the end of January. The next Tuskfish CMS release will be version 2.1. Core functionality will remain unchanged, but I will add support for blocks, and if I can sort out a couple of issues, native multilanguage. Not a crappy hacked up multilanguage, but one that is baked into the core and seamless. I'll be making use of some of the more recent language features in PHP, which will raise the minimum version required to PHP 8.3. Please note that the contemporary versions of PHP are now V8.3 and V8.4, with V8.2 now end of life.