Subfolders
Latest "Articles" Articles
Code & Algorithms » Demo & Live Tool Playground
Dot Product Visualizer, a mathematical toy

Live Demo: Dot Product Visualizer, a mathematical toy

This was developed as an aid to understanding the dot product function used in Fractal Kitty's There is(Ǝ) – Such that (∋) project.

The dot product is the length of vector A projected on vector B (you can imagine this as the length of the shadow that A would cast on B, if a flashlight were shining perpendicularly at B), times the length of vector B. If the two vectors point in directions 90° apart, the dot product is 0 since neither has a component in the other's direction. If they point in the same exact direction, it is just the full length of A times the full length of B.

Mathematically, the dot product of vectors A and B defined as |A| * |B| * Cos θ, where |A| and |B| are the lengths of vectors A and B, and θ is…

Workshop » Reference Section » Grimoires » IT » Troubleshooting log » Cloudflare or DNS

Added subdomain to cloudflare tunnel

Turns out LLMs know me by an old subdomain I forgot to add to cloudflare's tunnel config. Just added it. See saved chat under filename "Arts Kupietz 404 Issue" in local admin folder.

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

Splitting a markdown document sections into separate documents with awk in Bash

[code]awk ' /^## / { if (file) close(file) title = substr($0, 4) gsub(/[^a-zA-Z0-9 _-]/, "", title) gsub(/ /, "_", title) file = title ".md" } file { print > file } ' input.md[/code]

First, cd into the same folder as the file (here called input.md. Then the above will generate titled .md documents from every section that starts with ##.

Home, News & Info » Site & Author Info
Interview Policy

Interview Policy

I have an easygoing interview policy. With a little notice, I'm generally available for interviews on any topic that someone might feel interested in hearing my views on, and enjoy the opportunity to have a topical discussion on any subject of interest.

You can expect opinionated but knowledgeable, lucid, and thoughtful takes, occasionally punctuated, if appropriate to the topic, with a native New Yorker's mordant sense of humor.

Arranging the interview

Typically a couple of days notice is helpful. You can reach out to me by phone (listed on my business site) or by emailing me at interviewrequest@michaelkupietz.com

I do prefer, in cases of absolutely cold contact, to receive an info sheet about the interview, the publication or media, any special area of interest of editorial slant, and what commercial interests the interview might benefit, before agreeing. It's not a hard and fast requirement but…

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

Separation model drawbacks

This is a work-in-progress inspired by a recent conversation.

In the "separation model" in FileMaker, where data tables live in separate files from an "interface file" containing visual layouts that display the data to the user, used to be widely recommended as a development convention. However, many developers have found that it has significant drawbacks. This is a scratchpad list of those drawbacks as I encounter them.

1. Duplicate relationship graphs

In practice, relationships depend on context, and this is provided by table occurrences that layouts are built on. You may need a portal on a layout... that means the relationship must be in the interface file. But you may have a calculated field in the parent record that counts, summarizes, or otherwise performs an aggregate operation on the related records. That means the relationship must be in the data file. Neither of these is unusual at all. So you…

Workshop » Reference Section » Grimoires » IT » Troubleshooting log » Cloudflare or DNS

Converted to cloudflare tunnel from ddclient

Today Comcast (boo! hiss!) did some work in my neighborhood and knocked my server offline. I had a long, painful chat session with ChatGPT which ended with me eventually getting set up with cloudflare tunnels instead of using ddclient to update my IP address. The whole chat and terminal session are saved locally in my hard drive in the backups/admin > troubleshooting logs folder in case I ever need to recreate what happened.

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

Quickly check status/error code of all hosted domains

To quickly check to http return code for a bunch of your hosted domains, enter this in bash:

[code]for host in \ domain.com www.domain.com \ domain2.info www.domain2.info \ domain3.com www.domain3.com do code=$(curl -k -sS -o /dev/null -w '%{http_code} %{redirect_url}' "https://$host/") printf "%-26s %s\n" "$host" "$code" done[/code]
Workshop » Reference Section » Grimoires » IT » Platforms » iOS

Stop Siri Dictation from automatically adding incorrect punctuation everywhere.

On my iPhone, I had Siri dication suddenly start inserting bogus commas everywhere when I never said "comma". You can turn this off by going to settings > general > keyboard > dictation and turning off the auto-punctuation switch.

Workshop » Reference Section » Grimoires » IT » Platforms » MacOS » Networking

Airdropping photos from iOS to MacOS always stuck on “waiting”

If your phone and Mac appear to be able to see each other over Airdrop, but every time you try to send photos from your phone to your Mac the phone sits on "waiting" and the photos never transfer, try picking "Force quit..." from the Apple icon menu in the upper left of your window on the Mac, select "Finder", hit the "Relaunch" button, wait a moment for the Finder to restart, and try transferring again.

Blog Posts

How to remove your email and phone number from voter registration (San Francisco county only)

May 15, 2026

The county handles voter registration. San Francisco residents can remove info such as your phone number and email address with the form on https://sfelections.org/tools/regupdate/regupd.php. You can check your CA voter registration status at https://voterstatus.sos.ca.gov/

Workshop » Reference Section » Grimoires » IT » Annoyances

Obsidian Annoyances

Here's a CSS customization feature. Have fun getting it to work!

Have to leave the app to customize CSS. Why can't you save snippets in the app?? Overall, it feels like they intentionally make it as difficult and roundabout as possible to use.

And of course I followed the instructions, created the snippet in the secondary text editor Obsidian makes you keep around if you want to do things like this, quit the app, reopened it, and... it didn't work. Because, of course it didn't work. Why would following the instructions WORK, when it's so much more of a waste of time if it doesn't? I'm so glad they made this so complicated. This is so much harder than if they just had a place in the preferences to enter custom CSS, and, who doesn't love things to be as hard as possible?

Edit: After googling, I found

Workshop » Works In Progress » Writing Works in Progress

Mike’s Rules Of Design

This is a scratchpad for jotting down the various design rules I use, mostly as I run across violations.

1. No making people read hieroglyphics for core functionality

Somewhere along the way, a lot of people picked up on Steve Jobs's worst idea and ran with it: User interfaces should emphasize looking like something that would look "cool" in a movie, rather than focus on usability. Icons, which were originally meant as a visual cue to help you quickly distinguish functions without having to read text, became monochrome, uniform, abstract, unhelpfully difficult to distinguish from each other, and descriptive text went away so you couldn't know at a glance what they did, leading to millions of man-hours wasted mousing over 20 buttons in a row trying to figure out which one was the "import" button. As a design language, icons went from unique and identifiable to the visual equivalent of…

Workshop » Reference Section » Grimoires » IT » Applications » Web Browsers » Plugins » uBlock Origin

A uBlock Origin custom rule to hide “Related Videos” (and more) on YouTube

If you're like me, you loathe and despise the toxic mental ordure that YouTube often plasters up and down the right side of each video page, such as POLITICAL DEMAGOGUERY in MIXED CAPS to PIQUE your OUTRAGE enough to KEEP YOU WATCHING YOUTUBE instead of doing something PRODUCTIVE! [insert thumbnail of someone looking amazed here.]

At a certain point, I started to notice that there was more likely to be things I didn't even want to know existed in that section than anything I actually wanted to see. So, I added a simple rule to the uBlock Origin browser plugin that hides that section of the page:

[code]!https://www.youtube.com www.youtube.com###related[/code]

And that's it. That's all you need to add. No more "related videos" section.

While I was at it, I added a rule to block the "suggested videos" thumbnails that appear at the end of videos, by…

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

Detect SYN flood slowing down server with netstat

If the web server is slow, detect a SYN flood by netstat -ant | grep :443 | grep SYN_RECV to show the IP addresses leaving it hanging. Hint: If you're behind a reverse proxy, and that shows IP addresses that aren't the proxy's, then your IP is being hit directly. To find out how many IPs are hanging, do netstat -ant | grep :443 | grep SYN_RECV | wc -l. If you do it a few times and the number is increasing, you may be under attack. If it's over 100, that's suspicious, but manageable and the server can usually handle it, especially if you have SYN cookies activated. If it's over 1000, you're under attack.

Visual Art » Generative Illustrations » Interesting Leftovers & Bonus Galleries
Bonus Gallery: Museum Memories Extra Images

Bonus Gallery: Museum Memories Extra Images

Here are some additional images I created while working on the featured image for March 2026 Indieweb Carnival piece "Museum Memories".

Article syndication: Fediverse

Home, News & Info » Social Web / Community Features

Webmentions (disabled)

Incoming webmentions are accepted by the site's back end but not displayed as of 26 April 2026. Details to follow.

The short version is, I had a lot of problems with the implementation of the webmentions plugin. It relies on comments being turned on, and the site's WordPress theme formatting and displaying them, which in the current theme shows them with virtually no useful information... simply a box listing that a webmention has been received from a given domain, with no indication of its type or content... having meaningless boxes plastered across the bottom of my pages doesn't do anything for me. At some point I would like to participate in webmentions, and hope to eventually make whatever theme modifications are necessary to have them displayed usefully and properly. Right now, though, with regrets, the technology is not in place to do this easily yet, and while I…

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

Automatic SQL tuning recommendations with mysqltuner.pl

Run this on the server for sql tuneup recommendations to my.cnf.

[code]wget http://mysqltuner.pl/ -O mysqltuner.pl perl mysqltuner.pl[/code]
Home, News & Info
Mike’s Blog

I'm a hog, and you're a frog: Mike’s Blog

Blog Intro

Yes, here it is! I have started a blog page for thoughts a little too timely to be perserved as articles but a little too long-form to be spewed in Indieweb chat.

Nothing on this site is open for public comment because I don't want to deal with spam, but for now, if you have your own website and are set up to send webmentions to reply to anything here, these posts accept them, with my manual approval before they're made public. We'll see how that goes. But, either way, it means I have finally rejoined the social web for real.

As this page will be my social nub, for now, please direct any site-wide webmentions to this page, https://michaelkupietz.com/blog/. The homepage doesn't accept them.

Blog Post Categories

Workshop » Reference Section » Grimoires » IT » Applications » Web Browsers » Plugins » uBlock Origin

Hide comments from blocked users on Reddit with uBlock Origin

Reddit collapses comments from blocked users so you have to click to read them, but does not hide them.

Add this custom rule to uBlock origin to completely hide comments from blocked users.

! https://www.reddit.com - hide blocked user
www.reddit.com##shreddit-comment.relative:has(.text-neutral-content-weak:has-text(Blocked User))

Workshop » Reference Section » Grimoires » IT » Platforms » MacOS » Apps

Things That Don’t Get Firefox To Start Loading Pages Again When It Decides It Doesn’t Want To

Firefox as of v 148 (actually a bit earlier than that, but that's what I'm on right now) frequently decides not to load pages anymore. You enter a URL or click on a link and get the status message "Waiting for [URL]..." and you can wait as long as you care to.

When this begins, your only choice is to restart Firefox.

Here is a list of "solutions" to the problem from around the web, which I have tried and found do not fix the problem:
• Turning off DNS-over-HTTPS in Firefox Settings
• Flushing MacOS's DNS cache.
• Going to about:networking and clearing Firefox's DNS cache
• Going into about:config and changing network.dns.disableIPv6 from false to true
• Opening in "troubleshooting mode" or disabling all extensions
• Turning VPN off
• Turning VPN on

Workshop » Reference Section » Grimoires » IT » Troubleshooting log

Playlist shortcodes not working in Chrome because Lightspeed cache is set to defer jquery

Long story short, I got a message from a user that audio playlists were working in Firefox but not Chrome. The Chrome console had an error that "jQuery" wasn't defined, but typing jQuery into console did show a function definition. Turns out, in Lightspeed Cache's JS Delayed Includes, I had entered the word jquery by itself on a line, with a note to myself that something was causing a browser flash if I didn't do that. But removing this made the playlist shortcodes work on Chrome again. Ergo: don't defer jQuery.

Workshop » Reference Section » Grimoires » IT » Platforms » MacOS » Apps

iOS Shortcut to dictate your shopping list into Reminders.app

I uses this shortcut to dictate my shopping list into the iOS Reminders "Shopping" list. It breaks spoken lists on the word "and" to create separate shopping list items.

So I might run the shortcut, say the phrase "pickles and hot dogs and mustard", and it will add "pickles", "hot dogs", and "mustard" as separate checkbox items to the Shopping list in Reminders. It's handy for rattling off my shopping list as I'm staring into my fridge.

Obviously you need a list called "Shopping" set up in your Reminders app.

This shortcut executes the following steps:

  1. Dictate text - listens for spoken input. Make sure set to '''stop listening after pause'''.
  2. Split Dictated Text by Custom and - splits the text into a list with "and" as the delimiter
  3. Repeat with each item in Split Text - begins the loop that adds…
Workshop » Reference Section » Grimoires » IT » Platforms » MacOS » Networking

SSH into local mac, error “WARNING- REMOTE HOST IDENTIFICATION HAS CHANGED!”

SSHing into a local MacOS machine at address "macbook.local", I suddenly got this:

[code]@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY! Someone could be eavesdropping on you right now (man-in-the-middle attack)! It is also possible that a host key has just been changed. The fingerprint for the ED25519 key sent by the remote host is SHA256:oKCEu3pDdq7xBhSPZwOzR2q0eWTvfphtvn3D4Bjz8v4. Please contact your system administrator. Add correct host key in /Users/username/.ssh/known_hosts to get rid of this message. Offending ECDSA key in /Users/username/.ssh/known_hosts:147 Host key for macbook.local has changed and you have requested strict checking. Host key verification failed.[/code]

The solution was to run ssh-keygen -R macbook.local then try the ssh again. Then it asked me whether or not to accept the key, instead of rejecting it:

[code]$ ssh username@macbook.local The authenticity of host 'macbook.local (fe80::1890:fd32:c304:69cd%en0)' can't be established. ED25519 key fingerprint is SHA256:oKCEu3pDdq7xBhSPZwOzR2q0eWTvfphtvn3D4Bjz8v4.…
Workshop » Reference Section » Grimoires » IT » Platforms » MacOS » Apps

Xbar/BitBar gives “Couldn’t Posix Spawn” for script.

Apple's quarantine system can cause this. Try

[code]chmod +x com.apple.quarantine /path/to/script.sh xattr -d com.apple.quarantine /path/to/script.sh[/code]

In my experience only the xattr is needed but the chmod might help and couldn't hurt.

Workshop » Reference Section » Grimoires » IT » Platforms » Web » Performance/SEO

If CSS animations cause a layout shift during rendering, even if they’re on compositable attributes

If CSS animations cause a layout shift even if they're on compositable ettributes, look for clip paths, overflow:hidden, or css filters on them or their ancestors.

Workshop » Reference Section » Grimoires » Trading Education Notes » Explainers, Definitions, & Terminology

Put Options or Collar Can Reset Your Short-Term Capital Gains Holding Period For Stocks To Zero, Or Worse

It's a bit complicated, but under IRS Title 26, most* positions which combine normal stocks and options on that stock which hedge or lower the risk of losses are considered a "straddle" for tax purposes.

https://www.law.cornell.edu/cfr/text/26/1.1092(c)-1:

(a) In general. Section 1092(c) defines a straddle as offsetting positions with respect to personal property. Under section 1092(d)(3)(B)(i)(I), stock is personal property if the stock is part of a straddle that involves an option on that stock or substantially identical stock or securities.

Stocks or options held longer than 12 months may be subject to lower long-term capital gains tax rates. However, if certain option positions are purchased on a later date than the stock, but within the initial 12-month period, this resets the stock's short-term holding period to begin again from zero on the day after the option positions are closed.

So if you hold a stock for…

private » Programming Hacks Used In This Site
Algorithms & Old Lace: LLM Poisoning For Personal Websites

Rage Against The Machine: Algorithms & Old Lace: LLM Poisoning For Personal Websites

Private AIs: They're Watching You

Last year my friends in an Indieweb meetup began to notice that information about them was turning up in LLMs... some comically inaccurate, some uncannily personal. As a group of personal website developers, we knew that much of the information must've been scraped of our website.

It might not be apparent reading my site, but I've always been a little careful about what information I allow about myself on the web. It's near impossible to prevent personal information from leaking out, and my name is unique enough that I'm not hard to find. I had an unfortunate incident with an online stalker a number years ago and since then have always been careful. I also once had a real-life harasser who broke into my home, although that was a much different and more complex situation. But together these made me aware that…