Andrew Warkentin has built a "virtual museum of operating systems (and standalone applications) running under emulation, implemented as a Linux VM for QEMU, VirtualBox, or UTM".
❧ 2026-05-22
OpenExtract: "A free, open-source desktop application for extracting text messages, photos, voicemails, call history, contacts, and notes from iPhone/iPad backups. No cloud. No subscriptions. Your data stays on your computer." OpenExtract vs iMazing
Phosphor: "Free and open-source iOS device manager for macOS. Browse backups, export messages, extract photos, manage apps - no subscriptions, no iCloud lock-in." Phosphor vs iMazing & Finder
iDescriptor: "A free, open-source, and cross-platform iDevice management tool."
iTunes Backup Explorer: "A graphical tool that can extract and replace files from encrypted and non-encrypted iOS backups."
❧ 2026-05-18
"Stand porter at the door of thought." —Mary Baker Eddy
"From now on my mind is the material with which I have to work, as the carpenter has his timbers, the shoemaker his hides; my business is to make the right use of my impressions." —Epictetus
"It is your thoughts alone that cause you pain." —A Course in Miracles
"As a man thinks, so he becomes." —Ashtavakra gita
❧ 2026-05-14
A user found their existing, long-held Gmail account (e.g., example@gmail.com) inexplicably and seemingly inextricably linked to an unwanted Google Workspace account (e.g., user@example.com), the MX records for which had never even been set up.
Appears to be a common lament:
Google support forums contain misleading and confusing advice. A Gold Product Expert claims that:
"A Google Workspace account is a free standing account that uses a business domain name for its email address. It has to be created independently from any gmail.com account."
Meanwhile, a Product Expert Alumni asserts that:
"If you used your gmail account to sign up for a Google workspace Individual Account and if you cancel it then you will lose your gmail account as the gmail account will be permanent link to Google workspace Individual Account"
Google's own documentation says otherwise. From Cancel Google Workspace for Gmail accounts - Cancel a Google Workspace subscription that you signed up for with a Gmail address:
"You have two cancellation options:
"With either cancellation option, you lose access to premium Google Workspace services, your Admin console, and any billing records right away. You still have access to some Google Workspace services, such as Gmail, Google Calendar, and Google Meet, as well as other Google services, such as YouTube, Google Photos, and Google Ads, through your personal Gmail address. Personal data associated with these services is retained."
A number of users (1, 2, 3, 4, 5, 6) report success with cancelling the Google Workspace subscription: Google Admin → ☰ menu → Billing → Subscriptions → click your subscription → More → Cancel Subscription.
The aforementioned user contacted Google Support for guidance. Rather than directing them to cancel the subscription, support walked them through a more circuitous route:
- Create a new user (admin@example.com) and assign it the super admin role.
- Remove the super admin role from the original account (user@example.com), then delete that user.
- When prompted during deletion, transfer data to admin@example.com.
- Data migration (~100 GB) took about 45 minutes; upon completion, a popup window entitled "YOUR TASKS" displayed "Removed example@gmail.com."
- Signing in to example@gmail.com showed a message which read in part: "Your account has been removed from an organization: Your admin has converted your managed Google Account to a consumer account."
- Email, contacts, and photos were intact in example@gmail.com. Google Drive files were not - they'd been transferred to admin@example.com; Google Takeout on that account was used to recover them.
Google Support should have instructed the user to back up via Google Takeout before beginning the migration, and perhaps should have skipped it entirely in favor of simply cancelling the Workspace subscription.
How is this happening?
Apparently via nag banners promoting Google Workspace on the Gmail website, as described in Remove specific google ad at top of email (to "Try Google Workspace") and Workspace is Spamming Me Constantly — Please Help.
See also
❧ 2026-05-13
When File → "Export as PDF…" is not enough:
Enable Develop menu: Settings… → Advanced → check "Show features for web developers"
Press Cmd+Opt+I
Click "Elements" → right-click <html> tag → click "Capture Screenshot"
The feature is present as of Safari 11.1.2 in OS X 10.11.6 (missing in Safari 10.1.2/OS X 10.10.5): Preferences… → Advanced → enable "Show Develop menu in menu bar".
❧ 2026-05-09
Given a folder containing 365 MP3s in the Files app with names like:
2001-04-30...mp3
play the one matching today's month/day (ignoring the year) each morning at 9:00.
Create the shortcut
- Open the Shortcuts app
- Tap + in the top-right corner
- Tap the name field at the top (it says New Shortcut)
- Tap Rename
- Enter "Daily MP3"
- Tap the blue Return key
Action 1: Current Date
- Tap Search Actions
- Search for and tap Date
- Leave it set to
Current Date
Action 2: Format Date
- Tap Search Actions
- Search for and tap Format Date
- Leave the input set to
Date
- Tap the dropdown arrow to the right of
Date
- Tap
Short to the right of Date Format
- Tap
Custom
- Change Format String to
-MM-dd
- Tap the blue Return key
Action 3: Get Contents of Folder
- Tap Search Actions
- Search for and tap Get Contents of Folder
- To the right of Get contents of, tap
Formatted Date → Clear Variable → Folder
- Browse to and select your MP3 directory
Action 4: Filter Files
- Tap Search Actions
- Search for and tap Filter Files
- Tap Add Filter
- Change
File Size to Name
- Change
is to contains
- Change
anything to Formatted Date
- Tap the blue Return key
Action 5: Set Volume
- Tap Search Actions
- Search for and tap Set Volume
- Tap
50% and change to desired playback volume
Action 6: Play Sound
- Tap Search Actions
- Search for and tap Play Sound
- Tap the dropdown arrow to the right of
Play sound
- Tap
Choose Variable
- Select
Files (which is the output of the Filter Files action; Shortcuts labels it by output type, not by action name)
The shortcut should now look like this. Happily, the Play Sound action works even when the device is locked (perhaps the Apple dev who generously and sagaciously decided that can fix another issue).
Create the 9 AM automation
- Tap the back arrow at the top left
- Tap the Sidebar button at the top left if the sidebar is hidden
- Tap Automation
- Tap + in the top-right corner
- Tap Time of Day
- Set the time to
9:00 AM
- Make sure Repeat is set to Daily
- Change Run After Confirmation to Run Immediately
- Tap Next
- Under My Shortcuts, tap Daily MP3
❧ 2026-04-30
Rengetsu echoing Epictetus:
The world's dust
swept aside
here in my hermitage
I have all I need—
the wind in the pines.
|
 |
Notes
The above appears to be an abridged rendering of John Stevens' translation in Rengetsu: Life and Poetry of Lotus Moon (Echo Point Books & Media, 2014, p.154):
The world's dust
Swept aside
No care for the future—
In my hermitage I have all I need:
The wind in the pines.
Two scrolls (1, 2) attributed to Rengetsu have the original as:
世のちりを
よそにはらひて
ゆく末の
ちよをしめたる
やとの枩風
In modern Japanese:
世の塵を
余所に払いて
行く末の
千代を占めたる
宿の松風
The elided line, ゆく末のちよをしめたる (literally "go end <possessive particle> thousand ages <direct object marker> secure <classical past/perfect ending>"), resists idiomatic translation. It conveys the sense of securing prosperity or continuity for "a thousand ages"/forever.
Artwork: Detail from Rengetsu's Mountain Village in Autumn
See also
❧ 2026-04-27
Presenting from a laptop often means craning your neck to check what the audience sees. The following workflow creates a controlled presenter setup: selected apps launch maximized on the projector, the projector view is mirrored back to the MacBook with click-through support, and notes remain isolated on the laptop display.
1. Set the projector as an extended display
System Settings → Displays → select the projector/external display → Use as: Extended display
2. Install and configure Hammerspoon
- Install Hammerspoon
- Grant Accessibility permission when prompted
- Hammerspoon menu bar icon → Open Config
- Paste the script below into
init.lua and save
- Hammerspoon menu bar icon → Reload Config
-- Auto-move and maximize QuickTime Player and Preview windows
-- on the first external display.
hs.window.animationDuration = 0
local wf = hs.window.filter.new({
"QuickTime Player",
"Preview",
})
local function externalScreen()
local primary = hs.screen.primaryScreen()
for _, screen in ipairs(hs.screen.allScreens()) do
if screen:id() ~= primary:id() then
return screen
end
end
-- Fallback if no external display is connected.
return primary
end
local function moveAndMaximizeWindow(win)
if not win then return end
local winID = win:id()
if not winID then return end
local function apply()
local currentWin = hs.window.get(winID)
if not currentWin or not currentWin:isStandard() then
return
end
local targetScreen = externalScreen()
if targetScreen and currentWin:screen():id() ~= targetScreen:id() then
currentWin:moveToScreen(targetScreen, false, true, 0)
end
currentWin:maximize()
end
-- First pass after the window is created.
hs.timer.doAfter(0.25, apply)
-- Second pass catches apps that restore/resize shortly after opening.
hs.timer.doAfter(0.75, apply)
end
-- Only handle newly-created windows.
-- This avoids fighting manual resizing during the presentation.
wf:subscribe(hs.window.filter.windowCreated, moveAndMaximizeWindow)
-- Handle existing matching windows when Hammerspoon loads/reloads.
hs.timer.doAfter(0.5, function()
for _, win in ipairs(wf:getWindows()) do
moveAndMaximizeWindow(win)
end
end)
hs.alert.show("Auto-move/maximize QuickTime/Preview loaded")
Add or remove managed apps using their exact names in the Hammerspoon window filter.
3. Install and start Side Mirror
Install Side Mirror, select the projector/external display from drop down menu at top right, then click Start.
4. Presenting
Opening QuickTime Player or Preview-associated files will display them in full screen on the projector. Use Side Mirror on your MacBook to see and control the projected content. Clicking through moves focus and your cursor to the external display; recover via Opt+Shift+Return.
If you have multiple external displays, replace:
local function externalScreen()
local primary = hs.screen.primaryScreen()
for _, screen in ipairs(hs.screen.allScreens()) do
if screen:id() ~= primary:id() then
return screen
end
end
return primary
end
with:
local function externalScreen()
return hs.screen.find("BenQ") or hs.screen.primaryScreen()
end
Replace "BenQ" with a substring matching your projector's display name. You can list connected display names in the Hammerspoon console with:
hs.fnutils.each(hs.screen.allScreens(), function(s) print(s:name()) end)
Related
❧ 2026-04-27
Safely deleting CapabilityAccessManager.db-wal
Many posts suggest restarting in Safe Mode and simply deleting CapabilityAccessManager.db-wal; however, that unfortunate approach reportedly breaks WiFi, screen capture, Settings, and more.
u/Ancient-Reply2879 and Pony appear to have independently arrived at the correct method: delete the folder (C:\ProgramData\Microsoft\Windows\CapabilityAccessManager\) rather than the file (C:\ProgramData\Microsoft\Windows\CapabilityAccessManager\ CapabilityAccessManager.db-wal).
Refactored a PowerShell script shared by Anonymous (2024) and jsmorley (2025) to delete the directory rather than the contents:
Prevention
Disabling Location services (Settings → Privacy & security → App permissions → Location) and uninstalling SmartByte (advisable in any case) are reported as possible fixes.
❧ 2026-04-18
Almost-perfect solution, with one limitation: catch-all matching works for sender or message content, not both simultaneously. Feedback filed with Apple via Feedback Assistant.
Shortcuts → Automation
New Automation → Message
Leave Sender as Any Sender to match all senders or leave Message Contains as Choose to match any text message content - at least one field must have a value to enable Next (Message Contains sadly does not support regex; a single space suffices, though messages containing no spaces will be missed)
Change Run After Confirmation to Run Immediately → Next
Create New Shortcut → Send Message → Message → e.g., "I am out of the office"
Tap and hold Recipients → Shortcut Input
Tap checkmark icon at top right to save
Handles both iMessage and SMS, runs immediately without interaction, and executes even with the screen off.
Sources
Previously
❧ 2026-04-17