After a quick little chat with Kev Quirk, in the comments on one of his posts, I’ve decided to enable comments on my site for the first time in many many years. I think it’s been 18 years!
I’ve set comments to auto-close 2 weeks after a post is published, and as such, only this post and my post from yesterday will have comments enabled for the moment.
When I merged all my old sites back into this one, I was struck by how many comments I’d had over time, and remembered how nice it was to be able to have that brief interaction about something specific, with some very nice people. I miss that.
I’ve had a website of some form or another since 1998, but my oldest still available site dates back to February 2002. As I write this, that’s over 24 years ago.
I merged the content from my three archived personal sites into this current incarnation over some evenings this past week, and a chunk of time over the rainy weekend.
This site has now swelled from 20 posts and 3 pages, to 337 posts, 10 pages, and 289 comments!
Basically I’ve changed my mind about reinventing the site every now and then, where I’d effectively do a nuke and pave and archive the old site off to a sub-domain. I now feel that having all my old stuff together in my personal site is more valuable, and tells the story of my online presence.
And of course, I used WP Migrate a ton during this project, not only for pushing and pulling between my local machines and my WP Engine hosted dev, staging and prod environments, but also for backups at various stages, and the occasional find and replace.
I’ve still got a bunch of cleanup to do, I’m pretty sure a load of posts need images relinked from when I switched to using the text only Gemini protocol, and there’s many many broken links to deal with. I also want to flesh out and better organise the archive of all my projects, but I can deal with that bit by bit as time permits.
It just feels nice to have all my stuff in one place again.
In this session I switch to using more conventional names for the app’s Lustre Msg types, which turns out awesome as it helps me see where I was going wrong, could remove some messages, and simplify the update function!
It’s only my 251st full Always Developing video, there’s been a handful of quick catchup “.1” videos, and my very first video was nothing related to coding.
However, I still think it’s pretty neat to have hit this milestone.
I’ve just published the first video in a new series of live coding sessions where I’m developing with Gleam and Lustre to build the front end for a desktop app built with Go and Wails.
The first video is a bit of test of my recording setup where I walk through a minimal test of connecting Gleam to the Go based Wails back end via its generated JavaScript functions that always return a Promise, and are therefore a little tricky to handle in Gleam. It was quite a relief to come up with a fairly simple mechanism for calling the JavaScript functions through Gleam’s excellent “Externals” Foreign Function Interface (FFI) and end up with a usable Lustre Effect.
During the “Gleaming Wails” Always Developing series I’ll be replacing the Snippet Expander desktop app’s Svelte based UI with a Gleam based one, continuing my quest to learn Gleam, which I very much enjoy working with, but unfortunately don’t get to do full time.
As it’s a chunky piece of work that I’m signing up for, hopefully this project will help me get more familiar with the Gleam language and Lustre framework, and help hone my functional programming skills in general. Even though I’ve been programming for well over 40 years now, and getting paid for it for nearly 30, I’ve mostly been working with Object Orientated style languages, and so functional programming doesn’t come easily.
With luck, along the way some people will learn a thing or two from my fumblings, or get excited about having a go at programming with Gleam.
You can follow along while I code (mostly) in Gleam on my YouTube channel.
Wow, I just created a new config for builds.sr.ht that worked first time!
That never happens, who ever creates a CI/CD config that runs without error when first submitted?!
Admittedly, not the most complicated of configs, but I suspect using Gleam and FreeBSD helped due to their simplicity and well thought out straight forward usage patterns.
I’ve just released v1.1.1 of Snippet Expander, “Your little expandable text snippets helper, for Linux”.
It’s just a small bug fix release to make setting the shortcut for opening the Search & Paste window a little less confusing, particularly on KDE Plasma.
Changelog:
* Ensure custom shortcut setting only shown in UI if using GNOME(ish) desktop
* Add default Ctrl+` Search & Paste window shortcut to KDE Settings app
I’ll give a little more detail in the next few sections, but first, here’s the changelog:
* Added search of schedules and events.
* Added display of event hook with args when mouse hovers over event name.
* Auto refresh setting is now saved for each user.
And shortly after v1.6.1 was released, WP Cron Pixie v1.6.1 was released too, with the following one line changelog:
* Example events setting is now saved for each subsite in a multisite install.
Search schedules & events
It’s now possible to search your site’s cron schedules and events, very helpful on a site with lots of events and custom schedules.
The search box can be found below the list of schedules and events.
If you enter some text into the search box that matches part of one or more schedule’s name, the list of schedules will be filtered to those schedules and their events.
In a similar way, if you enter search text that matches on part of a cron event’s name, it will be shown along with its schedule, but other events in the same schedule that do not match the search query will not be shown.
Display event hook’s arguments
When you search for something that happens to occur in a cron event’s hook arguments, the corresponding event is shown. That would be quite confusing unless you could see what the event’s hook arguments are, so now when you hover your mouse cursor over an event’s name, it shows the hook with it’s arguments.
Per-user auto refresh setting
While developing the search functionality detailed above, which also saves the last entered search text so it is restored when you return to the admin dashboard, I realised WP Cron Pixie wasn’t saving its settings at quite the right level.
Before WP Cron Pixie v1.6.0, all settings were saved at the site level, or on a multisite, at the network level.
Now, the Auto Refresh setting is saved per user as each user may have a different preference as to whether they want the cron schedules to automatically refresh or not.
The Example Events setting remains at the site level as when enabled it creates cron events for the entire site and is unable to be scoped to just a single user. However, while writing this very blog post I realised that the plugin was saving the Example Events setting at the network level for a multisite install, which makes no sense as WP-Cron runs in subsites, not at the network level. Hence how WP Cron Pixie v1.6.1 came into being, ensuring that the plugin can create its example events on any multisite subsite it is used on.