Changes to Authentication

April 26th, 2022

Recently revised its pricing structure, switching from a complex variety of paid plans to a simpler approach in which users can either stick with a free plan, or pay $15/month for a variety of upgraded features.

Among the features now offered at the $15/month level are plugins and custom themes, which used to be included only with the more expensive “business” plans. This is a great change for users, but it exposes a huge number of users to an authentication issue that previously only affected the higher-cost plans.

The problem:’s implementation of the WordPress XMLRPC API doesn’t accept standard “Application Passwords” for these updated blogs. Application passwords are the unique, generated passwords that you must use for 3rd party apps such as MarsEdit when you have enabled Two-Step Authentication on a blog.

Luckily there is a workaround. It requires deliving into the legacy “WP-Admin” interface of the affected site, and generating san application password in the standard WordPress back-end, independently from’s own higher-level interface.

In light of the increased number of users who will be needing to figure negotiate this change, I updated the Red Sweater help pages to more fully document the process for generating application passwords, whether you’re on a free plan, or one of the newly unified paid plans. Read more here:

Red Sweater Help: Authentication

It would be great if fixed their XMLRPC API support so that standard application passwords worked on upgraded sites. It’s always been a little ironic that the user experience for paying users, in this one respect anyway, is worse than it is for those with free sites.

Black Ink 2.2: Calendar Browsing, NYT Enhancements, and Dark Mode Toggle

April 11th, 2022

Black Ink 2.2 is now available on the Black Ink site and has been submitted to the Mac App Store for review.

This update features an all-new calendar based interface for selecting the puzzle to open and solve:

Screenshot of Black Ink for Mac showing a list of publications with calendar interface for selecting a puzzle.

By default, the puzzle browser will always default to selecting the most recent date for a publication that has not been downloaded already. So for folks who prefer the old behavior of always just opening the “next puzzle that hasn’t been downloaded”, it should have the same behavior if you ignore the calendar altogether.

This update also includes changes to the puzzle format so that Black Ink can accommodate advanced features of New York Times puzzles, including shaded squares and formatted text in clues. Some puzzles italicize text or use special characters to add nuances to the puzzle. Now Black Ink will faithfully represent these in the puzzle window!

For folks who prefer to run their system in Dark or Light mode, but would prefer to solve puzzles in the other appearance mode, there’s a new preference for selecting the preferred apperance. There are also a ton of other changes and improvements in this update. Here’s the complete list:

  • New calendar-based puzzle browser for easier download of historical puzzles
  • Preferences now includes an option to run in Dark Mode, Light Mode, or System default
  • New York Times enhancements:
    • Support for shaded squares (previously they were shown as circles)
    • Support for italics, bold, and special characters in clue text
  • The app now prompts to open another puzzle after finishing with one
  • Other fixes and enhancements
    • When solving, the delete key now moves to previous word if first letter is already blank
    • Improved performance opening next puzzle for sources that have a large number of previously downloaded puzzles
    • Improved drawing of checked/revealed/incorrect symbols especially on non-Retina displays
    • Puzzle answers are now considered correct even if they don’t match upper/lower case
    • Fix a crashing bug that could occur if right-clicking on the preview puzzle in Preferences
    • Improved the appearance of answer letters in cells, particular longer “Special Entry” answers
    • Elapsed solving time is now saved with the puzzle when closing/re-opening
    • The Copy Clue menu item no longer includes the clue number in the copied text
    • Fix a crash that could occur when entering special answers in some puzzles
    • Accessibility: puzzle chooser now hides puzzle source icons from VoiceOver

If you enjoy Black Ink, please consider writing a review or rating the app on the Mac App Store, and spreading the word on Facebook or Twitter! Thanks for your support.

FastScripts 3.1: Streamlined Regular Expressions

March 11th, 2022

FastScripts 3.1 is now available on the FastScripts home page, or by selecting “Check for Update” from the FastScripts menu.

This update introduces an expansion of FastScripts’s own built-in scripting additions, with three powerful new commands for searching, replacing, and splitting text with regular expressions.

These can be used by any AppleScript on your Mac, whether you’re running the script from FastScripts or not. These new commands are also completely free of charge, so if you install and keep FastScripts running in the background, your scripts will always have access to these features.

Previously it was cumbersome to use regular expressions in AppleScript, resulting in people commonly calling out to scripting languages with “do shell script”, invoking Cocoa directly via AppleScriptObjC interfaces, or installing third-party scripting libraries such as Shane Stanley’s wonderful RegExAndStuff library.

I want to thank John Gruber for reviewing and helping with with the design of the scripting interface, which I like to think represents the “Mac-ification” of providing regular expression support to AppleScript.

So how does it work? In your AppleScript, be sure to wrap whatever text processing commands you use with a “tell” block addressing FastScripts:

tell application "FastScripts"

— Your script here

end tell

Your script can then use the search text, replace text, or split text commands to search or transform text as you see fit. Here are some simple examples:

Searching Text

The search text command can be used to perform complex regular expression searches, but that includes simple searches for plain text strings:

set woodstack to "How much wood would a woodchuck chuck if a woodchuck could chuck wood?"

set groups to search text woodstack matching pattern "wood"

Results in the AppleScript record:

{{offset:9, text:"wood"}, {text:"wood", offset:22}, {text:"wood", offset:43}, {offset:65, text:"wood"}}

Replacing Text

The replace text command works very similarly. This time we introduce some actual regular expression syntax. Note that you have to double-backslash some terms to make AppleScript happy:

set woodstack to "How much wood would a woodchuck chuck if a woodchuck could chuck wood?"

set cheesestack to replace text woodstack matching pattern "(\\bw[^\\s]+?d)" replacement pattern "cheese"

Results in:

"How much cheese cheese a cheesechuck chuck if a cheesechuck could chuck cheese?"

Splitting Text

Finally, the split text command is used to separate a string into parts based on a plain text delimiter or a complex regular expression pattern. For simplicity, this example just demonstrates how to separate all the components of a string based on white space:

set woodstack to "How much   wood    would a woodchuck  chuck if a woodchuck could chuck wood?"

set splitstack to split text woodstack matching pattern "\\s+"

Results in:

{"How", "much", "wood", "would", "a", "woodchuck", "chuck", "if", "a", "woodchuck", "could", "chuck", "wood?"}

Beyond Simplicity

These new commands also support advanced features including the ability to use regular expression matching groups, specify case insensitivity, etc. Open FastScripts’s own scripting dictionary in your favorite script editor and explore the items in the FastScripts Text Processing suite. Starting with FastScripts 3.1, an easy way to do this is simply to select FastScripts -> Open FastScripts Scripting Dictionary from the FastScripts menu.

Other Changes

Text processing commands are the “big deal” in this update, but there are a few smaller changes that may also be of interest! Here is the complete list of updates in this release:

  • New built-in scripting support for regular expression commands “search text”, “replace text” and “split text”
  • Updated “open web page” scripting command to support a new “replacing current page” parameter
  • Added a new “Open FastScripts Scripting Dictionary” menu item
  • When searching, recently used scripts are now prioritized in search results
  • Fix a bug that caused recently added “invoke” support for paths to report a spurious error
  • Fix a bug introduced in 3.0.6 that prevented “invoke” from working properly on a script item
  • Alleviate console log warnings that were being printed when the menu bar icon is clicked

If you enjoy FastScripts, please consider spreading the word on Facebook or Twitter! Thanks for your support.

FastScripts 3.0.6: Bartender Compatability and Scriptability Enhancements

January 20th, 2022

FastScripts 3.0.6 is now available on the FastScripts home page, or by selecting “Check for Update” from the FastScripts menu.

This update includes a number of bug fixes and enhancements to the scriptability of FastScripts itself. Notably, it addresses a problem that could occur when the Bartender utility is being used to manage menu bar icons. This update fixes a problem where selecting a script item from the FastScripts menu would behave as though the Command key were held down, and reveal the shortcut editing interface for the script in FastScripts’s preferences.

Scriptability enhancements include the ability to specify an arbitrary script file to execute via FastScripts, for example, if you write a script to “/tmp/myScript.scpt” you could invoke it with

tell app "FastScripts" to invoke posix file "/tmp/myScript.scpt"

The list of scripts that are currently being run by FastScripts is now also exposed via the app’s scripting interface. For example, to preemptively terminate the first running script task:

tell app "FastScripts" to force stop script task 1

Here’s the complete list of changes for this release:

  • Fix an interaction with Bartender app that caused the Preferences panel to open when selecting a script
  • Re-fix an issue that caused custom colored menu bar icons to appear enabled on secondary screens
  • Remove NSAppleScriptEnabled Info.plist key from FastScripts Script Runner
  • New preference to hide the Scriptlight search field in the FastScripts menu
  • Scriptability enhancements to FastScripts itself
    • The “invoke” command can now be called with an arbitrary file as the parameter to run scripts outside of your script collection
    • New “script tasks” element provides access to running tasks, which can be force quit via script
    • New “preferences window” property provides scripted access to showing preferences window

If you enjoy FastScripts, please consider spreading the word on Facebook or Twitter! Thanks for your support.