- Copy Library to external drive.
- Change primary Library to optimized storage [1].
- Create new user account called iCloudBackup.
- Log into iCloudBackup using same Apple ID as primary account. Turn off every iCloud feature.
- Open full-resolution Library on external drive and make it the system library.
- From within Photos turn on iCloud Photos support and set to full image download.
- Keep the iCloudBackup account active for a few days so all sync things settle out. Then shut down.
Wednesday, November 05, 2025
macOS Photos: Optimized Storage version and External Drive Full Resolution version of same library
Thursday, October 09, 2025
Vibe coding a python script to create a plain text file with my macOS Photos (Aperture) folder hierarchy
My single greatest Photos.app frustration (I have many) is the inability to search the folder hierarchy. Mine contains hundreds semantically important folder names where the hierarchy is also meaningful. Meaning lost in the catastrophic Aperture to Photos migraiton.
This morning I had an hour free so I asked an ai about available utilities and workarounds. It said there are really no good options, but the Python osxphotos module might be able to traverse the folder hierarchy.
I have dabbled in minor Python coding and I have a half-baked Visual Studio Code environment. So I asked Claude 4.5 in Perplexity (this is not a formal supported coding environment) to write me a script that would use osxphotos to build a text file representation of the hierarchy. I ran whatever it generated.
It took 4-5 tries. I never edited the code myself. The first time there were copious errors, I describe errors and requested a redo. The next two times there were fewer errors, but I only got the top level of the hierarchy. The ai added debug code. It took two more tries of running and reporting errors to get a script that generated the text file I wanted (example):
[Teams and Orgs / MN Special Hockey / MNSH 2006 pre-season] MNSpecialHockey_060317
[Teams and Orgs / MN Special Hockey / MNSH 2022-2023] MSH 2023 Printed
[Teams and Orgs / MN Special Hockey / MNSH Woodbury 2019-2020] MSH Portraits Jan 2020
[Teams and Orgs / MN Special Hockey / MNSH 2008-2009] Nov 2008 MN SH Section 108 Event
[Teams and Orgs / MN Special Hockey / MNSH 2021-2022] Portraits MNSH Woodbury 2022
This is most personally valuable code I have ever "produced" since my days of writing the "medtrans" C program to turn 1990s MEDLINE output into tab delimited importable text.
And I wrote none of it.
I'll be cleaning it up and refining it, but below is the code I have today. It also included album names within a containing folder - I didn't want that but now I find it useful so I'll leave it.
Code
Sunday, July 20, 2025
Tip: Let your ai tell you what's new and novel in an iOS or macOS release
I like to wait a month (iOS) or six months (macOS) before applying major updates. By the time I apply them all the useful tips and tricks I read along the way are ancient history.
Instead of trying to keep track of these things before the OS is installed wait until you are ready to pull the trigger. Then ask your ($20/m) ai to summarize known issues and interesting new features, tips and tricks. You can provide context as needed (ex: I am an expert user, etc).
PS. Apple got away from providing PDF versions of manuals and user guides -- but if they still did that I'd drop the PDFs into my Perplexity macOS Space.
Wednesday, July 16, 2025
New lessons on macOS network home backup: WiFi issues and so many bugs
- Apple hardware bugs in the M1 Air that can make the Air WiFi unreliable. (Could be drivers/software but persistence suggests either a very hard problem or hardware with possible software mitigation.)
- The odd behavior of Eero wifi
- Bugs and limitations in macOS SMB networking and in HPFS mean network share filesystems can be corrupted beyond repair.
- A completely unrelated red herring that turned out to be due to CenturyLink's parent org messing up their DNS configuration.
- Reconfigured physical layout of our Eero base stations so there was a direct "line of sight" short distance between the M1 Air dock location and the Eero base station. The M1 Air needs a much stronger than usual WiFi connection to be stable. The new configuration also offloads some traffic from an overloaded Eero device.
- We use a Synology Time Machine server as a secondary (not robust) backup. That backup was also corrupted (happens normally anyway -- because bugs, but WiFi issues sped it up). At least in Sequoia if you remove a Synology TM backup destination and then add it back there's an option to replace the original. This is faster than wiping it from the Synology side.
- I used advanced preferences so Carbon Copy Cloner will dismount the network share after a clone/backup is compete. The less that share is open the better because it's hosted from a MacBook Pro that can be disconnected from the network, and macOS/SMB does not handle that disconnect gracefully.
- I had configured a user quota for one of our machines that had become too small. Time Machine should have provided guidance about capacity but did not do so in a useful way.
Tuesday, June 24, 2025
Create a macOS desktop shortcut (.inetloc) that deep links to a specific note in Notes.app
Writing this up quickly, I might get back to it later.
I want to have a shortcut to a specific macOS Notes.app note that I can put in a folder.
1. In the note I want to link to hit ⌘K. Search on name of the current note.
2. Do NOT use the note title option. Unclick that and provide your own title. Create link in note.
3. A link is created in the note. Click on that that and then drag it to the desktop. An inetloc file with a deep link is created.
This is what the .inetloc shortcut has in it:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>URL</key>
<string>applenotes:note/fcbf1ab3-4779-49d5-b12f-ab33e9809113?ownerIdentifier=_5e4c6731f56ce6c061ce7014d9bc1b2a</string>
</dict>
</plist>
Thursday, May 08, 2025
Word Services in macOS Sequoia: reenabling after migration
When I migrated from Mojave to Sequoia (with a pause at Monterey I think) I lost the word services I liked. Today I finally investigated and figured out they came from DevonThink's free WordService "app". During the migration they were disabled, so I had to relearn how they work (macOS needs AI for searches of system settings -- because obviously Apple will never do the obvious fixes):
Now go into System Settings > Keyboard > Keyboard Shortcuts > Services > Text and you’ll see several services prefixed with WordService. Enable the ones you’re interested in, e.g., WordService: All Caps. If it’s a command you think you’d use often, you may want to assign a hotkey. Double-click the shortcut field to the right and enter a shortcut for the desired service.
I had to reenable my preferred services. Some of them don't seem to work now but most do. They are big timesavers for me. Reformat is particularly appreciated. From the help file:
A combination of Trim Lines, Remove Line Endings, Remove Multiple Spaces and Remove Quotes preserving paragraphs.
Devon Technologies has several free and valued utilities. I use EasyFind and WordService.
Monday, April 21, 2025
Managing the incredibly annoying Apple Wallet notifications on Sequoia
- On macOS Sequoia:
- go to Notifications:Wallet and turn off "allow Notifications"
- Notifications:Notification Center: turn off "Allow notifications from iPhone" (I turned everything off)
- On iOS (iPhone)
- For each card in Wallet tap on ellipsis and turn off Notifications
- Notifications:Notification Center: Change Display to "Count" (I made the all the Notification options as restricted as possible).
- Notifications:Wallet: turn off "Show on Mac".
Thursday, March 13, 2025
RIP Simplenote -- data freedom and the painless plaintext migration to Notes
[UPDATE: Simplenote tech support is working on a fix for the bug that manifested with 15.3.1. I have migrated for several reasons so I will stay with Notes. Which has an annoying migration bug with incorrect style assignment by the way.]
Fifteen years ago Simplenote freed me from Outlook Notes. It was one of the last steps in a long and remarkably painful migration from PalmOS to iOS. [1] Prior to that, in 2008 my Palm Notes moved to Toodledo Notebook.
I considered Evernote at the time, but by 2010 I'd learned about data lock and data freedom. I didn't see an easy migration path from Evernote to anything else. Even then I feared products I could not easily leave.
In those days Simplenote didn't have an export facility, but it would sync with Notational Velocity and that stored plain text notes in the file system. They were indexed by Spotlight (when it worked) and even by them there were products that would import those plaintext notes. At worse I would have them in the file system. So Simplenote was my choice.
Later Simplenote introduced support for RTF but I stayed with plaintext. Data portability was the key.
Over time macOS Notes slowly, very slowly, improved. It added import facilities (but not export [3]!). Sync worked, more or less [2]. Meanwhile Simplenote kept working, but their business failed and Automattic bought them -- and kept it running without a business model. But it still worked and I knew there was an exit strategy.
Then yesterday Simplenote's macOS client started crashing for me on Sequoia 15.3.1. I would click on a note and the app would through an exception. 100% of the time. It worked on web and iOS. I tried logging out, deleting their Application Support folder, and a few other measures. Nothing worked. There's no email support or way to submit bugs. They had a forum but it was little used. I learned that the web version no longer supported my Simplenote credentials, instead authentication required mailing me an email code. I'm guessing, in the absence of useful documentation, that I needed to create an Wordpress.com account with the same email address and maybe I'd get access to my notes. I also fond the web app wouldn't work in Safari (redirect to Simplenote app I think).
There were other "red flags", like some erratic behavior by Automattic's CEO, that told me the time had come to leave Simplenote after 15 years of great service for essentially no money (I paid back when you could still do that).
So I got Simplenote's web app working, exported all my notes (still plaintext) as text files, then imported them into Sequoia's Notes app. All 954 notes showed up in the "On My Mac folder" after import. It seemed to take a minute or two for Notes to digest them, but after that I could drag and drop the files into the iCloud notes folder. After a few seconds they appeared there.
I did run into one bug - incorrect Style applied to Note on import. The imported notes appear with Helvetic Regular 10.3 font in Sequoia Notes with the "Body" Style checked in the UI. They are a bit hard to read my Air, but impossible to read on my iPhone.
This isn't the Body style! Despite these being plaintext notes the import tool assigned them an odd style and mislabeled it as "Body". If you use the "Remove Style" option or assign "Body" they revert to the correct default font (System Font, Regular, 13). In practice this is only annoying and when I use a Note I just fix the style as desired. One day I might see if I can automate removing the bad style [4]. (I "submitted" the bug via an Apple Discussion post, which at least gets indexed and AI accessed.)
One nice surprise about the migration is that the export process set "data last modified" in Finder metadata to the date the note was last modified. And on import Notes set it's date modified to the Finder value! One of my oldest notes kept it's modified date of 3/9/2010 (it's actually much older but got that data during a 2010 migration). I did not expect that nice detail.
I may run into other bugs, but for now this was the easiest data migration I've ever done. Praise be to Data Freedom and plaintext!
I'm sad to leave Simplenote; if they had had a subscription plan I'd have paid for the service. It was a great product that worked well for 15 years. AND they had a decent export capability. Thanks to all who made Simplenote work. I will remember it fondly.
- fn -
[1] Few remember, but it took several years for iOS to be as useful as PalmOS had been. There was a gap between PalmOS dying and iOS being functional where I went back to paper for several tasks.)
[2] It's possible to create version conflicts in Notes where the conflict notes stop syncing. There's no error message and sometimes they sort-of merge. We live in fallen times.
[3] There are 3rd party solutions and Shortcut/Automator solutions. Not ideal, but in 2025 we don't get ideal any more.
[4] There's no AppleScript or Automator/Shortcut for changing the formatting or style of text in a note that I found or that Perplexity knows about. I was able to create a script for Keyboard Maestro that lets me remove the style on a selected note with a shortcut keystroke. Of course that does set modified date to today, so keeping the old modified date ends up being a transient benefit.
Sunday, January 19, 2025
Creating a macOS Spotlight indexed archive of completed tasks and notes: Microsoft To Do via Outlook.com PDF
I like having local Spotlight indexed "standard" file format archives of completed tasks and calendar items. This is not a popular feature for most people so it's not widely supported. Today I found that this is possible with Microsoft To Do [1] (which replaced old Outlook Tasks).
Microsoft's free To Do.app for macOS has a web store that is shared with Outlook.com (and with Outlook for macOS, but I did not want to install that even though I have a 365 family account).
To Do has no print or archive facility. However Outlook.com does and it shares the To Do sync data. (I think Outlook.com is free for anyone who has a Microsoft ID.)
So:
- Go to outlook.com and open task list (same Microsoft ID as To Do)
- View All or Completed or whatever list and click ellipsis to see print

- When Print choose to include notes.
I get a multi-MB decently formatted PDF that Spotlight indexes for me.
In the general Outlook.com view has print capabilities the To Do app lacks.
[1] To Do is the only Microsoft product I routinely used. They bought it from somebody a decade or so ago. I could now switch to macOS Reminders but I find it oddly useful to keep Reminders as an aide to my declining short term memory and use To Do for small projects, shopping and so on. I put quite a bit of information in To Do notes and often find value in looking it up.
Sunday, November 24, 2024
Copying a calculated cell from Numbers into Pages - two workarounds and Apple's Copy Snapshot answer
What about Cmd-Opt-Shift-V?
This pastes without table formatting but Numbers will still put the formulae on the clipboard and the paste will show broken references. Unless you use the Copy Snapshot feature below, then it does nothing.
There are three workarounds I've learned:
Paste into something like Notes.app or TextEdit.app or pretty much anything but Pages. Then copy/paste that into Pages.
If you create a Sheet that directly references a calculated cell you will be able to paste that into Pages. Numbers doesn't hunt for the formulae, it just puts the calculated cell value on the clipboard. (Thanks Ben O'Matic for the tip!)
Best - Apple actually fixed this
If you choose "Copy Snapshot" in Numbers (it's up on the File menu you and I never look at) it will copy the values, not the formulae. It will paste as a table in Numbers. There's actually documentation of this, but the AIs and Google couldn't find it -- until I figured it out. (How did I figure it out? I realized what Apple needed to do and then it occurred to me that maybe they had done it.)
What should Apple do?
I only found "Copy Snapshot" after I wondered how Apple could fix this. So it could be a bit easier to discover. Something like:
- Make the "Copy Snapshot" behavior the default Copy behavior and fix the Cmd-Opt-Shift-V shortcut.
- Make the current behavior a separate item (opt-copy?) called something like "Copy Dynamic".
Thursday, November 21, 2024
Stop the stupid: Disabling Microsoft AutoUpdate on macOS as of Nov 2024
- Go to '/Library/Application Support/Microsoft/MAU2.0'
- Cmd-drag Microsoft AutoUpdate.app to desktop.
- Create alias of MAU2.0 folder on desktop.
Saturday, July 13, 2024
End of software support for the Fujitsu (Ricoh, PFU) ix500 document scanner
Many years ago I bought a (then) Fujitsu ScanSnap ix500 document scanner. The hardware has been superb but the MacOS desktop software was always ugly and awkward. Infamously there's no API for a third party to use and no standards support. The current version of the desktop software allows only one active WiFi desktop client to protect revenue on their business line.
In contrast to the desktop app the simple iOS app, ScanSnap.app [ScanSnap Connect Application], worked well for me. It was even multi-user -- anyone could scan from their iPhone.
As of 7/2024 the ix500 still works with a single macOS device by cable or WiFi using the current desktop app. The iOS app is end of life however. A year ago it dropped Google Drive support. A few days ago OneDrive auto-upload started to crash the app following upload (it freezes, needs force quit, the document is lost).
The replacement for [ScanSnap Connect Application] is ScanSnap Home. That app does not support the ix500; it will not connect via WiFi. There is also an end-of-life ScanSnap Cloud app that uses PFU's crazy (failed?) cloud document routing service. I did not test that app.
For now we will probably switch our ix500 to a wired machine connection; I have a de facto home server that will work for that.
I'm playing around with iOS ScanSnap.app to see what still works after disabling OneDrive Auto Upload:
- If you preview a PDF doc it can be sent to OneDrive from preview without a crash.
- If you tap on the ellipsis next to a File you can AirDrop or otherwise move it about in iOS Files.
- If you use the ScanSnap Edit function, select documents, then choose "Save to the Files app" the documents in <On My iPhone / ScanSnap / ScanSnap / .Files> [1] are copied to <On My iPhone / ScanSnap / ScanSnap> and from there can be manipulated using Files.
Wednesday, May 01, 2024
The modest changes that would make macOS Photos.app a good app
- For any photo show list of albums that hold it. The UI for Contact/Folder relationships would do.
- Include Folder name matches in search results.
- Port Photos.iOS feature that shows geo view of images for an album to Photos.mac
- Provide a list view of images with metadata
- When exporting images also export metadata (ideally in image header, otherwise XMP sidecar
Wednesday, February 14, 2024
AppleScript to very slowly list the albums a macOS Photos.app image is associated with
-- Jacques Rioux's script https://discussions.apple.com/message/29601534#29601534
-- modified by leonie for Catalina
-- version 1.01, changed a dialog to a notification
-- version 2, added the support to suppress smart albums
-- Select the photo in Photos, then run this script
-- by pressing the "Run" button in the script editor
-- or run it from the scripts menu.
-- The script will show first a panel with the filename of the photo it is searching for.
-- Then it will show a second panel with the list of albums.
-- if you do not see the panels, click the script Editor icon in the Dock, if it is bouncing.
global allalbums -- the list of all albums
global allfolders -- the list of all folders
set NoSmartAlbums to true -- set this to false, if you want to find the smart albums too
--part 1. get the selected photos
tell application "Photos"
activate
-- Add the photo you want to search for to a top level album as the first item in the album
set resultcaption to "Searching for: "
try
set sel to selection
if sel is {} then error "The selection is empty" -- no selection
on error errTexttwo number errNumtwo
display dialog "No photos selected " & errNumtwo & return & errTexttwo
return
end try
set imagename to "unknown filename"
try
set target to item 1 of sel -- the image to seach for
tell target
set imagename to the filename of target
end tell
on error errTexttwo number errNumtwo
display dialog "Cannot get the filename of the first image: " & errNumtwo & return & errTexttwo
end try
set resultcaption to (resultcaption & imagename)
end tell
display notification resultcaption subtitle imagename
-- Part 2: get a list of all albums by searching the nested folders
set allfolders to {}
set allalbums to {}
tell application "Photos"
set allalbums to the albums -- collect all albums
set allfoldernames to {}
set allalbumnames to {}
set level to 0 -- nesting level of folders
set nextlevelFolders to the folders
set currentLevelFolders to {}
repeat while (nextlevelFolders is not {})
set currentLevelFolders to nextlevelFolders
set nextlevelFolders to {}
repeat with fi in currentLevelFolders
tell fi
set ffolders to its folders
set falbums to its albums
set nextlevelFolders to ffolders & nextlevelFolders
set allalbums to falbums & allalbums
end tell
end repeat
set allfolders to currentLevelFolders & allfolders
set level to level + 1
end repeat
-- return allalbums --test
end tell
-- removing albums with "smart" in the name
if NoSmartAlbums then
set without_smart_Albums to {}
repeat with a in allalbums
if (the name of a does not contain "smart") then set without_smart_Albums to {a} & without_smart_Albums
end repeat
set allalbums to without_smart_Albums -- to exclude smart albums
end if
-- From Jacques Rioux's script:
tell application "Photos"
if sel is {} then return -- no selection
try
set thisId to id of item 1 of sel
on error errText number errNum
display dialog "Error: cannot get the image ID" & errNum & return & errText & "Trying again"
try
delay 1
set thisId to id of item 1 of sel
on error errTexttwo number errNumtwo
display dialog "Skipping image due to repeated error: " & errNumtwo & return & errTexttwo
error "giving up"
return
end try --second attempt
end try
set theseNames to {}
repeat with a in allalbums
try
tell a
if ((the id of media items) contains thisId) then
set theseNames to {the name of a} & theseNames
end if
end tell
--set theseNames to name of (albums whose id of media items contains thisId)
on error errText number errNum
display dialog "Error: cannot get the albums" & errNum & return & errText & "Trying again"
try
delay 1
tell a
if ((the id of media items) contains thisId) then
set theseNames to {the name of a} & theseNames
end if
end tell
on error errTexttwo number errNumtwo
display dialog "Skipping image due to repeated error: " & errNumtwo & return & errTexttwo
error "giving up"
return
end try
end try
end repeat
end tell
if theseNames is not {} then
set {oTid, text item delimiters} to {text item delimiters, return}
set {t, text item delimiters} to {theseNames as string, oTid}
-- return oTid
else
set t to "No album"
end if
activate
set resultcaption to resultcaption & ", found it in these albums:
" & t as string
set the clipboard to resultcaption
display notification resultcaption subtitle "Saved to the Clipboard"
display dialog resultcaption & ", Saved to the Clipboard" buttons {"OK"} default button "OK"
-- you can press the Enter key or the return Key to close the dialog
return resultcaption -- léonie