- Go to '/Library/Application Support/Microsoft/MAU2.0'
- Cmd-drag Microsoft AutoUpdate.app to desktop.
- Create alias of MAU2.0 folder on desktop.
Thursday, November 21, 2024
Stop the stupid: Disabling Microsoft AutoUpdate on macOS as of Nov 2024
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.
Friday, July 12, 2024
Sharing an iPad with "Family Sharing" and a unique "Family" Apple ID.
Nobody expects Apple to bring Apple ID switching to iPadOS -- even though there's a version of it for managed devices. Technical and revenue issues aside, there are likely DRM contractual limitations.
So no Apple ID switches for the iPad. But there's a relatively easy way to implement a shared iPad for up to 5 people where Family Sharing can be used:
- Give the iPad it's own unique Apple ID
- Make the iPad Apple ID a family member. (See also: migrating from legacy shared iTunes Apple ID to family sharing.)
Friday, June 07, 2024
No message sound for one iMessage correspondent? User message thread can be both silenced and not silenced.
I thought I'd fixed Emily's messages not generating a tone or haptic notification as per my 4/29/2024 post below. Then the bug recurred. It's fixed again, for now. I had to delete her iMessages - four times. To delete them I first unpinned her then swiped to delete all her messages [1]. Her entry vanished -- only to return a few seconds later. I repeated this 4 times; sometimes the messages showed her profile image and sometimes they didn't. ONE of the four times the message UI showed a mute/silence icon (speaker with a line through it). I un-silenced that one then again deleted all the messages.
Finally there were no messages left for her. When she messaged me it created a new message thread and notifications worked.
I did other things of course. I can't disentangle them all. I removed her Contact Card's iCloud.com email but left her me.com email (clue!). I quit and resumed iMessages (Messages.app) and Contacts. I set her Contact back to the default message tone.
But I think the important fix was removing ALL of her messages.
Here's my guess as to what's going on -- and why this bug will affect very few people.
- It's possible for a Correspondent's message thread to be in a state of being silenced and not being silenced such that the silenced icon will not appear but the correspondent is silenced.
- It may be that this bug ONLY impacts people who have both me.com and iCloud.com emails associated with a single AppleID (old time legacy users).
- This bug is activated, I'm guessing, when a correspondent (Contact) is a participant in a group Chat that has been silenced and then un-silenced. (Because it showed up around the time I did that.)
- Although we (usually) see only one message thread per correctly configured Contact, in reality it appears there are several identities merged to look like a single user. I had long suspected this, but seeing how deleting thousands of messages sent over a decade seemed to expose identities with different attributes strengthened my suspicion.
I'll update this post if I learn more or if the bug recurs.
- fn -
[1] I really didn't need any of that data.
---
Initial version of this post from April 29, 2024
I got a message tone for every sender -- except Emily. Who is my most important correspondent.
So I went debugging. I asked Perplexity for fixes and got a good set of responses -- except for the non-existent DND setting (click for full res):
I tried all but reset Notifications since I have a vague memory of annoying side-effects from that. I also checked "hide alerts" (which is probably where the DND thing comes from -- that was an old term) on her Contact and that was off (not enabled). I toggled it for good measure.
I didn't want to remove and restore her contact as I thought that might mess up Photos.app naming. So I tried removing her phone numbers. Without any numbers in her contact iMessages did generate a tone -- but the default tone, not the custom tone. Still, it was something!
When I added in Emily's cellphone number that caused the custom tone I'd set to become active. (I also added back another number with no effect.)
So the bug is gone for now. I'm guessing it's something deep in the bowels of Apple's SMS/iMessage integration with AT&T (our carrier). The variable tone with and without the phone number is a clue.
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
Monday, March 18, 2024
Visual Studio Code Jupyter Python Extension line wrap in output cell - how to set notebook.output.wordWrap
My Visual Studio Code (Mac) Jupyter extension (plug-in) output was not line wrapped. It was a single unreadable output string. I had to either copy and paste into a markdown cell (where VSC line wrap config is followed) or I had to come up with Python output formatting solutions.
Then I saw a video in which the developer's cell block output was wrapping. So I went looking again. This turned out to be a lot harder than it was, say, 10 years ago. I spent at least 40 minutes, and probably more, digging through obscure corners of the internet
At last I got a hint. There is something called "notebook.output.wordWrap" that defaults to false but can be set true. If you can figure out how to set it.
I couldn't figure out how to set this value for the Jupyter Notebook extension on my Mac however. I got some hints from Microsoft's documentation on editing settings.json even though it's not correct about how to navigate to preferences. I used the ⌘, shortcut. From there I searched for "wordwrap"
You can see the result below. I needed to set Notebook > Output > Word Wrap to true. The copied JSON version of this is "notebook.output.wordWrap": true. You can see the setting in the screen shot below (click for full size).
I set this value for User and Workspace both, I assume Workspace wins but I don't know. Now my output wraps so I can read it.
There's also supposed be a metadata tag that causes a Jupyter notebook cell to scroll output but I couldn't get I too work and it felt too obscure to rely on.
Wednesday, March 06, 2024
Aperture will launch on an M2 Air running Ventura 13.6.3 and will browse an existing Aperture Library.
Tuesday, February 27, 2024
Extracting core concepts with ChatGPT 4 from OCR of scanned sample examination PDF - Feb 2024
Step One: OCR and download text file
Step Two: ChatGPT 4 analysis
... equilibrium price, consumer's surplus, producer's surplus, total surplus, efficient output levels, negative externalities, deadweight loss (DWL), price ceilings, and the impact of taxes on market outcomes ...
I don't think it added much to the textbook chapter topic loss but it did provide a plausible set of topics to emphasize in my son's studying. I was primarily interested in the workflow today. It will be interesting to look back on this in a year and see what's different.
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