I’m giving up on Apple HomeKit

My setup for Apple HomeKit was an iPad, a HomePod Mini, and my personal iPhone. The iPad was where I would configure Shortcuts > Automation > Personal Automation, which would light up Bluetooth and play playlists. My goal was to replace my Amazon gear as my home alarm clock. The Amazon Echo system started well, but enshitification happened, and I removed all that gear from my life.

The HomeKit solution mostly worked, except when it didn’t. The iPad would, once in a while, simply register an error instead of doing the automation task. It can be a real bummer when your alarm clock doesn’t go off. I lived with the poor behavior because it only happened every week or two or so. But I had a nagging feeling that long term, this is not going to be acceptable to me. Computers can be reliable, and I’m not willing to pay Apple’s price for an Apple TV. I think I confused the Mac Mini with the Apple TV; the Apple TV is about the same price as what I went with later.

Speaking of which, I’ve abandoned the low quality competitor, too: my Roku Ultra is powered off and headed for the scrap heap.

The thing that kicked my ass into gear on abandoning HomeKit was the most recent upgrade of iPadOS. I forget if it was 18.1 or 18.2, but after the upgrade, all my playlists were empty. The MP3 files are still on the iPad, but the playlists I’d programmed into Apple Music were empty. Would I like to add my music from the Apple iTunes store? Go kick rocks. I copied the MP3 files to the box for a reason.

So now I have a choice: recreate the playlists on a box I don’t think is going to work out in the long run, or, start over on something new.

I chose to start over on something new.

Nicely enough, my brother gave me a great Christmas gift last year: the Morefine M8S N100 Alder Lake PC. My brother specifically looked for one of these because a reviewer he listens to said this small form factor PC is one of the quietest boxes with active cooling, and specifically is Linux compatible. I wiped Windows off of it and installed Manjaro Linux, just like my main desktop. The HDMI on it drives my television (monitor) and I use Bluetooth to connect to the soundbar.

As mentioned in the Home alarm clock: no progress post, I’m not having success running it headless. So why not go whole hog in the other direction? I have a work-around: turn the display panel off. I have to use the TV remote to pull up the menu which lets me power down the display panel. If I want to see the screen again, I use the remote. Other than that, the Morefine M8S is a normal Linux desktop driving a television set, and the television set never turns off (well, the electronics driving the tuner / HDMI ports, at least). This also lets me use Rumble as a YouTube replacement, with a wireless mouse and keyboard from my bed. But I digress.

I’m using KAlarm to run commands on a schedule. The commands are:

vlc --intf dummy /path/to/music/playlist.file

And so far, it hasn’t failed to play an alarm yet.

A bonus feature I didn’t expect: the alarm music sounds better. Of course it does, an iPad playing an MP3 to a soundbar doesn’t do 5.1 stereo; but Manjaro on the Morefine M8S does know how to send that type of stream over Bluetooth. My guess is that Apple was nerfing the MP3s in favor of AAC from the Apple iTunes store; I don’t know. But I do know that the new setup simply sounds way better.

And a future bonus feature will be that I could write a Perl script to replace the contents of the .pls or .m3u files if a desire for variety should strike me.

The only downside has been that the HomePod Mini is now kind of useless. It was nice, having the automation on the iPad to be able to play something in either the soundbar in my bedroom (mornings and evenings) or the HomePod Mini in the living room near my main PC (lunch break times).

I am going to flash a Raspberry Pi with Homebridge, but I don’t know if that will let me send a VLC stream to the HomePod.

Still, I have a great setup for watching Rumble or such while I fold my laundry, listen to a podcast to fall asleep to, and I have faith that my alarms will no longer fail me.

I am glad that Donald Trump won a second term as President of the USA

It was obvious that the 2020 election was stolen because of government interference – censorship – with the Hunter Biden Laptop story. There were some photographs on that laptop which would have put Barack Obama in an extremely difficult position, were he to be asked if he still supported Joe Biden for president. Hunter (Joe’s son) was enjoying corrupting Barack’s daughter – does Barack still support Joe for President?

No matter how Barack answered the question, the Democrats would have lost ten to fifteen percent of their voters. That would have made the election a landslide in favor of Donald Trump.

There was all loss and no win for the Democrats if that question got asked. To avoid that question being asked, our government colluded to censor the Hunter Biden Laptop story during the election.

I remember friends trying to share that story via Twitter and via Facebook, and their attempts to share were denied. These two companies have1 become censorship tools of the deep state. Google has since joined their rank.

But Julian Assange got it right: as Trump was forming his new government, he got hustled by deep state wolves in MAGA clothing. In Donald’s interview on the Joe Rogan podcast, he made the point that it is really difficult to know who to appoint. With a lot of the candidates, there isn’t a visible list of accomplishments. You really don’t know who is going to be good in a position. There are an influx of partisans telling him who to appoint, but they aren’t necessarily trustworthy either.

I am hoping that here in his second term as President, that Donald Trump nominates Ron Paul as Director of National Intelligence, and tells Ron that he can fire anyone he wants, and still have full support of the presidency. I personally think that the CIA should be decimated2, and hope that Ron Paul would be willing to do that. Doctor Paul might be a better fit for being over the Medicare department, because he is a medical doctor, and he has decades of experience fighting government largesse. So perhaps Edward Snowden should be pardoned and then made Director of National Intelligence. I’d like to see someone in charge who was bothered so much by how our intelligence agencies have strayed from their path. Both Doctor Paul and Edward Snowden fit that bill.

Another hope I have is that Donald Trump appoints Robert F. Kennedy Junior as Secretary of Health and Human Services, which would put him in charge of the FDA. Make America Health Again is a wonderful idea – probably the best idea. It could also make sense to put RFK Jr. as Secretary of Agriculture, since this position is over the Forest Service, and RFK Jr. is an environmentalist. Secretary of Agriculture is also in charge of food inspection and safety. But I think he would be best for our country directing the FDA to become a protector of the public instead of stooges for the pharmaceutical industry and the processed foods industry.

I am hoping that Donald Trump appoints Tulsi Gabbard as Secretary of Defense. I’d like to see Tulsi as our first female president. I actually wanted her as Vice President, but I admit that JD Vance was a great pick. Because Tulsi was active military and deployed to the Middle East, she has real-world experience in the horrors of war. That’s the Secretary of Defense I want. I also think that were she Secretary of Defense, when it comes time for JD Vance to pick a Vice Presidential running mate, Tulsi would be a perfect fit. That would then set her up to be our first female President.

I want our first female President to be someone honorable, not someone who slept her way to the top.

Another Cabinet pick I would like to see is Elon Musk being appointed as Secretary of Transportation, if only to get smart cars running on smart roads, quickly. It seems to me that this will be one of the best environmental moves; reducing as much as possible the amount of fuel used to transport food, goods, and people.

Of course, I’d also like to see Elon appointed Secretary of Government Efficiency. This position doesn’t exist (yet), but it should.

Although I think that Jack Welch destroyed General Electric by instituting a yearly rank-and-yank firing policy, I do think that the entire US government would benefit from a rank-and-yank performed at least once, and probably once per decade (randomly). Because Jack Welch pitched the idea to do it yearly, it destroys the company it is implemented in. But once in a great while? Yes, I can see how it would be good for an organization. Especially for government where it can be so difficult to fire bad employees.

Anyway, I am happy Donald Trump won the election. I know that there is still danger that the deep state will try to assassinate him before he takes office. But at least now, JD Vance would then become President, and he seems like the kind of guy who would not be cowed by the deep state. If an assassination of Donald Trump happened, I think JD Vance would prosecute whomever for treason with zeal to the fullest extent of the law.

  1. “Had” in the case of Twitter, because it was rescued by Elon Musk. ↩︎
  2. The term decimated has a specific definition: the Latin deci means “ten” so after decimation one out of ten are left. 90% gone, 10% left. With that, the CIA will be too busy to do their warmongering treason and censoring treason and could only focus on information collection actions. ↩︎

Factorio: Space Age

Maybe my problem with Factorio: Space Age is that I’m playing it wrong? I’m old, which means my brain runs slower than these young kids. This was the problem I have with Rimworld: it assumes I have a young brain, and severly punishes me for not being fast enough. So then the only thing I can ever do is lose the game, over and over again. Rimworld is not fun.

Congratulations to the guys at Wube though. I saw a post where Steam reported 100,000 simultaneous players this week. That’s $3.5 million income in one week. Two to three years of programming work is paying off. Good on them. 🙂

I’m having trouble because this new Factorio seems to be growing biters at a much faster rate. I’ve never been good at killing biters, they overwhelm me quickly and then I’m dead. So my strategy has been to build up a defensive wall around my base. Now I’m taking too long to do that, and it is not good.

So now I’m trying game46. Let’s see how this goes.

Here’s a jumpstart iron miner and smelter:

0eNqdlNtugzAMht/F16FqIDTAq0zTxMHrIoGDknRbVfHuC616XNpSLp3In3//lr2Dqt1gbxQ5KHagak0WircdWLWmsh3f3LZHKEA57IABld0YVRtDaKJOkaJ11BjVtjAwUNTgLxR8YE8J1mnC6NNzyhovcuPhnQGSU07hQco+2H7QpqvQePhDEQx6bX2uprGy58mEwRaKKI19jUYZrA+fYtR4g45P6B+tG6So/kLrAsx0kR6pi3QIkJJbkYosGue//sPEFexKZBxAizsW3u98GVKYnjDOlGR7bVxUYfu42+WtwJCLqxd6P6N52Ej5Aiw5wkQWhmVzpiLyKVPJZ9i5l/nUTr6cg84nofksQ7IphvDJy3QemxzH5td/fymKi9PE4BuNPdTKuJB5LOVKcBlnw/AHrQGN8Q==

My favorite coal jumpstart rig Early Coal Mining Rig:

0eNqdl91uozAQhV8l8jWJbOMfzH0v+wTbqiKJVVkCg4yzahTl3euUlTaNIHjmErA/jg8zzMyF7NuTHYLzkdQXcrTjIbghut6Tmrw0oT1vOued/9wc+m5o7dfuzZOCuEPvR1L/uZDRffqmve2N58GmTS7aLq3wTXe7iqHx49CHuN3bNpJr2uqP9ovU7Fqsbt6fgrdhOwnYHoNr2zsCv74XxProorOTlp+L84c/dXsb0iuWVBRk6Ec3HfJCEmqryp0syJnURuxkesXRBXuYFvCb0Acyx5BlIs+wSgCLg1SKp0bO4Se4mpMpATIpSKYCkBmIrKEG0CcGVPkyZQWSaQBkAyIzCnRAVk8cYICEkuo+7H8JFXNojkGLLDQgwaSG2Ssw/wE1/x9gEgPTCzD1+OGdH22I6dmzrNJZhmoIm64prQC0/+Gfp9RA2NWKUk4xMaqy6gmDCFVrQjmEpkGWckg2SRhaYNAqC43KrWrBXoWBmQWYxpT/KuvQFQZtHtFqDm2glZX9o6/LLsE1y+SzGZSt89kcE74m50uWqKTLCpJSIIKEUbrQy0pELzfRVmOuVIgONJetES1YLhvTOOayDaK3yWQLTLnLZTNEQM+wxW0E/JkZ67s5tiBtk2Dp3uuv0XVDWXr214ZxKsQVE1oYrTSjSqaO9xt1u+Xz

So the next step is to start generating electricity via steam. This now opens up Red Science. But of course, to transfer electricity, I need copper for wires.

Here’s a science lab I like:

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

This sushi belt science blueprint does have a problem: if I run out of a science pack, the belt can freeze because it fills up. If the only science packs within reach of the inserters are fully stocked within the labs, no items are pulled,: thus the belt contents don’t move. The solution is to stand on the underground belt and scoop up everything (draining the belt) and then put the scooped up contents back inside the storage chests. When logistics robots become available, the wooden boxes can be replaced with requester chests. I also added a combinator on/off switch – that will be good for later, but in the early game before I have combinators, I need to manually turn off the inserter control.

For creating science packs to send to the labs, I like Tileable Science – Early/Mid Game v0.17 by Christoffer Ramqvist however, the green science blueprint (where I am supplying gears on my own) has an error, so here’s the corrected version:

0eNq9W0tv4zYQ/isBTy0g7YqU+DLQcy+99bgIAtnROkJlyZXk3QaB/3spubGdWKPMjJ0ihzCM/M2D8w2H1PhFLKtdsW3LuheLF1GumroTi28voivXdV4Nc3W+KcRCVM267PpyFXersqhXRbzNV3+JfSTK+rH4RyzkPpr4VNk2dbwu8jb++VQU1dnzan8fiaLuy74sDiLHP54f6t1mWbQBMHoF6du87rZN28fLoupFJLZNFz7W1IOgABU780VH4lkstP2ig4jHsi1WhweyQa13yIqAnJGQUwKyJiFnBGRFQtYE5JSEbAjICQnZHpG7bVX2fZibwJSvmO5jRIfX1TqSrp6A7EnIMiFAWxr0iX27wNd23TbhNwg+w79I9M/bMRXU210vpmQpkqwMIavZ9ZCwE0WHXNfndR+vms2yrPO+mYoiq+fkBYy+baqHZfGU/ygDQPhUd/h/93YcEtxrpozE97IKMft+djbTRuLvXR5iPWgi6qbdhDQ7iN9s83bUfCF+Gyd2QyaX+/vws5+y/5RI8q4rNsuqrNfxJl89lXURq9lE5UcHBPPL7ZyehwceLtSd0kZz0tqgxxSY4YA5FB3OEk4wpYqLKjzeBtu3TVXMZkpI2VPCKeuuaIEUloJqSjWF6s+iKKzrUx6C6zGek5CQHKESqiOSDxyhJDUgT/n39gGpFJseRt1em5S8nK8BYxLUcnLKCiOBleSQedRzCsyQ+DHq9DE/lCWoKD9S0XHAIOd5lL0JuLyT9qYJDRXnxZRP2U8gSar4JElRRX3Kiet0ep1TFuMUAKbZ6R5puuGEOKQti3yQHx0/Uevbx6Dnx2CGOv4lnLDR077LJAcsA8AUtzQC1Uv5UY1zZsYJRMh+zQGDTDfc8gpEtPxcfXueZFew1t1eG8/hgZ12tGYx1ABgklb9GNS+rRUN1eJQUw4BIMNZ1ISWRNOqH6QXDQ0V6cUreHp7ZmjH38886tKRRT3gCGlY1HMAmOTvPijTjeKEOKQti3yQH/l3Q1bePAaNZsegRR1+Dee+yALnN2M5YMDJ0jhuTQWqx78YwjnTJoxAhOy3kgMGmG4Vt6YCEVN2rv4EntgrWJvdXhtNqjGsQu2OlnYbZFMcKouzwIHUOg4YcFS2tNsgpBddwk8CqOsCx+It4APH2Seh1XFXUPb2JHEZ6v2lOsgHTnaOyDSNWkFacXsJOh14nJsfCxy4Hf8Mae3bpbxQhrKGnArWAscef2Lm97zrcUUO7rjiJbuWAI5VnkVMyPIUb3kCWj753j1j7/uQ4ZqfRN5F3pmZhJjzhvKm/NgVY/1lpCBelXuLXxoNinJTyA6PnNGQWaz0uJerCeecaR1Gb5mQGi5OHJ1bWrjjIlEM1iFfQSecIykanHM/ZKF38IkmOT25jk8yMWivHzuBcGEvEzxXTzkJCe1YrUBsJ3mSOHsdEc5aqCi9R1xpktt8dCnwk5qPDptkU4dtclW2q13Z36zzSCpGR6fDveiWMuWASyR4RsoTekZ3DAVIXVGaaothdL+iwS0HPEHlIUnKQ8f9d3YRZqjqGW2x2GBVCQccuI2SivM6F7uiitScedxyuaGvOMUD2paM0ZCMBtcccFzoK1Ldf9zgmaFPaZI61ino0HcccDD0PaNtG7uiKae9GuuHVHLAsZorVsnGJe1ZgxRJnGSKy1g1G5MNqeZJkzxphlshXpr3SRXi+6/03Ko8PGsPo5ou/0/Tt1XeFzyr7yPxMyg5oH8LpZKOQiGg76PDOFPjeJiKMjOOh6k3Y+MO4zAV2cPzw9SbsZfjeJiKfDaOh6nDOGhQ9sUmqHf63lckqjyEc5j747+r7bs/D1fbd8GxX7u7X34fVnsM2l/D0z+Cf0Yva6N85r3OZKaUlPv9vwztoXg=

This newest map has all four mineable resources clumped together. I used to hate these because mixing ingredients causes trouble. But with Factorio Space Age, every inserter comes with filters from day 1 – so I don’t have to research filters first. This means I could use Autotorio to blueprint a massive drill field, and then sushi-belt my way into four streams: coal, iron, copper, and stone.

I’m going to use 4 Ore Sorter v2 by Reece Silba fed into a couple buffers by Buffer 1B – [Two Middle belts][Ore buffer] by Shade Centurio:

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

Out of the ore sorter, and into a snippet of Smelter Book from by Noel Puldon:

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

I like Main Bus – Belts & Pipes – Tileable by Alex however, the grid settings are off. I’m using a 100 x 100 grid, so something at half that isn’t great. I ended up creating my own version that fits within a City Block.

City Block:

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

And the beginnings of belts and pipes for the City Block:

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

My plan is to put my mall and non-science assemblies on the right side of my bus, and science assemblies on the left side of the bus.

For a mall, I both like and dislike Modular mall by pletiplot,

What I like about it is that it is modular, and if I were going to build a mall by myself, this is the style of design I would use. Pletiplot credits Rahbek with the initial design.

What I don’t like about it is that it uses interleaved red and yellow belts. I cannot simply point the Upgrade Planner at it and switch out yellow for red, or red for blue.

But I really do like the modularity of it. There are a couple of tweaks that need to be done to it for Factorio Space Age: the recipe for medium electric poles now needs copper wire, where before it copper plate (for example).

But I like that I can set up a modular iron gears factory, feed those onto the bus, and then as the need for gears grows, I can add capacity to the gear factory, without having to re-do the mall, or add another gears segment to it.

I was watching PoisonTaco on Rumble play Factorio: Space Age, and maybe I shouldn’t be doing a mall at all.

Manjaro fresh install – oof, things changed

I’m playing the new Factorio Space Age game, and so far I like it. One thing that has bothered me though is that it is not as smooth on Manjaro as it was on OpenSuSE. So I went looking for tweaks to fix things, and even get to a point where gamemode doesn’t work (cannot adjust CPU speed), and that may be due to a missing BIOS upgrade. Wow, talk about going down the rabbit hole.

Previously, I would install an OS, then mount my second hard drive as /home, and reboot. With this process, all the software I install later is pre-configured: they already have their config files in place from the previous OS.

One of the changes I made was to switch from legacy BIOS mode to UEFI BIOS mode. So I thought that a complete fresh installation of Manjaro was the best chance for success.

I did install some software prior to mounting my second hard drive as /home.

Things went pretty well, except for one thing: Manjaro uses Z shell (Zsh) instead of bash. Man, Zsh broke a lot of the terminal I use (Konsole).

When I tried to uninstall Z shell in the package manager, it barked at me with “removing zsh breaks dependency 'zsh' required by manjaro-zsh-config

Okay, I uninstalled manjaro-zsh-config first.

Then trying to uninstall Z shell barks at me with “removing zsh breaks dependency 'zsh' required by manjaro-kde-settings“. Sigh. This will likely get rid of more than I’d like it to, but here I go….

Although I have successfully uninstalled Z shell, my terminal key bindings are still all fucked up. The <home> key doesn’t take me to the beginning of the line; the <end> key doesn’t take me to the end of the line. Sometimes the <end> key inserts a tilde (the ~ key).

Logged in as root, this sets me back to (a) default:

cat > /etc/inputrc << "EOF"
# Begin /etc/inputrc

# Make sure we don't output everything on the 1 line
set horizontal-scroll-mode Off

# Enable 8bit input
set meta-flag On
set input-meta On

# Turns off 8th bit stripping
set convert-meta Off

# Keep the 8th bit for display
set output-meta On

# none, visible or audible
set bell-style none

# All of the following map the escape sequence of the
# value contained inside the 1st argument to the
# readline specific functions

"\eOd": backward-word
"\eOc": forward-word

# for linux console
"\e[1~": beginning-of-line
"\e[4~": end-of-line
"\e[5~": beginning-of-history
"\e[6~": end-of-history
"\e[3~": delete-char
"\e[2~": quoted-insert

# End /etc/inputrc
EOF

Bad news is, I’m still getting nothing for the <home> key, and a tilde for the <end> key.

And I cannot tell why. Clearly, something other than /etc/inputrc and ~./bashrc are at play here.

I did get switched to Wayland, instead of X11. Factorio does seem smoother now. That is what I really wanted.

A web page, scrolling quickly (Firefox on Amazon), did spontaneously crash to reboot. Oof, that’s bad. Thankfully, I didn’t have anything else running which suffers from catastrophic failure of a spontaneous reboot.

Turned off IPv6 in parts of my systems

I wanted to title this “IPv6 still not viable” but really this is a complex problem of spam, my hosting provider Linode, Comcast, and Spamhaus.

My hosting provider supplies both IPv4 and IPv6 on every machine I spin up. That was fine, until it wasn’t.

I run my own mail server. I’ve been doing SMTP mail for twenty years (more, really) and I am careful to not let anyone randomly relay through my server. I even had to shut down comments on this blog because script kiddies were abusing the new-user-signup process to annoy random people with new-user-spam emails. That was months ago.

I’ve done my due diligence and have SPF and DKIM set correctly. I regularly check with https://www.mail-tester.com/ to make sure everything is still good, and I routinely get a score of 10 out of 10.

Yet, recently Comcast has been refusing to send my email to my friends, because of Spamhaus. Spamhaus says the IPv6 range I am in is populated by spammers.

Linode must have (or had) a customer who was a spammer in the same data center I was in. So in a large part, my problem stems from Linode. I can understand that Linode might have a new customer who tried setting up a mail server, botched the anti-spam part of it, and legitimately got put on an anti-spam list or twenty, including Spamhaus.

Apparently, Linode puts everyone in a data center in the same huge IPv6 range using something called SLAAC. There are Linode community posts going back nine years about Comcast blocking email because Spamhaus and Linode cannot agree on the correct sizing of a customer’s address space within a SLAAC addressed network.

Spamhaus refuses to pick and choose which addresses in the range are violators – it just blocks the whole range.

So I am getting blocked by neighborhood association.

I don’t know if this is Linode’s fault for making the range too large, or Spamhaus’ fault for not being granular. Or if it is Linode’s fault for not policing the spam behavior of its customers. No matter: I can’t email my volunteer service friends the monthly reports, meeting minutes, or even personal email if the email goes out over the IPv6 address.

So the IPv6 network had to go.

It is done.

And it was not easy. My mail host now whines about not being able to get Ubuntu updates. I want to move it to Debian anyway, but this rushes that project.

And here on my home network, things really didn’t work right, with IPv6 present here but not working on the mail server out in Linode lan(d). Thunderbird was throwing a hissy fit for a few days. So then I had to reconfigure everything here at home to be IPv4 only. That was a lot of work.

But at least at the end of it, if a service like Comcast (or anyone else) puts me on an anti-spam list, I’ll only have the single IPv4 address to get unblocked.

I kind of feel bad. I have a friend who is a huge proponent of IPv6, and he now works for Google, and probably one of the things that got him hired was the advocacy work he did for this cause. And I like the idea of IPv6.

Here’s a mild tangent: way back when, Novell had a networking technology called IPX/SPX. For addressing, it used a 32 bit chunk concatenated with a 48 bit chunk: the first 32 bits were the network address and the last bits were from the machine’s MAC address. On local networks, it was speedy, and didn’t use a lot of memory, which is why many LAN games ran over it. Some of my most fun ever was playing Command & Conquer: Generals with my sons over IPX/SPX.

As the Internet was taking off, it was clear that TCP/IP in IPv4 was the way everyone was connecting their local network to the Internet. IPv4 could do NAT (network address translation). In fact, it required address resolution protocol (ARP), which made it slower than IPX/SPX. Some people at Novell went to some working group, and suggested that the Internet could carry IPX/SPX traffic too: they got laughed at. “No, we’re not going to add IPX/SPX to the Internet”. (The NAT problem was solved in IPX/SPX networks with gateways).

Anyway … care to guess what the IPv6 address space is? Could it happen to be 64 bits for the network address and 64 bits from the machine’s MAC address?

Yes, as a matter of fact in substantial ways, IPv6 is IPX/SPX grown to 128 bits. And people like it because it is speedy. Everything old is new again.

Firefox temporary containers fix

about:addons

Temporary Containers > Disable

Try the operation again; this time you’ll get still the wrong container, but at least the URL is in the location bar. Click the Firefox Multi-Account Containers icon in the extensions bar, and choose “Always open this site in …”

Temporary Containers > Enable


Unfortunately, there isn’t a way (at least that I can tell) to edit which websites are to be opened with which containers. The only way to change the map is via the Firefox GUI. This leads to broken behavior.

What I’m saying is that I cannot simply open a file and type in a host.domain combination into the “Always open this site in …” database or policy or JSON or whatever.

For example, I want a particular type of pant clothes hanger. Amazon has a hundred different items with the cheap plastic clip which breaks when I try to hang denim. They have a single item where the clip that supplies the leverage on the clamp is metal. When the fabric is thick, like denim, the plastic clips snap like dry twigs. So I want the old-fashioned metal hangers, only.

But I’m not going to pay Amazon’s stupid price of $7 per clothes hanger. Go kick rocks, you fools.

Okay, so eBay is the answer. I found what I wanted, they came in at $2 each: great! I want to sign in to pay.

Temporary Containers says that’s a nope.

Here’s the deal: I was able to add signup.ebay.com to an assigned container. It was the first site I was on, and the webpage patiently waited for me to sign in, so I could click the “Always open this site in …” menu item.

Similarly, I was able to add www.ebay.com to the same container. But I’d never been able to get to pay.ebay.com added, because to get there, you have to authenticate, first, and then be redirected in. The password login website was in the correct container, but pay.ebay.com was not. And because it was not, it didn’t get the cookies required to prove that I’d typed in my password correctly.

Because I’d never been able to visit pay.ebay.com, I’d never been able to add it to “Always open this site in …”

I can’t get there because it opens in the wrong container. I can’t add it to the right container because I have to get there first. It’s a Catch-22.

To me, the best answer would be for me to be able to edit the list of which host.domain pairs get mapped to which container. It kind of kills me that I can see which domain Firefox is trying to redirect to: pay.ebay.com. I can copy it to the clipboard; where can I paste it in? Ugh: nowhere.

Apparently manual edits are not at all easy, because containers have ID’s, but the policies that move webpages there don’t track the ID’s, or something like that. All I really know is that this has been a problem for a really long time, and the plugin author has said that this is a more difficult problem than one might surmise. I can believe that.

So the answer is to temporarily disable the Temporary Containers plugin, and then do the management of Firefox Multi-Account Containers. Hence, the quick shortcut to get to Firefox extension management.

Anyway, my high quality, old, hangers at $2 each are now on their way. 🙂

Ballot Measures: Just Vote No

If it was such a great idea, your representatives would have voted in favor of it, passed it, and then told you how great they are for getting it passed.

The only reason the ballot measure is being put in front of you is because when given the opportunity to put their name on it, your representatives shuddered at the idea and opted-out.

If this terrible idea passes, it’s your fault, not theirs.

That I am aware of, there was a single ballot measure that was a good idea: California’s Proposition 13 of 1978.

Prop 13 limited the taxes that the government could collect, so zero representatives were going to vote in favor of it: it had to come from the voters and be put in front of the voters. Governor Jerry Brown was warning everyone ahead of the election about what a disaster it would be, if it passed.1 It turned out to be the best idea ever.

Why was it the best idea ever? Because it limited taxes to a stable metric: property values. Before Prop 13, collected taxes were highly variable both by time and location. After Prop 13, Sacramento knew with high precision how much money was going to be coming in.

That didn’t stop the bureaucrats from spending foolishly; but it did remove the excuse that they overspent because revenues fell short this year. They overspent because they wanted to overspend.

Anyway, when your ballot has measures on it for you to approve, and they aren’t a grassroots movement to limit government reach, just vote no.

  1. After the election and it passed with an overwhelming majority, Jerry Brown tried to claim he was in favor of it all along, adding evidence to the old adage: “How do you know when a politician is lying? His lips are moving.” ↩︎

Proxmox copy of WordPress virtual machine – changing the siteurl

I’ve gone into Proxmox and cloned a WordPress machine to a new machine. I configured DNS and DHCP to assign a new host name for the machine; now I need to get WordPress to understand that too.

Because WordPress stores the site URL inside the database, this means running a MySQL query.

The problem is that the old WordPress site (because that is what is in the new machine’s database) keeps telling Apache to serve up the pages from the old machine. So everything on the new machine will need to resolve at https://tratest.example.com but because WordPress is going to its database to find out where everything is, as soon as the page loads, it tries to go to https://aawp.example.com

That machine is powered off in Proxmox, so obviously nothing works.

Can’t really use any tools inside WordPress to do the search-and-replace, so I need something outside of WordPress. I generally do not install phpMyAdmin, because 1) it is extra work to configure Apache to serve up a different website just for this one function, and 2) that becomes just one more place a bored 14 year old might try to break in. If I don’t need it, why put it out there?

So let’s try some MySQL queries from the command line.

UPDATE wp_options SET option_value = replace(option_value, 'https://aawp.example.com', 'https://tratest.example.com') WHERE option_name = 'home' OR option_name = 'siteurl';

Nice! I did a restart of Apache, and now the new machine at the new domain name serves up the content from the cloned machine. I know that this worked because the old machine in Proxmox is still powered off.

There are also several other changes I made:

  • hostnamectl set-hostname tratest.example.com
  • edited /etc/hosts and copied the 127.0.1.1 entry to 127.0.2.1 and added the new host name, per Change host name and domain
  • edited the Apache .conf file in /etc/apache2/sites-available/ and replaced the ServerName entry

WordPress sucks, issue <whatevs>

Out of nowhere, every time I clicked on a Gutenberg block on a draft post (my Quarterly Inventory post) I’m getting “This block has encountered an error and cannot be previewed.”

The solution is (apparently) to disable every plugin – oh hey looky there: the error went away – and re-enable them one-by-one.

Yay.

I’d so rather being doing this than making progress on how to update a WordPress site URL after cloning in Proxmox. Not.

AND OF COURSE, NOTHING WAS WRONG

Grrr. I’ve now re-enabled every plugin, and Gutenberg is fine.

Apparently, the code base on WordPress is so good that one just needs to disable every plugin and re-enable them once in a while.

Quarterly inventory – 2024 Q3

Dear FutureMe,

Today would be a good day to do a quarterly inventory.

How is your personal life going?

How is your work life going?

How is your Volunteer Service life going?

Future me

Personal Life

Not really a whole lot going on. I have flat feet, and so when I recently got to be Master of Ceremonies at a volunteer service event, I wore my nicest shoes, but all that time in them injured my left foot something fierce. Here a week later, my foot still hurts.

I’d injured my foot several weeks back. My son had told me about Hoka shoes, and indeed they are like walking on marshmallows. Between them and keeping my foot elevated while sitting, I’d recovered. But then I felt the need to dress as sharp as I could for the event, and I re-injured my foot.

Yesterday I was rather depressed. That shows up rarely, maybe two times in a quarter, but it was present yesterday.

I had a ton of fun about a month ago, migrating one of my volunteer service websites to a new host. I moved from Amazon Lightsail to Linode. I was thrilled that the move went so smoothly, so I did it again, this time to my internal Proxmox server, documenting the whole thing for that blog post.

Oh – and I gave up on OpenSuSE and moved my main machine to Manjaro.  Manjaro has been pretty good.  I wish the KDE tilling window manager script worked on it; although I can keep hitting meta+arrow to tile windows, it is kind of dumb that I have to.  This is a KDE problem, not a Manjaro problem – but because I did migrate, I also got the KDE “upgrade”.  That would have happened had I stayed on OpenSuSE too.

Work Life

If $34,000 dropped into my lap today, I would retire tomorrow. I did finally clear my retirement service credit buy-back. I talked about that in Quarterly Inventory 2023 Q2. It is done. Magically, I gained 6.1 years of service credit overnight. The better part is that it frees up $300 per month, which I need because of inflation.

We added a new product, Kiteworks, to replace a service that Proofpoint exited. So far, the Kiteworks company and support are terrible. Because Proofpoint has been going down in quality because of the sell-out to Thoma Bravo, I wouldn’t be surprised if the reason they (Proofpoint) recommended Kiteworks is that they got a kickback. I have zero evidence of that, but it seems to me like the kind of thing Thoma Bravo would do. Anyway, Kiteworks sucks: would not recommend. I’ll probably do a blog post about it later; but there are four problems:

  • The interface is somewhat opaque, and difficult to figure out where particular things are, when I need to change them.
  • There is no documentation. What documentation there is, is from three years ago when the service was vastly different: it in no way applies to the product today.
  • The implementation engineer didn’t explain to us what the effects of the choices were, so we deployed badly to 2,200 of 5,000 users. 5,000 users would have been blindsided with a surprise “what the hell?” situation, except that we caught it some 1,800 users in.
  • So … we’ve had a stable environment for several years now, we’ve deployed Kiteworks, and 1% of machines the Outlook Plugin is deployed to are now crashing randomly and silently, losing all work, … and your technical support is blaming Outlook? Repair Outlook and the problem will go away? Re-image the machine to a fresh image and the problem will go away? Y’all are clowns. How many sets of log files do I have to upload before y’all will start looking at the problem? The problem is Kiteworks Outlook Plugin. We did not have this problem prior to installing your program. If there were a virtual clue-by-4 I could deploy over the Internet, you’d be badly bruised right now.

I’m not really enjoying work right now. I’m thankful I have a good boss, though. He’s great.

Volunteer Service Life

I very much enjoyed being Master of Ceremonies at our Fall event. The speaker was wonderful. It didn’t hurt that he grew up and joined our fellowship 45 miles north of here. The whole event was great.

I don’t know if I’ve mentioned that this year I get to be President of the Board on our little 501(c)(3) here. That job title, plus $5, will get you a fancy coffee at Starschmucks.1

Anyway, it weighs on me that our finances are not sound. We previously had a member who contributed $1,200 per month to our Central Office, and he died three years ago. We’d gotten a $6,000 refund on taxes due to Covid-19 and keeping our employee on the payroll, so it looked like we had money. During Covid-19 a meeting started up in a shack, off-the-record, to avoid government interference. Well, last August, they hooked up a second air conditioning unit in serial (electrically) and then overnight the shack burned to the ground. People showed up for the 7:00 AM meeting to find smoke and embers. No injuries, thankfully. Well, that meeting contributed $300 per month, and poof, that’s gone. Between this and inflation putting the hurt on everyone, our Central Office contributions are not meeting our expenses. We’re going to have to fire or reduce the hours of our single part-time employee. It is depressing.

I’ve got another website, which hosts recordings of speaker meetings. Something in WordPress 6.6 caused it trouble, so I downgraded to WordPress 6.5. But now the login screen takes two minutes to complete. That box is on Ubuntu, and I’d like to migrate to Debian instead. So I need to do a migration again (mentioned above), but I also need to schedule that with the guy who does most of the uploads to it. I don’t have analytics running on it, either, so I don’t have a good feel for what days / times of day it is least used.

  1. I first read that joke in 1981 or 1982, in the Garfield comic, where Jim Davis was commenting on inflation. A cup of coffee went from 25 cents to a dollar at restaurants. Jon made some inane observation and Garfield replied with “that, and a buck will get you a cup of coffee.” When Starbucks became popular in the mid 1990’s I revived the joke with the Starbucks attribution. I still see it being used once in a while on Slashdot or Reddit. ↩︎