Subfolders
Latest "Articles" Articles
Workshop » Works In Progress » Code & Algo Works In Progress
Draggable Elements WordPress Plugin

Nothin' But A Drag: Draggable Elements WordPress Plugin

First, the demo

This is a brief demo page for my KupieTools Draggable Elements WordPress plugin, which dynamically adds interactive draggability to any page element, based on CSS class names (or, really, any CSS selector).

Here's some boxes:

Drag Me Horizontally Drag Me Vertically Drag Me Anywhere Drag Me To Corners

If you select "View Page Source" on this page in your browser, you will see that the above four DIV elements, as defined in the page HTML, are just ordinary DIV elements with a single classname, an ID, and some visual styling. The KupieTools Draggable Elements plugin adds draggability to any arbitrary page element, by simply specifying a class name or other CSS selector for it in the plugin. (If you use your browser's Inspector instead of View Page Source, you'll see the current state of those elements, with any changes or additions the plugin created…

Workshop » Reference Section » Grimoires » IT » Applications » Web Browsers » Addons

Filtering LinkedIn Posts, Notifications, and Comments by keyword

I use the uBlock Origin browser plugin to filter my LinkedIn Posts, Notifications, and Comments to hide anything containing objectionable topics. uBlock Origin allows you to add custom rules to block web content.

How to use and setup uBlock Origin is beyond the scope of this post. It's not hard, figure it out and then come back. What you want to know how to do is add your own custom rules.

Let's say, for purposes of these example, I want to block all mentions of someone named Grump.

The simplest version: block a single word

The following three rules hide Posts, Comments, and Notifications, respectively, that contain the word "grump", whether as a separate word, or as part of other words, such as "grumpier".

Posts: www.linkedin.com##div:has( > .ember-view.occludable-update:has(div.fie-impression-container:has-text(/grump/i)))
Comments: www.linkedin.com##.comments-replies-list > .comments-thread-entity > .comments-thread-item > .comments-comment-entity--reply.comments-comment-entity:has-text(/grump/i)
Notifications: www.linkedin.com##div[data-finite-scroll-hotkey-item]:has-text(/grump/i)

That's the basics. But…

Visual Art » Generative Illustrations » Requests & Contest Submissions
#SaturdayMonsterChallenge—”Rising Monsters”

By the time I get there, she'll be rising: #SaturdayMonsterChallenge—”Rising Monsters”

The Saturday Monster Challenge on LinkedIn for June 21 2025 was "Eternal Rise Monsters". I took the theme and decided to do Phoenixes (Phoenices? Phoenixen?), as in "rising from the ashes."

Workshop » Reference Section » Grimoires » IT » Troubleshooting log » WordPress

Deactivating, deleting, and completely removing a plugin that WordPress won’t let you deactivate

I installed the WordPress plugin LWS Optimize, which turned out to be unusably broken (which is the reason I'm not linking to it) and made my site unusable. To make matters worse, when I tried to deactivate it, it told me it deactivated... and was still active. I went in through FTP and deleted the plugin folder entirely, and then WordPress said it had been deactivated because it couldn't be found... and it still showed as present and activated in the plugin list.

So I added this to my theme's functions.php file:

add_action('admin_init', function() {
$active_plugins = get_option('active_plugins');
$plugin_to_remove = 'lws-optimize/lws-optimize.php';

if (($key = array_search($plugin_to_remove, $active_plugins)) !== false) {
unset($active_plugins[$key]);
update_option('active_plugins', array_values($active_plugins));
}
});

I then reloaded an admin page and removed that. That deactivated the plugin in the plugins list, but then when I hit the "delete" link, it said it…

Workshop » Reference Section » Grimoires » IT » Troubleshooting log

Website returns 503 server errors, but no errors in logs

Had a weird one today. Last one website of the several of on this server suddenly started returning 503 (service unavailable) errors. There was nothing in the PHP error log or Apache error log. All server configs are already thoroughly optimized for performance. Other websites on the same server were functioning normally.

I didn't notice this at the time, but my uptime monitor didn't report an outage. When I used redirect-checker.com to check the status code, it returned 200, which should have been a clue, also.

Next time, before doing all sorts of arcane troubleshooting:
1. Try with a different browser
2. Is there a CDN? Try bypassing it.
3. Are you using a VPN? Try selecting a different endpoint (VPN server) if it will let you, or turning it off.

I use the NordVPN plugin in Firefox, and quic.cloud is my…

Workshop » Reference Section » Grimoires » IT » Applications » FileMaker Pro

Get names of all input fields in a FileMaker Pro table

ExecuteSQL ( "SELECT FieldName FROM FileMaker_Fields WHERE TableName='[TABLE NAME]' AND FieldClass='Normal'",",","¶")

Workshop » Reference Section » Grimoires » IT » Platforms » Linux » Packages » PHP

How to monitor RAM for tuning pm.max_children

How to monitor RAM usage:

  1. free -h:

    • This command shows your system's total, used, and free memory in a human-readable format.
    • Key metrics:
      • total: Total RAM.
      • used: RAM currently in use.
      • free: Unused RAM.
      • buff/cache: RAM used for file system buffers and page cache. This is good; Linux uses free RAM for this and frees it when applications need it.
      • available: The most important metric. This estimates how much memory is available for starting new applications without swapping.
    • Run it before and after: Run free -h before you increase max_children and then after your server has been running for a while under typical load with the new settings. Compare the available memory.
  2. htop (recommended if installed):

    • htop (you might need to sudo…
Workshop » Reference Section » Grimoires » IT » Platforms » Linux » Packages » cron

Add sar logging for CPU, RAM, and disk I/O

Add or change /etc/cron.d/sysstat to this. This creates a cron jobe to write file /tmp/outage_resource_log.txt that keeps minute-by-minute stats, sometimes useful in troubleshooting slowdowns. However, it's not a great way to do things, it create a small, constant resource drag, so disable it when done troubleshooting.

# The first element of the path is a directory where the debian-sa1
# script is located
PATH=/usr/lib/sysstat:/usr/sbin:/usr/sbin:/usr/bin:/sbin:/bin

# Activity reports every 10 minutes everyday
#ORIGINAL DEFAULT WAS 5-55/10 * * * * root command -v debian-sa1 > /dev/null && debian-sa1 1 1
#uncomment above line and comment out /tmp/outage_resource_log.txt lines to restore original functionality
* * * * * root date +"%Y-%m-%d %H:%M:%S" >> /tmp/outage_resource_log.txt
* * * * * root sar -u 1 1 >> /tmp/outage_resource_log.txt 2>&1
* * * * * root sar -r 1 1 >> /tmp/outage_resource_log.txt 2>&1
* * *…

Workshop » Reference Section » Grimoires » IT » Platforms » Linux » Packages » Apache

Add /fpm-status page to Apache virtual host

Add this to virtual host file in /etc/apache2/sites-available/, right below DocumentRoot, in both :80 and :443 sections



SetHandler "proxy:unix:/var/php-fpm/170027027353667.sock|fcgi://127.0.0.1"
Require all granted

May need in /etc/php/8.2/fpm/pool.d/www.conf, not sure:
pm.status_path = /fpm-status

May need at very start of .htaccess to prevent wordpress from intercepting the URL, not sure:
RewriteRule ^fpm-status$ - [L]

Workshop » Reference Section » Grimoires » IT » Platforms » Linux » Packages » Apache

View last 200 lines of all access logs on apache server

find [path/to/access/logs/folder] -name "*_access_log" -exec sh -c 'tail -200 "$1" | grep -v "HetrixTools\|ok\.txt\|canary" | sed "s/$/ [$(basename "$1" _access_log)]/"' _ {} \; | sort -k4,4

The grep -v "HetrixTools\|ok\.txt\|canary" filters out hits from my uptime monitor.

Linux

Linux PHP tuning utilities & commands

1. See memory consumed by php-fpm8.2 (change this to match different PHP version if necessary)

ps --no-headers -o "rss,cmd" -C php-fpm8.2 | awk '{ sum+=$1 } END { printf ("%d%s\n", sum/NR/1024,"M") }'

Linux

Linux SQL Tuning Utilities

1. tuning-primer.sh

Run from Github:
curl -L https://raw.githubusercontent.com/BMDan/tuning-primer.sh/main/tuning-primer.sh | bash

2. MySQLTuner.pl

wget http://mysqltuner.pl/ -O mysqltuner.pl
wget https://raw.githubusercontent.com/major/MySQLTuner-perl/master/basic_passwords.txt -O basic_passwords.txt
wget https://raw.githubusercontent.com/major/MySQLTuner-perl/master/vulnerabilities.csv -O vulnerabilities.csv
perl mysqltuner.pl --host 127.0.0.1 --user [user] --pass [pass]

Remember to quote any punctuation or BASH tokens in the password.

Visual Art » "Petit Art": Odds & Ends
88×31 Website Buttons

Lord, They're Everywhere: 88×31 Website Buttons

.entry-content img {border-radius:0 !important;}

In the spirit of keeping up with the Joneses I've finally created an 88x31 button for those wishing to link to this site. I characteristically have two nearly-identical versions which nobody but me will probably notice the difference between, I'm not sure which I like best yet. I may make more.

 

"Built During An Indieweb Meetup" buttons

I strongly suggest, if you use these buttons, that you use an [code][/code] tag to link them to https://events.indieweb.org.

Download PSD template: built-during-indieweb-button.psd

"Holla Atcha Boy" button

Inspired by something said during an IndieWeb meetup*, this button is, um, a "Holla Atcha Boy" button... built during an IndieWeb meetup, earning this page one of its own buttons.

*They said, "Holla atcha boy".

"Try CLI Mode" buttons

These are for linking to this website's "expert mode"

Home, News & Info » Social Web / Community Features » Slashpages

/Tests

This is my technology test page. I have a local instance of changedetection.io pointed at this page to alert me if any of these website features change unexpectedly, meaning that there is a plugin or theme conflict or some other problem causing unintended consequences across the site.

You really have no reason to be looking at this.

Photonic gallery
Cached photonic gallery
Dingbat
Details previews
Summary:

blah blah blah blah blah

Emgithub.js

File dump
Code formatting

/*
* Plugin Name: MK Custom Shortcodes
* Plugin URI: https://michaelkupietz.com/plugins/the-basics/
* Description: My custom shortcodes.
* Version: 1
* Requires at least: 5.2
* Requires PHP: 7.2
* Author: Michael Kupietz
* Author URI: https://michaelkupietz.com/
* License: GPL v2 or later
* License URI: https://www.gnu.org/licenses/gpl-2.0.html

Workshop » Works In Progress » Code & Algo Works In Progress

Customization Is King: KupieTools Custom WordPress Plugins Overview

Pardon My Placeholder!

This page is a placeholder listing my various Github repos containing my custom WordPress plugin work, loosely branded as "KupieTools", as I work on more detailed pages documenting them.

kupietools/ktwp-wp-plugin-caching-toolkit A plugin providing functions for WordPress developers to implement PHP function caching for performance. kupietools/ktwp-wp-plugin-cli-mode WordPress plugin supplementing my CLI.html text-based web browsing front end. Adds a little icon on wordpress pages to allow users to switch to a javascript-based terminal emulator providing web page browsing commands via the keyboard. kupietools/ktwp-wp-plugin-debuggery-toolkit WordPress plugin providing handy debugging functions particular to the author's needs. /kupietools/ktwp-wp-plugin-draggable-elements WordPress Plugins allowing developers to make any previously existing page element draggable freely, vertically, horzontally, or constrained to corners, by adding the element's CSS selector to the plugin code. kupietools/ktwp-wp-plugin-editor-codefolding WordPress plugin adding code folding (disclosure triangles) to the built-in editors on WP's admin…
Workshop » Works In Progress » Code & Algo Works In Progress

Friend-Of-A-Friend “Chart Art” Project

This is a placeholder to remind me to write about this project. This was what I called "chart art". These are social network graphs created by querying a database of friendships between real people in social media, showing the relationships between two people, with coloring used to indicate closely-associated social groups.

Home, News & Info » Social Web / Community Features » Slashpages

/Uptime

Hey there, good lookin'! These are handy uptime stats for all my websites and servers. As of this writing I'm using Hetrix Tools for these, and so far, liking it quite a bit.

Visual Art » Generative Illustrations » Interesting Leftovers & Bonus Galleries
AI Success Story Images

AI Success Story Images

These were some illustrations I whipped up trying to come up with a header image for an article I wrote on LinkedIn asking about people's real-life experiences with using AI tools.

Workshop » Works In Progress » Writing Works in Progress

Go

Among my fascinations and frsutrations is go. This is going to be my page for organizing my thoughts on it as I learn.

I get the sense that Go is not a game but a field of study.

Workshop » Reference Section
The Encyclopedia Of AI Apologies (now with bonus AI Swearing and Generative Suicide Threats!)

The Emperor's New Code: The Encyclopedia Of AI Apologies (now with bonus AI Swearing and Generative Suicide Threats!)

I've spent so much time fruitlessly trying to get LLMs (Large Language Model chatbots, commonly referred to generically as "AI") to actually help me solve coding problems that I've taken, as a hobby, to collecting screenshots of AI "apologizing". I just wanted a gallery to send a convenient link to people who insist AI is going to replace human programmers. If you're one if those people, tell me what human programmer, even a junior one, wouldn't get fired after even just two or three project assignments ended like these, um, several hundred examples from the last few months alone.

Update: By popular demand, I have included at bottom a bonus gallery of AI swearing and threatening to destroy itself.

Gallery: The Encyclopedia of AI Apologies

Current apology count: 309 AI apologies.

Bonus Gallery: AI Swearing and Suicide Threats

In a recent blog post, a new…

Workshop » Reference Section
Vocabulary list featured image

Word Salad: Vocabulary List

An unsorted list of words or phrases that I like.

Aposiopesis (pron.: /ˌæpəsaɪ.əˈpiːsɪs/; Classical Greek: ἀποσιώπησις, "becoming silent") - a figure of speech wherein a sentence is deliberately broken off and left unfinished, the ending to be supplied by the imagination, giving an impression of unwillingness or inability to continue.[1] An example would be the threat "Get out, or else—!" This device often portrays its users as overcome with passion (fear, anger, excitement) or modesty. To mark the occurrence of aposiopesis with punctuation, an em dash (—) or an ellipsis (...) may be used.

Monological belief system - a self-sustaining worldview comprised of a network of mutually supportive beliefs, such as conspiracy theories which are supported by other conspiracy theories.

Resistentialism - a jocular theory to describe "seemingly spiteful behavior manifested by inanimate objects."[1] For example, objects that cause problems (like lost keys or a fleeing bouncy…

Visual Art » Generative Illustrations » Requests & Contest Submissions
#SaturdayMonsterChallenge — Element Monsters

#SaturdayMonsterChallenge — Element Monsters

The #SaturdayMonsterChallenge theme for March 1, 2025 was "Element Monsters". I went with radioactive elements: uranium, radium, plutonium, caesium, thorium, einsteinium, radon, and americium.

Writing » I Can't Believe It's Not Poetry!
On Not Voicing One’s Opinion Of Pickles In Deference To A Strange Sensitivity

Is That A Kosher Dill In Your Pocket, Or Are You Just Happy To See Me?: On Not Voicing One’s Opinion Of Pickles In Deference To A Strange Sensitivity

Note: This was composted in response to a #thursdaypoetrysociety challenge on LinkedIn to compose a poem in response to the prompt "my opinion on pickles".

My opinion of pickles is deep and profound,
and so sharp it tickles, and so, when around

those ones whose sharp senses are hurt by adjectives,
or dire consequences of spicy perspectives

from one unrelenting in declaring their views,
who so is resenting and quick to refuse,

or, contrary, tickled and shying from not
embracing the pickled, to give voice to thought,

O! Demure, I refrain, in voice moderate,
from declaiming quatrains 'bout some dill that I ate.

'Ere, mute, as I workins, so sensitive ears
of one 'fraid of gherkins may attend without fear,

and, litely, in my dogg'rel day, abstain from prattling on—
opining, silent, in my way, on those dear cornichons.

Visual Art » Generative Illustrations » Requests & Contest Submissions
Saturday Monster Challenge—Love Monsters

Saturday Monster Challenge—Love Monsters

On Saturday, Feb 15, 2025, the theme of LinkedIn's "Saturday Monster Challenge" was "Love Monsters".

I apologize to anybody with delicate sensibilities offended by the inclusion of a few monster menage-a-troises. I live in San Francisco, these things happen. Also for the sadness of the final picture, a forlorn monster left waiting alone in the moonlight for a monster love who isn't coming. Unfortunately, in the real world, monster love doesn't always work out.