Subfolders
Latest "Articles" files
Workshop » Works In Progress » Writing Works in Progress

Laws Of The Land

This is my placeholder scratchpad for what will be my page of rules of thumb, natural laws, and other such handy guidelines. 1. Child rearing Keep a parent's vigilant eye, and keep the kid away from high stuff and sharp stuff and hot stuff and anything with teeth and no training. You'll do fine. 2. Kupietz's Henriksen Conjecture As described on my movie reviews page: Lance Henriksen will be the last to die in any horror movie he is in. I'll be adding to this as I remember these, until it grows into an article.
Visual Art » Generative Illustrations » Requests & Contest Submissions
13 Ghosts

Grim Grinning Ghosts Come Out To Socialize: 13 Ghosts

Some virtual spectral photography to spookify your Halloween. True fact: none of these AI-generated images had ghosts in them when I prompted them. WoooOOOOoooo! 👻 I believe I originally made these as a Saturday Monster Challenge but I can't recall when. I'll update if I run across the original info.
Workshop » Reference Section » Grimoires » IT » Applications » Web Browsers » Plugins

Block Instagram share posts from Facebook’s “all” feed with uBlock Origin

Abstract: With the browser plugin uBlock Origin, you can block shares from Instagram with the custom rule: www.facebook.com##.html-div:has(a[href*="www.instagram.com"]) Note: Facebook changes their css often. This may not work for long. Also, uBlock Origin is not always the fastest plugin, you may see the Instagram posts briefly on your screen before it removes them. How to Block Instagram Shares from Facebook Using uBlock Origin: A Complete Guide Social media platforms have become increasingly interconnected, with content from one platform frequently appearing on another. For Facebook users, this often means encountering Instagram shares in their news feed—sometimes from accounts they follow on both platforms, creating redundant content, and sometimes from accounts they don't follow on Instagram at all, courtesy of Facebook's algorithmic recommendations. If you're looking to curate a cleaner Facebook experience by filtering out these Instagram cross-posts, browser extensions like uBlock Origin offer a powerful solution through custom filtering rules. This guide will walk you through the process of blocking Instagram shares from your Facebook feed, explain how the technology works, and discuss the limitations you should be aware of. Understanding the Problem: Why Instagram Shares Appear on Facebook Before diving into the solution, it's helpful to understand why Instagram content appears so frequently on Facebook in the first place. Facebook acquired Instagram in 2012 for approximately $1 billion, and since then, the two platforms have become increasingly integrated. While they maintain separate user interfaces and distinct user experiences, Meta (Facebook's parent company) has strong incentives to encourage cross-platform engagement. When…
Workshop » Works In Progress » Writing Works in Progress » The Five-Ingredient Cookbook

Ketoriffic Tuna Pig Salad au Gratin (with non-keto variation)

This is a regular snack around my place. Ingredients: 1 large (7oz unopened) can tuna, drained 2 thin slices ham healthy dollop or two of mayonnaise red Tabasco sauce black pepper optional: lemon pepper powedered garlic shredded cheese of your preference 1. Put tuna in a large bowl 2. shred ham slices and add 3. add healthy dollop or two of mayonnaise 4. Several dashes of Tabasco sauce. This is one of the exceedingly rare instances where you don't want to overdo it with Tabasco sauce... just a dash or two. This is because we're about to overdo it with the black pepper, and surprisingly, they don't mix. 5. Add garlic to taste... I like a lot. 6. Add pepper. Now, I have a standard rule of them for how much black pepper you need to add to tuna and mayonnaise: Kupietz's Rule Of Thumb For How Much Black Pepper To Add To Tuna And Mayonnaise Pepper and mayonnaise cancel each other out, so you have to be far more egregious with the pepper than you normally would. The rule is as follows: Pour in the black pepper. When you have added so much pepper that you are thinking, "There is no possible way anyone could want that much pepper in this", then, you are 1/3 of the way there. Add twice that much again. I know, it sounds crazy. Try it once and see. Make a tuna salad sandwich that way, without all the extra fanciness in this recipe.…
Workshop » Reference Section » Grimoires » IT » Platforms » MacOS » Networking

Prevent MacOS from locking screen when you disconnect screen sharing

I screenshare into a Mac for playing video on my TV, and had an intermittent problem where Firefox would not play video while screen sharing was connected, but then locked the screen as soon as I disconnected. It turns out that if the screen is locked when you log in via screensharing, MacOS defaults to locking it again when you disconnected, and, being MacOS, the ability to turn this off has been removed from the UI. Enter this in terminal to turn it off: sudo defaults write /Library/Preferences/com.apple.RemoteManagement RestoreMachineState -bool NO
Code & Algorithms » Web
Tech note: How To Export or Import Notes from the “Webstickies” Extension In Firefox

Free Your Mind, And Your Sticky Notes Will Follow: Tech note: How To Export or Import Notes from the “Webstickies” Extension In Firefox

Amongst my most-used browser extensions is Webstickies by Lawrence Hook, which allows you to leave a permanent "sticky note" on any web page. It's available for both Firefox and (yuck, ptui) Chrome, although I only use it in Firefox. However, the one thing it lacks is an import/export functionality. For $10, you can get access to "Cloud Sync" for your notes—yes, another unneeded "cloud integration" where local functionality would have been superior. Consider this side-by-side feature comparison: Local Import/ExportCloud Sync Transfer notes between browsers or computers✔✔ Allows the plugin developer to make some money selling the use of infrastructure that shouldn't strictly be needed❌✔ Need to literally copy down every single note by hand, one by one, to get them out of the extension❌✔ Email yourself a full copy of your notes for safekeeping✔❌ Migrate your notes even if your internet connection is down✔❌ Have multiple backups of your notes✔❌ Save, convert and transfer your notes to another format or plugin✔❌ Be able to guarantee the integrity of your backed-up note data✔❌ Save or transfer your notes if the plugin author gets hit by a meteor and spends the rest of his life wandering around in a haze of amnesia✔❌ Save or transfer your notes if the plugin author gets tired of running a cloud server and turns it off✔❌ Save or transfer your notes if the plugin author doesn't pay their bills and their server host turns them off✔❌ Save or transfer your notes if the plugin author decides…
Workshop » Reference Section » Grimoires » Hearth & Home

How To Clean Suede

As with all other advice-y sounding things on this site, don't take my word for it. I'm just telling you what worked for me. Use your discretion. I'm not responsible for your actions or the consequences of anything you chopse to do. I'm just saying if you try to clean a stain off suede with vinegar and it winds up costing you a limb or killing somebody, that's not my fault. You're on your own recognizance. Water is bad for suede. If stains haven't set yet, you can clean them off suede with a rag or sponge soaked in white vinegar. I've had pretty good luck even with stuff that's dried on there pretty good.
Workshop » Reference Section » Grimoires » Hearth & Home

How To Defrost A Frozen Steak In 30 Minutes

As this is a food handling tip, it is presented as documention of something I do. That does not mean I suggest you do it. As with all things, the foremost rule is: use your discretion. I am not responsible for anything you do. I wish I could remember who showed this to me. This is one of the most useful tips I've ever received. I use this all the time. It even works for frozen-solid inch-thick pork chops. I just did it tonight. To fully defrost a completely frozen steak in 30 minutes: 1.) Wrap it tightly in something 100% watertight. The watertightness is essential otherwise you will ruin it rather than defrost it. High-quality bags might work in lieu of anything else. 2.) Fully submerge it in a bowl or container of cold tapwater. Put something on top of it to keep it submerged if you need to. 3.) Wait 30 minutes. 4.) Remove it from the water. It is defrosted. It's like magic. The way this works is, water is a much better conductor of heat than air. Even though the water from your tap may feel cold, it’s still much warmer than your freezer, and it transfers energy to the frozen meat way faster than just letting it sit out on the counter. And it defrosts it all the way through, evenly, as if you'd left it out overnight. If you use hot water, you risk raising the surface temperature too high, and dormant microbes in…
Workshop » Reference Section » Grimoires » IT » Platforms » Web » WordPress » Yoast

CURL and Browser get different page versions (301 redirects, content changed, etc. — due to Yoast url parameter stripping only for non-logged-in users)

I had a truly maddening problem where my /embed/ functionality was sometimes returning full pages to CURL commands and online services like redirect-checker.org, etc. It turned out, it was Yoast's URL parameter stripping. I had failed to update Yoast's settings with some new parameters I was using, and what Yyoast never tells you is that when you're logged in, it lets everything work fine, and only strips parameters for non-logged in users. It just lets you proceed on your way thinking everything is working fine until you can't figure out why curl -I https://mysite.com/blah?param1¶m2 is getting a 301 redirect while https://mysite.com/blah?param1¶m2 is loading fine in your browser. This is especially fun on sites like mine where things like /embed/ and ?embed get written back and forth to each other internally. I lost several hours to this. Yoast's docs say there's a way of registering parameters but, helpfully/s, never tells you what it is, and I can't find it online. I've permanently turned off the url parameter stripping. I have everything properly tagged with canonical tags, so no worries about duplicate content for SEO purposes, and now, and I know I'm not getting served a slightly different URL (because I'm logged in) than the rest of the world is seeing.
Workshop » Reference Section » Bot Bait

Alternative Education Review: Welcome to the Wobbly Wombat Academy, Where the Curriculum is as Unpredictable as the Weather

Richmond-upon-Thames, UK – Nestled precariously on a foundation of questionable architectural decisions and a deep-seated commitment to the unconventional, the Wobbly Wombat Academy stands alone in its unique approach to education. Forget standardized tests and traditional subjects; at WWA, the only constant is change, and the only rule is... well, there really isn't one. "We believe in fostering a spirit of delightful bewilderment," declared Michael Kupietz, the school's enigmatic Headmaster-in-Absentia, in a recent telegram delivered by carrier pigeon. "Why teach quadratic equations when you can teach the subtle art of competitive cheese rolling? Or the sociological implications of a particularly jaunty hat?" Indeed, Wobbly Wombat's curriculum reads less like a prospectus and more like the fever dream of a particularly eccentric lexicographer. Mornings might see students engaged in Advanced Cloud Gazing, meticulously cataloging shapes and their potential emotional impact. Afternoons could be dedicated to "Applied Surrealism," where pupils are tasked with creating a functional trebuchet out of discarded teacups and a sense of existential dread. "Our philosophy is simple," another missive from Headmaster Kupietz elaborated, this one written on a banana peel. "Learning should be an adventure, a joyous tumble down a rabbit hole of delightful non-sequiturs. If a child leaves WWA knowing how to identify seven different types of enthusiastic gesticulation, I consider that a resounding success." The school's faculty is just as eclectic as its syllabus. The "Department of Unnecessary Contraptions" is headed by Professor Benjamin Brody, who claims to have invented a device that can translate the…
Writing » Fun & Humor
Why Eat Pigeon?

A Reminiscence Of Dunces: Why Eat Pigeon?

Way back in the heady days of the dotcom boom, as a newbie in San Francisco, I fell in with a group of kids trying to revivify the Cacophony Society via the SF-Caco email list, which, for a while, consisted mostly of a bunch of underemployed young adults kidding around with each other and trying to come up with funny ideas. Finally, one day, a young woman who went by the on-list moniker "Drunken Consumptive Panda" threw out a sentence that was to change a lot of lives: "We should have a pigeon roast in Union Square". The Union Square Pigeon Roast, as it happens, deserves a much longer reminiscence, is it was the start of a remarkable, brief but fun period of activity that lasted a few years. The event itself was ludicrous: we posed as a group called "Bay Area Rotisserie Friends" (that was my idea; check the acronym) advocating for harvesting SF's pigeon population as a food source. My old ex-friend Rick Abruzzo printed up t-shirts of a pigeon in a chef's hat and the slogan "Pigeon, the other other white meat", and several large signs were made. Unbeknownst to us, another group of people, in on the joke, organized a faux protest to show up and oppose us as the "Pigeon Eating Temperance Association". On the day, we fired up hibachis in Union Square, complete with little roast squabs we'd purchased pre-cooked in Chinatown. The whole thing sounds rather mortifying in summary 25 years later, but…
Workshop » Reference Section » Grimoires » IT » Applications » Web Browsers » CSS

Determining which javascript script changed an element’s attribute

Determining which script changed an element's attribute So, I had an issue where quite a while ago I added some js code that would open a [code]details[/code] disclosure element if it contained a named anchor that was included in the page's URL. For instance if you loaded the URL [code]https://thisdomain.com/somepage.html#blahblahblah[/code], and the page had [code][/code] hidden inside a closed [code]details[/code] element, it would open that element by setting the attribute "open" on the details element, and scroll to reveal the anchor. The problem was, I needed to make some changes to how that code functioned, and I couldn't find where I had added the script that did that. Long story short: I temporarily added this script to the head of the page, and then reloaded it with an #anchor added to the URL, in this case [code]https://michaelkupietz.com/literally-hundreds-capsule-reviews/#puzzlehead[/code]: [code] [/code] I haven't played with implementing this for anything but [code]details[/code] tags, but this should be enough to start.
Workshop » Reference Section » Grimoires » IT » Platforms » Linux » Packages » SQL

SQL query to list all WordPress post revisions for archiving

Here's the SQL query to get all post revisions, which I do prior to cleaning them out of the database, which seems to make it much faster: SELECT p.* FROM [posts table name] p WHERE (p.post_type = 'post' OR p.post_type = 'page') -- Include posts/pages AND (p.post_date BETWEEN '2020-01-01' AND '2029-07-01') -- Adjust date range OR (p.post_type = 'revision' AND p.post_parent IN ( SELECT ID FROM [posts table name] WHERE post_date BETWEEN '2024-01-01' AND '2024-07-01' )); To get just a count of revisions, change SELECT p.* to SELECT count(*).
Workshop » Reference Section » Grimoires » IT » Platforms » Linux » Packages » rsync & rsnapshot

Speeding up rsnapshot (rsync) backups by removing wildcard paths from exclude

I removed a bunch of wildcard paths from rsnapshot.conf's exclude, and suddenly tonight my backup ran in a few minutes instead of taking over a day like it usually does. Interesting, I've been looking off and on for at least the better part of a year for ways to lighten the load of rsnapshot's under-the-hood rsync backup commands, which reliably took up about half my CPU power almost continuously, and never found this tip before. You can see, plenty of wildcard paths removed, plus a few other things. Here's a diff, rsnapshot.conf before changes (<) vs after (>): < verbose 1 --- > verbose 4 120c120 < loglevel 2 --- > loglevel 4 143a144,146 > rsync_short_args -Wa > #-W is transfer whole files without prescan, recommended for performance by https://serverfault.com/questions/639458/rsync-taking-100-of-cpu-and-hours-to-complete > #NOTE: if you set the above short args, include 'a' manually! It's needed! 174,177c177,180 < exclude '*log.*.gz' < exclude '*log.gz' < exclude 'home/*/tmp' < exclude '/tmp' --- > exclude 'log.*.gz' > exclude 'log.gz' > exclude 'home//tmp' > #exclude '/tmp' 178a182,184 > exclude '/root/downloads' > exclude '/root/.claude' > exclude '/root/.mozilla' 191,201c197,217 < exclude '/dev/*' < exclude '/home/*/.gvfs' < exclude '/home/*/.mozilla/firefox/*/Cache' < exclude '/home/*/.cache/chromium' < exclude '/home/*/.thumbnails' < exclude '/media/*' < exclude '/mnt/*' < exclude '/proc/*' < exclude '/sys/*' < exclude '/tmp/*' < exclude '/home/*/.local/share/Trash' --- > #exclude '/dev/*' > #was exclude '/home/*/.gvfs' > exclude '.gvfs' > exclude '.mozilla/firefox/*/Cache' > exclude '.cache/chromium' > exclude '.thumbnails' > #last 3 were > #exclude '/home/*/.mozilla/*/Cache' > #exclude '/home/*/.cache' > #exclude '/home/*/.thumbnails' > # >…
Workshop » Reference Section » Grimoires » IT » Applications » Web Browsers » CSS

Display “fixed” elements still scrolling, not fixed to page (also, if z-index not working properly)

I had an interesting problem where I set an image's CSS rules to display:fixed and it still scrolled with the page. Here's what I discovered: In CSS, display:fixed means fixed with regard to the nearest ancestor stacking context, not necessarily to the page coordinates. You can reset the stacking context by adding a transform, will-change, or other attributes (list provided below) to an element. If an ancestor element resets the stacking context, any descendant of it with display:fixed will stay fixed with regard to it, but if it scrolls with the page, will scroll too. Ditto for the CSS attribute z-index. A higher z-index is only in front of objects in its stacking context. A new stacking context, lower down on the page, can contain elements with a lower z-index but that nonetheless appear in front of it visually, because they're not in the same stacking context. Josh Comeau's site has a good article on this at https://www.joshwcomeau.com/css/stacking-contexts/. MDN also has a comprehensive article at https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_positioned_layout/Stacking_context#the_stacking_context which gives the following as list of ways the CSS stacking context can be reset: Root element of the document (<html>). Element with a position value absolute or relative and z-index value other than auto. Element with a position value fixed or sticky. Element with a container-type value size or inline-size set (See container queries). Element that is a flex item with a z-index value other than auto. Element that is a grid item with z-index value other than auto. Element with an opacity…
Workshop » Reference Section » Grimoires » IT » Troubleshooting log » Web Server

Performance troubleshooting & settings changes 2025aug29

Following several days of frequent freezes, I tried changing the following settings updated in : [opcache] original settings ;recommended by https://vpsfix.com/14433/virtualmin-post-installation-configuration-and-server-optimization-guide/ opcache.enable= opcache.memory_consumption= opcache.interned_strings_buffer= opcache.max_accelerated_files= opcache.validate_timestamps= opcache.revalidate_freq= opcache.save_comments= ;end recommendation to [opcache] ;recommended by https://vpsfix.com/14433/virtualmin-post-installation-configuration-and-server-optimization-guide/ opcache.enable= opcache.memory_consumption= opcache.interned_strings_buffer= opcache.max_accelerated_files= opcache.validate_timestamps= opcache.revalidate_freq= opcache.save_comments= - added var_dump(opcache_get_status()) to php status page to be able to monitor opcache usage - changed warning logs from E_ALL & ~E_DEPRECATED & ~E_STRICT to ---- noticed contained a LOT of processes being stopped for tracing turned off request_slowlog_timeout by setting to 0s in had been 4s --- I had turned on lightspeed at 1:45 am est , aug 26. Seems like more problems since then. None of the above seem to help, still getting freezes maybe every 30 minutes. Next will try turning lightspeed off. Also let on set session.gc_probability = 1 and session.gc_divisor = 1000 in php.ini because discovered ~/tmp is full of thousands of session files, and gc_probability was set to 0.
Workshop » Reference Section » Grimoires » IT » Platforms » Linux » File management

Directory and File Locations particular to this server

PHP config - Includes: - opcache settings - error warnings PHP slow log setup is in PHP log - PHP error and slow logs by pool are in
Workshop » Reference Section » Grimoires » IT » Platforms » Linux » Packages » rsync & rsnapshot

Resolving an rsnapshot error — “rsync: –delete does not work without –recursive (-r) or –dirs (-d). rsync error: syntax or usage error (code 1) at main.c(1795)”

I discovered rsnapshot hadn't run in a few days. Checking /etc/rsnapshot.log, I found every recent day had this: rsync: --delete does not work without --recursive (-r) or --dirs (-d). rsync error: syntax or usage error (code 1) at main.c(1795) [client=3.2.7] A few days ago I had added the line rsync_short_args -W to /etc/rsnapshot.conf in an effort to get rsync to run without putting such a load on my system. Removing this and running rsnapshot -v hourly from the command line shows that without it, the first line of the rsync command was /usr/bin/rsync -ax --delete --numeric-ids --relative --delete-excluded \, but with it, the first line was /usr/bin/rsync -Wx --delete --numeric-ids --relative --delete-excluded \. Changing the line rsync_short_args -W to rsync_short_args -Wa, with an a flag explicitly included, solved the problem. Apparently specifying custom short flags overrides at least one of the default flags. Also: remember, when you run an rsnapshot test, you might need to manually remove a partially-begun new backup (hourly.0, in my case) and rename suffix on the backup now called something like hourly.1 back to .0. Otherwise, you might wind up with huge backups eating your diskspace, as rsnapshot uses a technique called hardlinks that depends on adjacent backups being as similar as possible to each other to conserve disk space.
Workshop » Works In Progress » Visual Works In Progress

Subterranean SF: Fort Mason Tunnel

This is a placeholder to remind me to post the photo album of exploring the hidden Fort Mason rail tunnel.
Workshop » Works In Progress » Visual Works In Progress

Everybody says she’s the brains behind Pa: Wendee’s Farm

This is a placeholder page to remind me to post my gallery of photos from Wendee Key's plantation.
Workshop » Reference Section » Grimoires » IT » Platforms » Linux » Packages » rsync & rsnapshot

Post-migration steps when migrating or restoring Linux from backup

There are intentionally vague broad steps, here just as a reminder to myself; best to look specific instructions for each of these steps up at restore time for the particular system you're restoring to. A.) Backups should include all user data. Depending on who you ask, that's either: 1.) The entire filesystem except /dev/*, /proc/*, /sys/*, /tmp/*, /run/*, /mnt/*, /media/*, /lost+found (which can be pulled from a complete filesystem backup with rsync -avhP --exclude={"/dev/*","/proc/*","/sys/*","/tmp/*","/run/*","/mnt/*","/media/*","/lost+found"} /mnt/olddrive/ /mnt/netdrive/) 2.)/home, /etc (except /etc/passwd and /etc/groups, these have useful information to back up but may conflict if written to a new install), /usr/local, /opt, /root, /var (exluding /var/tmp, /var/run/, /var/lock, or /var/spool except you DO want /var/spool/cron/crontabs/) B.) After copying all the above to the new or restored disk, you need to update /etc/fstab with the new disk UUIDs. C.) Install GRUB Bootloader. D.) If you're using LUKS encryption, set that up.
Workshop » Reference Section » Grimoires » IT » Platforms » Linux » Packages » rsync & rsnapshot

Fastest way to delete a large, deep directory in Linux

Per numerous references around the web, to delete /path/to/directory-to-delete/: cd /path/to/ mkdir empty_dir rsync -a --delete empty_dir/ directory-to-delete/ rm -r empty_dir rm -r directory-to-delete Disclaimer: this is for my own reference, not recommended for your use. Use it at your own risk. If I am wrong—and I may be—these commands can do tremendous damage to your system.
home » Social Web / Community Features » Slashpages

/Now

This is my /Now page, after Derek Sivers's proposal. I've recently back in San Francisco after a few months on the east coast. I'm doing a lot of generative art, some (but nowhere near all of which, yet) you see all over this site, as well as having a few pieces published as cover and internal illustrations for a not-for-profit poetry anthology published by UCSF's Poetic Medicine program at the MERI Center for Palliative Care at Mt Zion. On the music front, for the last few months I've been practicing playing the lyre, as well as still regularly playing guitar, saxophone and clarinet. I have a 24-string lyre and expect to have a video or two posted in the reasonable near future. Professionally, I've been working doing general business IT support, WordPress and FileMaker development for a local managed services IT company, as well as taking on freelance projects in same, while I look for my next full-time opportunity. (Pitch: please check my resume on https://www.kupietz.com if you have or are aware of any opportunities.) I also have scaled up my personal IT projects. I have been doing a ton of web development, mostly visible on this site and on my Github, and have spent the last two years slowly divorcing from various service providers and becoming my own: I currently host all my websites on my own server at home—you are fetching these electrons from a small computer in my living room. My email accounts and server security (CDN…
Workshop » Reference Section » Grimoires » IT » Applications » Web Browsers » CSS
Web Developer Reference: Comprehensive List of CSS Units

Web Developer Reference: Comprehensive List of CSS Units

Here’s a guide to all currently available CSS units, with explanations and common use notes. This includes all CSS units listed in MDN Web Docs as of 2025aug15. Sections: By Category Notes and tips Alphabetically: By Category Angle units deg: Angle Degrees (360deg = full circle). grad: Angle Gradians (400grad = full circle). rad: Angle Radians (2πrad = full circle). turn: Angle Turns (1turn = full circle). Used in transforms, gradients, and trigonometric functions. Frequency units Hz: Hertz. Cycles per second (e.g., for aural/speech media). kHz: Kilohertz (1000Hz). Rarely used in typical web CSS. Length Units: Absolute length units (fixed physical or device-referenced) px: CSS pixel. The most common unit for on-screen layout. Scales with zoom; not a physical device pixel. in: Inch (1in = 96px). cm: Centimeter (1cm = 96px/2.54). mm: Millimeter (1mm = 1/10 of a cm). Q: Quarter-millimeter (1Q = 0.25mm). pt: Point (1pt = 1/72in). pc: Pica (1pc = 12pt). Length Units: Container query length units (relative to a query container) Used inside container queries to size relative to the container, not the viewport. cqw: 1% of the container’s inline size (width in horizontal writing). cqh: 1% of the container’s block size (height in horizontal writing). cqi: 1% of the container’s inline size (alias of cqw; inline axis-aware). cqb: 1% of the container’s block size (alias of cqh; block axis-aware). cqmin: The smaller of cqi and cqb. cqmax: The larger of cqi and cqb. Length Units: Font-relative length units em: Relative to the font size of…
Code & Algorithms » Web
A Technological Solution to Disincentivize a Web Development “Concern Troll”

Fun With A Purpose: A Technological Solution to Disincentivize a Web Development “Concern Troll”

I had an interesting thing happen a few months ago where a troll in a chat room decided for some reason to run my site through the W3C's Nu HTML Validator and apparently was grievously wounded by the validation errors it had—and furthermore, had a big concern with the overall bandwidth consumption of the site, with all its images and heavy pages. Rather than simply solving the problem by not visiting my site, this person apparently felt some sort of imperative to berate me over these things and not. let. it. drop, making the chat room difficult to be in and necessitating action on my part. So, rather than try to verbally wrangle with a troll, I whipped up a technological solution. And, of course, the monkey in my soul decided to have a little fun with it. I. Lassoing the HTML Validator Nowadays, if you run this site through the W3C's validator, you'll see a quite different result than you'd expect. Doing this was pretty simple at first, but as my site grew and I implemented various forms of caching, it got more complicated. First, I created a separate page on my domain, unlinked from any other pages. For opsec, I'm not going to reveal the actual URL, but for purposes of demonstration let's say it's https://michaelkupietz.com/validatorpage.html. Now, the IP of the W3C HTML Validator is 52.22.66.203, and there's another one at validator.nu at 46.226.111.50, so at first, I just added this to the top of my WordPress child…
Code & Algorithms » Demo & Live Tool Playground
Web Demo: CSS Dynamic Point Light Source & Parallax Shadows

Let There Be More Light: Web Demo: CSS Dynamic Point Light Source & Parallax Shadows

Click here to view this in a separate tab. This demonstrates a high-performance method of rendering dynamic CSS drop shadows from a simulated point light source. The note and sun light source elements have been made interactively user-draggable by the inclusion of an external draggability package. Until I have this documented, you can see the code on Codepen at https://codepen.io/kupietz/pen/LEpzJgL. Update, Feb 2026: This is not my work but it deserves a mention here. I've been completely outdone. Check this demo out. This guy designed an entire css system around physical lighting: https://ambientcss.vercel.app/ Github: https://github.com/kikkupico/ambientcss
Workshop » Reference Section » Grimoires » IT » Troubleshooting log » VMWare

VMWare VM unreachable via IP after reboot, even from host machine

My VWWare VM lost internet connectivity after a reboot. Even the host machine could not access any service on it. Http/https got 523 errors. I powered down the VM, changed the networking to NAT, powered it back up, shut it down again, changed the networking back to Autodetect, booted it again, and everything seemed fine.
Workshop » Reference Section
Start Here—What is the General Reference Library section?

What It Is: Start Here—What is the General Reference Library section?

I have always been a dedicated archiver and curator of interesting information: trivia, facts, tidbits, how-tos, items of possible future interest. In the internet age, some of this it makes sense to keep as a public archive: IT troubleshooting information, links and general interest info I want to share with other people, etc. However, since this site is intended primarily as my creative showcase, this presented me with a conundrum. There are a lot of things I want to share online for various reasons, but which aren't my creative output. And it seemed silly to set up a whole separate website for that. Hence this "General Reference Library": information I want to make easily available under my own domain, but as a reference, not as my creative output. Eventually this section will just be a colossal brain dump of anything I felt for some reason I wanted to post but wasn't my own creative work.
Writing » Topical Writing » Mikesplaining (Answers to Infrequently Asked Questions)
Can the statement ‘I literally died laughing’ be true?

Infrequently Asked Questions: Can the statement ‘I literally died laughing’ be true?

"'Literally' is one of the most misused words in the English language. Literally means: exactly as stated. 'I literally rode a horse to get here.' means you saddled a horse and rode it to your destination in real life. 'I literally died laughing' is untrue, because you're still alive." —Siana W., via internet That's not a question, but I'm going to do my best to answer it anyway. You're a couple of years behind the times. Dictionaries reflect common language, not the other way around—that's how the meanings of words change over time. Otherwise "nice" would still have its original English meaning of "foolish or ignorant" (from Latin "Nescire", to be ignorant, also the root of the current but uncommon English word nescience, "ignorance or unknowingness".) You're in good company, though—Jane Austen mocked the widespread incorrect use of 'nice' to describe things as pleasant in "Northanger Abbey", in 1817. (And yet, today, here we are. Isn't it nice?) The use of 'literally' to informally mean 'virtually' has been attested to since the 19th century. Meriam-Webster does include it as a definition. N.B. I have been on a personal crusade to expand the usage of "literally" even further, by saying things like "I am literally hungry" or "It's literally 9 PM." References: https://www.merriam-webster.com/dictionary/literally Dictionary.com: what did the word 'nice' used to mean? "Hellooo-ooo! I'm a very hoity-toity and proper dude who has the right to grant or withhold approval of how others speak their native language. Actually, the change in the…
Workshop » Reference Section » Grimoires » IT » Platforms » Linux » Packages » rsync & rsnapshot

Reducing rsnapshot or rsync resource usage

I've had sporadic problems with clearing the WP cache causing the server to return 520 errors for a few minutes. Usually other sites on the same server are fine, it's specific to this vhost. Logging in via SSH, checking with htop, rsync is usually hogging most of the cpu. Restarting the fpm and then restarting Apache restores the website. According to https://www.claudiokuenzler.com/blog/361/rsnapshot-backup-reduce-high-load-with-ionice, the big bottleneck with rsync, which rsnaphot runs on, is i/o, not cpu, and rsync can actually tie up i/o such that a web server won't respond to http requests. This can be solved by making the rsnapshot command in crontab ionice -c 3 [rsnapshot command] instead of just the rsnapshot command, which tells rsync not to wait until the disk is idle before trying to access it. So I did. In fact, I made it nice -n 19 ionice -c 3 [rsnapshot command] although according to the article this isn't likely to help much. I think there's a problem with the caching plugin that it causes this, but hopefully reducing rsnapshot's resource consumption will solve the problem.