"Yeah, well, you know, that's just like, uh, your opinion, man."

Wherein I Opine On Matters I Have Little Knowledge Of

12:51 Thursday, 28 March 2024
Current Wx: Temp: 64.67°F Pressure: 1014hPa Humidity: 88% Wind: 9.22mph
Words: 199

I'm guessing we haven't priced in the risk of 100K-ton cargo vessels or tankers knocking down bridges into the cost of doing business.

If I were the All-Being, Master of Time, Space and Dimension, I'd issue a requirement that all vessels over a certain tonnage, transiting through channels passing beneath a bridge or power lines not only have a pilot aboard, but be escorted by a tug with sufficient power to wrestle the vessel away from any vital infrastructure in the event of a loss of power or rudder control. And such vessels travel at a reduced speed such that the mighty little tug can make its way between the unguided missile and a sudden economic downturn in time.

Engineers can compute the mass and velocity figures to determine what vessels would be required to observe the new regulations. Costs of dedicated tug escorts on standby 24x7 to be borne by shipping companies, passed along, as they inevitably are, to their customers.

Last time this happened was 44 years ago. What are the odds it's going to happen again anytime soon? Is it worth the risk? I'd say "Better safe than sorry," but what do I know?

✍️ Reply by email

Captain's Log: Victory Declared

11:26 Thursday, 28 March 2024
Current Wx: Temp: 61.84°F Pressure: 1009hPa Humidity: 93% Wind: 9.22mph
Words: 362

I replaced the batteries in the kitchen radio this morning. I use Eneloop Pros (the black ones) in it and some of the other radios and sensors around here. I logged it, as I've been logging replacing the air filter on the air handler, and will on the air purifier (BlueAir Pure 211+), and the water filter in the fridge, which went south last night.

I decided I wanted to have a container that gathered all those "replace" notes so I could quickly see when the last time was I replaced something. I want to get a better idea of the longevity of the Eneloop Pros in certain applications, and then compare that with using the regular (white) Eneloops. Likewise with the water filter in the refrigerator. The fridge usually reports that it's time to change the filter, but it hasn't this time. We had an additional person in the household for the past two months, so perhaps the extra demand caused it to expire early.

Anyway, I needed to create an Agent to look for notes that contain the word "replace" in the $Name. That's a pretty safe query for a comprehensive list, as I usually begin the log entry "Replaced batteries in..." or "Replaced air filter..." The entry records the action I performed, so it's unlikely I'll ever make an entry that doesn't include that word.

So the agent query looks like this:

$Name.contains("Replace")

This returned four entries:

Replaced batteries in ARANet4

Replaced batteries in air quality sensor (indoors)

Replaced batteries in kitchen radio

Ordered Replacement Water Filters

I don't know why I used title case on that last entry, because I was surprised to see it. The .contains dot-operator is case-sensitive. If I had written "Ordered replacement water filters," I don't think it would have gathered it. So I changed the $Name in the original to sentence-case, and indeed it vanished from the results.

Just to exercise my Tinderbox-fu, I changed the dot-operator to .icontains (case-insensitive), and sure enough, the sentence-case entry returned.

I'll leave it case-insensitive for now.

Just gonna high-five myself and go take a nap.

✍️ Reply by email

Doing Something

07:45 Thursday, 28 March 2024
Current Wx: Temp: 64.27°F Pressure: 1007hPa Humidity: 94% Wind: 11.5mph
Words: 456

I've been pretty disengaged on local issues, apart from the occasional letter to the editor. Running for state representative pretty much exhausted whatever stores of public service desire I might have had. Made me more of a misanthrope than I already was.

But it's been a few years now, and my encounter with the North Florida Land Trust kind of sparked something.

I subscribe to an email list from the Jacksonville Climate Coalition, and I read about a meeting that was coming up called the Resilient First Coast collaborative. I didn't find out much about it, but I put it on the calendar and attended it yesterday.

It takes a lot to get me out of the house these days.

It was well attended, about thirty-some folks in a large conference room. Mostly government and public agency reps, a couple of non-profits. The chair of the Northeast Florida Green Chamber policy committee was there, and I'm a member of that committee.

I spoke up a couple of times, suggesting that they might seek more engagement from non-profits that serve vulnerable populations, in terms of any insights they may have regarding resiliency. Although there were a couple of reps of non-profits in the audience, they were not directly serving vulnerable populations like Feeding Northeast Florida, and HabiJax (Habitat for Humanity local chapter). I got the impression it might have been a new idea.

The other thing I mentioned, looking through the definitions section of the draft document they were circulating, was the absence of logistics as a key term. We learned from the pandemic that we ought to have a thorough understanding of the logistics supply chains that serve us, so we can think about or anticipate disruptions due to climate or other disasters. Toilet paper during the early part of the pandemic came to mind. I suggested they might focus on food, fuel and medicine.

I don't know how helpful that was. Logistics is very complicated, and not a great deal of it is under any one entity's control. But I think any understanding of "vulnerability" ought to include an appreciation of the "flows" of resources into the region.

I told one of their reps I'd send them an email.

My cognitive dissonance was high. These are all nice people. Public spirited. Aware there's an issue. Wanting to do something.

But there's no sense of urgency. Little in the way of leadership. Here's their web site. There are no years on those dates, so I have no idea if this is current. I'll ask. (Oh, here's the actual web site.)

Oh well. You do your best, and the rest isn't up to you.

At least it got me out of the house.

✍️ Reply by email

Sorted

07:02 Thursday, 28 March 2024
Current Wx: Temp: 65.88°F Pressure: 1007hPa Humidity: 94% Wind: 1.01mph
Words: 408

I think.

Went back to the Automator application, which sole function was to populate the $Text attribute with a summary of the next three days' Calendar events.

I'm getting better, or at least more familiar, with Automator. I figured out how to set the value of a text variable from an input.

I learned earlier how to pass an Automator variable to an AppleScript in an Automator workflow.

So I did the whole thing in Automator, which means I don't need the function at all.

The prototype p_Day contains the edict

runCommand("open -a MidwatchEntry");

The AppleScript in the Automator application MidwatchEntry now creates the entire Midwatch entry. It doesn't just try to paste the contents of the clipboard into the $Text attribute of the Midwatch entry created by the function fMakeMidwatch, which is now defunct. It's the same AppleScript that creates entries for Mail items, except it doesn't query for the $Name and $Text, instead creating them from variables defined in the workflow.

But...

As I was writing this, Tinderbox blinked. I have four documents open, and that kind of suggested one of them had just done something, and I suspected I knew which one.

So, putting an Edict in p_Day to run MidwatchEntry wasn't a good idea. Scratch the above.

It was fine running strictly as Action code, Tinderbox wouldn't create another Midwatch note on its own. But AppleScript will.

(Hilarity ensued earlier as multiple copies of the Midwatch entry kept getting generated. Every time I'd delete one or two, another one would appear. Insert Sorcerer's Apprentice reference here. Every "touch" of deleting one stimulated the creation of another one. Oy.)

I was going to try and figure out a conditional, but then I had another thought. (It's morning and though I didn't sleep well, I think better.)

The OnAdd action will run precisely once. So I added the runCommand action to the onAdd attribute of p_Month. p_Month creates each new day, (And I'm about to learn if I'm an April fool.) and as it adds the new day it will run MidwatchEntry, which will find that new day and create its namesake in it with the calendar event summary, and then sit quietly until the next time it's called, roughly 24 hours later, not every few hours or every time some change occurs to the document.

At least, I hope so.

I've been wrong before.

So wrong, so many times before.

✍️ Reply by email

That Was a Waste

06:07 Thursday, 28 March 2024
Current Wx: Temp: 66.15°F Pressure: 1006hPa Humidity: 94% Wind: 1.01mph
Words: 57

Still running. Can't figure out why. Thought it might be because I had some other action calling it somewhere, but I can't find it.

I'll look into not using the clipboard and just populating the $Text attribute with a variable from Automator. It's possible I've done something incorrectly in the conditional if statement.

The beat goes on...

✍️ Reply by email

Insomnia Coding

03:02 Thursday, 28 March 2024
Current Wx: Temp: 66.45°F Pressure: 1007hPa Humidity: 93% Wind: 1.54mph
Words: 119

It's 0300. I had to get up to use the head and when I went back to bed I realized it was easy to make that Midwatch Edict run once. Same way we don't let months keep making days when their time is over.

if $Text=="";

{

runCommand("open -a MidwatchEntry");

}

That had better work.

I'm going back to bed.

I'll check the clipboard in a few hours and know if it did.

(It's relatively nice out, and the window in my office is open. I can hear a train going by on the tracks next to Phillips Highway, not far from here. I just hear the whistle when it crosses an intersection, and maybe faintly the rumble. Pretty cool.)

✍️ Reply by email