Is Fantastical worth $10?

Earlier today Flexibits released a version of Fantastical for the iPad. I immediately hit the ‘Buy’ button for the app. Fantastical has become my de facto calendar app for sometime now. I use it with Drafts, the natural language is amazing, and the layout works for me.1

So I got asked about the value of the app and if $10 was justifiable?

It’s a simple questions that doesn’t have a simple answer. I’ll be honest, I’ve been living with Fantastical 2 for iPhone on my iPad since mid-December. Does it work? Yes. Does it work well? No.

And there’s the rub.

Both versions work on my iPad and the difference for me has been the fact that I’ve started to do more and more on my iPad and less and less on my iPhone. On my iPad I’ll do schedule planning with my wife, weekly reviews, project planning at work, etc. On my iPhone all I’m doing is entering events via Drafts to Fantastical. I don’t see my calendar on my iPhone unless it’s an event over the weekend or I’m out and about.

Today’s calendar in Fantastical 2 for iPhone:

Today’s calendar in Fantastical 2 for IPad:

Overview: The two examples above are stripped down versions of my current calendars.2 Flexibits did a great job of knowing how someone would probably use their calendar. For the iPhone version its a quick snapshot of events and reminders that are coming up today. If I need to see tomorrow, or other dates, its a simple flick of the day stream.

On the iPad, Flexibits used the screen size to give a calendar app that feels more like a power calendar app. I can easily move from monthly view to work week view and then pan around to see what’s happening next week. This is going to make my weekly reviews even easier because the screen size allows me to see so much more.

Functionally the two apps have been behaving identically. All my current Drafts actions to Fantastical work with the iPad version. The natural language event entry works in both. And the look and feel of each apps makes you comfortable switch from one to another and back again.

Bottom line: I’ve probably spent more time and money chasing down the latest and greatest app than I’d ever care to admit.3 Fantastical is far more functional than the default iOS calendar app. The work I do requires me to have an accurate calendar. If that’s the world you live, having a great calendar app will probably pay for itself. If all you have on calendar is family birthdays and holidays, then maybe the iOS Calendar is more your speed.

So is $10 worth a calendaring app? Maybe.


  1. Ok, Agenda’s UI is better in IMO, but it has some weird latency problems if it’s not opened right away in the morning for a refresh. 
  2. And yes… knowing which day a new comic comes out is important. 
  3. Or at least let my wife know about. 

Effective versus efficient

One of the long standing debates I’ve had with other reliability peers over the years is the use of effective versus efficient. This came up again when someone tweeted the following:

I disagreed with his statement and replied back.

I followed up with.

This goes back to my first job, I was three months out of college and in a review meeting on the first project I was going to be leading. The review meeting included a senior engineer, the engineering manager, the plant manager, and the VP of operations. Half way through my presentation the senior engineer sat up and plainly stated to the entire group,

“You have no clue what you’re talking about.”

I’m about to pass out in front of this group because the senior engineer, who had about 40y of experience, has just called me out in front of everyone. The point he raised was that I had stated the project being considered was the most efficient design option from the three I had reviewed. The review meeting concluded and the senior engineer asked that I stop by his office after lunch.

I came back from lunch and knocked on the engineer’s door. Sitting on his desk was a care worn dictionary opened to the ‘E’ section. He asked me to sit down and look up the word efficient. I did and found:

Efficient: capable of producing desired results without wasting materials, time, or energy.1

He then asked me to look up the word effective. I did that too and found:

Effective: producing a result that is wanted; having an intended effect.2

I sat there with a blank look on my face, uncertain of what to do next. The engineer then asked me how could I be so certain my choice was the most efficient when it hadn’t even been built yet. I didn’t think it was possible, but my face got an even more blank expression. The engineer then smiled and told me to relax. He explained that my first priority should be ensuring that whatever choice is made, it is the most effective process. Once the process is up and running, then you can focus on making it the most efficient process. He said you can’t be effective and do things wrong, but you can efficiently make mistakes all day long.

Lesson learned…

First make sure it’s effective, then make sure it’s efficient.



Got any questions? Feel free to hit me up on Twitter at @MyGeekDaddy.


  1. http://www.merriam-webster.com/dictionary/efficient 
  2. http://www.merriam-webster.com/dictionary/effective 

Post transfer from old site

If you’ve followed my site for a while, you know most of my writing was at another site. I’m in the process of shutting down the old site and moving relevant posts back to this site.

I apologize in advance if your RSS feed looks like a historic retrospective for the next week or two.

Quick fix to pip install error

I recently created some python scripts that I wanted to run periodically to update some information for me. I got the scripts running the way I wanted and decided to move them over to my Mac Mini where I knew they could run uninterrupted throughout the day. One of the steps I had to take was update my Python environment on my Mac Mini to match my MBP. After installing a few modules I ran into a problem with the PIL/Pillow module. After several attempts at running pip install Pillow, I would end up the with following error:

clang: error: unknown argument: '-mno-fused-madd' [-Wunused-command-line-argument-hard-error-in-future]

clang: note: this will be a hard error (cannot be downgraded to a warning) in the future

error: command 'cc' failed with exit status 1

Hmm…. I’m the first to admit I’m a total newbie when it comes to deciphering install errors like this, so I poked around stackexchange for an answer. Sure enough, someone had already posted something similiar:[1]:

The Apple LLVM compiler in Xcode 5.1 treats unrecognized command-line options as errors. This issue has been seen when building both Python native extensions and Ruby Gems, where some invalid compiler options are currently specified. Projects using invalid compiler options will need to be changed to remove those options. To help ?ease that transition, the compiler will temporarily accept an option to downgrade the error to a warning:

-Wno-error=unused-command-line-argument-hard-error-in-future

Further reading from the Xcode release notes shows:

As of Apple LLVM compiler version 5.1 (clang-502) and later, the optimization level -O4 no longer implies link time optimization (LTO). In order to build with LTO explicitly use the -flto option in addition to the optimization level flag. (15633276)

  • The Apple LLVM compiler in Xcode 5.1 treats unrecognized command-line options as errors. This issue has been seen when building both Python native extensions and Ruby Gems, where some invalid compiler options are currently specified.

    Projects using invalid compiler options will need to be changed to remove those options. To help ease that transition, the compiler will temporarily accept an option to downgrade the error to a warning:

    -Wno-error=unused-command-line-argument-hard-error-in-future

    To workaround this issue, set the ARCHFLAGS environment variable to downgrade the error to a warning. For example, you can install a Python native extension with:

    $ ARCHFLAGS=-Wno-error=unused-command-line-argument-hard-error-in-future easy_install ExtensionName

    Similarly, you can install a Ruby Gem with:

    $ ARCHFLAGS=-Wno-error=unused-command-line-argument-hard-error-in-future gem install GemName 16214764 updated

  • So now the proper method to do a ‘pip install’ is:

    ARCHFLAGS=-Wno-error=unused-command-line-argument-hard-error-in-future pip install pillow
    

    Boom! Pillow installed with no problems and my python script loaded with no issues.


    Got any questions? Feel free to hit me up on Twitter at @MyGeekDaddy.


    1. Answer from StackExchange – Can’t install mysql gem on OS X

    Automating GTD with Drafts

    The first step I took when I revamped my GTD system was how I was capturing and managing my tasks and ideas. In a previous post, I gave an overview of my new GTD system and found the number one problem I had was dumping everything into OmniFocus. OmniFocus became my place for collecting and doing, which caused a drag on my overall system. By allowing myself to mix the two steps together I made a mess of doing a weekly review because I had to think if an OmniFocus entry was an action or an idea that needed further processing on. I’ve changed my habit to collect into Drafts first and defer notes to either OmniFocus, Evernote, Fantastical, or the delete bucket.

    Here are some of the steps I’ve taken to automate or streamline my Collection phase.

    Drafts setup

    The first thing I’ve done is standardize on the tabs I’ve got setup in Drafts. This way I have the same action, on the same tab, regardless of what device I’m using.

    • I – Actions Tab: Any action that would use or manipulate the content of the note. This is where I keep actions like adding an event to Fantastical or a task to OmniFocus.
    • II – Communication Tab: Any action that may be used for dedicated communication actions. This is where I have a dedicated task to email my wife, my Markdown email action, etc.
    • III – Dropbox Tab: Any action that uses a Dropbox type of action. I have actions like dedicated running log files on Dropbox, create a new text file in my overall system notes folder, etc.
    • IIII – Evernote & Send To: Any action that uses Evernote type of action or sending a note to a dedicated app (e.g. Byword or Editorial)
    • Hidden: This is where I’ll keep iterative actions that can’t be run directly. For example, if an action goes out to app, returns some text, and then runs another action. That second action isn’t one I’d run directly, so it stays on the Hidden tab.

    If you’re a multiple iOS device user, I have a quick tip on getting multiple iOS devices setup with the same actions and tab settings.

    Collecting in iOS

    There are several tools I use with Drafts as part of my collection steps in iOS. Listed below is a summary of how each one is set up.

    Safari Fav Bar: I’m doing a lot more of my work on my iPad lately and the screen space allows Safari to have a toolbar visible.[1] This means that some of my custom book marklets are now available while browsing.

    Web Clipper: One of my regular tools is a book marklet in Safari to call on a Pythonista script to return information back to Drafts. This is useful

    Book marklet:

    javascript:window.location='pythonista://ImportToDrafts?action=run&argv='+encodeURIComponent(document.title)%20+'&argv='+encodeURIComponent(document.location.href)
    

    Pythonista script:

    import webbrowser
    import clipboard
    import urllib
    import sys
    
    title = sys.argv[1]
    url = sys.argv[2]
    note = clipboard.get()
    
    full_note = ''.join([title,'\n\n', url, '\n\n', note])
    full_note = urllib.quote(full_note.encode('utf-8'))
    
    webbrowser.open('drafts://x-callback-url/create?text=' + full_note)
    

    So now when I’m on a web page in Safari, I can highlight some portion of text I want to keep, click my Drafts book marklet, and poof… the clipped text and URL are in Drafts.

    Here’s an example of a webpage I’m clipping:

    And here’s the corresponding note in Drafts:

    Key Drafts Actions

    I’ve shared most of my key Drafts actions before, but here are my essential Drafts actions.

    Fantastical: I enter all my calendar and reminder events through Fantastical, even though the iPad doesn’t have a native Fantastical app. The natural language processing with Fantastical makes this one of the easiest ways to enter events.

    fantastical2://x-callback-url/parse/?sentence=[[line|1]]&notes=[[line|2..]]&add=1&x-source=Drafts&x-success={{drafts://}}&x-cancel={{drafts://}}
    

    Click here to install Drafts Action: Fantastical

    OmniFocus: OmniFocus is still my default task/action list management app. The only downside I still have with OmniFocus is that it doesn’t support a full x-callback-url action, so when a note is added to OmniFocus I stay in OmniFocus.

    Click here to install Drafts Action: OmniFocus

    Evernote: Evernote is has become my idea and digital reference file box. This action uses Drafts [[line|n]] tag to use the first line as the title of the note, line two for the tags I want to apply to the note, and the rest of the Drafts note as the document to be saved in Evernote.

    Click here to install Drafts Action: Add to Evernote

    Note Management

    The next step I took was to turn on note syncing in Drafts. This allows a note created on my iPhone to be available for processing on my iPad later in the day. In addition to note syncing, I turned on the badge count. Now I have a clear way to see if I still have unprocessed information in Drafts when I sit down to do my weekly review. If Drafts shows any unprocessed notes, I know I need to clean that up before doing a my full weekly review.

    Next step

    The next post will explore some of the ways I’ve automated my task management processes in OmniFocus.



    Got any questions? Feel free to hit me up on Twitter at @MyGeekDaddy.


    1. On your iPad, click on Settings -> Safari and turn on the ‘Show Favorites Bar’ setting.  ↩

    Setup Drafts on multiple iOS devices

    Here is a quick tip if you happen to be a multiple iOS device user. Drafts has a built in backup and restore function to manage your custom actions and the tab setup.

    You can use the backup/restore function to create a psudo Drafts Actions image.

    1. Setup one iOS device with all the actions and tab settings the way you want.
    2. When the first device is setup just the way you want, create a backup of your Drafts actions.
    3. Now on your other iOS device(s), do a restore from the backup you did from the first device.

    This restore will work on any iOS device – e.g. iPhone -> iPad. If the devices are not using the same Dropbox folder, just share the backup file from the ..\Apps\Drafts\Settings folder on Dropbox.

    Now every iOS device will have the same actions and tab settings for Drafts.



    Got any questions? Feel free to hit me up on Twitter at @MyGeekDaddy.

    Get professional email signatures in Drafts

    One of the features most new users of Markdown don't realize is that it's original purpose was not for text files, but a simpler HTML markup language: 1

    Markdown is a text-to-HTML conversion tool for web writers. Markdown allows you to write using an easy-to-read, easy-to-write plain text format, then convert it to structurally valid XHTML (or HTML).

    I know a lot of people use Markdown for their text file system. Since Markdown can also use straight HTML markup, you have some unique flexibility in using a mix of straight text and HTML tags in your Markdown documents. One of the ways I've used this flexibility is getting a better email signature for my emails out of Drafts. Since the email Drafts will be processed as MD text to HTML, the signature can also use a mix of MD and HTML mark up.

    Step 1: Create the MD signature

    The first step is getting a working version of your signature text in Drafts or some other MD editor. Since Drafts will parse the body of the note and the signature, the signature can also be a mix of text and HTML. So now a signature in an email sent from Drafts could include a hosted image, text color, etc.

    This is a sample signature for the 'MD Email' action:

    ----------------    
    <span style="color: #f19c37">Jason Verly</span>
    __Acme, Inc.__
    <span style="color: #595959">123 Main Street</span>
    <span style="color: #595959">Minneapolis, MN 56248</span>
    [email protected]
    P: 612-567-3218
    C: 319-867-5309
    

    Step 2: Create MD Email action

    The next step is to create an action in Drafts that will send email via Markdown. The key here is to make sure the 'Send as Markdown HTML' setting is triggered.

    From there the email template of the action should use something similar to this:

    [[body]]
    
    ----------------    
    <span style="color: #f19c37">Jason Verly</span>
    __Acme, Inc.__
    <span style="color: #595959">123 Main Street</span>
    <span style="color: #595959">Minneapolis, MN 56248</span>
    [email protected]
    P: 612-567-3218
    C: 319-867-5309
    

    Step 3:Test email action

    Now that the action has been created and saved, you can send an email using MD syntax. In Drafts I created the following note to be sent as an email using the MD Email action:

    The 'MD Email' action is setup to use the first line of the note as the email's subject and the rest of the note as the body of the message. Clicking on the 'MD Email' action, I get the text of my note and the signature converted from Markdown to HTML. Note that the email signature now includes bold text and different colored text.

    Voila! Now you have a great looking signature line on all your email from your iOS device.

    Install Sample MD Action



    Got any questions? Feel free to hit me up on Twitter at @MyGeekDaddy.


    1. Direct quote from John Gruber's Markdown site

    Fixing my GTD System

    That's it, I've had it. I've declared GTD bankruptcy and I'm starting over.

    Why?

    I've slowly realized that I've started doing things wrong. For quite some time the backbone of my GTD system has been OmniFocus. But with the recent buzz about using text file based systems, like TaskPaper,1 to manage task and project lists, I decided maybe I needed to look at my own system again. As I started taking a look at what I was doing I realized I wasn't prescribing to David Allen's “clean edges” mentality. David's idea is that where and how you manage information should be handled with distinct categories. Looking at my system I began to realize I was mixing my categories in order to fit everything into OmniFocus.

    Actually… my system was an utter mess.

    Right tool, right task

    In my old system, the idea was OmniFocus would be just for tasks. This may seem like a no brainer but over time I started mixing my inboxes. OmniFocus became my task list, my thought collector, and my project planning app. While those three are related, mixing them all into OmniFocus caused problems in actually getting things done. I'd put due dates on ideas I wanted to think about, but didn't have any actionable steps. I'd have an actual project named so similar to a project I was planning, because I put all my ideas into OmniFocus, that tasks would get inter-mingled.

    I finally sat back and looked at the three phases I have in my work:

    • Actual project tasks and action lists
    • Project planning/staging
    • Ideas and thought collections

    These were three distinct phases of how I wanted to get things done for me so I looked at having three distinct apps to keep “clean edges”. I ended up with the following setup:

    • OmniFocus – Action Lists: OmniFocus continues to be where I put my active projects and action lists. If I have something I have to get started this week (Start By) or needs to be finished by next Wed (Due By), these action lists are in OmniFocus. This allows me to put other to do items, like shopping lists or geo-fenced actions in OmniFocus as well. OmniFocus is where I go for my next action, or wonder what I should being doing next, and know I will find only actionable items.
    • Evernote – Project Planning – Evernote is where I keep ideas and reference information of current projects or a project I may do in the future. This was the number one problem with my previous system. Previously I would dump my “need to do” actions in with my “some day/maybe” stuff.2 Evernote is now my repository of “stuff” I may do some day, but not feel guilty about not looking at as part of my weekly review. 3
    • Drafts – Thought Collection: Drafts is where I will collect any thoughts or ideas for further processing at a later time. I have Drafts setup on all my iOS devices4 and so I'm quickly able to grab ideas as they come to me. From Drafts I can move the idea if it's actionable to OmniFocus or part of a larger project plan/long term process to Evernote. Or it could sit in Drafts until the idea has percolated to the point it can be moved or completely dropped.

    System of Tools

    Beyond these three apps, I've looked at how I can further use the tools I have on hand right now to either automate or make my process more powerful. Some of the other apps or tools I use include:

    • Dropbox: Notes and file sharing among iOS and OS X devices.
    • iCloud: Syncs bookmarks across my iOS devices.
    • Mail Drop: The Omni Group has a great service to send email to a predefined mail address and convert the message to an action in OmniFocus.
    • Pythonista: Pythonista is slowly becoming the glue that holds all my GTD building blocks together. Read further on for an example.
    • Editorial: As Pythonista has grown, so has my use of it's sister program Editorial.
    • Fantastical 2: Fantastical is my only calendar app now. The ease of entry with natural language and being able to select specific reminder lists from Drafts is what makes this app one of the best. In fact I use the iPhone version on my iPad because there isn't one available for iPad yet.

    The glue that binds

    As I previously mentioned, a lot of my processes are starting to revolve around using Pythonista. One of the core workflow processes uses just two simple steps. One is a simple javascript bookmark I put in my Safari favorites and the other is a script in Pythonista:

    JavaScript Bookmark: This javascript is placed in a bookmark and used to collect information from a web page and run a Pythonista script.

    javascript:window.location='pythonista://ImportToDrafts?action=run&argv='+encodeURIComponent(document.title) +'&argv='+encodeURIComponent(document.location.href)
    

    Pythonista Script: The script below is called upon by the bookmark above. When the script runs it takes the text I copied from the web page, the URL, and Title and formats the information into a clean note.

    import webbrowser
    import clipboard
    import urllib
    import sys
    
    title = sys.argv[1]
    url = sys.argv[2]
    note = clipboard.get()
    
    full_note = ''.join([title,'\n\n', url, '\n\n', note])
    full_note = urllib.quote(full_note.encode('utf-8'))
    
    webbrowser.open('drafts://x-callback-url/create?text=' + full_note)
    

    For example: I want to take the highlighted text on the web page and put it into a Drafts note:

    I would simply do the following:

    1. Open the web page in Safari and highlight/copy the text.
    2. From either my short cuts or favorites, run the javascript bookmark to “Clip to Drafts”. The javascript bookmark will collect the URL and web page title and pass it on to the Pythonista script “ImportToDrafts”.
    3. Pythonista now takes the URL and Title values passed from the javascript and the clipboard contents to transform the text pieces into a new note.
    4. After the javascript and python scripts run, the new note is cleanly formatted and passed to Drafts.

    Boom! Now I can make a choice to further push this into Evernote or OmniFocus, or simply hold onto the information as an idea for further processing at a later time.

    iOS vs OS X

    A lot of the efforts I've made into my system focused on iOS because I normally have my iPhone or iPad with me. While I normally have an iOS device with me, I sit in front of a Mac for work most of the day, so I knew the toolsets would differ slightly from iOS and OS X. Here are a couple of the core apps I use on my Mac for my GTD system:

    • Keyboard Maestro: Keyboard Maestro is where I will typically replace some of the scripts I've made in Pythonista to keyboard shortcuts I'll use in OS X. 5 For example, I have a keyboard short cut to clip text from Safari and paste it into apps in a similar format as the example above in Drafts.
    • Byword: When writing or note editing, this is my go to editor. The clean writing space and great Markdown preview/export is what I love about the app.
    • nvAlt: No Mac/iOS app list would be complete without something from Brett Terpstra (@ ttscoff). nvAlt could almost go back into the main set of tools (in fact I think it will) because this is where I will keep running lists of information at my finger tips. Got a cool new Drafts URL action? I got a list of those (RUNX – Drafts URL Actions.md). Some off the wall SQL statement I made need next year? I got a list of those too (SQLX – Maximo SQL Statements). The lists are not project specific, but something I need to refer to on a regular basis.

    So where is all of this getting me?

    It's getting me to a point where I have a system, not a hack. Someone did a better job explaining this than I could. Over the next couple of weeks I'll have additional posts on how I've automated my three main tools by sharing some of my scripts and URL actions for Drafts, OmniFocus, and Evernote.



    Got any questions? Feel free to hit me up on Twitter at @MyGeekDaddy.


    1. Why not TaskPaper? The management tools for TaskPaper on iOS are limited as far as I can tell right now. The developer for TaskPaper dropped the iOS app and that left a gap in how I needed to get things done.  

    2. Listen to Merlin Mann's productivity talks with David Allen for a more in depth discussion on this. 

    3. I do look at Evernote as part of a larger review I do monthly. Look for a future post on this. 

    4. This includes syncing my Draft notes between iOS devices for processing on any device. 

    5. I know Alfred App is out there, but I just haven't had the time to add something new to my workflow… yet. 

    Running page of URL Actions

    This post will be duplicated as a running page as an archive of my key x-callback-url actions for various iOS apps. Each action has an install link or a text copy of the x-callback-url snippet.

    Drafts Actions

    Drafts

    paste_draft: This action will paste whatever text is in the current note into the clipboard. Install

    drafts://x-callback-url/create?text=[[clipboard]]
    

    URL Encode: This action will percent encode the current note.[1] Install

    drafts://x-callback-url/create?text={{[[draft]]}}
    

    Markdown Email: The Action will create an email, using the note as the basis for the message. The first line of the note will be the email’s subject and the rest of the note as the email’s body. The action will also process the note for any Markdown markups. This allows the Action to send email with italic or bold text. Install

    Dropbox

    Prepend Running File: This action will take the text in the note and prepend a file on Dropbox. Each note will include the date and time the note was pretended to the file. Note: This action requires an internet connection to work. Install

    Editorial

    Note to Uppercase: This is more of an example of the syntax used to call upon Editorial, trigger a workflow inside Editorial, and then return the text output back to a new note in Drafts. In this example the Action will open Editorial, run the UPPERCASE workflow that is saved in Editorial, and return the output to a new note in Drafts. If the UPPPERCASE workflow doesn’t exist the process will stop. Install

    editorial://?input=[[draft]]&command={{UPPERCASE}}&x-success={{drafts://x-callback-url/create?text=[[output]]}}
    

    Fantastical 2:

    Fantastical: This Action takes the first line of a note and parses that in Fantastical 2 as a new event. The Action then takes any remaining text in the Drafts note and adds it to the Notes section of the Fantastical event. Using a line like Remind me to will create a reminder instead. Install

    fantastical2://x-callback-url/parse/?sentence=[[line|1]]&notes=[[line|2..]]&add=1&x-source=Drafts&x-success={{drafts://}}&x-cancel={{drafts://}}
    

    OmniFocus

    New Task in OmniFocus: The Action will use the first line of a note to create the task description and then use the rest of the note as the task note. Because OmniFocus doesn’t support a full x-callback-url, the Action doesn’t return you back to Drafts. Install

    omnifocus:///add?name=[[title]]&note=[[body]]
    

    OmniFocus Mail Drop: The Email Action will use an OmniFocus maildrop address to send a note in the background to create a new OmniFocus task. Like the previous Action, it will use the first line of the note to create the email subject line, which ends up being the task description in OmniFocus. The rest of the note is used as the email body, which ends up being the task note. Install

    Note: This Action requires an internet connection and utilizes Agile Tortoise’s email account. Do not use this action for any sensitive information.

    TextTool:

    All actions listed in this section require the user to have TextTool installed on their iOS device.

    Encode Note: The Action will take the text of the note and run it through TextTool’s ‘Encode’ action. The encoded text is then returned to a new note in Drafts. Install

    texttool://x-callback-url/transform?text=[[draft]]&method=encode&x-success={{drafts://x-callback-url/create?text=[[output]]}}
    

    Decode Note: This Action will run the note through TextTool’s Decode action. After the text is processed it will return the decoded text to a new note in Drafts. Install

    texttool://x-callback-url/transform?text=[[draft]]&method=decode&x-success={{drafts://x-callback-url/create?text=[[output]]}}&x-cancel={{drafts://}}
    

    Outlook Regex: This is a very task specific Action, but does a good job showing nested actions using TextTool. The first part of the Action takes a distribution list from Outlook and strips out the email addresses to give just a list of names. From there it passes the text block of names to a second action to split the text block into individual lines. Install

    Decoded version to see regex in Action:

    texttool://x-callback-url/transform?text=[[draft]]&method=regex&search=(\W\<\w+\.\w+\@\w+\.\w+\>\;)|(\W\<\w+\@\w+\.\w+\>\;)|(\W\<\w+\@\w+\.\w+\>)|(\W\<\w+\.\w+\@\w+\.\w+\>)&replace=|&x-success={{drafts://x-callback-url/create?text=[[output]]&action=Texttool_Outlook_Split}}
    

    Encoded version as used in Drafts:

    texttool://x-callback-url/transform?text=[[draft]]&method=regex&search=%28%5CW%5C%3C%5Cw%2B%5C.%5Cw%2B%5C%40%5Cw%2B%5C.%5Cw%2B%5C%3E%5C%3B%29%7C%28%5CW%5C%3C%5Cw%2B%5C%40%5Cw%2B%5C.%5Cw%2B%5C%3E%5C%3B%29%7C%28%5CW%5C%3C%5Cw%2B%5C%40%5Cw%2B%5C.%5Cw%2B%5C%3E%29%7C%28%5CW%5C%3C%5Cw%2B%5C.%5Cw%2B%5C%40%5Cw%2B%5C.%5Cw%2B%5C%3E%29&replace=%7C&x-success={{drafts://x-callback-url/create?text=[[output]]&action=Texttool_Outlook_Split}}
    

    Split Outlook List: This is a second part of the Outlook Regex Action and splits the text block into new lines. Install

    texttool://x-callback-url/transform?text=[[draft]]&method=split&delimiter=%7C%20&x-success={{drafts://x-callback-url/create?text=[[output]]}}
    

    Launch Center Pro

    All actions listed in this section require the user to have either Launch Center Pro or Launch Center Pro for iPad installed on their iOS device.

    Communications Button: This action will creates a button in Launch Center Pro and gives you a series of options to contact someone – telephone, email, iMesage, etc. The action utilizes the list function in LCP.

    launch://?url=[list:Sofia|Call iPhone=tel:+628113453018|Call Home=tel:+62315027927|Call Office=tel:+62318431700,21409|Email=mailto:sofia%40gmail.com|iMessage=sms:sofia%40gmail.com|FaceTime=facetime://[email protected]|FaceTime Audio=facetime-audio://[email protected]]
    

    Search in Google Chrome: This action will give the use a prompt to enter the text they want to search on and then pass that text to Google Chrome as a search term.

    googlechrome://google.com/search?q=Tip%20for%20[prompt-num:Query]
    

    Reference

    A lot of the ideas for these actions came from the work of others. This is a running list of informative articles related to x-callback-url schemes.

    iOS Automation and Workflows with Drafts – Federico Viticci (@viticci) summary on using URL schemes with Drafts for iOS. Great primer on creating your own actions in Drafts.

    Automating iOS: A Comprehensive Guide to URL Schemes and Drafts Actions – Alex Guyot takes Federico’s previous article and gives a great background guide on chaining together multiple actions in Drafts.

    How the New Line Tag in Drafts 3.0.6 Can Improve Your Existing WorkflowsEric Pramono has quite a few articles on geekswithjuniors site. This post give a good explanation on using the [[line|n]] tag in Drafts.

    iOS URL Schemes – Another post by Eric at geekswithjuniors, this is an older post giving some background on iOS URL schemes, aka x-callback-url.



    Got any questions? Feel free to hit me up on Twitter at @MyGeekDaddy.


    1. Note: This is my preferred method over other methods listed here.  ↩

    Random Fantastical for Mac tip

    Random Tip: I love using Fantastical for my calendar events. But recently I was having a problem on my work Mac with Outlook starting by itself when my Mac first booted up. I searched and searched and finally found a fix via an answer on a Microsoft forum:

    Do you have Fantastical or another application set to run at startup that interacts with your mail or calendar of Outlook. That’ll cause it to start even if Outlook is not explicitly setup in the Login Items of your account.

    Hallelujah! Now my Mac doesn’t turn into a goobered mess when it boots because it’s trying to start Outlook and everything else at once.