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
According to the installer, to enable PHP 8.4 FPM in Apache2 do:
a2enmod proxy_fcgi setenvif
a2enconf php8.4-fpm
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…
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.
To make a complete local backup of a remote WordPress install over SSH, you need to perform two distinct steps:
rsync).mysqldump piped through ssh).Here is the step-by-step guide.
Prerequisitesusername, host (IP or domain), and password (or SSH key) for the remote server./var/www/html or /home/user/public_html).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.
Oct. 11, 2024
Those who've spoken to me about it know that I, through much firsthand experience, call myself "a huge AI enthusiast and skeptic". Generative AI is an amazing technology that has personally benefitted me in ways that were strictly science fiction just a few years ago—but, lot of unmerited claims are made, and a lot of trust put in it that isn't really justified by the technology.
But then there's yesterday's article in Ars Technica.
As a technologist, there are times I remember seeing news articles that seemed to me to really show we've passed a technological benchmark, just things I noticed were the first time I saw things take a new step. This article was that.
The background is this: Google has a new AI called NotebookLM that, when fed material, generates a simulated audio podcast of two very stereotypical podcasters discussing it. I…
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…
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.
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.
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
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…
Posted for a friend, here's all the sets of images I generated working on "You Can Tuna Oddfellow, But….", from which the final gallery was selected.
November 27, 2018
I'm staying at my dad's place in Florida right now. I've been on the road for a few months.
It struck me this morning, waking up in Dad's guest room, that this past August I let the 25th anniversary of the day I first quit th' job and hit th' road—August 12, 1993—slip by, unremarked upon.
I realized it today because today is the 25th anniversary of November 27 of that same year, nearly as important a day in my personal canon. I slept the night of November 26, 1993 in my car in a rest area outside of Tacoma, WA, as I'd been doing for the better part of a week, and after my customary free cup of morning coffee courtesy of the local VFW post volunteers at the rest area, I headed over to the Last Exit On Brooklyn cafe in Seattle's University District, as…
These are some character studies I did of Tuna Oddfellow, the famous Second Life (and, increasingly, real life) alter ago of an old friend.
This is a bit of a long gallery, usually I'd generate a bunch of these and narrow it down to just the favorites. Haven't done that with this yet.
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".
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.
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.
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
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.
This is (almost*) the entire contents of the site, all articles and blog posts from newest to oldest, with preview excerpts.
*Individual movie reviews won't get posted on this page. I write too many of them, it would drown everything else out.
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.
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.
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…
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…
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
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/Export Cloud 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 ✔ ❌…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.
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…
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,…
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…
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…
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] // Override the open property setter to catch when…
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.