Social Media Immune System

For years, we have all been exploring the new frontiers of social media, sites like Facebook, Twitter, and the Fediverse and I’ve been thinking about a way to improve life on every social platform.

I like to think of it as an immune system for social media. Curated and shared blocklists. It should be rather easy, just a checkmark box on the other person you follow, or maybe they encapsulate their blocklists, like how it is done in Mastodon on the Fediverse. Click on a user, then click on their shared blocklists, pick which ones you want to follow and then poof, all the users on that blocklist are simply gone.

Blocklists can be for anything. Name them anything, trolls, twats, asshats, or even foreign state actors. Before this, I think folks were very hesitant to even think about this because it will lead to social media balkanization. We’re beyond that point now, giving regular folk the benefit of the doubt simply isn’t going to be possible anymore. We need new ways to banish and shun, as shame has died in our world. This is the natural response to shame going extinct. Nobody is ashamed anymore, and as such, they are wretches that run amok, and so, we need new leashes to yoke them and drive them out of our social worlds.

Just imagine how lovely life could be, without Russian trolls trying to pitch misinformation to sow discord and division amongst us, amongst everyone. This sharable blocklist would effectively push them all out of open windows to the pavement below.

Obviously the walled-garden platforms really don’t want this, because it would actively subvert their algorithm which is designed to be as provocative and enraging as possible, so we really can only look to the Fediverse for innovation like this. In the meantime, one way you could do this and help-yourself is to always write a post about who you blocked and why. It’s not as immediate or convenient, but the time is right for us to stop communicating with each other, because there is absolutely no point in mixing or even acknowledging them. Drive them out, ignore them, and leave them in the dark. It’s the only way to save ourselves. Full throated balkanization.

Testing XMLRPC Hacks

Testing XMLRPC Hacks

Since the Gutenberg editor is such a slob, we can try Ulysses out. As expected, Ulysses doesn’t have any of the issues that the online editor has, no matter how quickly I type into the keyboard.

The real trick will be to see if the xmlrpc hack that I had to perpetrate to get Ulysses WordPress part to function still works. I bet it doesn’t, and so the new workflow to WordPress will likely just be copypasta, as usual.

Lets get ready for disappointment! Huzzah!

PHP 7.4.10 and JetPack

A while back I vainly tried to heed the warnings in Site Health, some vague mumbling on about PHP 7.3 and below being whatever. Yeah, okay, so off to the hosting provider.

Punch the PHP to 7.4, which turns out to be 7.4.10. While this satisfied Site Health, it broke JetPack. So I chatted up the hosting providers technical support, some vague mumbles about something called ctype, and it looked like it worked. But it didn’t. Still broken. But this is a dead blog that nobody reads, so who cares?

So, on Mastodon I found a developer who mentioned something about WordPress 6.2. So I wondered if there were other updates to be had. Gutenberg got updated, and editing in WordPress is as unpleasant as usual. So that’s at least comforting. It also turns out that JetPack also updated. There was a brief flash of the old bug, where JetPack refuses to authenticate to WordPress.com, but a click on the Authenticate button seemed to work this time.

The editor, Gutenberg, has a curious anti-writer quality about it. It’s sluggish, I can type way faster than the computer can register the keypresses. So I can write out text, quickly typing away, and then go to the bathroom while Gutenberg struggles with putting characters on a screen.

It’s not really a huge surprise that this blog is dead. Writing is unpleasant. Ah well, PHP 7.4.10 appears to be working at this point, so this sad experience can end. Gah, WordPress. It was free, and you get what you pay for.

Burner

Ever since I started working for an SMB my relationship with my desk phone has devolved into nebulous loathing. The device by itself is fine, and functions as it should, for as functional as any telephone can be. It’s the way that other people treat it that leads to my blazingly strong hatred for the entire technology.

My work line is an oubliette. Anyone who has watched the movie, Labyrinth, knows full well what an Oubliette is, and that’s my voicemail account at work. There is no limit to the number of callers, most of them salespeople. The problem with telephones is that for many organizations, especially big ones, their phone companies have elected to trunk calls to random Direct Inward Dials, DID numbers so that you get random calls from somewhere oddly close to you. So, for example, a salesperson trying to reach me from Cisco, for example, calls in and the DID is from Dowagiac, Michigan. Sure it is. So, because DIDs aren’t reliable, dependable, or even honest really, the fact that there is a Caller ID is meaningless since the data throughout the system is GIGO. A little aside, GIGO is like sludge and wine, if you have a barrel of wine and you add one tablespoon of sludge, then you have a barrel of sludge. If you add a tablespoon of wine to a barrel of sludge, you have a barrel of sludge. Much like everything else, a tablespoon of GIGO makes the entire experience crap. Because you can’t tell when GIGO hits, or when it doesn’t, or even what is GIGO and what isn’t GIGO. So it’s all crap. So, I have a DID for work, and I can’t use it. because it’s been “Lost to Salespeople”. So then I had a clean DID for my cell phone, until one of the fine-and-respectable companies I do business with sold the number to a directory and now I get endless calls from my cell. So, I turn on the “Silence Unknown Callers” option, and if you aren’t in my address book, then my cell phone DID is a dead duck.

I faced an issue at work, I needed to get support for a thing, and so I thought to myself, what number could I give them? And I didn’t have anything. I couldn’t give them my work DID, because I don’t answer it. There’d be no point to offer a number that you won’t pick up on. I can’t use my Cell DID, because they come in on random DID inbounds and none of that is saved in my address book. Their calls would be silenced and tossed.

So, because people are generally just vaguely wretched and dull creatures, we have to turn to an app, I picked Hushed. For $47 a year I can rent random DIDs to use, DIDs safe enough so that when they do get a call, I can just pick up, because I know that the inbound caller isn’t a salesperson looking to run their high-pressure sales techniques on me.

So we invented this lovely technology, then we ruined it with our greedy perversions, forcing us to spend even more money to cope. We can’t have nice things, because, people. Obviously.

So if you are in IT, and you’ve lost your DIDs to the ravening horde of salespeople, maybe look into burner phones or apps like Hushed. Things will be fine until we exhaust the pool of DIDs that the provider has. LOL. At some point in the future, I can see salespeople just calling random numbers, because you don’t know what DID your prospective customer is using because they were trying to cope with the burden of escaping from you. And the cycle of wretchedness continues.

Oh Winlogon, Where Are Thou?

I logged into my “before to this point” trustworthy Windows 2012 R2 Server that I have nicknamed Sierra, it told me that I didn’t have rights to the D: drive as the domain administrator. Okay, so I can fix that by getting to the console, brought it up on TeamViewer, and it was a featureless black box. Nothing to connect to, nothing to command, “Send Control-Alt-Delete” did absolutely nothing.

So next stop, plug into the actual VGA console on the server and plug in a USB keyboard and mouse. I verified that the keyboard was alive, it toggled Caps Lock and Num Lock properly, tried Control-Alt-Delete, Control-Alt-Backspace, and Control-Alt-Esc. Nothing. Featureless. Except the local console was a dark blue screen and the monitor was not in sleep mode. It was registering a video signal, nothing but a blue screen. Heh, not a BSOD, that would have been something ROTFL.

I tried to connect to the file shares on the server, that wasn’t a problem, so I knew the server was at least alive. The front panel didn’t show any alerts, so the CPU, RAM, and Array were also just fine. The only problem was, no ability to logon to Windows!

I was able to remotely connect to Event Viewer from the Primary Domain Controller, which helped. There was an error, Winlogon recorded an error event type 6000, with the error: “The winlogon notification subscriber <SessionEnv> was unavailable to handle a notification event.” and then that started a Google search for ways to correct it. Every response was the same, reboot. I really can’t do that, the server has thousands of files open, there has to be another way.

I then connected remotely to services.msc to the troubled server. Nothing there looked promising, no references to Winlogon or any of that. Then it occurred to me that Sysinternals tools might be useful. I ran pslist \\ip-of-server and scanned the output. I spotted winlogon running, noted its PID, and then tried pskill \\ip-of-server winlogon to no positive effect, but I had the PID, so I tried that too. The moment I issued the command, Windows restarted winlogon, I peeked around the corner at the server console and there it was, the time and the entreaty to press Control-Alt-Delete. I don’t know what caused winlogon to crap out on me, but at least the fix was easy. I got logged into the shell on the server, and it is running idle, nice and normal.

So if you have a server like I do, and end up with a mystery blue screen and no way to login, look into downloading the pstools kit from Sysinternals. It saved my day!

Heartstopper Ramble

I wrote this comment to a Facebook post in the group Heartstopper Netflix. I was on a roll and couldn’t stop.

Here it is for my blog readers to enjoy. And yes, I really have left this blog go to seed. It would be good for me to write in it more.

Here’s the comment…

I’m a 46 year old gay man, 25 years partnered and I welcome you to our wonderful world.

This group is an oasis of the coolest most understanding and kind human beings on Facebook. Maybe the show drew us together. Maybe it was fate.

Heartstopper touches us all. For me, I see myself as Nick and Charlie, a mix of both, and I also feel parental too. I feel supportive and protective over them, and every episode I fall apart watching them, all of them.

I only wish that people feel the openness and magic of this wonderful work, so they can explore themselves, reinvent themselves, and feel brave enough to stick out your chin and declare your truth.

The narrative of Heartstopper is the gift, for me, a story that shows that there can be love. It can start with ardor, agape ardor, affection, infatuation, crushing, all of it.

But more, there is no instance at all of overwhelming sexuality. It redefines being gay for me, yes, at 46, that I can feel love and it doesn’t have to start with fumbling libido racing to win everything. I can be gay and like someone, and feel that grow into romantic affection.

The lack of tedious tropes and the blazing honesty of this work is a lighthouse for all LGBTQIA+ human beings to steer towards a safe harbor we never noticed before.

In a world where awful seems broadcast, there is this island of hopeful wonderfulness, in all of you. Heartstopper gave us a lot, so so much. It gave us a narrative, it provided us new permissions we never dared afford ourselves, and it created a fandom that quite literally carved a platform of awesomeness out of the tempest that surrounds all of us, that seems endless. This is a safe place. To feel our truth, to feel like all of this isn’t a waste heap.

I love Heartstopper. I love it’s message, and I love what it is doing to all of us. Every one of us. Changing us. Helping us. And the more I think upon it, maturing us. Maturing me. At 46 and giving myself permission to feel something I never dared feel before.

I feel brand new again. And I feel like my old Daddy self as well.

This show makes me cry. It feels good. Somewhere between a blessing, a benediction, a baptism, and a cleansing.

It’s making me a better gay man. It’s making me a better human being.

Shortcuts 4: Location Aware RTM

While adding items to my shopping list this morning to Remember The Milk, my favorite To-Do App, it occurred to me that I could maybe make a Shortcut which leveraged Location Services and RTM together. Often times I’m moving from place to place, especially on Saturdays to do grocery shopping. RTM is very nice to use, but it is slightly annoying to have to navigate to specific lists when you get to a new place. RTM does have a Nearby option, but I haven’t really noticed it until right before I started with this Shortcut, so this could just be extra-on-top of what RTM could already do.

This Shortcut begins with the Location object from the Location group.

I looked at all the output from Location and for my needs, Street seemed to be the most useful.

I used the If object from the Scripting group. Chained together, one inside the next.

If Street contains your home street, then Open RTM from the Apps group with the “View Today” object.

If Street contains your work street, open RTM from the Apps group with the SmartList “Today At Work” (I created this SmartList, it’s all the tasks in the Work context, due Today.)

This theme keeps going, I go to Costco, the street there is Century Ave and my local Meijer is on Gull Road in Kalamazoo Township, near where I live.

Each time I call this Shortcut, it will poll Location Services, then figure out where I am and then open RTM right where I want to be.

Shortcuts 3: Coffee Timers

Every morning I prepare my coffee using my grinder and AeroPress. Usually I resort to using Google Home to provide me two timers, a twenty second timer for the grind, and a thirty second timer for the brewing. Most mornings the Google Home is fine, but sometimes the Google Home gets profoundly hard of hearing, or won’t stop the alarm, a whole host of irritating behaviors. So I thought, maybe I could get a Shortcut to do this task for me, some tapping and a convenient run of the single-shot iOS timer per task. Here’s how I got it to work:

I created a new Shortcut, starts with “Show Alert” from the Scripting Group. The phone waits until I measure out my coffee beans to grind. Once this alert gets a tap, it calls Clock from the Apps Group, runs a timer for 20 seconds, then opens the Clock app, which shows the time count down there, and the script itself waits 20 seconds for the timer to expire before moving forward.

The next task is to “Ask for Input” from the Scripting group, “Ready to Brew?”, when the tap is Yes, which is the default, the Shortcut returns control back to Shortcuts app, then opens Clock again. This was oddly necessary because without Shortcuts getting a shot at the foreground, it just wandered off, functionless.

The next task is to start the Clock timer for 30 seconds. If the user taps anything but Yes to “Ready to Brew” the Shortcut ends.

I already used this particular Shortcut this morning and it worked delightfully well! I didn’t have to have a screaming match with Google Home, and the phone behaved pretty much as I wanted it to.

iOS Shortcuts 2: Automation

On the heels of the first foray into Shortcuts with iOS, I happened to stumble across a suggestion in Shortcuts Gallery, that seemed to suggest that the phone could perform functions if it discovered itself in a particular environmental situation. Specifically, When AndysiPhone connects to “Mazda” and pointing to Bluetooth connections themselves. I poked around in this suggestion to learn there was an entire “Automation” section that I had completely glanced over.

I lease my Mazda CX-5, best car I’ve ever owned, by the way, and so I have a strict limit on the miles for the vehicle. Every morning when I use the car, I record the mileage so I can track it. Originally this was on pen-and-paper, but then I moved it into a text file, and after that, to Google Sheets. Then I discovered the Notes widget in IFTTT, and for the longest time I would call on the Notes widget in IFTTT, type in the mileage, and then hand it to IFTTT to add the mileage I entered, along with the date and time, to my Google Sheets. This worked well, when I had the presence of mind to remember to fire off the IFTTT widget, that is. Then after I had my first foray into Shortcuts, I discovered that my phone could recognize when it connected to my Mazda’s Bluetooth system. That event is the perfect trigger to ask for mileage! I knew that IFTTT was still good to help me automate Google Sheets, but I had to reconfigure how IFTTT worked so it would work with Shortcuts and not IFTTT’s own Notes widget. Here’s how I did it:

In the Automation section of Shortcuts, I created this. If the “When” section is met, the “Do” section executes. In this case, it’s a Shortcut.

The Shortcut begins with a “Ask for Input” from the Scripting group. Ask for a Number, because all I care about is mileage, and I only want a handy number entry pad.

Next I went to IFTTT, created a WebHook which is linked to my Google Sheets Mileage Intake Log. The WebHook is called “mileage_log”, and the key is a private string that you get from the WebHooks documentation in IFTTT. The Text object lets me configure the URL with the mileage added after “?value1=” at the end of the URL.

Then I set a variable based on the text in the Text Object, so it can be used as a variable moving forward.

Next is to grab the “URL” object from the Web group. I feed it the variable from above, which is really just making my phone emit a WebHook call to IFTTT with my mileage in it.

Next I use “Get Contents of URL” from the Web group to fetch the response from the WebHook call. I’m looking for “Congratulations” in the response from IFTTT.

The Text object is set to get this response from IFTTT, and there is a trick here, you need to set the type of the data for the Text object as Text, not URL, or anything else, it takes a long tap to find this hidden setting. Tricky…

I next used the If object from Scripting group. Here is where the trick gets you. If you don’t change the type of data that If receives, you will only get “If there is something” vs. “If there is nothing” and that’s it. What you want is “If A contains B” and the only way to get “contains” is if the input data is text! So here is where we evaluate the IFTTT WebHook response, find the “Congratulations” in the output, and then using the “Show Notification” from the Scripting group, I pop up a little alert showing “Success!”, then the If ends, and the Shortcut ends.

So now I won’t have to remember to hit a IFTTT Widget button when I start my car in the morning. The Bluetooth itself will be enough for my phone to notice and ask me for my mileage, and then pass everything to IFTTT, so it can add a timestamp, and pass that onto Google Sheets.