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?
@mygeekdaddy is it work the $10? What justifies the purchase from your perspective?
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.
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. ↩
And yes… knowing which day a new comic comes out is important. ↩
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.
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.
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::
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:
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:
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.
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.
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. 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
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.
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.
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.
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.
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.
On your iPad, click on Settings -> Safari and turn on the ‘Show Favorites Bar’ setting. ↩
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:
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.
That's it, I've had it. I've declared GTD bankruptcy and I'm starting over.
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
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.
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
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.
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:
Open the web page in Safari and highlight/copy the text.
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.
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. ↩
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.
paste_draft: This action will paste whatever text is in the current note into the clipboard. Install
URL Encode: This action will percent encode the current note.Install
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
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
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
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
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 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.
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
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
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.
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.