Skip to content

Mac OS X Hints



Using network locations in macOS Ventura

Update: macOS 13.1 brings the Locations feature back to macOS Ventura, so you can ignore this blog post. To use locations, open the Network section of System Settings, then tap the ellipsis with the down arrow at the bottom of the window:

While this is still a bit hidden, it's much more usable than having to visit Terminal. I don't know why they vanished, but I'm glad Locations have returned from their brief hiatus.

This weekend, I finally migrated my 2019 5K iMac from Mojave to Ventura. There were many reasons for remaining on Mojave, starting with the fact that I liked the OS and it worked very well for me. But I also had a couple 32-bit apps I relied on, as well as a number of 32-bit games I enjoyed playing now and then. As time went on, though, there were more and more current apps that I couldn't update to the latest versions, as they all required something newer than Mojave.

(I wasn't a complete macOS luddite—my 14" MacBook Pro runs Ventura, and that's what I use when supporting Many Tricks customers.)

After the update, I remembered one of the bugaboos about Ventura: Apple, in their infinite wisdom, removed the Locations feature from the Network System Settings panel.

[continue reading…]



Easily convert (some?) AVIs to QuickTime-compatible files

Here's another entry in my "remind myself without searching the entire internet" series of posts. I often want to convert a non-native video into a QuickTime-compatible format. In one oft-repeated use, I have a time lapse camera that outputs AVI files that QuickTime cannot read. Using Don Melton's Other Video Transcoding tools, converting between the two forms is pretty easy:

other-transcode --hevc --mp4 input_file.m4v

The output file will reside in the same directory, with the same name, but with the mp4 extension. I know there are tons of ways to do this, and many offer much more control over the final quality. For my time lapse camera videos, though, the quality is fine and this is really easy to use.



Merge multiple movies into one while minimizing file size

I had two short video clips I wanted to merge into one, each about 8MB in size. I first did this using QuickTime Player's Clips feature, but the end result was over 100MB in size. For my second try, I switched to ffmpeg, which can be installed via Homebrew, MacPorts, or some other method.

This isn't quite as simple as typing one command, as ffmpeg wants to process a list of files to merge—it can't, without some Unix wizardry, accept a list on the command line. So step one is to create a text file (list.txt in my example) in the same directory as your video files. The file contains a list of each movie to be merged, one entry per row, like this:

file '/full/path/to/movie1.mp4'
file '/full/path/to/movie2.mp4'
file '/full/path/to/movie3.mp4'
etc.

Save the text file, then use this command to merge the movies into one:

ffmpeg -f concat -safe 0 -i list.txt -codec copy merged_movie.mp4

When done, you'll have one new movie with all of the listed movies, in the order in which you listed them. And best of all, the size won't balloon when you do so—using the same movies as I used in QuickTime Player, the finished file was just 28MB in size. This isn't limited to mp4s; you can merge any type of video that ffmpeg can handle.

And yes, this is another entry in my series of "remind myself" posts; I originally found the answer on Stack Overflow.



Reverse a video using ffmpeg

This post is another in an ongoing series where the sole point of the post is to make it easier for me to find this information in the future—instead of searching sites and finding tons of wrong answers, I can just search my blog and find the right answer. If it's useful to anyone else, that's a bonus.

Sometimes, I want to reverse a video, usually for humorous effect—to turn a disassembly time lapse video into an assembly time lapse video, for example. If you have ffmpeg installed (via Homebrew or MacPorts or other method), then it's quite simple to do. Here's the command:

ffmpeg -i original_movie.mp4 -vf reverse -af areverse new_reverse_movie.mp4

It doesn't have to be an mp4, of course—any format that ffmpeg can deal with will work fine.

(I originally found this solution on StackExchange.)



Search sites from anywhere via shortcuts, version 3.0

Yes, it's the return of the return of Web Search via Shortcuts, now at version 3.0 and much better than either of the previous versions. This is my Keyboard Maestro macro that lets you easily search web sites via a pop-up menu and an abbreviation:

The above would search DuckDuckGo for the theory of everything, and open the results in your default browser. Here are the highlights of the 3.0 release:

  • The input dialog appears much more quickly—over 4x faster than in the 2.x series.
  • All customization is done within the macro itself; there's no need to muck about in the Keyboard Maestro editor.
  • You can modify (shortcut, description, URL) any search site, including the default sites.
  • A list of 80+ search sites is included, and you can activate any of them with a few clicks and the creation of a shortcut word for each site.
  • All updates are tracked in two small text files on your drive, which means future updates will be completely automatic.

Read on for the details, or if you'd like to get started with Web Search via Shortcuts version 3, download the macro now. (Current users can use the check for updates macro to download the new version directly from version 2.x.)
[continue reading…]



Convert epoch time to human-readable time in Terminal

This is a stupid-simple Unix tip, posting more as a reminder to myself than anything truly insightful—I keep forgetting these details, so by doing the work to create a post about it, I'll never forget them again…

I've been using unix time from the unix side of macOS quite a bit lately, as it's an easy way to get timestamps for things. Getting the epoch time is easy:

$ date +%s
1641735529

The thing I always forget is how to convert an epoch time back into a human-readable format of my choosing, despite it being shown in the man page. It's simple; use the -r option, like this:

$ date -r 1641735529
Sun Jan  9 05:38:49 PST 2022

And, of course, you can format it how you like using a strftime formatted format string, i.e.

$ date -r 1641735529 "+Today is %A, %B %e, and it's %I:%M:%S %p"
Today is Sunday, January  9, and it's 05:38:49 AM

Related: Yes, I wake up early; it started with macosxhints.com and needing to update the site before I left for my real job each day, and it persists 20 odd years later.



Search sites from anywhere via abbreviations

Note: This post is no longer updated. Please see the version 2.0 post for current details and download links. This post remains because it has a fair bit of information about the macro in general.

Nearly five years ago, I wrote about my simple Keyboard Maestro web search macro that let me search many web sites from anywhere within macOS. While it worked well, it felt a bit cumbersome—I had to scan a pop-up palette of sites, and then press the proper key to select the site I wanted to search (so I had to keep the list relatively short). Then I'd wait for a new prompt to appear, type the search terms, and press Return.

Because of my macro's convoluted interface, I found myself using our own Butler most of the time, as it offers an interface similar to SafariKeywordSearch (which works in Safari as an extension; I was reminded of it due to a recent post by @danmoren on Six Colors). Both it and Butler do keyword searches, so you can type d best home vacuums to search DuckDuckGo for best home vacuums, or gm Tokyo to search Google Maps for Tokyo.

I decided to rewrite my macro to work like those apps do, but with an added feature: I use a number of browsers, and there are times I want my search to run in something other than the default browser. Using my rewritten macro, I can now optionally specify a browser in which to run the search. So when I activate the macro, I can use one of two different formats for the search command:

Both of those searches will search the Apple Movie Store for movies with the keyword disaster; the one on the left will use my default browser (currently Safari); the one on the right will use Edge.
[continue reading…]



Simplify VPN connections via TunnelBlick

I use a VPN on our home router, which runs pfSense. When I'm on my laptop, I connect to the VPN for two reasons. The first is security when using unknown wifi connections. The second is for ease of access to my home Macs and network—when on the VPN, my laptop appears as part of the local network, so screen and file sharing are simple and 100% reliable.

To access the VPN, I use TunnelBlick, which runs as a menu bar application. Launch the app, activate its menu bar item, choose your VPN connection profile from the list, enter your password, and you're connected. But doing this several times a day gets annoying quite quickly. Thankfully, TunnelBlick includes AppleScript support.

Using that support and Keyboard Maestro, I wrote a few macros to simplify connecting to and disconnecting from our VPN, as well as changing the DNS address depending on whether I'm connected to the VPN or not.

Technically, the DNS address shouldn't have to be switched—I have the VPN and Tunnelblick configured to automatically switch on connect, but for whatever reason, it's just not happening. So I included DNS address switching in my macros.
[continue reading…]



VMware Fusion and the vmmon broken pipe error

As part of my struggles to fix my constantly-crashing suggestd process (and the Spotlight failures that it seems to cause), I reinstalled macOS Mojave a couple of times using the Internet Recovery partition. These were in-place reinstalls, so I didn't start completely clean, but the OS is reinstalled from scratch—so much so that I even had to run the 10.14.6 updater and a couple of security updates again.

In the end, not only did this not fix the suggestd problem, but it also broke my all-important VMware Fusion virtual machines. When I tried to launch any of them, I was greeted with an error message:

Error: Could not open /dev/vmmon: Broken pipe

This is apparently so common that VMware has a knowledge base article on the issue. The error is due to VMware Fusion not loading its required kernel extensions, but nobody seems to be sure of the cause of the problem. However, that article is supposed to fix it…unfortunately for me, it did not. I never saw an entry in the Security & Privacy System Preferences panel to allow VMWare's extensions. As a result, they didn't load.

Here's the tl;dr for the fix that did work: Rebooting in Recovery mode (hold down Command-R at startup) and deleting the KernelExtensionManagement folder located in /private/var/db. There was a lot more to it than that, though, which I cover for my own possible future needs in the rest of this post, in case the linked sources ever vanish.

[continue reading…]