The Robservatory

Robservations on everything…

 

macOS

Simplify updates to oft-updated text documents

Here on my blog, I've been tracking macOS release dates and rates for nearly 15 years—if I'm doing my math right, I've edited and republished the post 115 times since then. Until the most recent update, all 115 of those updates were pretty much done like this:

  1. Update a Keynote document that calculates the release rate data and contains the two charts in the blog post.
  2. Edit the text of the blog post in a text editor, with Keynote visible, replacing all instances of variable data—dates, numbers, size, rates, etc.—wherever they appear.
  3. Upload the graphs and publish the updated post.

While this isn't an overly complex task by any measure, the second step in particular has gotten more time consuming over the years, because of the length of the post: It now contains over 50,000 characters. That's lots of scrolling and looking for the few bits that change—and I'd often miss a date or a number in some portion of the post.

I thought there had to be a better way, and there is…and of course, the better way uses BBEdit. In particular, BBEdit's support for including one file in another—and using variables in the included file—makes my update task much simpler. If you have text files that receive regular updates, you may find this method of interest, as it can be a big timesaver.

(more…)

A full history of macOS (OS X) release dates and rates

Updated and republished for macOS 10.15.7; skip it unless you really really care about all the macOS releases. Originally published on November 14th, 2005.

Below the break is a table showing all major releases of macOS (previously Mac OS X) from the public beta through the latest public version, which is macOS 10.15.7, as of September 23rd, 2020—the 138th release in total.

Note: Click the ⓘ symbol to read Apple's release notes for a given update.

(more…)

Resolving ‘A problem repeatedly occurred…’ error in Safari

Yesterday, after updating to Safari 14 on my Mojave-running iMac, I noticed a big problem: I couldn't load many sites that contained either a login dialog or a shopping cart. For example, I could load Target's main site, but when I tried to open the shopping cart, it wouldn't work.

I'd briefly see the page, then it would clear and reload once or twice more, and then I'd be left with an error message:

A problem repeatedly occurred with "https://www.target.com/co-cart"

This was happening on many, but not all, sites—I could login on Amazon and my bank, but not on most of our credit card sites or typical retail shopping pages. Given this happened just after installing Safari 14, I assumed it was somehow related to the new browser version—the same pages that didn't load in Safari loaded fine in every other browser I tried. But they loaded fine on Safari 14 on my Catalina MacBook Pro, so then I knew I had a Mac-specific issue…the worst kind of issue to troubleshoot.

While troubleshooting, I found that I wasn't alone, nor was this a Safari 14 issue—there are lots of reports of the same problem over many years.

After tweeting about my troubles and what I'd done to try to troubleshoot the problem, Jeff Johnson of Lapcat Software got me on the right track by suggesting that my Safari install was broken. He suggested I check the date on this Safari framework...

/System/Library/StagedFrameworks/Safari/libwebrtc.dylib

When I did, I found that the version on my iMac was much older (Jul 13, 2020) than the version on my MacBook Pro (Sep 15 2020), where Safari 14 worked as expected.

It seemed that the fix might be as simple as reinstalling Safari 14…but Apple doesn't make it easy to do that, as you can't reinstall an installed update, and they don't include recent Safari versions on their download page.

After some searching, I found MacUpdate's Apple Safari page, which contains direct links to many versions of Safari—scroll down to the section titled "What's New in Apple Safari," expand it, and you'll see download links for Safari versions back to 13.0.3.

I downloaded the Safari 14 installer1And kept a copy, just in case!, let it do its thing, and the problem is solved. The date on the framework I checked now reflects a mid-September date, which matches the same file on the MacBook Pro.

I'm annoyed that Apple's installer didn't report any issues, and I wonder what a "typical" user might have done to resolve this issue—I only got it fixed thanks to Jeff's tip and the installer links on the MacUpdate page. I can't imagine how long I would have had to talk to Apple Support before they figured out that it was a bad Safari install, and not some app or utility or other "you caused this" issue on my Mac.

So thanks, Jeff and MacUpdate, for helping me find and fix this very annoying problem with my Safari install!

Review: Logitech MX Keys for Mac

In April of 2019, I reviewed the Logitech MX master 2S mouse, which I really liked. Earlier this year, Logitech came out with the Logitech MX Keys for Mac keyboard, so I thought I'd give it a try. (I also upgraded to the MX Master 3 mouse at the same time.)

Executive summary: I love this keyboard. I was on a road trip recently, gone for 12 days straight with nothing but a MacBook Air (of the 'broken butterfly' generation). As soon as I got home and switched back to my iMac, I was reminded of just how much better this keyboard is than the one built into my Air…and the one that came with my iMac.

(Note: The "Mac" in the name simply means that you're getting a keyboard with Mac-specific symbols on the Command and Option keys; I'm pretty sure the Windows version would work just as well, but without the Mac-specific look.)

This review won't be quite as thorough as that of my mouse, mainly because there aren't as many nifty features—it is "just" a keyboard, after all.

(more…)

Two recommended apps for Tesla owners

If you're a Tesla owner, perhaps you'll find these apps as useful as I have…

The first is a macOS app called Tesla Tunes that overcomes some limitations of Tesla's USB music player: It automatically converts Apple Lossless (which the Tesla can't play) into FLAC, which the Tesla can play, and it offers some rudimentary support for playlists, which aren't supported at all in Tesla's player.

It's quite old, having been last updated two years ago, but it still works well—I prefer USB to streaming over Bluetooth from my phone, which is the other option.

(more…)

A deeper look at Apple’s Developer app

On Twitter, I've shared my distaste for Catalyst apps, as many of them just don't "feel" right to a long-term Mac user. I know that's vague, but today, the vagueness ends, thanks to a deep dive into Apple's recently-released Developer app for macOS. No, the deep dive isn't this blog post you're reading now, but rather one by Martin Pilkington.

He has written a great analysis of the numerous issues with the Developer app. (And importantly, he filed bugs on everything he listed.)

Many of the issues aren't specific to Catalyst, but reflect poor attention to the details that make a Mac app look and act as a Mac app should. Here are but a few of the examples from Martin's analysis:

The focus ring on the search field has square corners • The search field focus ring does not go away if you click elsewhere in the app • Doesn't show window title when toolbar is hidden • Content size is too small • Can't collapse groups in the sidebar • Find toolbar does not share search string across OS

I strongly encourage you to read Martin's article, as it puts into words just why I find many Catalyst apps so annoying to use. In addition, I'm going to provide a couple more examples—using the same Developer app—showing just how non-Mac-like a Catalyst app can be…

(more…)

What’s your favorite version of macOS/Mac OS X?

Update: The pool is now closed, and the results weren't even close…

Snow Leopard wins in a landslide.


With the 2020 (Virtual) WWDC about a week away—and with it, more than likely, the reveal of Yet Another New macOS Version, I thought it might be interesting to run a little poll…

What is your personal all-time-favorite version of macOS/Mac OS X? Instead of trying to add a polling plug-in here, I quickly created one using surveyplanet. It's set to full anonymous mode, so no IP info is collected—it's just for fun…

If you need more details as to what came with each release, check out this Wikipedia article.

Personally, I'd have to say it was … nah, I'm not going to reveal my vote just yet! There's a small comment box on the poll, or you can add comments here if you have more thoughts on the question.

Go old school Terminal for stock quotes

My main machine is still running Mojave, and will be for some time—our accounting app and my scanner both rely on 32-bit code. For a very long time, I've been using the built-in Stocks widget from the Dashboard (something else that's gone in 10.15) to track stocks I own or am interested in following.

I have two displays, so I just dedicate a small corner on one of them for the Dashboard widget, which I detach from the Dashboard using an old but still functional Dashboard devmode hint. The Stocks Dashboard widget is quite narrow, and not all that tall, so it didn't take a lot of space.

But recently, it broke, as you can see in the image at right. I set out looking for a replacement—just a simple desktop app that would open a window with stock quotes. Apple's own Stocks app doesn't meet my needs—it has a huge News area you can't close. Similarly, the Stocks section of the Today area in Notification Center requires mouse movement and action on my part to see.

I took a look at any number of third-party apps, but all of them were either full-blown stock traders/managers, lived in the menu bar or Dock, or were discontinued. I finally found what I was looking for, not in a desktop application, but in mop—an open source Go program—running in Terminal.

After a bit of setup work, here's what I'm now seeing1While I wish I had bought a lot of these years ago, I didn't—these are just some sample stocks on my desktop:

Yes, the window is slightly wider than my old one2It's actually incredibly wide, but I don't need to see the other columns, but it's not as tall, and I was able to find a spot for it. If you'd like to try mop yourself, setup is relatively simple.

(more…)

Living the bifurcated life in macOS Catalina

If you're a macOS Catalina user, and a user of Terminal for various tasks, you might be surprised at how some things work—or rather, don't work, in Catalina. As a first example, consider the Utilities folder…on the left is how it appears in Finder, and on the right, the contents of that same folder listed in Terminal:

While Finder shows a full Utilities folder, Terminal shows it as empty. Why? If you're somewhat familiar with the technical side of macOS Catalina, you probably know the answer: Apple has separated much of the OS and placed it on a read-only volume.

Apple's "About the read-only system volume in macOS Catalina" page explains things fairly well—basically, what you see as one Utilities folder in Finder is really two things: A read-only Utilities folder, and a user-writable Utilities folder. (If my machine had any user-installed apps in the Utilities folder, they would have shown up in the Terminal output above.)

(more…)

See exactly when an app launched

Update: I guess I should have searched here before I posted this—I wrote up another solution a few years ago, and that one includes a Keyboard Maestro implementation. Whoops! As this one's another method, though, I'll leave it up.

I was working on some stuff for our upcoming Usher 2 release, and needed to know how long Usher had been running. A quick web search found this post, where one of the comments had an answer that works well in macOS:

ps -p pid -o lstart=

Replace pid with the process ID (PID) from ps -ax for the app or process in question, and you're done. But it's possible to make it even easier to use by automating the task of getting the process ID. Here's what I came up with:

ps -p `ps ax | grep [U]sher$ | cut -c 1-5` -o lstart=

The bit between the backticks gets the matching process line from ps, then uses cut to keep just the first five columns, which contain the PID.1When the shell encounters backticks, it processes the commands within those backticks before processing the rest of the command—in this case, the backticked command returns the PID.

(more…)

The Robservatory © 2020 • Privacy Policy Built from the Frontier theme