Creating new TextExpander snippets with Workflow from (almost) any app

Using Workflow, you can create TextExpander snippets in nearly any app.

Snippets in TextExpander can save a lot of time typing

When you have a lot of repetitive typing to do, text expansion can be a real timesaver. iOS has built-in keyboard shortcuts, which can a big help for things you type often such as an email address or phone number however, these text shortcuts are rather basic. Though limited by Apple’s app sand boxing, a real text expansion app can typically go a lot further, and the best in this market is TextExpander by Smile Software. TextExpander can save you a lot of time, especially if you’re using apps that support it, and provides an SDK that has been adopted by several great writing apps, such as Drafts and Day One. There is a good number of apps that have added support for TextExpander, but they also provide a third-party keyboard to expand snippets. I do find I have some personal issues with the keyboard, and I’ve heard criticisms from others, but I still find it useful especially compared to the other options.

Though perhaps less known, TextExpander also provides a URL scheme. Sometimes, when I’m writing something for the x-teenth time, I think, I should really make that a snippet. I’ll do it when I’m finished here, and then I forget by the time I’m done. On the Mac, it’s really easy to create a snippet. On iOS you have to open the app and fill out the new snippet form. Luckily there is another way: the URL scheme.

TextExpander’s URL scheme offers a method for creating new snippets. All we need is a way to launch that URL while passing our intended snippet content to it as input, right from the very place we are typing. That’s where Workflow comes in. Though it has no support for TextExpander built-in, it does make it easy to take text input and run a URL scheme with it. However, I wanted a bit more control here. TextExpander provides a system of organization for snippets in the form of groups. I wanted to be able to select a destination group for the snippet when I create it, and set an abbreviation for it. That’s what the final workflow does.

This workflow creates a snippet from the selected text

To use the workflow, simply select the text you wish to save as a snippet. In the Copy/Paste pop up menu, there is also a Share option. Tapping Share from here will share the text only, which is what we want. Then select the Run Workflow action extension and choose the Create Snippet workflow. The workflow will first display the selected text so you can edit if needed and then confirm it. Next it will ask you to create an abbreviation for your snippet, and then show a list of groups from which you can select as a destination for the snippet. The workflow will then launch the Workflow app and prompt you to confirm you want to open TextExpander. Once it does, the new snippet is created and you are returned to Workflow. Unfortunately, due to Apple’s restrictions in iOS, the extension must first open Workflow to launch the URL scheme, and it is not capable of returning you to the original all you started in. For me, that’s a small annoyance but certainly not a deal breaker.

The workflow lets you select a group and apply an abbreviation

You should customize the workflow by changing the group names in the List action to reflect your actual snippet group names. Be sure to match spelling properly with how they appear in TextExpander. You can grab the workflow here. Let me know if you have any questions or suggestions.

Link: ‘Your’ vs. ‘My’ (Daring Fireball)

I have to agree with John Gruber’s assessment of Tom Warren’s review on The Verge regarding the new iPad Pro and iOS 11 beta:

Tom Warren’s review for The Verge of the new iPad Pro and iOS 11 beta is headlined “iOS 11 on an iPad Pro Still Won’t Replace Your Laptop”. Exactly in line with my piece yesterday, that “your” should be a “my”.

As well as this:

Again, Apple is not trying to convince everyone to replace a traditional Mac or PC with an iPad. Apple executives say that the Mac has a bright and long future because they really do think the Mac has a bright and long future. Any review of the iPad and iOS 11 from the perspective of whether it can replace a MacBook for everyone is going to completely miss what is better about the iPad and why.

I think he is right on point with that. Apple isn’t trying to replace the Mac entirely. They still have plans and the Mac still has a future. They made quite a show of it at the WWDC keynote this year with new hardware and new technologies for AR and VR.

Sure, the iPad isn’t a Mac. And neither is the Mac an iPad. Where I see the strengths of using one device for a particular purpose, you might see weakness of using that same device for your own needs, and vice versa. I don’t think there is any valid debate as to whether or not the iPad Pro (and perhaps even an iPad Air) can replace a laptop. It’s not a fringe case. You can argue whether or not it can replace a laptop for everyone but you’d be missing the point entirely.

When I handled customer support for Workflow, I saw plenty of people doing plenty of work with iPads alone – and I do mean real work. MacStories is a perfect example of work being done iPad-first (or mostly iPad only). Hell, most of my work in the last two years was done from an iPad, and an Air 2 rather than a Pro at that. iOS 11’s new iPad productivity features certainly aren’t a setback to this. I don’t think there is any reason to suggest Apple is trying to force or convince everyone to go iPad only and toss out their Macs, and I don’t see them sheltering the Mac anytime soon. What i see with iOS 11 is Apple trying to make the iPad a better, more productive work environment for those who want to use it as such.

I have a 2014 MacBook Air and while I’d love to replace it with a newer MacBook Pro, I do love my Mac and I don’t plan on giving it up. I have a lot of great software there and I enjoy the look and feel of the system, the hardware, all of it. I feel the same for iOS and the iPad (and the iPhone), especially in iOS 11. Going forward, (and getting my first iPad Pro tomorrow) I have a feeling I will be doing most things from my iPad. I have my reasons, some of them being portability, speed, and the enjoyment I get from using a multi-touch-sensitive piece of glass capable of running great software, side by side, without a clutter of windows, and with fewer distractions.

There are other reasons but ultimately I enjoy using it and for what I need to do, the iPad is sufficient. There are plenty of people for whom the iPad Pro is sufficient enough for the work they need to do, but who feel more comfortable with a traditional keyboard/mouse interface. I get the feeling they’ll be able to continue doing so for a long time, but the iPad is a better way to work than a laptop for me.

Source: Daring Fireball

Kickstarter: Panobook from Studio Neat

Studio Neat, maker of products like the Neat Ice Kit, the Glif tripod mount for iPhone, cocktail app Highball, and more, is at it again, this time with a unique notebook called Panobook.

The idea is a panoramic notebook, long and short, that can more easily fit in places like the space in front of your keyboard. The notebook’s dimensions are 160mm x 288mm and the paper is dot grid. It looks like they’ve thoughtfully considered many details such as layout guide markers and a slip case to archive the notebook once you’ve filled it.

I’m really interested to give this notebook a try. Ben Brooks wrote up a review about the Panobook with some thoughts about his review copy. I’d definitely suggest backing it on Kickstarter if you’re a notebook person.

My Puppy is Stuck Again… and Again and Again

We love our dog. She’s about 16 months old and about as loving as a dog can be. She’s also quite excitable and she certainly has her quirks. For our wedding, we found the very inexpensive mesh curtains at Ikea for around $5, which we used to decorate the gazebo. We now have one of these curtains as an accent in our bedroom window and for some reason, our puppy loves to get behind the curtain. Unfortunately for her (and hilariously for us), she can’t always get out of it on her own. There’s a couple of pictures here, but my wife shared a collection of these and a few more such images earlier. If you enjoy these, check it out here.

It started when she was spayed in April and had to wear the e-collar. The size and the edges of it made getting stuck behind the curtain easy. I heard some whining and poked my head in the room to find the curtain all the way around her. She was clearly okay so I had to snap a picture.

Disclaimer: We try to be good puppy parents. When we aren’t home, we cage her. If she’s playing around that curtain, we are hear to answer her cries when she gets stuck. We will probably change it one weekend soon, when I get around to hanging our other curtain rod. I should also add that at no point in any of these pictures is she hurt. The curtain is not wrapped tightly around her and she is able to tear it up (hence the giant holes in some pictures).

Getting message links from Airmail with Workflow

Using Airmail’s integration with Workflow to get a more portable message link.

The number of email clients on iOS is no small thing, and it continues to grow as developers implement their own ideas on how to improve email. Each of these have their strengths and weaknesses and those can vary widely between some email apps. It’s undeniable that one of the biggest players in this space right now is Airmail (also available on macOS).

Airmail is an email client geared towards power users, providing users with numerous options for taking action on email messages. This includes the now-typical options to snooze a message or mark it as a todo, as well as a long list of actions to process messages with system features or send them to a number of apps. With Airmail’s actions, you can easily create a reminder, an event, or a PDF, or send the email message to one of the supported apps such as Trello, OmniFocus, Todoist, Day One, Ulysses, Bear, and even DEVONthink, just to name a few.

Apps and services available in Airmail

A more recent addition to Airmail actions is support for running workflows in Workflow and custom actions. Custom actions can be useful, allowing you to essentially carry out multiple actions in one. With custom actions, you can star an email and then create a task or reminder, without having to run two separate actions. Workflow actions are setup as custom actions as well.

When setting up a Workflow action, you can choose which elements of the message are sent to the workflow such as Sender, Sender name, To, CC, HTML, Text, and more. It also offers the Message Link parameter, however message links are created as airmail:// URLs, which means you can only open them in Airmail. While there are advantages to this, if I am linking to a message in a note or some reference material that I may come back to down the road, I want to be able to open that message even if I am using a different client. That’s where Workflow comes in. Apple Mail also has a URL scheme that allows you to open messages from elsewhere. The messages have a unique message ID. This ID is the same in Mail as it is in Airmail and this is what is required for Mail’s URL scheme to open the right message.

Mail’s URL scheme to open a particular message is message://<messageid>. We can set up the action in Airmail to send the message link to the workflow, and then we can use Workflow’s Match Text and Get Group from Matched Text actions to isolate the message ID from the Airmail URL that is sent to the workflow. We can do this using a simple regular expression messageid\=(.+)$ to match the ID and then insert the group we get from into a message:// URL within a Text action.

I should back up a moment and add that sometimes, I want a link in a markdown format. I setup my Airmail action to send the Subject in addition to the link. When setting up Workflow actions that send multiple parameters, Airmail lets you define a custom separator character1. At the beginning of the workflow, you can use the Split Text action to separate by the same custom character you set in the Airmail action. The you can reference each item individually at its index using the Get Item from List action2. This allows us to receive the link and the subject, and then provide multiple options for generating the link as a plain URL, or a markdown link. I took it a step further in my workflow by including the option to generate an Airmail markdown link or a plain Airmail link as well.

The workflow being used to copy a Mail URL as a markdown link.

Now whether I need to reference an original message source months from now, or just create a quick reminder with the link to a message, I’m good to go. You can get the workflow here.

EDIT: Somehow a couple of little things got changed that I didn’t realize before. The proper changes have been fixed in the version of the workflow linked above, so that shouldn’t be an issue. Just pointing out that the screenshots throughout this post may show a few differences. In setting up the Airmail custom workflow action, the separator field should not be blank, it should be a double pipe || character. I also changed the index in the workflow from what the screenshot shows. For some reason if a separator is specified in Airmail, the app will include a blank item first, so the subject was at Index 2, rather than Index 1. Finally, I added a copy option to the workflow, which was also not pictured. Apologies for any confusion. Hope you find this workflow useful.

Note: Airmail and Workflow icons are property of their developers/owners/designers, which is not me

  1. This field was blank in the screenshot, but the custom separator my workflow uses is double pipes (
  2. The screenshots of the workflow show it getting the first item to get the subject. For some reason Airmail sends a blank item first when using a custom separator so it should actually get the item at Index 2 for the subject. It’s fixed in the final workflow linked at the end of the post.

Orecchiette with Pancetta and Cherry Tomatoes

Growing up, I always loved Italian food. Well, I loved what I was exposed to, which was Americanized Italian food. My mom made some delicious spaghetti and lasagna, and she still does. However, our sauce always came from jars, such as Ragu and other brands. For a long time I didn’t even know there was anything different. It wasn’t until recently that I discovered how great pasta can be when made at home, and how not-so-good those pre-made sauces can be. Don’t get me wrong though: I love a good home-cooked meal from my mother. She’s a good cook, but for a lot of Americans, I think jarred sauce such as that is a go-to, and it’s easy and quick.

Last month I discovered that I can use cans of San Marzano tomatoes imported from Italy and make proper use of olive oil, garlic, and other seasonings, to make some excellent pasta that didn’t need pre-made sauces. It helps to live near a place like Jungle Jim’s, where you can get almost any kind of food from any kind of cuisine all over the world (seriously, this store is awesome, and a lot of fun, and with a craft beer and wine selection to die for).

This dish uses some fresh cherry tomatoes, rather than San Marzano, but I was very happy with how it turned out. I do need to work on my presentation, perhaps, but I wasn’t really going for a professional menu photo anyways, I guess. I hope others find it enjoyable as well. I’m open to suggestions. Read on for more!

Ingredients

  • 1 lb Orecchiette pasta
  • 1 lb Cherry tomatoes (halved)
  • 3 Garlic cloves (smashed)
  • Pancetta (diced)
  • 4 Tbsp Olive oil
  • Fresh basil leaves
  • Parmesan (fresh, grated)
  • Pecorino Romano (fresh, grated)
  • Salt (to taste)
  • Pepper (to taste)
  • Red pepper flakes (optional, to taste)

Directions

Bring a pot of water to boil for the pasta, salted (preferably with sea salt). While that heats up, warm 3 tablespoons of olive oil in a pan over medium heat. Smash 3 cloves of garlic and add them to the olive oil. Cook for about 10 minutes to infuse the oil with the garlic’s flavor and scent. It should smell amazing at that point. Once the garlic is browned and the oil fragrant, you remove and discard the garlic from the pan.

Next add the pancetta to the olive oil and cook on medium for just a couple of minutes. When the water is boiling, add the pasta and boil until al dente, stirring occasionally. After cooking the pancetta for a couple of minutes, add the halved cherry tomatoes to the pan. Cook until the tomatoes begin to shrivel, then reduce to low heat and cook a few more minutes until tomatoes soften.

When the pasta is finished, drain it (never rinse the pasta), reserving a bit of pasta water for possible use later. Add the drained pasta to the pan with the tomatoes and pancetta. Add a tablespoon of olive oil and mix everything together. Add salt and pepper to taste (again, preferably sea salt) and, optionally, a bit of crushed red pepper flakes if you want a bit of spice to it. Add fresh basil leaves (I usually rip them up into dime- to penny-sized pieces, roughly) and grate some fresh pecorino romano cheese over the pasta. If you’re like me, you’ll add a lot of cheese here. Grate a bit of parmesan as well, if you like, then mix everything up again before serving.

Serve the pasta with another sprinkling of pecorino and a garnish of some basil leaves. For a side, I recommend asparagus, coated in olive oil, salt, and pepper, and baked for 20 minutes at 350º.

Obviously the times in this recipe aren’t too precise and there are some refinements that can be made but I enjoyed making this dish and eating it was even better. My wife and I really loved it and I’ll be making this again. I’d love to hear any suggestions for improvements or ideas for experimentation; just send them to my email.

Day One introduces end-to-end encryption

Today saw the launch of version 2.2 of my favorite journaling app Day One. This update brings their most-requested feature, end-to-end encryption. Launched in 2011, Day One previously offered the option to sync your journal via Dropbox or iCloud. This changed in 2015 when they switched to the proprietary Day One Sync, as version 2.0 brought several changes in the form of a new app, allowing for multiple journals, among other improvements. Day One Sync is part of a bigger plan, including their IFTTT integration and eventual expansion to the web, as well as Windows an Android.

This update comes weeks after another update which introduced the ability to have your journals printed as books and delivered to you. If you aren’t familiar with Day One, it’s my favorite way to journal and keep track of events, trips, or any other special memories. The Activity Feed feature makes it easy to import events and posts from your calendar, social media accounts, Photos, and locations you visit. If you’re interested in life-logging or quantified self stuff, or you just want to build a good journaling habit, I can’t recommend Day One enough. You can grab it here for $4.99 as a universal app on iOS (macOS version is also available).

Source: https://medium.com/day-one/day-one-encryption-56cb7b03c0e2?source=rss—-f5e65aca08fc—4

Workflow for Saving Recipes from Kitchen Stories to Paprika

When the Paprika extension isn’t available but a URL for the recipe is, Workflow can help.

I’ve recently discovered that I really enjoy cooking. I love trying to make something new and experimenting with various spices, seasonings, and other ingredients to create a unique and delicious flavor. For recipe management, I use Paprika Recipe Manager for iPhone, iPad, and Mac (separate purchases for each but recipes do sync between versions with a free Paprika account). Paprika allows you to save recipes via a sharing extension in the iOS share sheet. If it isn’t able to extract the recipe from a webpage, it will ask you to open the page in Paprika’s in-app browser, which provides some excellent clipboard tools for manually saving the recipe in a fairly quick and easy manner. For instance, you can select the ingredients on the page, and then tap the Ingredients button along the bottom of the browser, then do the same for directions, cook time, nutrition, notes, etc.

The recipe clipper in Paprika's in-App browser

Paprika also allows you to search recipes within the in-app browser, auto-detects if a URL is in the clipboard (and prompts to load it), create new recipes manually from scratch, manage and organize recipes through categories or favorites, pin multiple recipes for quick access when cooking, easily set timers (auto-detected in the text of the recipe), add ingredients of a recipe to a shopping list and sync that list to Reminders, and create weekly meal plans which can be synced to your calendar. Unfortunately the app hasn’t been updated in awhile and I’m not so sure it’s in active development anymore, which is a shame. That being said, as long as it works, I will continue to use it. One thing I have wanted to see from the developers for some time now is an improvement on the base URL scheme of the app: the ability to prefix a URL with their URL scheme and have that page opened in Paprika’s browser. There are apps which have used URL schemes in this way for some time. Prefixing a URL in Safari with the letter r, as in rhttp://recipesite.com/thisrecipe will open that URL in the in-app browser for the Documents app by Readdle. 1Password also provides the ability to open a URL within their browser (by prefixing a URL with op).

The extension for Paprika usually works great in Safari, in my experience. However there are instances where it wont be available, such as when viewing recipes from other apps. I’ve found the Kitchen Stories app to be quite fun to browse over the past few months but due to the data it makes available to the share sheet, the Paprika extension isn’t available here. You could use the Copy Link button available in their custom share page, and then launch Paprika manually, which would then prompt you to load the URL in the clipboard. Alternatively, you could let Workflow take care of that for you. Just like I have workflows to open a page in Documents or 1Password with their aforementioned URL schemes, I also have a workaround for Paprika. This uses the Workflow app on iOS as an action extension to copy the input URL to the clipboard and then launch Paprika using their paprika:// URL scheme, where the app will prompt you to load the page in the browser so you can save the recipe.

Saving recipes from Kitchen Stories to Paprika using Workflow

The workflow also stores your current clipboard content to a variable so that if you return to Kitchen Stories after saving the recipe, while the Workflow extension is still running, it will set the prior data back to your clipboard. I don’t prefer having to use clipboard workarounds so being able to at least maintain whatever I may have on there is a nice thing for me. The workflow will work from other apps as well, as long as they make the recipe’s URL available to the share sheet. You can get the workflow here.

I keep hoping to see some more advanced features from Paprika, as well as better export options, but I still find it to be really great at what it does and will continue to use it for now.

Link: How to make $80,000 per month on the Apple App Store

Johnny Lin tells of a scam in the form of a #10 Top Grossing productivity app on the Apple App Store with horrific grammar and spelling. Their app claims it can scan your entire device for viruses and malware — something that sandboxing on iOS does not allow — for an easy-to-miss $99.99 in-app purchase (and that’s just for a 7-day subscription). Lin explains better:

Touch ID? Okay! Wait… let’s read the fine print:

“Full Virus, Malware scanner”: What? I’m pretty sure it’s impossible for any app to scan my iPhone for viruses or malware, since third party apps are sandboxed to their own data, but let’s keep reading…

“You will pay $99.99 for a 7-day subscription”

Uhh… come again?

It’s crazy that an app can get through the review like this, and crazier to me that enough people could fall for it, but alas it/they did. Working in customer support for an iOS app, it became clear that a lot of iOS users aren’t aware of sandboxing, or don’t understand how it works. Being educated on this fact would likely curb the number of victims in such a scam. Obviously there are bigger issues here, but it might help to educate less tech literate friends or family.

Source: https://medium.com/@johnnylin/how-to-make-80-000-per-month-on-the-apple-app-store-bdb943862e88

Optimistic iOS User

Some thoughts on why I am optimistic about the future of productivity, automation, and professional use of iOS — specifically the iPad.

Earlier this week, in the keynote for their annual Worldwide Developers Conference, Apple announced the next version of iOS: iOS 11. The announcement of the next version of iOS was expected, of course, but there some changes I wasn’t expecting quite yet but was happy to see, particularly in regards to the iPad which, as they joked on stage, is being turning up to 11.

We all have our own critiques, and I’m no different, but I’m generally an optimist about these things. iOS certainly has its flaws, as an software platform will, but the announcements from Monday do a lot to move the iPad forward as a legitimate computer; something some of us already saw it as, despite room for improvement. I expected Apple to eventually implement better features for multitasking (and perhaps even drag and drop), although I was expecting to have to wait another year or so — what a pleasant surprise. I haven’t gotten my hands on the beta yet, but I plan to try the public beta later this month (after a proper backbup, of course!). That said, I remain optimistic about the productivity improvements coming to the iPad.

The revamped control center and app switcher — resembling something more like Mission Control on macOS, the improved dock, the implementation of drag and drop, screen recording, and instant markup for screenshots — just to name a few — will undoubtedly enable many iPad power users to get more done more efficiently than before and, hopefully, draw in new iPad users and an increase in use for existing-but-less-frequent iPad users, pushing further it’s place in the wide world of computing devices.

I know a lot of people were concerned with Apple’s acquisition of Workflow. Some who rely on the app for work and other reasons were worried that this might be the end of Workflow and perhaps lead to less powerful automation on iOS. One of the reasons I can remain hopeful about the future of iOS — and specifically the iPad — in terms of automation, productivity, and professional work is that after being a part of the Workflow team for a little more than two years, I can say that they loved working on Workflow as much, or more, than I did: developing it, improving it, introducing new features to our customers. They were passionate about it. While I don’t have any inside information, I personally don’t think they would have made such a deal if they didn’t think they could continue to do these things in some manner at Apple. I should reiterate that I’m not basing this on anything other than what I saw working with them for a couple of years so I could certainly be wrong but, as I said before, I am optimistic.