Users: 230: Computers: 133: Different versions: 90: Total Keys: 1,134,823: Total Clicks: 412,751: Total Usage: 7 weeks, 4 days, 20 hours, 40 minutes, 38 seconds. 5.0. 1 Rating Listen on Apple Podcasts Dave Hamilton and Shannon Jean, two long-time small-business owners, come to you each week to talk through the trials, success, pitfalls and tips it takes to successfully run a small business in today's world. Fabulous utility TextExpander is a fabulous utility. The fact that its now available on iOS, OS X and Windows is a big plus. I’m glad they are moving to a pricing model that will hopefully allow them to develop and support it for years to come.
After upgrading to Safari 5.0.1, I noticed that the flashing text insertion point in Mailplane, the WebKit-based application that improves Gmail’s Web interface, stopped working when I used the arrow keys. To be specific, the insertion point disappeared entirely, such that it was impossible to tell where typed text would appear. Relaunching Mailplane made no difference, nor did turning off utilities (like Keyboard Maestro and TextExpander) that mess with the keyboard. Interestingly, the bug bit me only when I was writing plain text mail; if I switched to Rich Formatting for a given message, the insertion point worked properly again. Alas, I far prefer writing plain text messages.
A quick trip to the Mailplane support mailing list revealed what was going on. Mailplane’s developer, Ruben Bakker, identified the problem as being an interaction between the version of WebKit installed by Safari 5.0.1 and the current 10.1.53.64 version of Flash Player (that’s later than the version that Apple ships with Mac OS X 10.6.4, but is recommended for all users for security reasons; see “Adobe Flash Player 10.1.53.64 Blocks 32 Security Holes,” 11 June 2010 and “Mac OS X 10.6.4 Fixes Highly Specific Bugs,” 15 June 2010). Because the problem revolves around WebKit and Flash Player, it also manifests itself when you’re using Gmailin Safari, as long as you have the appropriate combination of software versions. Gmail viewed in Google Chrome doesn’t seem to suffer from the problem, despite that browser also being based on WebKit, but it’s impossible to know exactly why.
You might be confused about why Flash would enter into the picture at all, and that’s in fact a hint toward the easiest solution to this problem for Safari users. Gmail uses Flash to provide “advanced attachment features,” the capability to attach multiple files at once and to display progress bars while attachments upload. As far as I know, that’s the only place Gmail relies on Flash, and if you switch to Basic Attachment Features in Gmail’s Settings, that eliminates Gmail’s use of Flash and works around the bug.
How to edit info.plist on mac boot camp for installing usb win 7 download.
Mailplane users now have an even better solution – updating to Mailplane 2.1.10, which resolves the problem even if you have Advanced Attachment Features turned on in Gmail. The update is free and is a 21.1 MB download.
There are several other workarounds for Safari users.
- You could, in theory, revert to an earlier version of Flash Player, but given the security vulnerabilities in the 10.0 versions, I wouldn’t recommend that. Adobe doesn’t make it easy to find older versions anyway.
- You could install the free ClickToFlash plug-in for Safari, which disables Flash generally and then lets you re-enable it for specific pages (see “ClickToFlash Spiffs the Safari Experience,” 28 May 2009). I’ve tested this, and it seems to resolve the problem when using Gmail in Safari.
- You could disable Flash entirely by removing the Flash Player.plugin file from the Internet Plug-Ins folder in your top-level Library folder. To reinstall the latest version of Flash Player in the future, just visit the Adobe Flash Player download page. Disabling Flash may have other ramifications, depending on the sites you frequent, and ClickToFlash is a more elegant solution.
What I don’t know yet is where primary responsibility for the bug lies: Gmail, Safari, or Flash Player, although it was the update to Safari 5.0.1 that triggered it. I suspect that any of the three parties could fix the problem, as Ruben Bakker did for Mailplane, but it’s hard to see any of the three parties having as much incentive as he does.
I also don’t know if this problem affects sites other than Gmail. Presumably there are other sites that use Flash and provide text-input fields for users; it’s conceivable that they could suffer from the same problem when accessed via Safari 5.0.1. If you know of any, let me know in the comments.
June 5, 2015 at 10:27 AM by Dr. Drang
Yesterday, Gabe Weatherhead showed his current workflow for making iTunes and Amazon affiliate links. I realized that although I’ve written about my system for iTunes links, I haven’t written up my current TextExpander snippet for Amazon links.1 Then I realized that the new version of TextExpander, with its support of JavaScript for Automation, offers a simpler way of making the links. This post is the result.
“Workflow” may not be the right word for what Gabe’s doing. Through a clever combination of two menubar apps that automatically watch the clipboard and transform certain URLs, he doesn’t actually do any work—he just copies a product URL from his browser and then pastes it. One of the apps cleans the cruft out of URLs on the clipboard and the other adds the affiliate codes. Both work behind the scenes and require no action on his part. I won’t reveal the app combination here; you should go read his post and use his affiliate links.
Gabe used to use Keyboard Maestro to do his affiliate linking. He explains his switch this way:
I’m always happy to replace my scripts with a professionally made and supported alternative and here’s a good way to do that.
I generally prefer to maintain as much control over my workflows as possible, even if it means a little more work for myself. Gabe’s new system relies on a seemingly magical sequencing of the two apps he uses, and I distrust magic.
Here’s my TextExpander snippet for getting Amazon affiliate links:
It’s an AppleScript snippet and is triggered by the abbreviation
;amazon
. It doesn’t use the clipboard; it assumes that the product page for the item I want to link to is currently in the frontmost Safari tab. Because I’ve learned that this is pretty much always the situation when I make an Amazon link, I save myself a step of copying the URL by having AppleScript get it.Here’s the AppleScript content of the snippet:
Line 1 puts my Amazon Associates ID into the
myTag
variable. Line 3 grabs the URL of the frontmost tag and puts it into the theURL
variable. If you’re a Chrome user, Line 3 should beTextexpander 5.1.5 Download
Lines 5 and 6 set up and run a short shell command that extracts the ASIN (Amazon’s product ID code) from
theURL
. I do this so I can clean up the URL before adding my affiliate code. Amazon links are often long and nasty, with all sorts of extraneous bits that show how you got to the page. Here’s an example:Most of that is unnecessary. The key is the ASIN:
B004G5ZU32
.The guts of the extraction command is this Perl substitution one-liner:
The options to
perl
tell it to read every line of input, apply the substitution command, and print the output.The substitution command may look a little odd. Best ifr flight simulator for mac. Search and replace regexes are usually delimited by slashes, but because slashes are in the search pattern, I took advantage of a cute Perl affordance that allows you to use other characters as the delimiters (I chose hashmarks) and avoid the need to escape the slashes with backslashes.
The search pattern looks for either
dp/
or gp/product/
in the URL and gets the string that comes after it—everything up to the next slash or question mark. That string is the ASIN, which is captured because of the parentheses. The replacement pattern is just the captured ASIN. There may be better ways to get the ASIN from the URL, but this has worked well for me on a variety of products over a few years. I don’t think it’s ever failed.Line 8 constructs a simplified Amazon URL to the product and appends my affiliate tag. For the example above, the output is
which is short and sweet.
After tweeting a screenshot of this snippet, I started thinking about TextExpander 5’s new capabilities and how this script was a good candidate to be rewritten in JavaScript. I’ve always thought the AppleScript snippet was clumsy because of the need to “shell out” to Perl to do the ASIN extraction.2 With the combination of TE5’s support for JavaScript for Automation (JSA) and JavaScript’s built-in regular expressions, the script could be made cleaner and easier to understand.
Here’s the JavaScript content that does the trick:
The regular expressions for the search and replace patterns are the same as before, except that I had to escape the slashes in the search pattern. As far as I know, JavaScript doesn’t have Perl’s ability to use non-slash delimiters for regexes.
The JSA syntax for accessing applications reminds me of the long-since deprecated Appscript library for Python, but it’s going to take me a while before I’m truly comfortable with it. As with AppleScript, the real problem is that each application gets to define its own commands, so you have to spend a lot of time in the Script Editor’s dictionary.
The new JavaScript snippet works well but has one problem: it adds a newline to the end of the URL. At first I thought my script had some hidden defect, but Smile support tells me that JSA always adds a newline to the end of the return value, a bug that Smile will have a fix for in version 5.0.1 of TextExpander. JSA scripts run through the Script Editor definitely don’t have a trailing newline, but maybe the Script Editor itself is deleting it.
I could probably figure out a way to delete the trailing newline, but I think I’ll just keep the JavaScript version of the snippet on ice until TextExpander 5.0.1 comes out. The older AppleScript version still works, even if it isn’t as elegant.
![5.0.1 5.0.1](https://static.waitsun.com/wp-content/uploads/2015/07/88183b946cc5f0e1.png)
Update 6/8/15 3:54 PM
The folks at Smile are true to their word. I updated to TextExpander 5.0.1 today, and it fixes the trailing newline problem. I’ve switched from my old AppleScript snippet to the cleaner JavaScript version.
The folks at Smile are true to their word. I updated to TextExpander 5.0.1 today, and it fixes the trailing newline problem. I’ve switched from my old AppleScript snippet to the cleaner JavaScript version.
Textexpander 5.1.5
- There are one or two older posts that describe workflows I stopped using. ↩
- Yes, there is the Smile (unrelated to Smile Software) AppleScript library for regular expressions from Satimage, but I’ve always been leery of using it. Apple has the unfortunate habit of making internal changes AppleScript every so often, and my fear has been that one of the changes would break the library, leaving me high and dry. It’s true that changes could break other parts of my scripts, but third-party libraries just seem more vulnerable to me. ↩