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!


  • 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)


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).


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 r 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.


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.