On December 4, 2024 at 14:48
Responded to @kasparsd:
Full changelog: https://github.com/WordPress/two-factor/releases/tag/0.10.0
Responded to @kasparsd:
Full changelog: https://github.com/WordPress/two-factor/releases/tag/0.10.0
Version 0.10.0 of the Two Factor plugin was released yesterday. It includes a bunch of improvements:
– The updated plugin header should make it easier to find when searching for 2fa, totp, etc.
– Improved accessibility and simplified UI of the user profile settings.
– Proper uninstall support that removes all plugin options and user meta values.
“Code that runs on the server can be fully costed. [..] Code that runs on the client, by contrast, is running on The Devil's Computer.” — an amazing article by Alex Russell on the complexities of front-end frameworks.

Due to posting mostly home automation and hardware content recently I've completely lost all traffic for WordPress keywords to my personal site 😅

Refactored the Update Pilot client plugin to have dedicated license key fields for each plugin even if they use the same UpdateURI hostname. Also added an update check button to help check if you actually need a key for that particular plugin.
Responded to @janboddez:
@janboddez Got it, thanks! Totally makes sense!
Responded to @kasparsd:
Here is the plugin that was last updated 9 years ago: https://wordpress.org/plugins/peters-blog-url-shortcodes/

I've been using Peter’s Blog URL Shortcodes in WP for links in post content to ensure they stay consistent with any permalink changes. Do you use anything similar? I would love to build something that works well with the block editor — adding these custom block "bits" whenever adding a link.
Responded to @janboddez:
@janboddez Is this going to impact your WP plugins?
Responded to @kasparsd:
Here are the customizations I applied to get it working like I want: https://kaspars.net/blog/seriously-simple-podcasting-setup
Surprised how quickly I could setup a completely new podcast on all the major distribution platforms (Spotify, Apple and YouTube) using WP with the Seriously Simple Podcasting plugin.
I recently had to use Meta apps and websites for managing ads on Facebook and Instagram. I can’t believe how bad the web and app experience is — terrible layout shifts, custom input controls that don’t support basic keyboard navigation, constant loading screens.
Responded to @vattuvarg:
@vattuvarg on the Mikrotik side you need to setup this https://help.mikrotik.com/docs/spaces/ROS/pages/26476608/Failover+WAN+Backup along with an LTE modem on a port. Consider the updated models like https://mikrotik.com/product/sxt_lte6_2023 with two SIM slots.
Responded to @oivaeskola:
@oivaeskola You’re absolutely correct! Missed it when refactoring the first example.

It’s always fascinating to see how different developers tackle the same coding problem. WordPress often prefers to "bail early" with early returns, but this can lead to inverse conditionals that I personally find harder to read. Which approach do you prefer? (see attached)
Here is the context: https://developer.wordpress.org/news/snippets/how-to-disable-heading-levels-in-the-editor/
I'm cross-posting content to all major social media platforms (via Buffer). Let's connect!
– Twitter: https://x.com/konstruktors
– Bluesky: https://bsky.app/profile/kaspars.net
– Threads: https://www.threads.net/@wpelevator
There is a beautiful blogging platform Bear. https://herman.bearblog.dev/building-software-to-last-forever/
Responded to @kasparsd:
Here is the issue: https://github.com/moby/moby/issues/25526
This week I learned that Docker Swarm has a major bug where it fails to forward the HTTP request IP to the containers. This leads to incorrect IP attribution in the logs and servers thinking the request came from an internal/private IP. No wonder there are so many attempts at creating something between Docker Compose and k8s.

I'm trying out the stale-while-revalidate approach with WP object cache — whenever the main cache entry expires, it attempts to serve a stale version and schedules an update on the shutdown hook after flush()-ing output. Almost like async PHP 😅