Quarterly inventory – 2026 Q1

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

The search for the best Linux desktop continues, and KDE and Fedora 43 continue to disappoint. In theory, the meta key plus the PageDown key will minimize all windows on all screens. Nope, only on the current screen. Also, where to configure that has gone completely missing in KDE Plasma 6.5.5 (KDE Frameworks 6.22.0). AI is worthless here, referring to menu items that don’t exist because they have been removed. This is on top of the elimination of KSysguard – I’m still salty about a favorite tool being removed because some developer didn’t want to be bothered with porting it to KDE 6. And of course, I still don’t like KDE for being bigots.

Signed up for Medicare

I had another birthday, and then promptly signed up for Medicare, because if I hadn’t, then I’d be fined for the rest of my life with higher premiums for signing up late.

I sold and bought some stock.

Back in July of 2022, I bought shares in Micron Technology, a manufacturer of memory chips. Unfortunately, I only had $250 in my stock trading account at the time, so I was only able to buy 4 shares. But I bought them at $60 per share. So recently I sold 1 share at $370, making the rest of the shares essentially free. 🙂

Similarly, I had bought 4 shares of Costco at $473 per share ($1,892 outlay). I recently sold 2 of them for $975 each, bringing in $1,950. The two shares I have left are essentially free.

Currently, I’d like to buy Corning (symbol GLW), Fastenal (symbol FAST), and Medline (symbol MDLN). Valmont Industries looks good too (symbol VMI).

A friend of mine who is in the trucking business hauling equipment to construction sites points out that 100 new cell phone towers were built in 2025 nearby. Cell phone towers and gear were still a growth industry in 2025, although the main cell tower company is forecasting a poor 2026.

Mom went into the hospital

The Kaweah Delta Emergency Room (ER) still has quality problems with their employees. Once a person gets to the rest of the hospital, their quality is quite good. I suspect that the ER staff burn out very quickly. She got back home maybe three weeks later.

Rumble video losing independent journalists

Two of the journalists that I subscribe to, to help pay for them to be able to do their journalism, have announced that they are no longer going to do shows on Rumble. I’ve been a fan of Glenn Greenwald, Matt Taibbi, and Walter Kirn for a while now. But Glenn has found the daily grind of a television show to truly be a grind. I can understand that. Matt and Walter disagreed on Matt’s choice to bring in more people to Racket News, so now the America This Week show is no more.

I’m bummed because these shows on Rumble were mostly the only “television” that I watched. I was also watching Scott Adams before he died.

It’s not that I would dedicate time to watching their shows, but rather that when it was time to fold my laundry, that gave me a good hour or two to catch up on the news.

I still like Russell Brand, so it is nice that he is still on Rumble.

Work Life

Goodbye, Proofpoint

This quarter, I have been made the lead on a project to eliminate Proofpoint and go 100% Microsoft: Exchange Online Protection (EOP) and Microsoft Defender for Office (MDO). I’m not a project manager; I’m an engineer. Stressed out and intensely disliking my work life is an apt description of January and February.

I am SO happy that I’m four months away from retirement.

Proofpoint was a great company in the early days. Then the owner sold out1, and the investors started milking the customers for money. Technical support got slow (but the premium prices remained). This last year, however, it seemed that the Proofpoint management pulled their heads out of their asses and support was getting better.

Alas, it is too late for my employer. They’ve spent a ridiculous amount of money “going Microsoft” and the upper management Microsoft fanboys wanted to show a little savings for the massive increase in cost. As I’m writing this, I don’t know how bad Microsoft will be compared to what we had when we had Proofpoint. I know that some loss of functionality is guaranteed. But I don’t know the size of the impact, yet.

The actual migration was a little painful, but not terribly so. If we’d had a real project manager and started the project two months prior, it most likely would have been flawless. We didn’t have the time needed for proper testing and careful examination of what we were doing, however.

We did get on an anti-spam blacklist for a week. One user spammed almost 400 people, and the email did not have an unsubscribe link. Also, our DKIM records were fouled up, and the consultant didn’t remind us to check that. We wouldn’t have been in this trouble if we’d been able to restrict the number of outbound recipients. Pouring salt into the wound: Exchange used to have a setting where the maximum quantity of recipients could be limited. They’ve moved it to a per-mailbox setting, which is a little painful when there are more than 7,000 mailboxes and 20 to 100 changes per day.

Work From Home

Oof. The management at my employer has (in my opinion) earned the nickname Dimmer Switch. “A metaphor for a manager who walks into a bright, productive room and metaphorically “dims the lights” until everyone is working in a state of apathetic gloom.”

Yeah, said management is demanding a stop to our work-from-home plan that we’ve been on since 2021.

I want to specifically point out that the manager I directly report to is a great guy, and in no way a Dimmer Switch. If I were to start my own company, and my business grew enough to need management help, I’d hire him away in a minute if I could.

But above him is a whole middle management class of Dimmer Switches. And they want their employees in the office where they can micromanage watch them. The amount of CYA actions that my coworkers are invoking has spiked.

I’ll have to put up with about a month of in-office-only work before I retire.

Renewal cost

My manager happened to be the person to authorize the license renewal with Microsoft: more than $3 million per year. When we were with Novell, it was one-tenth of that. Yes, Novell provided only 90% of what Microsoft does.

But hey, at least the director of my department doesn’t have to go to an IT director’s conference and get made fun of for not having moved to Microsoft. Your and my tax dollars at work, man.2

Volunteer Service Life

It was mildly amusing to me that eleven days into the new year, I received an email to Future Me from three years prior:

Dear FutureMe,

Last night Alberto was in the web site and he hit the Update button. I’d messed with file permissions so I could batch-upload the new format meeting schedules, so his update kind of failed because it couldn’t write to the file system. I got it fixed by 12:20 AM. Thankfully, today was … Meeting Minutes day, so I was off work, and staying up past midnight wasn’t really a problem.

If last night was the worst night I have all year, I’ll be a blessed guy.

I went back through my quarterly inventories for 2023, and indeed, it was the worst night I’d have all year. 😊

The Events Calendar (TEC) continues to vex

A problem is that the problem takes a while to develop. One symptom is that any of my users go to the calendar on the website, hit a button to scroll to some other month, but instead of displaying the new calendar, the throbber just hangs. Using debug mode on the browser (F12) I can see that something in the server is creating a 401 Not Authorized response when TEC goes to retrieve the next entries for next month. I don’t know what is doing that.

The other symptom is that any of my users go to the calendar on the website, hit a button to scroll to some other month, and the calendar reports that there are no events to display.

Immediately after troubleshooting (which involves disabling and reenabling WordPress plugins), the calendar will behave fine. Between one day to two weeks later, problems return.

A problem with all WordPress support is that they don’t do true support, where they set up a remote control session and you can see (and control) what they do. They only ask for the admin password to the website, do some black magic, and when it is done, you’re fixed but clueless. I find this appalling.

  1. For One Billion Dollars! ↩︎
  2. One of my favorite Ronald Reagan quotes is “Government is like a baby: an alimentary canal with a big appetite at one end and no sense of responsibility at the other.” ↩︎

Favorite Factorio blueprints

Steam tells me I have slightly more than 3,000 hours played. You could say I like this game. 😉

My favorite 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 by paelleon:

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

One nice thing with Factorio: Space Age is that all belts can immediately have a circuit connection: Read belt contents: Hold (all belts). This makes sushi belts way easier. Hence, my current favorite science lab setup is this:

0eNrFme1u2yAUhu+F36QyGPwR7U6qKCIOa9EcO8KkW1Xl3gfJ6kydac45mrZfpQg/Pny8h5PXb2zXn+zRuyGw9Rtz3ThMbP34xib3NJg+9Q3mYNma9WbHzpy5YW9/sLU484UxwZthOo4+rHa2D78Nl+cNZ3YILjh75V/+ed0Op8PO+sjjGQZnx3GKj41Dek9ErUr5oDl7ja3iQcdX7J233XWASlF9IEsEuUCRSwRZoMgKTpYNiqwR5BZFrhDkCkWuEeQaRW4QZIUitwiyRpFFgUDjpCIQKpQlDo2QocTJUCB0KHE6FAghCpwQBUKJAqdEgZCiyEuxWUIjtChwWhQN4QpI5CVWS2CJZZa86W06mL5f2T5Ow7tudRx7+1muzwQnbypzw2R9iJ2f3EU5ikSGNafGHLCEhDWn7hxFYcMq7wA1KKw7B0JWyLBmyeWANSSsOSfkKA1BqQIiVNkSyKAUUBYEbcnl+ZeUsq/MsG6CSKXqJ4rKBVPeAcxnPwdQ9wD3lkPfAcznKQegZP4StOs1gSxBZEreV5n5U/K+XmapAnqecgABPU85gISepxyghJ6nHEARdl1Ddl1pAlmByBXhDFSZ+dcEVp1hNdQ6IgdsUXVEDVk8XVCrikyQWqCqCliQklpj5IIsUTUGLEhFrThyQWpUxQELknJfwMiU+6ICkSn3RZNZ05Zg4TQfoxRyyQ4pCL4TEC0IJg4QLQnOExBdEmwcIFoRvCcgWhOMHCC6IrhPQHRNMHKA6IZgPwHRLcHIgaHrgmA/AdEClZfbP3IcZ904BD/22519Ni9u9Omhzvnu5MLWDmbX2z1bB3+yfO6Oj+znF3x1fgrbPx378clNId44U+fs0NnV0XTfkimfTP5gkuN/efnhaLwJ6bXsCzsv5claEswq4PKVBIttAf35Knpr9ttnM+zTwoUYwrSwoJf+69DDuLfpq8VSwAq03/W/329zCuPBpEF/Ycc1wej7r9tCKWWAR7QmHFGRsXzqhrCwV9iGs+8x1PT97FEWXHMpud7wazv+vLi0ZepXt3as6C9tlfqrW1v/erZK7ev4hHgfn/68j9HyNiZmO8mjZmVqq9SO2E2MzAV7iHO6fU3k7MX66TIbXclWta1uVCEL1ZzPPwHxFjSE

It is simply a sushi belt with (up to) eight labs. As I research a new science, I hook it up to the sushi belt with an inserter on an enable/disable circuit based on the count of packs on the belt.

I still like Tileable Science – Early/Mid Game v0.17 by Christoffer Ramqvist. So far, I haven’t created a base so large that I need to tile these production facilities. With that, I will reverse the output belt so the layout has inputs on one edge and output on the opposite edge. And then I can drop the parts that exist only to extend tiling.

If the resource fields are mixed, my favorite sorter is 4 Ore Sorter v2 by Reece Silba. That will feed into buffers: Buffer 1B – [Two Middle belts][Ore buffer] by Shade Centurio

And what to do with the ore? Out of the ore sorter and into a snippet of Smelter Book by Noel Puldon:

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

Which brings me to the point that prompted me to write this post. I need a better mall than Kitch’s Totally Practical Strip Mall – 3.0 (0.17 Update)

I really like the layout of this mall. I like the design. I like that it does not have interleaved belts. 3,000 hours in, it is my favorite mall.

However, it was created 7 years ago, and no longer fits with the changes in Factorio: Space Age. Specifically, three of the power transmission recipes now use copper cable instead of copper plate. This is a recipe change that makes sense to me; previously we were pretending that inside the power pole factory was a small copper plate-to-copper cable factory. Externalizing it is fine. A factory and a belt getting the copper cable output sets up a whole production line. Copper cable and iron bars should share a belt and feed medium electric poles and big electric poles.

But yeah, Kitch’s blueprint doesn’t (easily) have room for one more factory and one more belt. Sigh.

I’ve already got twenty small projects on my plate. Looks like I’m going to be adding another one. At least this one will be fun. 🙂

Microsoft Outlook Search is not going to get better

It will get better if you pay more, though.

It has been four years since we abandoned GroupWise, and I still get people who say to me, “Man, I miss GroupWise.” They know that I was the GroupWise guy for twenty years, so it is the obvious topic when I pass them in a hallway.

But still… they have a point.

I know that what they hate about Outlook is that search sucks. Randomly, there was even a meme on a website two days ago:

Outlook search is glaringly bad. You know the email that came in only a few days ago. You know a word in the subject line. You go into search, put in that word, and … there are countless results but not the email you’re looking for.

You try a different keyword, and the search still fails it. You try searching by who you think sent the message, and finally you find it WITH THE KEYWORD RIGHT THERE IN THE SUBJECT LINE!

(insert particularly profane profanity directed at its founders, its management, its programmers, and the horses they rode in on here)

GroupWise never had this problem. I know because I got to maintain the indexer. I had nightly jobs that kept the index up to date. The GroupWise search function was great. Once in a while, if someone’s mailbox had a problem finding things, I’d reindex the whole mailbox.

Fundamentally, Microsoft Exchange has a poorer design, which does make it tougher for Microsoft. Well, okay, if your product is crappier, it should be cheaper too, no? It is not.

And you, dear reader, who is being played for a chump by Microsoft, can fix this problem by just throwing a few more dollars per month at Micro$oft:

Copilot

Yes, if you pay for a Copilot license, it can ingest your mailbox. Then you use Copilot to find your email for you. It does so with ease.

Which goes back to the point: sure, what you paying for is shit, but why would Microsoft fix Outlook search when you’re going to be thrilled with the results after paying more for Outlook + Copilot?

I am certain this is what is behind the newly announced E7, G7, K7 license plans. Microsoft knows how to dangle the carrot in front of the hungry, and the hungry keep ignoring that it was Microsoft shorting them their rations in the first place.

World Ag Expo was light

I did my usual volunteer service at the World Ag Expo. One thing that was noticeable was that we had far fewer airplanes and jets fly into the airport adjacent to the show.

The guys in charge had also said that fewer people had rented booths for the show.

I did get to talk to a farmer about his business, and he was super impressed with the new robotic sprayers. In previous years, he’d have to hire a spraying job out. That could cost him $26,000. They’d bring out four sprayers and five people and get the job done in a day. One person would refill the sprayers, and the other four would drive the sprayers. However, this farmer is looking at buying robotic sprayers instead of hiring the service. He could be the refiller, and his wife could drive the robots from her iPad. Sure, the initial investment would be high, but at $26 grand a pop, it won’t take too many sprays for a return on the investment. And if he has neighbors growing different crops, he could spray theirs too, and help his own ROI while providing less expensive service for his neighbor.

I missed getting to look at the robotic platform that can lift a ton and haul 5,000 lbs.

I did think this weed suppression technology is super neat. It is a film that keeps weeds from growing, but it only lasts long enough to keep them from germinating. Then it biodegrades into food for microbes. I asked, and they don’t sell to retail yet, though.

New Year, new Microsoft fuckup

At work, someone else on my team is responsible for pushing out desktop software, and the decision has been to remove Adobe Acrobat and use Microsoft Edge instead. That’s fine; I agree with simplifying the environment and only installing Adobe stuff if one has a license because one’s job is creating or editing PDF files. The fuckup is that Edge notified me this morning of a new feature in Edge: “We’re picking up where you left off. If you don’t want this feature, you can turn it off in Settings”

Liars.

The settings button is right there – the icon looks like a gear – but clicking it brings up only “Pin toolbar”, “Hide all annotations”, and “View document properties”.

No, the document properties don’t control anything.

Even Microsoft Copilot doesn’t know where this new setting is. It says it should be found behind the three dots menu … and inside that, the gear icon for Settings, and inside that, the Cookies menu, but that is fruitless.

Mostly, I’m complaining about two things:

  1. Someone on the Edge team created a new gear icon for their random three settings, and QA didn’t reject it with “We already have a Settings section – put your stuff there!” No, they let the stupid design ship into production.
  2. By making the new option default to “on”, Microsoft is reinforcing what is wrong with them: “it’s not your computer, we will do whatever the hell we want because it is our computer.”

Perhaps the fuckup is that upper management at Microsoft has so emasculated their QA department that they don’t have the ability to prevent stupid from shipping into production.

And as always, someone at Microsoft did not conceive that their new idea might be half-baked. “We’ve created a new feature! Of course everyone should be inflicted with it!”

Grrr.

Once per week, our help desk system runs a report I created, and it sends out a file attachment with the exact same file name. This is a report and does not need to stored long term – it is a snapshot of what happened during the last week. There is zero reason to add a date to the file name and end up with 52 new files per year. The idea that a new file with the old file name is a different file apparently didn’t occur to whomever was pushing the new feature.

What I don’t want, is to start reading this document on page 17. This week is a new file, even though the file name is the same. Last week, I got to page 17 because that is where the summary finished and the detail began. This week, I want to start on page 1, because that’s where the summary starts.

I would like the ability to disable this pick up where you left off feature1, but that option appears missing in all the settings menus I could find.

So not only did Microsoft ship into production a duplicate gear icon with lame options, but they didn’t get the new option into the real settings. I cannot turn this new feature off.

I am so looking forward to retirement, when I won’t have to put up with Microsoft’s dysfunction.

  1. Microsoft, famously as I remember it, was the inventor of the phrase “It’s not a bug, it’s a feature” a.k.a. “It is working as (poorly) designed. Pray that I don’t design it further.” ↩︎

Quarterly inventory – 2025 Q4

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

This quarter gave me the opportunity to attend two weekend conferences out of town, and I enjoyed both of them.

I’m a little depressed because cold-and-overcast season is here again. I can see why people like living in the desert. I have relatives who live in the Pacific Northwest, on the coast, and man, that would be depressing nine months out of twelve.

A walk to remember

Mildly amusing, I needed to get some car work done, so I took it to the dealer I bought the car from. This is probably not the best idea because they don’t treat me as well as I would like. No matter, I dropped off the car first thing in the morning, went to a little cafe and got breakfast, and then texted a retired friend in town that I’m in town, and would he mind if I dropped by for a visit? He said, Sure, did I want a ride? No thank you, I’ll walk – I need the exercise; it will only be a 25 minute walk from downtown to his house.

I was about five minutes into the walk when the gastric distress kicked in.

I successfully did not poop my pants. Let’s get that said right up front. But man, it was an excruciating walk: go some number of feet, stop, pause, clamp down, and wait for the spasm to pass. Nowhere along the walk was a public park with a public restroom. I wasn’t going to walk up to a random house (if anyone is even home) and request to destroy their bathroom. Anyway, the mildly amusing part was that at some point, I paused, crossed the street, and paused again right behind a small pickup truck sitting in front of a house. I look up, and on the back of the pickup truck was a sticker that was essentially this:

 

(click the + sign to reveal the spoiler)

Thank you, God, for reminding me You have a sense of humor. 😉

Public sector Uber / Lyft

Another thing that happened is that I became miffed with the City of Visalia for using my tax dollars to play the big shot. Visalia Connect

You see, I have friends who supplement their income by driving for Uber and/or Lyft. I’m 100% in favor of people who want a side hustle getting out there and doing the work – in the private sector. I despise when the public sector tries to undermine them, because they are doing so with your and my tax dollars. If the city wants to spend tax dollars on police and fire, I’m 100% in favor of that. If the city wants to spend tax dollars on a bus system with fixed routes, okay, that’s not the worst spend of tax dollars. It’s not a great spend of tax dollars, but sure, when someone gets so elderly that they cannot drive anymore, that there is a bus system they can use is a public good. Walking would probably be better exercise for them, but sure, it’s not the worst spend of tax dollars.

But Uber and Lyft? Why the hell should the city be trying to compete with that?

WORSE – the City of Visalia contracted with a French company to provide the service.

You can barely make it out on the photograph, but the side of the van says “Operated by RATp Dev USA”. RATP Dev USA is the North American subsidiary of RATP Dev, the international arm of the Paris-based RATP Group that operates public transportation systems worldwide.

My USA tax dollars are enriching a French company to undermine local taxpayers trying to improve their lives with a side hustle.

What the hell

Microtransit is a luxury, not a necessity. Let the people who want to bask in luxury pay their own way at private sector prices. Let local people make some money. Let Uber and Lyft, both based in California, make some money. Don’t be taking money away from our local police and sending it off to Paris, France.

Cynical me thinks that really, some corrupt official at the City of Visalia pushed through the idea to get kickbacks. I have no proof of it, but it wouldn’t surprise me. We’ve had lots of corruption in other areas. But yeah, I wouldn’t mind seeing the officials and bureaucrats behind this tarred and feathered.

Amazon shopping this Christmas (not)

I did just about zero Christmas shopping with Amazon this year. Their “Black Friday” prices are not better value than the rest of the year. I did buy a large Christmas gift from Costco.

Personal mail server

For about nineteen months now, my personal mail server has been rebooting. I just replaced it with a different installation here the third week of December. I expect that it will be rock-solid now.

Way back when, I built it as a combination WordPress (this blog), Dovecot/Postfix, and Nextcloud server. On Ubuntu. Well, the machine I was renting was too small, so I started splitting things off. Nextcloud I moved in-house onto bare metal. WordPress I moved to a different machine, but on Debian. I left Dovecot and Postfix on the Ubuntu box, because it was probably going to be the most painful to move.

When I built my personal mail server before, I used the excellent guide by Christoph Haas (workaround.org) to build it. Back then, I’d struggled a little bit with the difference that Christoph’s instructions were for Debian, and I was installing on Ubuntu, but I made it work okay. Let’s Encrypt certbot was a little tough because I wanted a wildcard certificate for multiple domain names.

But then the server started running out of memory. I built a script that checked for an out-of-memory condition, and if so, I rebooted the box automatically.

That was twenty-seven months ago. Initially, it would go three or four days without rebooting. Nineteen months ago, it was rebooting one to three times per day. Last month, it was rebooting at least three times per day and up to six times per day. I knew I wanted to work on it, but I also expected it to be a big job. Being ruled by a hundred forms of fear, I made it into a larger problem than it was – go figure.

I’d scheduled some vacation time for Christmas and even took off the Friday before Christmas week. Then my mom called me and changed my plans on when we were going (to later). Suddenly I have four days off before I need to be on the road, and that should be plenty of time – no matter how hard the migration went. It actually took about a day.

One thing Christoph doesn’t go into is fail2ban for the webmail. I did have that on the original Ubuntu box, although it was more for WordPress than anything. But for all I know, that was the source of the memory leak. I had also done a sort of funky disk layout, so I was running Restic for local backups. Maybe Restic was the source of the memory leak? I don’t know. But the new box has the email-on-reboot script in place, so I’ll see if it doesn’t reboot on its own any time soon.1

Since I re-enabled comments on this blog with the spam protection coming from hCaptcha, I thought I’d try it with my webmail client. It is working great.

KDE Donation

I’ve donated to the EFF and Internet Archive for close to a decade now – I’m happy to support projects I think are worthwhile. I started donating to the Thunderbird project two years ago in November.

This quarter the KDE project did a request for donations, and I have really liked KDE, so I signed up for a small, $5 monthly contribution. Not very long later, over on the KDE mailing list, their community manager called everyone on X/Twitter Nazis. Maybe I’m the one off-kilter here, but I thought a community manager was supposed to grow their community. The exclusionary stance ends up alienating normal people and stunting the growth of the community instead. Later, the KDE community said they supported their community manager being a bigot.

Yeah, I’m out.

If these people are so infected with TDS that they don’t see the damage they are causing, I’m certainly not going to be an enabler and continue donating to their project. It is sad because I was first exposed to KDE back in 2006, and I like the desktop environment. But perverse behavior should not be rewarded. I’ve cancelled my donation going forward. If a different desktop environment shows up that is as good or better, I’ll switch.

Work Life

Well, I found out I’d miscalculated my retirement date; the pay period ends one week later than I’d thought.

It is mildly amusing to me that February 2026 has perfect alignment, with the first Sunday being on the 1st and the last Saturday being on the 28th. On the calendar, February takes the space of exactly four weeks. May and August 2026 have the worst alignment, spanning six weeks. I did a post this quarter about programming in RPG II under the heading Helping Sales make promises they could keep. May and August were the sorts of configurations that RPG II was not naturally a good fit for.

I got (probably my last ever) Performance Appraisal and my boss was kind. I’ve been feeling guilty about how much work I’m not doing, but my boss said this is a good thing. Proper succession planning means I must train everyone else what to do when I’m not here, and the best way to test my training is to let them do the work.

Volunteer Service Life

The Events Calendar Pro (TEC)

Well, I added TEC to the website for the fellowship, but it has bugs. I’m having to watch for errant behavior and then run a MySQL statement on the server:

DELETE FROM wp_options WHERE option_name LIKE '_transient_tribe_views_v2_cache_%';

DELETE FROM wp_options WHERE option_name LIKE '_site_transient_feed__%';

Still, TEC is remarkably better than Sugar Calendar, so overall it is a win. We might try out ticket sales next.

Flyers for events

One thing where AI has been a blessing and a danger is in adding events from outside sources. I uploaded a flyer for an event to an AI and asked it to convert the flyer into WordPress-compatible HTML. In one minute it did the job that would have taken me an hour or two. So that was great.

Then for another event, I pointed the AI at a series of pages the organizing committee had put up. That went great.

Then for a third event, I did the same, but the information was wildly off. I went to the web page, copied the URL, and prompted the AI to read that web page and create HTML from it suitable for pasting into WordPress. It looked okay, but… the event is at a Sheraton hotel, and this says Hilton… and the Hilton is 25 miles away! Oof. I asked where the information it gave me came from, and it said the web page, “This is what it says”. I put into the AI prompt “No it doesn’t” – and of course, then it apologized and actually read the website and created correct content. Apparently, it had pulled information from ten years ago and had simply run with that. AI is not intelligent (yet).

Contact Form 7 and Captcha

Our office manager is a part of a community of other office managers. One of them did a demo of their website, and that office had an email contact form. My office manager requested we do the same. I’d tried Contact Form 7 back in 2018, but the spam was immediate and incessant – I quickly deleted it.

So now I need to add it back in, but not subject my office manager to the onslaught of porn, supplements, and cheap junk email. The nature of the fellowship is not a great fit for ratting out people to Google as members of this fellowship. Well, if reCAPTCHA is off the table, how about hCaptcha?

I implemented hCaptcha for the contact forms on the website, and it has worked great. I was happy enough with it that I signed up for a personal account and added it to this blog’s login form for user comments. Later I used the same account to protect webmail on my rebuilt personal mail server.

The only thing I’d like better is if there were a pricing plan between Free and Pro. I do believe in paying my own way.2 But for the month of December, I’ve used it twenty times (their dashboard tells me this). I cannot justify the Pro membership at $99 per month ($1,200 per year). The fellowship also believes in paying its own way, but also, we cannot afford $1,200 per year. $60 per year would be ideal – and I don’t actually want any additional features. I know that serving up their images and comparing the results takes CPU cycles. I just don’t want to be a freeloader.

  1. 2026-01-13 addendum: it did finally run out of memory and need to be rebooted after 17 days. ↩︎
  2. Unless you’re going to be an asshole and call me a Nazi for my choice in social networks (duh!) ↩︎

My first programming job – Truline Corporation

[four minute read – longer than most of my posts]

Previously I talked about becoming the Work Order creator (“Engineer”) at Truline.

Opportunity Knocks

At some point, we needed room, and I was relocated to another office, which I shared with the president of the company, Jack Cederloff.

I got the idea to write a W.O. generator in dBASE II. I brought in my Osborne computer (what it looked like) and my trusty Okidata dot-matrix printer and showed my creation to Jack. He offered me a job as their in-house programmer – if I would learn to program their mini-mainframe.

I’m gonna be a professional programmer!!! Life is going to be fun!

Night School

I went to night school at the Tulare County Organization for Vocational Education (TCOVE) and learned RPG II on an IBM System/36. They had a Big 36 – the 5360, and Truline got the Compact 36 – the 5362.

The class was fun for two reasons. First was that I was never a very social person, so going to this class, I met new people. I was 23 or 24 years old at the time. That I recall, there were four or five other people in our class. I do not recall who the instructor was. But I enjoyed learning new things, and this time it was a computer language. The other fun thing was that there was a high school senior at Mt. Whitney who was the computer operator of the Big 36, and she was super cute. While we were learning RPG II, she was running jobs for Accounts Payable, Accounts Receivable, General Ledger, and the school district’s student grades and attendance application. She would hang around while we did our homework on the 5250 terminals. I was a fan.

Report Program Generator II (RPG II)

RPG II itself is a terrible language. Later, I would learn that computer languages were labeled by their generation: Assembly was a First Generation language, and FORTRAN and COBOL were Third Generation languages. SQL and MATLAB are Fifth Generation languages. RPG II was a Second Generation language. Sigh.

Later still, at SCT, I worked with a lady who had a plugboard in her office as an art piece or conversation piece, I suppose. She described how the programmer would plug wires in from the results side of an operation (the right side) and wire it down to the control side (the left side) of a later operation. The origins of RPG II were suddenly revealed to me: I could see where RPG II indicators came from and why they triggered later operations in the code. They were virtual replacements for physical wires!

But yes, RPG II is a language to try one’s soul. Well, it isn’t too bad if one is detail-oriented and patient. Thankfully, I am both, so it didn’t bother me.

If you look here, you see that each line of code had a type specification, and each type was required to be in a specific order: U, T, H, F, E, L, I, C, O. The last three were the meat of programming: Input, Calculation, and Output. The type specification went in column 6 of the source code.

Yes, RPG II is a column oriented programming language.

But back to indicators: Calc lines did calculations, but they also set indicators. If the result of the calc was greater than zero, an indicator (two digits) specified in column 54 would be turned on. If less than zero, the indicator in column 56 was set, and column 58 would hold the indicator if the result was exactly zero. Well, there’s your WHILE statement: when the result of the variable was exactly zero, the indicator named in column 58 would be turned on, and conditional logic would change the program flow. At the beginning of a line were (up to) three conditions (indicators). If the indicators were on, the calc line got executed. If not, it was skipped. Page 1-7 of this link shows the processing cycle in RPG II. The processing cycle in RPG II is absolute and will happen, whether you want it to or not. It takes a bit of humility to accept that. Today, we wouldn’t think of telling the programmer that they have no choice in how their program runs. Anyway….

Programming as my day job

Truline upgraded from a System/34 to a System/36, and I went back to my original engineer office, but as a programmer this time. Shortly after, we moved the factory from Visalia to Farmersville. During the design phase of the building, we decided that we needed a computer room, so that became my office.

Come to think of it, this was the only time in my life when I had my own office.1

For the next two and a half years, I was programming in RPG II on this mini-mainframe. I loved being a programmer.

Initial work orders

The first thing I wrote was the system for getting input from the engineer and creating the work order. Steve, who had replaced me when I was promoted to programmer, was our engineer. Steve would log in and create a new work order, and would then enter codes, like “S” for a single-sided board, “D” for double-sided, or “M” for multi-layer. Based on the codes, I’d add the series of tasks (departments) needed for this order.2 After he did his data entry, my program printed out the work order that looked like the previous hand-drafted sheet, but without the steps that were not needed. The greenbar report was folded and put into the same plastic envelopes we used for hand-crafted paper work orders from before.

Truline sent me to training

The good was that the weeklong training was taught by the gentleman who designed American Airlines’ SABRE airline reservation system. He clearly knew his stuff, and I did learn things from him.

The fun was that Truline paid for me to fly to Dallas (iirc), and I took my Osborne on the jet plane flight. The Osborne was designed to fit under an airline seat, and with a bit of heft and struggle, there it fit. And… it so happened that my seat was immediately next to an IBM mainframe salesman who wondered, What the heck is that? I told him it was a portable personal computer.3 He looked me straight in the eye and asked me, “What is it good for” I explained that when I got back to work, I’d owe my boss a report about the trip. In the evening, I could write the report in the hotel room, and Monday morning when I got back, all I’d have to do is print it. His eyes showed he was amazed. Here this 25-year-old twerp was already into the next generation of computing, and here he was, a salesman for the biggest computer company on the planet, just getting gobsmacked with the future.

The bad was that my training instructor asked me which computer we had, and when I told him a System/36, he said that was no good, and I needed to upgrade to a System/38. The System/38 came with a built-in database, and any computer without a database was a toy computer. I was barely a programmer yet, so I never asked Truline to spend a hundred grand on a new mainframe for me. But yes, a database would definitely have been the way to go.

Tracking jobs through the factory

Then, back at work, I wrote a couple of programs that updated the last completed step on the job, and produced a daily report of all the jobs in the factory, one line per W.O. sorted by W.O. number (oldest jobs first). The report ran every morning. Every day that a W.O. did not change position, I grew a counter. The end of a line on the printout was a crude graph: the number of asterisks for the number of days the job hadn’t moved. If a job had more than four or five asterisks, the production manager knew to go to that department and find out what the hold-up was. It might be, for example, that a customer wanted red soldermask instead of green, and we were waiting for the custom order to show up. But other times, it was simply that a large job was in front of it, and it would take a few days to process 800 panels through that department. It became Robin’s job to visit every department at the end of every day, and write down the W.O. numbers of the jobs sitting in that department. Then she’d log in and update every work order with its current location. The next morning, the production manager, John Morado (who was also one of the owners), would get the report and manage production.

If I’d stuck with it, I’d have gotten to the point of printing QR codes on the work order and having a barcode reading terminal in each department for registering incoming and outgoing jobs. Jack Cederloff and I had talked about that; printing barcodes and wiring up barcode scanner terminals. That was before the move to Farmersville.

Helping Sales make promises they could keep

My next program was for the sales department. I went through every order due this month or in the future and totaled the dollar amount of the order by day. Man, programming a calendar in RPG II was painful! I wanted the calendar printout to look like a calendar: a grid of days, seven wide and (however many) weeks deep.

The goal was that every day would list the orders and their dollar value. Then at the bottom of the day, the total value for the day. The week would have seven columns for seven days, and when this week was finished, the next week would be computed.

RPG II and that compute cycle are NOT friendly constructs for dealing with the 31st of the month being a Wednesday, and every six months, there are five Wednesdays that month. Most months have five week rows, but some have six. February could have four, if everything aligned. And yes, I programmed in that every four years, February has 29 days. Rolling from the 31st, 30th, or 28th/29th of the month to the first of the next month means finishing one month and setting up the next month; however, the RPG II processing cycle will be obeyed, and if the next record breaks control into a new month, welcome to the house of pain. Turns out it was best to copy the data to a new table (file), run a job to append a “week number” and sort on that. Then, the control-break was on week number, which made the programming manageable. The last work order of the month wasn’t the trigger for the bottom of the calendar; that was handled by the week change routine, which came after the day totals.

Did I mention that the System/36 had 64 KB of RAM?4 A memory array would have been fine, if I weren’t worried about running out of RAM. So all the work I did was based on files on disk, running through the RPG II process for chewing through records. My Osborne had 64 KB of RAM too. Primitive times.

Anyway, the sales department was able to use the dollar amounts as a proxy for capacity. When a customer asked when they could get their order done, Sales looked at the calendar and picked a day five or six weeks out with the lowest dollars on it. They also looked to make sure that there wasn’t a huge order that needed to ship the day or two before. But it worked well; once a day got to around the $14,000 mark, that day was full, and they’d start telling the customer we could finish the job and ship the day after. If the days before six weeks looked puny, they could promise a faster delivery date and fill in those days.

A month or two before the Consumer Electronics Show in Las Vegas every year, we would have customers who were willing to pay double the normal amount if we could build their small order in one week so they could have actual products to demo at the CES show. Sales could look at the calendar and tell them yes, we can, or no, we cannot, based on how full the factory was for the date they were asking.

Job costing / forecasting

The next programming project was forecasting. That was a big project. I did time studies and all that, measuring how many minutes a task of a certain size would take. I measured big jobs and small jobs and kept numbers for task setup and task piecework. The accountant gave me the average hourly wage number. I made a table of time per task per panel. Then I chewed through every W.O. (and every task in each) and generated an estimate of how much the job would cost to build. The accountant and I compared numbers. The accountant explained that my numbers were off because of overhead. Wow there was a lot of overhead. I got to add an adjustment factor to come up with an estimate of real-world costs every month. I was pretty happy that for the first three months in a row, my computed projected expenses were within 10% of actual expenses. We updated my adjustment factor and got to under 5% variance. Mind you, I had zero training in being a time and motion analyst. I just figured it out as I went along.

Then we had a large customer ask us to provide a quote for many large orders, and my job cost program was used to provide an educated guess. Jack Cederloff was worried we’d underbid the orders, but my job cost estimator said we would be okay. We won the bid, and after several months and all those orders, we made out fine. My job cost estimator was good. 🙂

RPG II and the System/36 were not enough

In my home life, I’m reading Byte Magazine and Dr. Dobbs Journal and helping my dad with a business. He learned of a new technology: ultraviolet-cured liquid polymer could be used to make rubber stamps. I should do an entire post on just that. But the short version is that my dad had a PC’s Limited5 286 (10 or 12 MHz with the touch of a switch) with a monochrome monitor. There was a guy out of the South who made a program: a WordStar post-processor that extended WordStar’s “dot commands” for changing print settings (bold, italics, and such). It could include TIFF files and output to an HP LaserJet. My dad bought a scanner and would compose a mask with these dot commands and scanned images. He would print the rubber stamp mask onto clear plastic and burn the polymer into a pad he could glue to the stamp handle. There are a few stories here. Anyway, it was clear to me that personal computers were the future, whereas mainframes were not.

I had gotten to 27 years old and was stuck. Truline had moved to Farmersville, and all our cash flow was gone, tied up in the move.

Oh, another thing I had done was to go back to night school to learn accounting. It wasn’t so much that I wanted to be an accountant as that I just wanted to understand words like “debit” and “credit” when the accounting people spoke them. One teacher was particularly good, and I learned about ROI and cash flow.

We had no free cash for computer upgrades. I was stuck.

I could see that the future was all about the Local Area Network (LAN) and PCs attached to it, and Truline wasn’t going to have enough money for upgrades for years. Well, a few years, but at 27 years old, I felt an urgency to keep improving. Programming in RPG II was not it.

One early spring day, as I was walking back from lunch, I was internally grousing that things weren’t great and wouldn’t get better. Then it struck me: things wouldn’t get better!

I decided to wait a month, in case I was being rash. A month later, the outcome was the same: no, I wasn’t being rash – I was stuck, and Truline wouldn’t be able to afford upgrades for at least a couple of years. I decided to save up a bunch of cash and resign from my programming job. I didn’t know where I was going to go, but I knew I didn’t want to stay here.

The C programming language was not my cup of tea

Although I liked computer programming, Dr. Dobb’s Journal had suggested that learning to program in C was the way the world would go. I looked at C and hated it.

I like COBOL because if I intelligently name my variables, the program code reads like English. Clearer is better, always, in my book. The new styles of programming seemed to try to create a wizard-class, to purposefully make programming difficult for mere mortals to understand. This is vain and stupid to me. C was my introduction to this, and with that introduction … I’m out.

First, the arrays in C were indexed starting at zero instead of starting at one, the way God intended.6 Also, RPG II, FORTRAN, and COBOL had one-indexed arrays, which makes for useful structures as 1 = January, and 12 = December. So now in C, I’m supposed to take a perfectly fine date like 20251203, extract the fifth and sixth characters7 as the month number, and subtract 1 from it

Why don’t I just create an array of month_numbers-to-month_names with 13 elements and make month[0] = “Dumb-ass-uary” ?

If the ancient programmers (FORTRAN, COBOL, and RPG) figured out how to make the compiler adapt arrays indexed from 1, why couldn’t the C compiler programmers do so too? I thought it must be because they think that zero indexed arrays are a feature instead of a semantic bug.

Second, in describing loops, the C index incrementer could be written two ways, with different effects. One way:

while (i++ <= 10)

and then another way:

while (++i <= 10)

And the difference matters.

When I read this, my mind instantly said, “This is stupid. There’s no way I want to learn a language with weirdness like this”.

So I’d opted out of learning C, and the other languages available at the time weren’t appealing to me either.

Next in my biography: how I ended up in operations, working for local government.


  1. Today, four days out of five, I work from home. I don’t think it is the same thing. My dream of the best possible work environment was in the office, but with a closable door to keep the noise out, but also the freedom to take a break and hang out with co-workers for a minute or ten, getting a cup of coffee and shooting the breeze. A cup of coffee here at home is fine, but I’m not going to bounce into Teams just to shoot the breeze with any of my co-workers. ↩︎
  2. See my previous post for the tasks on the work order. ↩︎
  3. IBM did not have any portable PCs yet. Heck, they barely had the IBM PC AT. Compaq would soon swoop in with a portable PC in the Osborne-like form factor. ↩︎
  4. IBM said it had 128 KB of RAM, but that is because the System/36 had two processors, of 64 KB each. As far as programming went, 64 KB was all I had. ↩︎
  5. Later to be known as Dell Computer Corporation ↩︎
  6. I should do a blog post about this. I’ve since learned the why of zero indexing, and I can see the point of the trick, but it is still bad in my not-so-humble opinion. That and $8 will get you a cup of coffee at Starshmucks…. ↩︎
  7. Notice I didn’t extract the characters at index positions 4 and 5 ! ↩︎

Google chooses misandry

I recently got a Future Me email (an email sent to my future me):

Dear FutureMe,

Today is International Men’s Day. Every year, Google celebrates International Women’s Day with a Google Doodle. And every year, Google gives the finger to International Men’s Day. Can you spell misandry?

I deleted my Google account today. I don’t need misandrists in my life.

Me, November 22, 2024

I also deleted my Google account on the theme Make Orwell Fiction Again. I have a hat I bought for myself and as gifts. It seemed hypocritical to have a Google account and be promoting Make Orwell Fiction Again.

Google might have recognized their own misandry and decided to treat men with as much respect as they treat women with a Google Doodle on November 19. But I would not bet money on 2025 being that year.

“Wicked: For Good” – Disney dials Orwell up to 11

The name of the movie: Wicked: For Good

I don’t know that I could come up with a more Orwellian name for a product than that.

There is this word: “wicked” which means morally evil, sinful, of vice, and intentional wrongdoing.

There is this word: “good” which means just about the opposite of that.

Putting these two words together in your product name like that is … perverse.

Wicked, even.

Not good.

Anyway, this post was originally written on 2025-10-21. I went to the movie theater this weekend and watched Tron: Ares 3D. I liked it. Unfortunately, it was a Disney film; I wasn’t thrilled about throwing dollars at them. Of course there were trailers for upcoming Disney movies, and Wicked: For Good was one of them.

SMH.

Orwell would be turning in his grave.