There are some features I have long wanted one of my favourite apps, TextExpander, to have. Some of them are motivated by the fact that, although I do have conventions for naming my abbreviations, I can’t always remember the abbreviation. Moreover, I sometimes repeat the same typing mistake. But more generally they are motivated by the idea that a modern text expansion should know my intentions.
To pick some of the items from the top of my TextExpander wish list, I’d like
- to be able to define multiple abbreviations (i.e., synonyms or aliases) for the same snippet,
- TextExpander to learn to detect the abbreviation I meant to type,
- TextExpander to automatically handle plurals, and
- to support my conventions for contact names and URLs.
Without #1, I unfortunately need to define multiple entire snippets for the very same content. For example, every now and then I need to order new business cards. So I have defined a snippet “busca” that maps to “business card”. But low and behold, sometimes I type “buca” for that. When I make a typo in an abbreviation, I duplicate the snippet so that the next type I make a typo, TextExpander will expand the snippet I intended. This is wasteful. It means that if I want to change the content of an abstract snippet, I have to modify a collection of snippets. Also, it means that when I search for snippets, I see a ton of redundant information. It takes me time and saps my cognitive “energy” to look through the search results.
Regarding #2: I’d like TextExpander to go a step further and to learn what I intended to type. Nine times out of ten, if I use the tab key outside of Excel, my intention is to expand a snippet. In the scenario above, if I type “buca” (without the quotes) followed by a tab, and then correct that by typing busca, I’d like TextExpander to yield “business card”. Maybe not the first time, but probably the second or third time. I.e., the app should learn what I really meant. Given that TextExpander has access to what I am typing, it is in a position to do this learning. (This is not complex ML as it does not involve aggregating information from many users, as I am sure Google’s spell autocorrect/suggestions does. Apple’s, well, … needs some work.)
Regarding #3: when I define a snippet for a noun or noun phrase, I will typically want to use the plural form at some point. I’m just as likely to want to write “business cards” as “business card”. So I often end up defining abbreviations for plurals. You might think: “well, you’re not really saving any time that way, because at run time you add a character to your abbreviation”. True, but this is CogZest and we’re into cognitive productivity here. My wish is based on how language works and flow. If I’m writing in abbreviation mode, it is much more fluid to write “bucas” than “busca\
Regarding #4: Conventions. On this blog, and in Cognitive Productivity with macOS, I took the notion of snippet conventions further. I often define a cluster of abbreviations. For instance, I often find myself referring to Brett Terpstra, so I have snips for his
- name: @brte → Brett Terpstra,
- email address: @@brte → …,
- website: #brte → http://brettterpstra.com, and
- twitter handle: @@brte → @ttscoff
You’ll notice the pattern: a special string for type of information (name, email, etc.), first two letters of each name. These don’t save a lot of typing. But it reduces the load on my memory. My article and book mentioned above go into more details about conventions, listing additional information.
You can probably see where I am going here. I repeat this work for dozens of people (probably more). This could easily be automated in a text expansion utility, which would save me a lot of work. I’d just need to populate the info in Contacts (which I do anyway, when I meet someone significant), and the utility would do the rest.
It’s not as simple to design the software as it at first seems, but it’s definitely not rocket science either.  There are clashes (two people whose first and last names start with the same respective strings.) But this can be handled with further conventions, and some rules. (E.g., the more information associated with a contact, the more likely it is to be relevant. The app could give a choice if it’s not sure. Then it would learn your preference. Launchers have been learning abbreviations for over 20 years.)
To take this further, the app developer would want to:
- enable users to define their own abbreviation grammars,
- enable users to select a grammar,
- learn grammars, and
- have more ontologies (my previous writing on conventions mentions other types of abbreviation).
I will need to check again whether these features are available in TextExpander’s competitors. If you know, please add comments below.
- Is rocket science really that difficult? I suspect not compared to psychology. Compare the list of big unsolved problems in rocket science with psychology.