How to check Fail2ban log
Command to check fail2ban's log is sudo tail -f /var/log/fail2ban.log
Command to check fail2ban's log is sudo tail -f /var/log/fail2ban.log
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") }'
Run from Github:
curl -L https://raw.githubusercontent.com/BMDan/tuning-primer.sh/main/tuning-primer.sh | bash
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.
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
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" buttonsThis 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.
blah blah blah blah blah
/*
* 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
…
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…ok
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. 


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.
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.
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.
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.
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…
The #SaturdayMonsterChallenge theme for March 1, 2025 was "Element Monsters". I went with radioactive elements: uranium, radium, plutonium, caesium, thorium, einsteinium, radon, and americium.
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.
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.
[could probably have a whole website section on words & language]
This is a placeholder for a page suggested by captJamesG in the Indieweb writing group meeting at https://etherpad.indieweb.org/2025-02-04-writing : "Writing challenge for anyone interested: write about a word or words that you use but may not be widely known." Agita, vehagedah, sennsucht, and I'm sure I have a bunch of English ones
Saturday Monster Challenge for Jan. 18, 2024.
Comes a time when the monsters have eaten their fill of villagers and there’s no danger anymore, so now everybody can come out and enjoy a sunny day, romping and frolicking under clear blue skies and rainbows.
The time for divisiveness and fear is over. It's time to let go of the past, join together as a community, humans and monsters together, full of hope and looking forward to a bright future of fun, friendship, and happy times together.
At least until the monsters start to feel hungry again.
Just a set of fun leftover from when I was working on a featured image for my Local Color: New York Stories, Which I only now realize are all about petty crimes page. My cousin likes them.
A stylistic experiment inspired by vintage art photography.
#SaturdayMonsterChallenge on LinkedIn for 11 Jan 2024 theme was "Fog Monsters".
.
2020, already a strange year due to the pandemic, had its strangest day, for the San Francisco area, on September 9. The Bay Area experienced a kind of weather that few people ever see.
I woke up that morning thinking it was dawn… from where I'd slept, through the windows I could see the sky beginning to lighten, although it was about the reddest dawn I've ever seen. But I got up and looked at the clock—and it was after 9 AM. I couldn't understand what I was seeing. I literally got dizzy with the unreality of it.
I looked back and forth from the clock to the window several times. Finally I got online to see if the world was ending, and it turned out to be thick smoke from forest first up in Northern CA blanketing the bay area, reducing visibility to dusk levels at midday…
This week's #SaturdayMonsterChallenge on LinkedIn is Lucky Charm Monsters.
I always say, you can tell the lucky charm monsters, because they're the ones hanging out with the people winning at the casino tables, as opposed to the ones slipping roofies into people's drinks at the bar, snarfing up the king crab legs at the all-you-can eat buffet, or hanging out in the bathrooms scaring the bejesus out of you.
For confused first-time visitors and other people still acclimating, here is a description of these little tabs to the left, as well as some other features of the site.
Open "Expert Mode" CLI Navigation - this give you the option to switch your browser's display to an old-fashioned terminal mode where you may browse this site, view pages and images by typing text commands. Just like how we used to browse the web back in 1978!
Open Visual Settings - This gives you controls to customize the visual display of this website to your liking: turn up or down the brightness, contrast, color temperature, hue, saturation, dark mode, and earthquake. Settings are saved per browser tab, so they will be remembered for your whole visit.
Open My Eyes - Have you ever been engrossed in your work, when you suddenly realize someone is staring at your screen, watching everything you do over your shoulder? If not, this simulates the experience.
Open Help - This help popup, silly! You just clicked it! Do you not remember?
New - Draggable elements! Several elements on this website, including these tabs, this popup message, and the "Hire Mike" badge in the lower right, can be dragged around with your mouse, to avoid them blocking content. Positions are remembered per tab, so as you navigate around the site, they will stay in the same place for your whole visit.
Enjoy!
Are you sure you want to switch to viewing this website in the "expert mode" command-line interface?
This will switch to a terminal emulator, load this page, and allow you to browse this website and view its contents by typing text commands.
Plus there might be, y'know, some fun stuff hidden in there. Just for geeks.