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

Technology and Its Discontents

06:02 Thursday, 28 April 2022
Current Wx: Temp: 68.36°F Pressure: 1011hPa Humidity: 59% Wind: 1.99mph
Words: 514

Being retired means my time is (mostly) my own. So when I saw Mark Bernstein ask for a favor, and nobody had replied yet, I figured I'd give it a shot. If I couldn't figure anything out, no big deal.

So I launched Apple's Shortcuts app on my iMac and started noodling around. I managed to cobble something together that worked, but it required one step that I didn't think should have been necessary.

Mark wanted to extract an email address from a block of selected text. I found an action that would extract an email address from a block of text! Woo-hoo, problem solved!

Not so fast.

The longest part of my effort was trying to figure out how to make a block of selected text the input to a shortcut. Do you think there's any documentation that says anything specific about a "text selection"? No, there's not. And a search of the web was no help. All the examples seemed to focus on modifying images, opening web pages, etc.

Well, I saw I could give that action the clipboard as input, so I just put that as the input, which meant that after selecting the text, Mark would have to CMD-C copy it to the clipboard, then invoke the email extractor, which I gave a keyboard shortcut.

It didn't seem to me that it should have been necessary to have to use the clipboard as input, you should just be able to select a block of text and then have it processed. But, perhaps because I'm not very smart, I couldn't find anything to explicitly describe how to use a text selection as an input.

Figuring better was the enemy of good enough, I went ahead and posted my kludge. Mark Anderson later posted an Automator workflow that avoided the step of putting the text on the clipboard first.

This bugged me most of the day. So this morning I got up at 0430 and tried again. More searching in vain.

Finally, I realized that Quick Actions appear in the Services menu, and they act on selected items, like a block of text. So, without any initial input in a new shortcut I was creating, I added the "extract email address" action, and the place the result on the clipboard action. Then I clicked over to the settings tab and made it a Quick Action, which gave me "Receive any Input from Quick Actions" as the opening block of the shortcut. For good measure, I checked "Receive what's on screen" for iPhone and iPad. (I haven't tried this shortcut on an iOS device. That's a whole other ball of worms with the UI differences.)

And voila! It worked.

There are so many things you might want to do with a block of text, and there are actions for nearly all of them. But there's no discussion of how to tell Shortcuts to look for a block of selected text. It seems like the most fundamental thing, Step Zero!

Anyway, I think I learned something. Now I have some other ideas.

✍️ Reply by email

People Plan, God Laughs

08:27 Sunday, 28 April 2024
Current Wx: Temp: 70.12°F Pressure: 1019hPa Humidity: 70% Wind: 5.99mph
Words: 411

...an old Jewish saying.

Mitzi was supposed to arrive about 1900 yesterday, but she didn't get in until nearly midnight, which got us home after 0100.

It's kind of interesting. I fly very early in the morning, mostly because it's cheaper, but also because I generally seem to have fewer difficulties with delays and cancellations. Unless the plane didn't get in at all the night before, it's generally already at the gate by the time I'm there.

I learned when I was a working stiff that you didn't want to be trying to get out of Atlanta anytime after noon in the spring and summer because of thunderstorms. The company was paying for travel then, but I chose early flights to avoid the hassle of having to hang around the airport for hours. (I also learned to never have less than a one-hour layover in Atlanta. You may land on time, but you can spend 20 minutes just taxiing to the gate, and then it may be clobbered. I'm too old to be sprinting between terminals.)

In any event, it's a real bear getting up at oh-dark-thirty at my age, but traffic to the airport is very light and the TSA line is usually not crazy. Though I was glad for pre✅ last time, because it was insanely long in Albany even at 0430!

For all the hassle, I usually get to where I'm going on time and I don't spend a lot of time waiting in terminals or trying to rebook flights.

It may also have something to do with 22 years in uniform where, "Early is on time. On time is late."

This has been the third time Mitzi has been delayed coming in from the west coast. She books her flights at "reasonable" hours, like 0900. Her problems started yesterday before she ever got to the airport, with her 0900 flight being delayed to 1030, which meant she couldn't make her connection in Dallas. She booked another connection and by the time she landed in Dallas, that fight had been cancelled. So then she found another flight that was supposed to get in at 2315. Before she left, they updated the arrival time to 2330.

They landed at 2334. And then it took them half an hour to unload the bags. We left the airport a little after midnight.

It's been a sleep deprivation kind of week. Let's hope this one will be better.

✍️ Reply by email

Chief Engineer to the bridge

09:59 Sunday, 28 April 2024
Current Wx: Temp: 73.33°F Pressure: 1021hPa Humidity: 66% Wind: 11.5mph
Words: 224

It's interesting how the modern home begins to resemble something as complex as a ship. In our case, perhaps more so because of the solar array and batteries. But also the water softener, hot water heater, the heat pump/HVAC system, the air cleaner, sensors for CO2, PM2.5, humidity. There's the automation system, the network connection, the in-home wireless network, the golf cart is like the captain's gig, chargers for the golf cart and the RAV4 Prime.

It all requires maintenance, and documentation. As I'm discovering. It's warming up and the AC is running more frequently. I deferred replacing the air filter last month because it was hardly running at all. I went ahead and put a new one in this morning and discovered that the semi-annual maintenance guy, who was otherwise simply outstanding, forgot to secure the cover, so air was blowing by every time it ran! Fortunately, it wasn't running much. Not like it will be shortly.

Anyway, I feel like I'm the EOOW, engineering officer of the watch here is USS SAUL (DWPV-849). Except the duty rotation is port and re-port, 24/7. The qualification system is OJT, and there's no one here to sign my qual card.

It's not for me, but I sense a "training and education" entrepreneurial opportunity here for some enterprising ex-sailor.

✍️ Reply by email

Baby Steps

08:58 Tuesday, 28 April 2026
Current Wx: Temp: 56.05°F Pressure: 1016hPa Humidity: 59% Wind: 18.57mph
Words: 438

Interesting afternoon yesterday. I tried to install Jacob Evans' Tinderbox MCP Server (experimental). I was finally able to get everything wired up this morning, but I think I learned a few things along the way.

The first thing was that I had to install the latest version of Ruby. MacOS 26 ships with version 2.6, and the MCP requires 3.1 or greater with Bundler. My Terminal-fu is weak, but Claude kind of walked me through it.

Once that was installed, Claude walked me through the GIT commands to install the server. The instructions are all in the ReadMe, but I kept a running commentary with Claude verify I was on the right path. (More about paths in a minute.)

Finally, I had to edit the Claude Desktop Configuration file. Again, instructions are in the ReadMe.

It didn't work.

I'd share the chat, but it's very long. Here's what was ultimately the main problem. The ReadMe says this is how your config file should read:

{

"mcpServers": {

"tinderbox": {

"command": "ruby",

"args": ["/full/path/to/tbx-mcp/server.rb"]

}

}

}

We had a bit of trouble finding the full path to the server, but that was pretty easy to sort out. It still didn't work.

The real problem was in the "command": line. There I had to add the full path to Ruby. There may be a reason for that, I don't know. I'll investigate some more later. To find the full path to Ruby I had to enter "which ruby", and that gave me the full path.

So now the config file looks like this:

{

"preferences": {

"coworkWebSearchEnabled": true,

"ccdScheduledTasksEnabled": true,

"coworkScheduledTasksEnabled": true

},

"mcpServers": {

"tinderbox": {

"command": "/opt/homebrew/opt/ruby/bin/ruby",

"args": ["/Users/daverogers/tbx-mcp/server.rb"]

}

}

}

That works.

There was one other thing. Tinderbox has a built-in MCP server that works with Claude. Jacob's is more robust. But you have to disable Tinderbox's built-in server by disabling AI integration from the app menu. Also, with the built in MCP server, Claude would launch Tinderbox in order to link up with the server. If Tinderbox was already running when you launched Claude, they couldn't talk to each other.

With Jacob's MCP, it seems to be the reverse. You launch Tinderbox, then launch Claude and Claude checks to see what apps it can talk to, and if Tinderbox isn't running, it won't see it and won't launch it. If it is running, all is well.

My project now is to see what I can do with it, and then to see if I can configure Gemma 4 to talk to Tinderbox, and what it can do.

Making progress.

✍️ Reply by email