Subfolders
Latest "Workshop" files
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 » Applications » Web Browsers » CSS

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…

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

Enable PHP 8.4 in Apache on Debian

According to the installer, to enable PHP 8.4 FPM in Apache2 do:
a2enmod proxy_fcgi setenvif
a2enconf php8.4-fpm

private » Programming Hacks Used In This Site

War And Precedence: Plugin positioning of unpositioned elements that aren’t yet positioned by later-loading stylesheets: A CSS Odyssey

So, I had a crazy problem. You'll notice that there's various draggable elements on this site... such as the "Kupietools" plugin tabs seen at left, the occasional "the site is being worked on right now" notices that pop up, etc. You can drag them around with your mouse.

This is done with a plugin (also available as a standalone javascript module, a few versions behind the plugin as I write this) that retrofits code onto various HTML elements by giving the plugin the classnames it needs to make interactive.

I was doing some optimization on the site loading to speed things up, such as getting WordPress to load a lot of CSS file late so as not to interfere with initial page load stats. (This is a whole art, beyond the scope of this article.)
Suddenly…

Workshop » Reference Section » Grimoires » IT » Platforms » Web » Email setup)

Resolving cloudflare error “The number of lookups on your SPF record exceed the allowed limit of 10. This will result in emails failing SPF authentication”

I got the error "The number of lookups on your SPF record exceed the allowed limit of 10. This will result in emails failing SPF authentication" in my Cloudflare DNS dashboard.

My spx record for, say, kupietz.com was "v=spf1 include:_spf.myEmailHost.com include:kupietz.com ~all"

Turns out, the problem is, every include can get parsed to be multiple servers. the include:kupietz.com apparently causes a recursive loop, creating more than 10 lookups. I updated it to "v=spf1 ip4:[my server's external IP address] include:_spf.google.com ~all", removing the recursive lookup, and adding my server's IP so it can send me administrative notices.

Also today my ISP changed my IP address unexpectedly... all DNS updated.

Workshop » Reference Section » Grimoires » IT » Platforms » Linux » Packages » rsync & rsnapshot

How to backup a WordPress site via SSH

To make a complete local backup of a remote WordPress install over SSH, you need to perform two distinct steps:

  1. Download the files (using rsync).
  2. Export and download the database (using mysqldump piped through ssh).

Here is the step-by-step guide.

Prerequisites
  • SSH Access: You need the username, host (IP or domain), and password (or SSH key) for the remote server.
  • WordPress Path: You need to know where WordPress is installed (e.g., /var/www/html or /home/user/public_html).
  • Database Credentials: You will need the database name, user, and password. (I will show you how to find these below).
Step 1: Find Database Credentials (Optional)

If you don't know your database login details, run this command to read them from your remote wp-config.php file: ssh user@remote-server.com "cat /path/to/wordpress/wp-config.php" | grep 'DB_'

Note the DB_NAME, DB_USER, and DB_PASSWORD for Step 2.

Step 2: Download the Database (SQL Dump)…
Workshop » Reference Section » Grimoires » Trading Education Notes » Hypotheses to be tested

Size Down

I heard an interview with a trader (https://www.youtube.com/watch?v=1ETvTftY-tw) who never takes a trade that he is not willing to accept a complete loss on. I'm thinking about that PLTR protective bear spread that I sold when it was halfway to a $600 loss,, and price moved so it would have ended far in profit. By his philosophy: I should have halved the profit, not done that. I got greedy. His way of thinking is I should have taken half the size spread instead or not taken the trade at all. But I don't know, because it was protective... I was trying to protect against a loss. (Actually I should have used a collar.) In another video, this same guy said "Stop swinging for home runs. Start stacking small trades." Which fits.

He said "I only enter trades where if it goes to zero, I'm still good." He's limiting…

Workshop » Reference Section » Grimoires » Trading Education Notes » Hypotheses to be tested

Get Really Good At One Thing

Everybody seems to say this. For me it could be the strategy I've been working on paper trading lately. But everyone says lack of focus will cost you.

Workshop » Reference Section » Grimoires » Trading Education Notes » Hypotheses to be tested

Patience

You need patience. You can't say "I don't want to wait, I might miss the trade." You wait for confirmation and then only get in if you didn't miss the trade.

Lack of confirmation doesn't mean you're not wrong. Nor does confirmation mean you're right. But being right by not waiting for confirmation will cost you. You can't fomo the money you miss by doing this.

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

Open Interest

Open interest in options is how many live contracts are currently held.

Larry Williams points out that when there's a lot of open interest, there's nobody left to buy. It's not necessarily bullish. In fact it depends whose interest is open—institutional is bullish. Retail is bearish because they don't know what they're doing. https://www.youtube.com/watch?v=Qp6S0Onz_iw

Workshop » Works In Progress » Writing Works in Progress » The Five-Ingredient Cookbook

Easy Good Fake Custard

A favorite snack of mine—feels like junk food, but not too bad, filling, and super-easy.

Take about 12oz vanilla yogurt. I use cream-top full-fat yogurt.

Add a couple of splashes chocolate extract. You have to be careful, unlike real chocolate, more chocolate extract is not better... it's a little tart. Ideally I suppose you could just use unsweetened cocoa powder, I'm particular to the Hershey's unsweetened dark cocoa, but the store over here has been out lately.

Two reasonably heaping teaspoons of coconut flour.

Mix it all together really well.

And that's it! The coconut flour gives it rich texture and a nice flavor, which combines well with the chocolate and vanilla. I like to eat it with a very small spoon, so I can savor it. It's not that much like custard, but, it manages to hit enough of the same notes that it's a pretty…

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

Trading Thesis

Traders refer to a "thesis" a lot. I've come to believe this is just jargon for a hypothesis. "I think it will do this".

Workshop » Reference Section » Grimoires » Trading Education Notes » Options Trading Mindset

Options Are For Strong Conviction Trades

I got some advice recently that I liked: options are for strong conviction trades. "I think this might work" is for shares trades, not options.

"This is working as expected" is when you keep an options trade open.

"This still has a chance it might work as expected" is when you close an options trade. Maybe reopen a smaller position with shares if you absolutely have to gamble.

Pretty much, I'm thinking, whenever you think "It still might..." it's time to close the options trade. The thesis is broken.

Workshop » Works In Progress » Writing Works in Progress

Haikus

Haikuity

This would be haiku,
But it only has two lines.
Oh, wait — nevermind.

This is a haiku.
You can tell because it's, uh,
not everything else?

This, too, is a hai
ku, even though it's labored
I still got it right.

Someday maybe this,
too, will be a haiku, dude,
but it just ain't now, man.

Ere, now I follow
the plain footsteps of Basho
but without his skill.

Indieweb Haikus

Occasionally I visit the Indieweb Chatroom when nobody is there and leave haikus.

the lone web dev sighs
soft, in the empty chat room
indieweb haiku
  8/9/2025

The empty chat room.
The placid textarea
bears no hacker wit.
  11/20/2025

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

Starting a temporary instance of N8N accessible via IPv4 over the local network

N8n by default binds to localhost, and even binding it to listen on all interfaces, it still by default listens only for IPv6. You also may want to tell it to not use the Secure Cookie if you don't want to set up an SSL certificate or sign up for their cloud service. Make sure you only have it reachable on the local network if you do this, you don't want to open your instance to the entire world.

N8N_SECURE_COOKIE=false N8N_HOST=0.0.0.0 N8N_LISTEN_ADDRESS=0.0.0.0 npx n8n

Remember to open port 5678 on the machine's firewall if necessary.

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.

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…

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…

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

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…

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,…

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…