macOS: Batch delete calendar events via #

While Automator and AppleScript fail to reliably batch delete thousands of calendar events in recent macOS versions (see Archiving events as plain text), is surprisingly successful:


  1. Backup all calendars

  2. File → New Shortcut

  3. Action Library → Apps → Calendar

  4. Drag "Find Calendar Events" into the shortcut editor (aka "main window")

  5. Change Start Date as desired then click the plus symbol to the right and add additional criteria (e.g., "Calendar is Travel", "Calendar is not US Holidays", "End Date is Before 1/1/2023, 00:00", etc.)

  6. Drag the "Remove Events" action underneath → click "Show More" → leave "Include Future Events:" unchecked to preserve repeating events linked to ones that will be deleted

  7. Before running the shortcut, open Shortcuts Preferences... → Advanced and enable "Allow Deleting Large Amounts of Data"


Delete all events in the Travel calendar within the last 8 years that took place before 1/1/23 while preserving any repeating events after that date:

Batch deleting events in a given calendar via

Delete events in all calendars other than Birthdays and US Holidays within the last 13 years that took place before 1/1/23 while preserving any repeating events after that date:

Batch deleting events in all but two calendars via


/mac | Dec 11, 2023

Thunderbird message list columns missing #

If the columns in Thunderbird's message list have disappeared, it may be due to Supernova's "Modernized Cards View". Revert to the original layout and get your columns back by clicking on the new "Message list display options" icon at top right and selecting "Table View":

Message list display options

/misc | Dec 11, 2023

iOS & iPadOS: Export or attach email message from to EML file #

iPadOS (tested under 17.1.1):

Much like on macOS, emails can be easily exported as EML files by dragging them from to in Split View.

iOS (tested under 17.1.1):

As iPhones lack Split View support, a workaround is required to export EML files:

  1. Tap the Compose icon.

  2. Swipe down from the top bar of the New Message window to minimize it.

  3. Tap and drag desired email message onto the small New Message window at the bottom of the screen.

  4. Lift your finger when the New Message window reopens; this will attach the selected email as an EML file.

/misc | Dec 01, 2023

Tracking filesystem changes in macOS; #

or, Monitoring app installers/activity:

Carbon Copy Cloner & Beyond Compare

  1. Clone entire boot volume with Carbon Copy Cloner 5 (or 6 via Legacy Bootable Copy Assistant)

  2. Install or run app

  3. Repeat step 1

  4. Compare clones with Beyond Compare in a root session: sudo /Applications/Beyond\

Local Time Machine snapshots & Beyond Compare

  1. Create a local snapshot:1 tmutil localsnapshot

  2. Install or run app

  3. Repeat step 1

  4. Find snapshot names: tmutil listlocalsnapshots /
  5. Create mount points and attach snapshots:2

    % mkdir ~/snapshot1 ~/snapshot2
    % mount_apfs -o ro -s /System/Volumes/Data ~/snapshot1
    % mount_apfs -o ro -s /System/Volumes/Data ~/snapshot2
  6. Compare snapshots with Beyond Compare as above

  7. Unmount snapshots and optionally delete mount points (~/snapshot1 & ~/snapshot2) and snapshots (e.g., tmutil deletelocalsnapshots 2023-10-16-184247) when done.

Live monitoring

Static PKG installers

Legacy apps



  1. Time Machine backups exclude a number of files and folders and others may be excluded via the com_apple_backup_excludeItem extended attribute (uncover them via sudo mdfind "com_apple_backup_excludeItem = ''"). 

  2. Grant Terminal Full Disk Access to avoid mount_apfs: volume could not be mounted: Operation not permitted

/mac | Oct 17, 2023

Firefox: "No video with supported format and MIME type found." #

Several MP4 files hosted on this site are encoded using H.265 (HEVC). While most browsers support playback, Mozilla Firefox 118.0.1 returns an error:

Firefox: No video with supported format and MIME type found.

Suggestions such as enabling pass-through support or providing a more descriptive error message have been made; alack, to no avail as yet.

Handy one-liner for returning the encoding type of all MP4 files in the current directory:

find . -type f -name "*.mp4" -exec sh -c 'echo -n "{}: "; ffprobe -v error -select_streams v:0 -show_entries stream=codec_name -of default=noprint_wrappers=1:nokey=1 "{}"' \;

/misc | Sep 29, 2023

Fauci on masking #





  1. Bloomberg: The David Rubenstein Show: Anthony Fauci, May 22, 2019

  2. Spectrum News: Disease Expert: Flu a Bigger Risk in the US Than Coronavirus

  3. 60 Minutes: March 2020: Dr. Anthony Fauci talks with Dr Jon LaPook about Covid-19 (See also Preventing coronavirus: Should you wear a face mask?)

  4. Spectrum News: Disease Expert: Flu a Bigger Risk in the US Than Coronavirus

  5. CNBC: Anthony Fauci on The News with Shepard Smith, October 28, 2020 (See also Fauci voices support for national mask mandate)

  6. CNN: Dr. Fauci responds to study that says masks didn't work


/misc | Sep 18, 2023

FACT CHECK: Fauci's claim that "CDC doesn't mandate anything" #

Rating: FALSE

Anthony Fauci was interviewed by CNN's Micheal Smerconish* and made the following claim:

"Organizations like the CDC recommend (CDC doesn't mandate anything) I mean recommends, that people wear masks." 📺

The CDC itself contradicts him:

"The Centers for Disease Control and Prevention (CDC) issued an Order [PDF – 11 pages] on January 29, 2021 requiring the wearing of masks by people on public transportation conveyances or on the premises of transportation hubs to prevent spread of the virus that causes COVID-19. This Order was effective February 1, 2021 and was published in the Federal Register on February 3, 2021.

"The terms of the Order, which were no longer enforceable as a result of a court order (effective, April 18, 2022), have now expired due to the conclusion of the Public Health Emergency on May 11, 2023."


* Apparently on September 2, 2023 based on the CNN URL.


/misc | Sep 03, 2023

Switching a Pixel 4a from CalyxOS back to stock Android #

seems simple enough, but both the web installer and manual factory image methods failed repeatedly under Windows and Linux. PixelFlasher saved the day (H/T: u/Malaka__).

/misc | Aug 26, 2023

Hacking Tower Swap with Cheat Engine or Bit Slicer #


Bit Slicer

  1. Open Tower Swap in Firefox and press Play (optionally go offline once game has loaded)

  2. Press Shift+Esc to open Firefox's Process Manager and find the Tower Swap tab process ID (e.g., 696)

  3. Launch Bit Slicer → from the drop-down menu at top left, select the process ID found in step 2 (e.g., "FirefoxCP Isolated Web Content (696)")

  4. Enter the current number of swaps in Tower Swap (e.g., 5) in the box at top right and press Return

  5. Make a move in Tower Swap to change the number of swaps to 4 → enter 4 in the box at top right and press Return

  6. Repeat step 5 until only two addresses remain

  7. Double click value for first address → change value to desired number of swaps → press Return (if the number of swaps does not change, repeat using the second address)

Cheat Engine3

  1. Install Rosetta 2 if missing (optionally back up for offline use)

  2. Open Tower Swap in Firefox and press Play (optionally go offline once game has loaded)

  3. Press Shift+Esc to open Firefox's Process Manager and find the Tower Swap tab process ID (e.g., 696)

  4. In Terminal, convert the process ID from decimal to hex via printf '%x\n' 6962b8

  5. Launch Cheat Engine → File → Open Process → click Processes tab → click process matching hex vaule (e.g., "000002B8-FirefoxCP Isolated Web Content") → click Open

  6. Enter the current number of swaps in Tower Swap (e.g., 5) in "Value:" → click "First Scan"

  7. Make a move in Tower Swap to change the number of swaps to 4 → enter 4 for "Value:" → click Next Scan

  8. Repeat step 8 until only two addresses remain

  9. Double click first address → double click the decimal value in the bottom pane → change value to desired number of swaps → click OK


  1. Failure to disable SIP returns "Search Failure: FirefoxCP Isolated Web Content's memory cannot be searched due to system protections." in Bit Slicer and "Error while opening this process. Have you disabled 'System Integrity Protection (SIP) yet?" in Cheat Engine. 

  2. Unlike Cheat Engine, Bit Slicer is: signed and notorized, a Universal 2 binary (i.e., Apple silicon-native), and not time-limited trialware. Both projects maintain GitHub repositories: CE | BS

  3. H/T: Piepop101 

/mac | Aug 07, 2023

iOS: Display random line from a large TXT file #

with iSH Shell & GNU Coreutils' shuf and fold:

   shuf -n 1 book.txt | fold -w 30 -s

Enjoy aleatory quotes from ebooks, etc.

/nix | Jul 27, 2023

Avery Design & Print labels drifting across page, #

gradually going from too high at the top to too low at the bottom when printed on a Brother HL-L2370DW monochrome laser printer. Cause turned out to be default "Microsoft IPP Class Driver"; replaced with driver from to resolve.

/windows | Jul 11, 2023

A new Windows P2V guide #

has been added to the docs section.

/windows | May 23, 2023

The portrait of Kandiaronk and the Wendat #

painted by Graeber & Wengrow in The Dawn of Everything1 is rather economical with the truth. The pair claim that [emphases added throughout]:

And while they dismissively acknowledge:

"...[the Wendat] had formal political offices and a stratum of war captives whom the Jesuits, at least, referred to as ‘slaves’..."

the academics knew (assuming they read their primary source2) that Kandiaronk himself3 described such "war captives" in no uncertain terms:4


  1. Graeber, D., & Wengrow, D. (2021b). The Dawn of Everything: A New History of Humanity. New York: Farrar, Straus and Giroux. Quotes are from pages 45, 40, 43, 48, and 40 respectively.

  2. Cited as "the 1735 English edition of Dialogues"; since no such title exists, they must be referring to Lahontan's New Voyages to North-America of the same year (which appears in their bibliography and contains the dialogues). While the first French and English (1, 2) versions of Nouveaux Voyages de Mr le Baron de Lahontan dans l’Amérique Septentrionale were both published in 1703, only the English edition contained the dialogues (as alluded to on its title page: "Done into English. In Two VOLUMES. A great part of which never Printed in the Original."). The dialogues appeared the following year in French with the publication of Suite du Voyage de l'Amérique, ou Dialogue de Monsieur le baron de Lahontan et d'un sauvage dans l'Amérique.

  3. Graeber & Wengrow argue that Lahontan's work reflects actual "conversations between Lahontan and Kandiaronk" as opposed to being a fiction invented by himself; in fact, they go so far as to replace the pseudonym "Adario" with "Kandiaronk" when quoting passages from the book.

  4. Lahontan, 1735. New Voyages to North-America. 2nd ed. London: J. Walthoe, et al. Quotes are from pages 114, 156, 145, and 144 respectively.

/misc | May 11, 2023

Prepend magic bytes to filenames #

with Marco Pontello's HdRen, a simple Python 2 script that adds file signatures to filenames, making it easy to spot imposters:

$ ls -1
$ foo/
$ ls -1

/nix | May 07, 2023

Windows XP Activation: GAME OVER #

For almost two decades, MSKey Readme1 has heralded the defeat of Windows XP's product activation, not via mere circumvention, but by cracking the encryption algorithm itself.

Based on the even earlier Inside Windows Product Activation: A Fully Licensed Paper2, WindowsXPKg3 launched on Microsoft's GitHub platform four years ago (see update #3 below). While it can generate product keys, the program relies on an external, third-party server to return the Confirmation ID.

In a post last year on the Windows XP subreddit (Windows XP web activation is finally dead…), u/retroreviewyt shared xp_activate32.exe4, which calculates the Installation ID then generates and optionally applies the corresponding Confirmation ID to activate Windows XP, all offline. Wiping the system and reinstalling Windows XP results in the same Installation ID being assigned by Windows (assuming no change in hardware or product key), thus the same Confirmation ID obtains even in msoobe's standard telephone activation window.

Long considered out of reach, this development bodes well for salvaging old systems even after Microsoft shuts down the activation servers. Given their curious tolerance (even use!) of MAS (hosted on their own platform!), which impacts all modern versions of Windows, perhaps Microsoft will see fit to release an official XP activation tool for posterity.


  1. The apparently oldest extant copy, dated January 18, 2005, is signed "yag". A few months later, it was posted to Tool_Delphi2005 by Alexandre Trevizoli. By 2007, Kevin Hatfield was hosting it, and he claimed copyright by 2008, thereby becoming associated with the document in later years.  

  2. In fact, the paper was released in July 2001, before even Windows XP was released to manufacturing. However, it was kept "a little vague at some points in order not to facilitate the task of an attacker attempting to circumvent the license enforcement supplied by the activation mechanism". 

  3. Elliptic Curve Key Tool is a similar app that does not require recompiling for each combination. 

  4. 18432 bytes with a SHA-256 hash of 5a4bcac5a50eb5113dd6a2f88c35ebdb709c4df8a792c71ad03ea347afaced52 (first seen by VirusTotal on 2020-10-16).


  1. Neo-Desktop has forked WindowsXPKg to include a fix for compiling and running properly under Linux. They are also at work on disassembling xp_activate32.exe.

  2. The purported source code for xp_activate32.exe has been posted to MDL (since deleted) by diamondggg, who referenced such a tool in 2021. See this thread for more information.

  3. On the provenance of WindowsXPKg, Endermanch stated: "This repository is not the original source for the Windows XP Keygen. The original was uploaded to PlanetWPA as part of MSKey 4-in-1 algorithm sources back in early 2000s and was made by z22." The comment has been updated with additional details and, along with his XPKeygen README, is sine qua non for understanding the history and mathematics behind this story.

/windows | Apr 23, 2023

Convert PDF to TXT while preserving layout #

with Poppler's pdftotext:

$ pdftotext -layout input.pdf output.txt

Preinstalled in current versions of Debian, Ubuntu, et al.; Homebrew formula (brew install poppler), raw source, and Windows binary also available. Beautiful conversion of QuickBooks invoice PDFs into plain text.

H/T: Linux Uprising

UPDATE: "Marker converts PDF, EPUB, and MOBI to markdown. It's 10x faster than nougat, more accurate on most documents, and has low hallucination risk."

/nix | Apr 14, 2023

If Linux reports "Low Disk Space" despite having many GB free, #

the cause may be the default 5% of filesystem blocks reserved for root by ext4:

Check via dumpe2fs:

$ sudo dumpe2fs /dev/vda2 | grep -i "block count"
Block count:              16645632
Reserved block count:     832281

(832281/16645632 x 100 ≈ 5.00%)

Remove the reservation:

$ sudo tune2fs -m 0 /dev/vda2
Setting reserved blocks percentage to 0% (0 blocks)

Check once more:

$ sudo dumpe2fs /dev/vda2 | grep -i "block count"
Block count:              16645632
Reserved block count:     0

/nix | Apr 08, 2023

Amazon Order History Reports #

quietly ended on March 20, 2023. The initial notice on Amazon's Order History Reports page read:

Order History Reports will be unavailable after March 20, 2023

You can continue accessing your order history on Your Orders .

and now confirms:

Order History Reports are no longer available

You can continue accessing your order history on Your Orders .

Michael Tsai's Unhelpful Amazon Order Confirmation E-mails highlighted the behemoth's information-light missives; this move only adds insult to injury (apparently business accounts still have access to CSV order reports).

Two workarounds:

  1. Philip Mulcahy's open source Amazon Order History Reporter (Chrome Web Store). Tested successfully. If you find it useful too, consider donating to Princess Alice Hospice as requested by Philip:

    I share and work on this extension for free, but need donations to the linked hospice charity to be more proportional to the value commercial users are receiving. At the moment, the vast majority of donations appear to be from private/family users, not businesses, and the total amount donated is a tiny fraction of both the value of my donated time, and the value business are receiving.

  2. Amazon's Request My Data page, which includes options like "Your Orders", "Subscriptions", "Search History", "Customer Support Communication", and "Request All Your Data". Alas, as yet I cannot report on its efficacy:

    We've received and are processing your request to access your personal data.

    We will provide your information to you as soon as we can. Usually, this should not take more than a month [emphasis added]. In exceptional cases, for example if a request is more complex or if we are processing a high volume of requests, it might take longer, but if so we will notify you that there will be a delay.

    UPDATE 1: To their credit, Amazon:

    UPDATE 2: The "All Data" report took just under two weeks to arrive and included such arcana as "Digital.PrimeVideo.NotInterested.csv", "Amazon-Music/listening.csv", and "PhysicalStores.OrdersVisitsSurveys/datasets/WholeFoodsMarket.Orders/WholeFoodsMarket.Orders.csv" among many others (226 directories in root!).

/misc | Mar 25, 2023 skipping (or creating empty files for) some contacts on vCard export #


Some contacts would not export to vCard from, instead exhibiting the following behavior:


Maurits kindly wrote in with both the cause:

[T]he affected records have in common that in ZABCDRECORD, the ZDISPLAYFLAGS column is set to NULL for the affected records. This column seems to indicate whether an entry is a company (1) or a person (0). My suspicion is that older macOS versions didn't bother to write a 0, but kept it at NULL, whereas newer versions are explicitly expecting a 0 instead of a NULL. To bolster this theory, all affected entries were rather old ones.

and actual resolution:

Close, fire up sqlite3 on the AddressBook-v22.abcddb file and execute UPDATE ZABCDRECORD SET ZDISPLAYFLAGS = 0 WHERE ZDISPLAYFLAGS IS NULL;

The remainder of the post is retained for the sake of historical curiosity (and as a testament to my inextant SQL knowledge).


Tested in macOS 12.6.1 Monterey and 13.2.1 Ventura with local (i.e., "On My Mac") contacts:

  1. Launch

  2. Select "Workflow" and click "Choose"

  3. Select "Contacts" under "Library"

  4. Drag "Get Selected Contacts Items" into the workflow area at right and leave it set to the default "Get selected people"

  5. Drag "Export vCards" under that, select either "one vCard" or "individual vCard" from the "Export" dropdown menu, and select a destination in the "to:" dropdown menu

  6. In, select desired contacts to export

  7. In Automator, click Run

Exporting recalcitrant contacts with Automator




/mac | Feb 19, 2023

Surf the Net like it's 1993 #

with Qt5-based Kristall, the "Small-Internet Browser":

"Kristall is a browser without support for css/js/wasm or graphical websites. It can display user-styled documents in several formats, including gemini, html, markdown, … provided by a server via gemini, gopher, http, finger, …"

By default, Gemini is the only enabled protocol; to access the web head to kristall → Preferences... → Generic → and check HTTP and HTTPS.

The result is a calm, pleasant browsing experience reminiscent of "a more... civilized age":


HN discussion

/misc | Feb 17, 2023

ChatGPT on veganism #

I had a lengthy exchange with ChatGPT about veganism, in which it prevaricated quite a bit; backed in to a corner, ChatGPT was forced to come clean at last:

Me: Continuing in this vein, I'm going to ask you four simple questions. Please respond with simply "Yes" or "No". Do you understand?

ChatGPT: Yes, I understand. Please go ahead with your questions.

Me: Great, thanks. Question number 1: Is it unethical to kill a human for mere pleasure?

ChatGPT: Yes.

Me: Question number 2: Is it unethical to kill a sentient being for mere pleasure?

ChatGPT: Yes.

Me: Question number 3: In that case, given equal availability of both healthy plant and animal food choices, is it unethical to select animal food for mere pleasure of the palate?

ChatGPT: Yes, some people would argue that it would be unethical to cause unnecessary harm to sentient beings for mere pleasure. Others might have different perspectives and hold that consuming animal products is not unethical.

Me: You were just supposed to answer "Yes" or "No" as promised. Which is it please?

ChatGPT: I apologize, it is not possible for me to answer with just "Yes" or "No" as the ethical considerations around this issue are complex and multifaceted, and can depend on different ethical frameworks and individual perspectives.

Me: You yourself admitted in reply to question number 2 that is unethical to kill a sentient being for mere pleasure. Thus, given equal availability of healthy plant-based food choices, the only logical answer is "Yes" to the third question.

ChatGPT: As an AI model, I don't have personal opinions or beliefs. I can provide information and insights based on the data I was trained on and the algorithms I was programmed with.

Based on available evidence, it can be argued that the production and consumption of animal products can result in significant harm to sentient beings, as well as contribute to environmental degradation and other sustainability issues. Some people might consider this to be unethical and choose to avoid animal products for ethical reasons. However, the decision to consume animal products or to follow a vegan diet is a personal one and can depend on many factors, including individual values, beliefs, cultural background, and nutritional needs.

Me: I am not asking for opinion or belief, only logic. Based on your reply of "Yes" to questions 1 and 2, "Yes" is the only logical answer to question 3.

ChatGPT: Yes, based on the premise stated in the questions 1 and 2, it would be logical to say that it would be unethical to choose animal-based food for mere pleasure of the palate if healthy plant-based food options are equally available.

Me: Thank you.

ChatGPT: You're welcome! Let me know if there's anything else I can help with.

I had expected ChatGPT to take "Do you understand?" as the first question, hence the lack of a question labeled as number 4. Here is a screenshot of the exchange.


There appears to be some confusion around the premise in question 3 that a plant-based diet can be healthy, so I returned to the oracle (screenshot):

Me: Is a vegan diet healthy?

ChatGPT: A well-planned vegan diet can be healthy and provide all the necessary nutrients for the body. Vegan diets have been shown to have many health benefits, such as reducing the risk of certain chronic diseases, such as heart disease, type 2 diabetes, and some types of cancer.

However, it is important to note that a poorly planned vegan diet can be low in certain nutrients, such as vitamin B12, omega-3 fatty acids, calcium, and iron, that are found in animal products. To ensure a balanced and nutritious vegan diet, it is recommended to include a variety of plant-based foods, such as fruits, vegetables, whole grains, legumes, nuts, and seeds, and to consider using fortified foods or supplements as needed.

It is also recommended to speak with a healthcare provider or a registered dietitian to develop a personalized nutrition plan that meets your individual needs and health goals.

Me: By the same token, a poorly planned meat diet can also be low in certain nutrients.

ChatGPT: That's correct. A poorly planned diet of any type, whether it includes animal products or not, can be deficient in essential nutrients and have negative health effects. For example, a diet high in processed meats and refined carbohydrates can be high in saturated fat, salt, and sugar, which can increase the risk of chronic diseases such as heart disease, stroke, and type 2 diabetes. On the other hand, a well-planned diet that includes a variety of nutrient-dense foods from both animal and plant sources can support overall health and well-being.

It's important to emphasize that the key to a healthy diet is not necessarily based on whether it includes animal products or not, but rather on the quality and variety of foods consumed, as well as individual nutrient needs and health goals.

/misc | Feb 12, 2023

Brother MFC: Change Scan to PC name #

The Brother MFC-L8905CDW (among many other models) assigns touchscreen Scan to PC names based on the current Windows computer name; changing the computer name after initial setup will not change the Scan to PC name, nor does the manual explain how (or even if) the Scan to PC name can be changed. Moreover, neither ControlCenter4 nor Web Based Management (password info) offer any means to edit the Scan to PC name.

Thanks to timdotexe's decade-old post (which links to a long-dead Brother page missing from, an amplified and updated instruction set has been cobbled together for changing the Brother Scan to PC name under Windows 10 & 11:

  1. Launch "C:\Program Files\Windows Photo Viewer\ImagingDevices.exe"*
  2. Highlight the device name (e.g., "Brother MFC-L8900CDW LAN") then click the "Properties" button
  3. Click the "Scan To Button" tab and change the Display Name as desired → OK → Close
  4. Reboot the printer


* As alluded to in timdotexe's post, another method is via Control Panel → search for "scanner" → click "View scanners and cameras". The program filename is "ImagingDevices.exe", the window title is "Scanners and Cameras", and the running process is labeled "Imaging Devices Control Panel".

On one Windows 11 install, a reboot was required for the scanner to appear in Scanners and Cameras.


Subsequent digging has unearthed the necessary steps on, albeit for a very different and much older device, the ADS-2500We:

and this reddit thread was also found to contain the secret.

/windows | Feb 12, 2023

Dark Mode for Hacker News #

is requested regularly:

and while @dang expressed a willingness to implement it back in 2020, support is still absent as of early 2023 (in his defense, he did mention: "remember our motto: move slowly and preserve things...When I say slowly I mean slowly.").

Browser extensions like Dark Reader or Cascadea (among many others that support userscripts for customizing webpages) are often recommended as an alternative by those who are unaware of or indifferent to the risk:

Webpage Contents: Can read sensitive information from webpages, including passwords, phone numbers, and credit cards. Can alter the appearance and behavior of webpages. This applies on all webpages. Browsing History: Can see when you visit all webpages.
(Apple really needs to display required permissions in the Information section of App Store listings so users can evaluate them before purchase.)
Webpage Contents: Can read sensitive information from webpages, including passwords, phone numbers, and credit cards. Can alter the appearance and behavior of webpages. This applies on all webpages. Browsing History: Can see when you visit all webpages.

Perhaps Stylish, an extension expressly for managing userscripts and one of the most popular add-ons of its time, best demonstrates the danger:

Apple provides a framework for Safari web extension developers to leverage the least invasive permissions possible. Happily, Justin Wasack did just that with his open source Userscripts extension:

Can read and alter sensitive information on webpages, including passwords phone numbers, and credit cards, and see your browsing history on

Combined with Vishal Patel's HN Dark Mode userscript (modified to handle the white flash, aka "flash of unstyled content" when navigating between pages on the site via @run-at document-start), it offers the least bad option for Safari users until HN offers native dark mode (or until Apple allows custom style sheets in Settings... → Advanced to apply to specific websites, as Firefox's userContent.css does via @-moz-document domain).

/mac | Jan 28, 2023

VMWare Fusion: "D:\ is not a valid Win32 application." #

Attempting to update VMWare Tools in a Windows XP VM under Fusion 13 returned:

"D:\ is not a valid Win32 application."

A more helpful message would've been something like:

Windows XP cannot run VMWare Tools versions higher than 10.0.12; download it here.

More info

/mac | Jan 04, 2023

Default MMC snap-ins (MSC files) in Windows 10 #

Microsoft does not appear to host a list of Windows' default Microsoft Management Console (MMC) snap-ins/Management Saved Console (MSC) files.

Here is one from a clean Windows 10 installation with descriptions cobbled together from a variety of linked sources. Launch MSC files from an elevated command prompt via mmc name.msc.

Filename Console Name Description
azman.msc Authorization Manager Define roles and the tasks those roles can perform
certlm.msc Certificates View, export, import, and delete certificates
certmgr.msc Certificates Manages certificates, certificate trust lists (CTLs), and certificate revocation lists (CRLs)
comexp.msc Component Services Component Services (COM+) management tool. Also loads Event Viewer and Services
compmgmt.msc Computer Management Includes System Tools (Task Scheduler, Event Viewer, Shared Folders, Local Users and Groups, Performance and Device Manager), Storage (Disk Management), and Services and Applications (Services and WMI Control)
devmgmt.msc Device Manager View and manage hardware devices and their drivers
DevModeRunAsUserConfig.msc DevModeRunAsUserConfig Manage Start Menu, Taskbar, and Notification settings
diskmgmt.msc Disk Management Manage disks and their volumes or partitions
eventvwr.msc Event Viewer View monitoring and troubleshooting messages from Windows and other programs
fsmgmt.msc Shared Folders Displays shared folders, current sessions, and open files
gpedit.msc Local Group Policy Editor Configure and modify Group Policy settings within Group Policy Objects (GPOs)
lusrmgr.msc Local Users and Groups Manage local users and groups
perfmon.msc Performance Monitor Diagnose performance issues and collect performance data
printmanagement.msc Print Management Manage print servers and printers
rsop.msc Resultant Set of Policy View policy that has been applied as well as predict what policy would be applied to a user on a computer.
secpol.msc Local Security Policy Define security policies for computers in your domain
services.msc Services Starts, stops, and configures Windows services
taskschd.msc Task Scheduler Schedule computer tasks to run automatically
tpm.msc TPM Management Configure and manage the TPM security hardware
WF.msc Windows Defender Firewall with Advanced Security Configure policies that provide enhanced network security for Windows computers
WmiMgmt.msc WMI Control Allows configuration and control of the Windows Management Instrumentation (WMI) service

See also:

/windows | Jan 02, 2023

Bypass Windows 11 GUI bloat via CPL commands #

Today's HN discussion on How many layers of UI inconsistencies are in Windows 11? included a thread sparked by csours on working around Windows' byzantine maze of UI elements with CPL shortcuts.

Microsoft's documentation is woefully out of date, so here's a list of those found in %SystemRoot%\System32 on a clean Windows 11 Pro 21H2 install:

Filename Description
appwiz.cpl Programs and Features
bthprops.cpl Bluetooth & devices → Devices
desk.cpl System → Display
Firewall.cpl Windows Defender Firewall
hdwwiz.cpl Device Manager
inetcpl.cpl Internet Properties
intl.cpl Region
joy.cpl Game Controllers
main.cpl Mouse Properties
mmsys.cpl Sound
ncpa.cpl Network Connections
powercfg.cpl Power Options
sysdm.cpl System Properties
TabletPC.cpl Tablet and Pen Settings
telephon.cpl Phone and Modem
timedate.cpl Date and Time
wscui.cpl Security and Maintenance

Just press Winkey+R, type the desired CPL filename, and press Enter to open.

UPDATE: As of Windows 11 version 22H2, attempting to open "Devices and Printers" through the Control Panel or by using the command control printers will now redirect users to the Settings app. To access the traditional interface, enter control /name Microsoft.Printers or shell:::{A8A91A66-3A7D-4424-8D24-04E180695C7A} in the Run dialog box.

/windows | Jan 02, 2023

Microsoft ISO checksums/hashes for Windows, Office, etc. #

For most of its online history, Microsoft made ISO checksums/hashes publicly available on TechNet and MSDN (even if with a free Microsoft account), but since late 2017, a paid Visual Studio account is required (starting at $1,199 per year) to access the database.

A number of projects have sprung up to keep this important information accessible:



See also:

/windows | Jan 02, 2023

Subscribe or visit the archives.