Skip to main content

Blog

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

Copyright, all rights reserved.

In this collection

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, 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 bullshit 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. I couldn't smell anything. It was as if the bag was empty. 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.

[I have added] Optional support for ImageMagick 6

Optional support for ImageMagick V6 is now available. This gives much better quality thumbnails than PHP's native GD2 library, but at the cost of some manual configuration. You need to:

  • Have ImageMagic installed on your webserver (most hosting companies provide this).
  • Access to PHP's exec() function must be enabled (it is often disabled by default through the disable_functions setting in php.ini).
  • Swap in an alternative ResizeImage.php trait file (provided).
  • Configure the file path to an sRGB.icc colour profile on your server (you can download one if necessary).
  • Clear the image cache (html/cache), which will cause thumbnails to be rebuilt.

You can adjust the level of compression and sharpening in the trait file method createThumbnailWithExec().

[I wish I could] Improve thumbnail quality with ImageMagick

Update 2: I got annoyed and added optional support for ImageMagick V6, some manual configuration is required.

Update: The PECL extension for ImageMagick is broken for PHP 8.3. It has been busted for over a year and nobody seems to give a damn, so this work is shelved until it gets fixed.

I've never been happy with thumbnails generated by PHP's native GD2 library, so I'm adding optional support for ImageMagick in the next release. If ImageMagick is installed, Tuskfish will use it by default, and if not, it will fall back to GD2. ImageMagick is widely available on most, if not all, commercial web hosts.

ImageMagick offers two benefits over GD2:

  • It generates much better quality thumbnails than PHP's native GD2 library. The thumbnails generated by GD2 are a bit fuzzy, and larger images can actually look pretty bad.
  • ImageMagick is aware of colour profiles and will preserve colour space information. GD2 is not only unaware of colour profiles, but actually discards them, which causes colour shifts in images that can render them drab and washed out.

To keep things simple, I will only be supporting the sRGB colour profile, which is the default for the web. You should already be converting your master images in sRGB before using them on websites anyway, because browsers generally will not be able to render other profiles correctly.

Fixed my AMD Ryzen 5000x series random reboots

My Ryzen 5950x became unstable and started throwing random reboots. No errors are reported, and Windows logs just shows a kernel power loss event. The distinguishing feature is that the reboots usually happen when the CPU is lightly loaded or idle, or a few seconds after leaving a heavy workload. The machine passes stress tests without an issue. The consensus seems to be that the CPU is undervolting a bit too far under light/idle workloads. So people are experimenting with many different BIOS settings to try and fix it.

TLDR: After trying every BIOS adjustment under the sun, installing a different OS, and rotating every component bar the motherboard with old spare parts, I was left with only one option: It had to be the motherboard. So I bought a new one, and yes, everything just works great now.

Complete guide to HTTP headers

I was going to write a guide to security-related HTTP headers, but it turns out that someone has already done it. So here you go, it's worth a read. I have locked down the out-of-the box Tuskfish headers a bit tighter. The content security policy header can break a lot of stuff (read 'any inline script or style sheet') and requires manual tweaking, depending on what you're doing.

Tuskfish 2.0.7 released

Tuskfish 2.0.7 is a minor update to fix small bugs and add htmx support. Back end toggling of content on/offline now uses a htmx call to avoid reloading the whole page. This makes management easier when you have a large amount of content. The htmx library is now available in /vendor, but it is only used in the back end administrative theme.

Tuskfish 2.0.6 released

Tuskfish 2.0.6 introduces automatic content expiry and sitemap update functionality, via a daily cron job script, updates third party libraries (jQuery 3.7.0, FontAwesome 6.4.0 and TinyMCE 6.4.2). A few bugs were fixed including custom RSS feed error if ID was empty, and indexing of soft 404 and enclosure links has been allowed.

Heroku throws students, non-profits and other freeloaders under the bus

In a blog post annoying titled Heroku's Next Chapter, Heroku's General Manager has announced they will discontinue their free plans. On 28 November they will reduce free resources to zero and start deleting hobby-dev databases. Yep, they are going to bin your data with no warning other than an email, to "manage fraud and abuse". The good news is that you don't need them. Get your virtual machines from a cloud provider and containerise your apps with Docker instead. You'll never look back.

Excellent free stock photos - unsplash.com

No longer recommended. Trying to find truly free stock photos has always been painful. Usually, the available 'free' resources come with unwieldly terms such as the requirement to publicly attribute the source or acknowledge the author. Now I fully support the Creative Commons licenses for literary works, but you just can't plaster attributions across the artwork for a brochure, website banner or logo. It's not an appropriate model. Recently I stumbled upon unsplash.com, a stock photo site that is actually free, has a remarkably permissive license, and is also excellent.

User management system

A user management system is available as of Tuskfish v2.0.4, which allows trusted users to be enrolled as Editors who can create and edit content. The user management system is only accessible to the site Administrator, who is the gatekeeper for whom is allowed editorial privileges. Editors do not have access to the site preferences, but it is still a very sensitive role.

Tuskfish CMS mapping demo: Batemans Bay to Canberra GPS track

A demonstration of Tuskfish's mapping capabilities. This track was recorded on my Garmin Forerunner 245 watch, as I drove back from Batemans Bay on the south coast to Canberra. The map is automatically generated from an exported .kml file of the track, which Google Maps can put bounds around. The tracks are downloadable so others can use them on their own devices if they wish. You can also prepare maps in Google Earth or Google Maps itself.

Tuskfish v2.0.3 released

Tuskfish 2.0.3 brings compatibility with PHP 8.1, so if you want to wring the last few milliseconds of performance out of your site, use this version. New features include support for embedding Youtube videos, a sitemap generation facility, a 'minimum views' preference before displaying the views counter, and a live character counter for the meta description field. Third party libraries have also been updated, including adoption of Bootstrap 5.1.