February, 2011


23
Feb 11

Sending Tasks to Omnifocus from Dropbox and Simplenote

I never miss an opportunity to learn more about Applescript and extending my applications in ways the developers never considered. I also work in text files for all of my notes.

Background

At home I’m on my Mac with Notational Velocity and Omnifocus close at hand. However, at work, I use a windows machine with Resophnotes. Resophnotes is a wonderful Simplenote client that is as close as you can get to Notational Velocity on Windows.
On the ipad, I primarily use Simplenote but I also love some of the new text editor apps that are available.
Lucky me! I have a lot of options for taking notes when away from my Mac. However, I have limited options for creating tasks when I’m on Windows. The only real option I have had is to email myself a task and wait for my Mac to process it. That’s fine, but I wanted something even more simple. That’s where Applescript comes in.

Power of Applescript

Omnifocus provides some great integration with Applescript. In fact, the most powerful method available is the “parse tasks with transport text” command. This little gem allows you to add tasks to Omnifocus with natural language date processing and tag recognition for projects, contexts and start/finish dates. That’s powerful!
I decided to create a Hazel script that watches my Dropbox notes folder for notes that begin with a “–” prefix which is similar to the notation used by the Omnifocus email processor. Once the note is identified, the title is used to create a task in Omnifocus. If the note is plaintext or markdown then the body of the note is added to the task as an Omnifocus note.

Dropbox Access

If the task note is not plain text, then the file is moved to my Dropbox public folder (it’s actually a sub folder of my public folder to distinguish from other public files). A link that points to the file is added to the Omnifocus task as a note. The great thing here is that now I can access the original file from Omnifocus on my iPad. Click the link and iOS Safari launches and opens the file.

Adding a task from Notational Velocity

Task from Notational Velocity

Task added to Dropbox folder

 

Adding a task file through Dropbox

Powerpoint File in Dropbox

 

Powerpoint Task in OF

 

There’s an additional benefit by having Simplenote sync with Dropbox. I can add tasks to Omnifocus from Resophnotes on Windows. No email required. I have not yet switched to the native Dropbox Simplenote syncing, which means I need to have a mac running with Notational Velocity open and syncing to a Dropbox folder.

At the end of the entire process the file is removed from my Dropbox notes folder so that my Notes are not cluttered with tasks. For good measure, there is also Growl notification when tasks are added.

Growl Notification

How it works

 

So the basic workflow goes something like this:

  1. Add a note with the title “–Check out the post on leancrew @Mac #saturday”
  2. The task is automatically added to Omnifocus back on my Mac with the context of “Mac” and a due date of saturday

 

Here’s another workflow

  1. Rename a pdf to “–Read the new iOS developer guidelines @work >iOS development #friday #next monday”
  2. Add the file to my Dropbox notes folder
  3. A new task is added to Omnifocus in the iOS development project, with a context of “Mac. It has a start date of friday and a due date of next monday.
  4. The task also gets a note that is a url link to the pdf in my public dropbox notes folder.

 

If you are interested in using this workflow, just download this Applescript and hook it up to a Hazel script that monitors your Dropbox notes folder.

 

References

I’ve read a lot of other posts to create this script and workflow. Nothing is original. Here are a lot of the references I used.

 

http://www.leancrew.com/all-this/2008/07/jott-and-omnifocus/

http://web.appstorm.net/roundups/data-management-roundups/the-ultimate-dropbox-toolkit-guide/

http://alan.petitepomme.net/blog/2008/08/eaglefiler-to-omnifocus-apples.html

http://www.macstories.net/tutorials/how-to-add-tasks-to-omnifocus-or-things-using-dropbox-and-plaintext/

http://lists.apple.com/archives/applescript-users/2005/May/msg00302.html

http://www.cerquant.com/omnifocus_scripts

http://rainer.4950.net/wordpress/blog/2010/12/07/creating-omnifocus-tasks-in-entourage-take-4/

http://judismith.wordpress.com/2009/10/04/productivity-with-omnifocus-and-devonthink-pro-2/

http://simplicityisbliss.com/2010/12/16/top-5-omnifocus-applescripts/

http://forums.omnigroup.com/showthread.php?t=18447&highlight=parse+tasks+transport+text&page=2

http://forums.omnigroup.com/showthread.php?t=4208

http://forums.omnigroup.com/showthread.php?t=7769&highlight=script+file+link&page=3

http://web.mac.com/robinfrancistrew/Site/OmniFocus_%26_DEVONthink.html

http://rainer.4950.net/wordpress/blog/2009/09/10/creating-omnifocus-tasks-from-entourage-take-3/

http://discussions.apple.com/thread.jspa?messageID=9801376

http://brettterpstra.com/launchbar-actions-for-url-encoding-and-decoding/

Related Posts on Macdrifter.com

Hazel Workflow for Ripping DVD’s

Emailing files to Dropbox

 


22
Feb 11

Let's all calm down

I think it’s worth waiting for an official response from Apple. I’m guessing this will turn out to be accurate.


21
Feb 11

Tagging in Pinboard

I am generally skeptical of file tagging systems. Tags are volatile and can be inconsistent. I much prefer the file naming systems described by Benjamin Brooks. However, some systems do not lend themselves to file naming as a method of organization.

I keep all of my bookmarks in Pinboard which has very good tagging support. One issue I have always had with tagging is that as projects begin new tags get created to track resources. Over time tags accumulate and as projects finish it can be dificult to find and remove old tags. I have settled on a system of tagging in Pinboard that I find quite useful and easy to maintain over time.

  • I prepend all tags with the “@” symbol. It’s a habit I acquired from tagging in Simplenote before there were native tags. I still use my own tags inside notes rather than depend on Simplenote tagging.
  • I keep a list of about 25 high level tags for bookmarks such as “@webdev” or “@politics“. Combinations of tags allow specificity in organizing bookmarks, such as “@iOS” and “@business” for links pertinent to being an independent developer.
  • Tags that are used to group links for a specific project are also prepended with an underscore character. For example “_@bookmarklet” allows me to collect links for an entire project but also distinguishes that they are part of a project collection. Later I can easily identify outdated tags for completed projects.

The import idea is not the specific nomenclature, but rather to distinguish tags that are transient. Tags have their place, but I avoid complexity wherever possible. File names live as long as the files. Tags may dissapear with a revision of the OS.


21
Feb 11

Apple as consumer advocate

I’d like to posit a thesis that I have rarely heard about Apple. Apple understands that their market potential lies in their consumer advocacy.

Apple is often criticized by media producers for their self serving decisions that often hurt pre-established business models. It started with the music industry crying foul over Apple’s insistence on $0.99 per track. Later, Apple was criticized about the lock down of the iOS platform and advertising system. The most recent row is around Apple’s new subscription model for iOS.

The Subscription Model

The dubiously credentialed pundits have taken a very personal affront to Apple’s model. To be clear, Apple’s model has four primary facets.

  1. If a publisher offers a subscription outside of their app, they must also offer subscriptions within the app and not kick a user out to a website to signup.
  2. In app subscription prices must be consistent with the prices outside the app.
  3. App users must opt-in to provide personal information to publishers.
  4. Apple receives 30% of the cost of a subscription made through in-app purchase.

Defender of the Consumer

Now you could argue that all of those rules are in Apple’s best interest. It forces publishers to use in-app purchases which Apple then gets a cut of. It also eases consumers minds and encourages them to pay for subscriptions through the App Store. I argue that Apple recognizes what is good for their customers is good for Apple. Here is how I view these:

  1. Customers are less likely to be scammed by an App publishers since all of their subscriptions must go through Apple. Customers are less likely to be kicked out to a spurious site that may look legitamate but whose only purpose is to steal credit card numbers.
  2. A customer can be sure that they are paying a consistent price. There is no need to shop around looking for the secret deal they only offer through Amazon.
  3. Consumer information is protected by default. No more is the actual sales product of publishers, the subscribers personal information. The product is once again the publishers product.
  4. Apple’s cut is not relevant to the consumer. They never see it. Rule #2 ensures that they are not paying an additional fee just to cover Apple’s share.

I could discuss many other ramifications of these rules on the publishers and on Apple, but my primary thesis is that Apple understands where their revenue is derived. Happy and secure customers spend a lot. Whether by purpose or incident, Apple has become the world’s largest consumer advocate. Their computers are devoid of “crap-ware” and “spy-ware” deigned to trick consumers and ultimately prove hostile toward the end user. Their consumer products do not require users to sacrifice privacy and incur monthly fees for life.

The Long Road

Apple has historically struggled with their role of inadvertent consumer advocate. Their first struggle with this role came when the music industry suddenly realized that the future had passed them by. They demanded immediate and complete control over digital music pricing. Apple famously said no. Steve Jobs correctly declared that consumers would not pay more than $0.99 per track. While he was at it, it also wrote an open letter to music publishers and declared that DRM was hurtful to consumers and unnecessary. Apple rightly realized that consumers would buy more music if it was cheap enough and easy to manage. Consequently they would  buy more iPods to play that music.

Next up was Apple’s bout with Hollywood. Apple wanted more digital movie downloads at consumer friendly prices. Hollywood, however, had learned what the music industry failed to realize. If Apple controls your market, Apple decides you business model. Hollywood applied leverage by creating Hulu and pushing movie rentals through Amazon. They tried to create competition for their business. Some networks even pulled their content from iTunes, like NBC did with most of their prime time “creations.” Apple gave more than they had with the music industry and we now have $20 digital movies in “HD” that are still not competitive with DVD quality. We did get more movie rentals, but at the same price point that cable networks charge for on-demand movies. Hardly a consumer win.

There was also a nice little exchange when Apple announced the switch to Intel processors. Steve Jobs was asked if Apple would be selling laptops with Intel logo emblazoned on them. Steve’s answer was unequivocal “NO.” This may not seem like consumer advocacy, but rather a reflection of Apple’s ego. Let’s be honest though. No consumer actually wants an Intel logo on their $2000 computer. The logo serves no purpose other than as an advertisement for Intel. What Apple customers get is a tasteful Apple logo that actually serves the purpose of telling you that your laptop in running.

More recently, Apple has been criticized for their App store policies. Some have construed these rules as anti-consumer with arguments that they reduce consumer choice. I think otherwise. In fact, the vast majority of users do not want choices but are content with safety. They want to feel comfortable actually using their electronics. They don’t want to be afraid that they may download a virus or feel like they were tricked into installing malware. The App store rules are there to protect the consumer. Apps are not allowed to steal data, access private information or track users without their knowledge. You CAN NOT download malware from the App store.

Finally, with the new subscription model, Apple is further protecting their customers. Protecting them from publishers that prey on consumer data. Publishers that focus less on a product for the consumer and more on the consumer as a product.


12
Feb 11

Information Management in the Information Age – Part 1

Context

This post is the first in a series focusing on managing and finding content and information. It provides a context for the remaining posts and a justification for a few systems that I will describe.

Bit Hoarding

Hoarding is built into our genes. We have an innate compulsion to acquire more of everything. 10,000 years ago this was a useful trait. Our ancestors would gather as much food and fresh water as they could carry. The more they could carry, the longer they could survive without leaving their adobe dwelling and exposing themselves to predators.

We’ve evolved. We’ve moved out of our adobe huts and into cubicles. The problem is, we are still hoarding. We hoard food and clothing. We hoard Tupperware and plastic bags. We also hoard information. I don’t think I am unique in this regard. I have the impression that the majority of computer users hoard bits in every crevice of their hard drive. Take a peek inside your documents folder. How many layers of folders constitute the backbone of your information “archive?”

This isn’t a condemnation. In fact, I suggest we celebrate that the information age has granted us this one small victory. We can fulfill our natural hoarding compulsion without taking up physical space. But to what end do we hoard data? My personal reasons fall into 4 categories.

Categories of Data

 

  1. Crucial information that I will need in the future. This includes financial documents like scans of W-2 forms, bank statements and investment summaries. Additionally, I include family photos and home videos as well as my movie and music collection in this category. I’ll explain why in a future post.
  2. Information that I may need again. This category includes receipts, warranties, utility bills, and the rest of my photo and video collection not in category #1.
  3. Information that I would never save in the physical world, but for various reasons I feel compelled to keep. This is a somewhat nonsensical category but never the less comprises a large amount of data. Examples of this category would be snippets of code that I find interesting or educational, color combinations that I find particularly pleasing or writing that is of high quality.
  4. Scratch information. This data is mostly temporary but serves some practical purpose. This category includes web addresses, code snippets, partial blog posts and meeting notes.

It’s taken considerable self reflection and value assessments to codify these categories. It is far too easy to simply keep things without thinking. Understanding these categories has huge value. For example, it makes backup planning and execution much more logical and efficient. I can now bucket my backup strategies.

  • Category 1: Always maintain a contemporaneous backup of every bit. Do not use syncing though. Files can be accidentally deleted on the master disk and I do not want to lose the same file in my backup. This backup category archives deletions. This category also does not depend on any cloud services for recovery.
  • Category 2: Regular and consistent backups are maintained. Typically once a week. These backups are always available with minimal effort.
  • Category 3: Backup the data periodically but do not waste too much disk space or time. A monthly backup schedule is fine. The backup can be off site for safe keeping but I do not need multiple backup copies available. Cloud syncing can suffice for this category.
  • Category 4: No backup necessary. Cloud services do most of the heavy lifting for this backup category by virtue of syncing rather than data preservation. If the cloud service shuts down, there is no real loss.
  • Do not take this as a detailed backup strategy but rather the high level plan for a backup system.

    What is important to understand though, is the value that can be derived from understanding your system, your motivations and your weaknesses.


    12
    Feb 11

    Effortless File Organization

    I’ve written about Hazel before. It is the more successful big brother of Apple’s Folder Actions. Here’s an example from Practically Efficient of integrating with Hazel for automatic file organization. What I particularly like about this example is the use of TextExpander to quickly rename files with the date and triggers needed for Hazel. This trick is being added to my list of every expanding time saving shortcuts.


    12
    Feb 11

    Omnigraffle for PDF forms

    I use Omnigraffle on a regular basis. I primarily use it as a tool to accompany Pages and Keynote. I use Omnigraffle to build custom graphics and icons for presentations and reports. I also recognize that I use a small fraction of it’s power, but Omnigraffle is an incredibly deep application with many uses. I love this example from Dr. Drang.


    10
    Feb 11

    Good Times

    Remember when everyone was naming their tablet PC’s “slates” because it was rumored that Apple was naming their yet announced tablet the “iSlate”. Yeah, that was fun. Now it’s a land slide of “Pads.”


    7
    Feb 11

    Simplenote everywhere (including Dropbox)

    I bought into the Simplenote world from the moment I read John Gruber rave about it. Since then I have relied heavily on the Simplenote platform for both personal and professional note taking and list making. The beauty of Simplenote lies in its unique restriction to plain text. I have been tempted by the luxuriousness that is Evernote. However, after a brief project to extract all of my notes from Evernote into a file structure that would outlive the hosted service, I realized that there was safety in simplicity. The extracted Evernote items lose most of there text indexing and formatting. So by relying screen captures as notes in Evernote, I was losing the exactness that typing an explicit note provides.

    By keeping my notes as simple text files I could have access to them indefinitely. That is exactly what Simplenote provides. There are also several ways to incorporate Simplnote text files into Dropbox to make my plaintext notes available to a variety of iPad text editors as well.

    Dropbox

    While Simplenote has recently provided a mechanism to sync with Dropbox, it is still early days and there are some serious shortcomings. The native Simplenote sync is excruciatingly slow. My first sync was a 90 minute process for <200 notes. Subsequent syncs are note instantaneous and often take 30 minutes before the note shows up in Dropbox. Second, deletions do not sync between the two services. Finally, renaming or editing a note creates duplicate notes in Dropbox.

    After considerable experimentation and emails to Simplenote support, I have given up (for now) on the native sync. I am returning to my home grown Simplenote-Dropbox sync. If you would like to build your own sync service, you will need a Mac running Notational Velocity or one of the many excellent forks. The Mac will also need to be active and connected to the internet 24/7.

    Caution

    There are also two serious cautions for this sync service.

    1) Do not setup this sync mechanism on more than one machine. If you do, you may end up with infinitely duplicated notes as each computer fights over which one modified the note last.

    2) Turn off the Simplenote native Dropbox syncing.

    Procedure

    The setup is rather simple. Create a folder in your Dropbox directory for your notes. I named mine “Notational Data.” Next, configure Notational Velocity to use this new Dropbox folder.

    NV_Dropbox_pref

    Now configure Notational Velocity to also sync with Simplenote

    NV_Simplenote

    Finally, the notes need to be stored as Plain Text Files for there to be any value in this setup. You should also confirm that note encryption is disabled so that other text editors can read and write to the Dropbox folder.

    NV_pref_Files

    Now Notational Velocity will do all of the work of syncing with Dropbox. Here are a few advantages and uses of this system.

    The syncing between Simplnote and Dropbox is nearly instantaneous. It the minimum time can be set in the Notational Velocity preference for Simplenote syncing. I personally think 5 minutes is enough.

    • Deleting a note from Simplenote also deletes the note from Dropbox.
    • Renaming a note in Simplenote also renames the note in Dropbox.
    • Deletions and changes in Dropbox are synced with Simplenote

    There are still some technical gaps. Simplenote tags are not synced with Dropbox or Notational Velocity. This is a known technical limitation. Simperium is investigating a solution. I also noticed a few notes were duplicated initially. After cleaning a few of these errors I have not had a problem since.

    I am very happy with this solution. I am still looking forward to an integrated solution from Simperium that would not require Notational Velocity to be running. However, for now this gives me ubiquitous access to my note taking system. I can access notes through a variety of iPad apps, Simplenote, Notational Velocity on the Mac, as well as directly from the find.


    4
    Feb 11

    The sound of not sucking

    Google search has been experiencing a slow slide into the realm of unmoderated WordPress comments. I’m sure Google finds a lot of relavent search results but in general the first 2-3 pages of results is garbage filled with link farm results and Adwords hits.

    I’ve recently been on a quest to replace Google search with something that actually works. I was getting pretty frustrated until I stumbled across duckduckgo.com. So far the only bad aspect of the service is the name. I mean seriously, how can you tell people about this search engine and not sound like a lunatic.

    This little unknown service has already surpassed the quality of Bing, which spends millions on their search each year. Maybe it’s a difference in marketing.

    The search results are uncluttered by spam. Just actual results that are useful. For example, searching for “Hot Sauce” produces the following results.

    hot_sauce_results

    I’m not going to waste bandwidth with showing the Google results. Importantly, the layout of the results are unobstructed by advertisements and detritus of various sorts. I also really like the option to choose results for different meanings of “Hot Sauce.”

    Beyond the quality of the results, there are a tremendous number of settings to make the experience exactly what you want.

    Security Settings

    You can turn on HTTPS encryption as well exclude your search terms from sharing with 3rd parties.

    duck_security

    Look and Feel

    There are plenty of settings to customize how your results are displayed. This makes for a much cleaner experience and really allows a user to focus on the results and not the search engine.

    duck_appearance

    Integration

    The service can be integrated directly in the IE and Firefox default search engine. Firefox has the added bonus of allowing for the SSL enabled search engine option. Unfortunately, the easiest way to integrate duckduckgo (see how terrible that name looks) into Safari is to install the plugin. Rather than just modifying the existing search field in Safari, it installs a completely new search bar. It’s big and wastes vertical space. I’m not a fan of the plugin but I do really like the results.

    duck_bar

    Go and explore for yourself. Don’t miss the simple shebang system for getting better results.


    4
    Feb 11

    Keep it coming

    SimplicityIsBliss has some very helpful info. It’s new to me but is now in my short list of feeds for useful Mac information. There is particularly heavy attention paid to Omnifocus but in a good way.

     


    2
    Feb 11

    Emailing files to Dropbox

    Dropbox (referral link) is the service that Mobile Me should have been. Apple really missed the mark with MobileMe especially in the file syncing arena. Innovation does not tolerate a vacuum or even a partial suck. Dropbox filled that void nicely and the ubiquitous integration with iOS apps has made it indispensable. That’s one reason I am a happy paying customer.

    If I pay for a service, it’s usually because I am deriving significant value from it. There are many tools I develop myself but some are so well done that I don’t want to waste my time trying to make a pale reflection. Dropbox is one of those services.

    I do, however, build my own tools around Dropbox. One of those tools is my send to Dropbox email rule. Since I am already running a Mac 24 hours a day, why not make the most of it. With Apple’s Mail always on and filtering messages, I get fewer spam message and my incoming messages get sorted into their appropriate folders automatically. I don’t need to see things like iTunes and Amazon receipts unless I want to. Another tool My Dropbox Mail rule is fairly simple. In Mail.app I set up a rule that processes messages sent to my task email address I talked about here.

    Mail_Rule_Dropbox

     

    If the message subject begins with “Dropbox:OF” (for Dropbox OmniFocus) then the attachment is processed by an Applescript that moves it to Dropbox.

    using terms from application “Mail”

    on perform mail action with messages theMessages for rule theRule

    tell application “Mail”

    repeat with oneMessage in theMessages

    set {mail attachment:theAttachments} to oneMessage

    repeat with oneAttachment in mail attachments of oneMessage

    save oneAttachment in (“Macintosh HD 2:Dropbox:Todo Files:”) & (name of oneAttachment)

    end repeat

    end repeat

    end tell

    end perform mail action with messages

    end using terms from

     

    That’s all there is to it. Any file I can email will be added to Dropbox. My work machine is locked down to prevent application installation. That means no Dropbox on Windows for me. That was my primary motivation for developing this little tool. It works so well, I also use it from my iPhone. It is a modest and simple version of Evernote. Take a quick picture of a whiteboard from a meeting and email it to my inbox on Dropbox. Boom! Seamless workflow from meeting to Inbox.

     

     


    1
    Feb 11

    Bridging the Windows gap with OmniFocus

    OmniFocus from Windows

    There’s no doubt that OmniFocus by the Omni Group is the quintessential mac app. It’s elegant, easy to use and simply makes work easier. It has nearly solved the digital ubiquitous capture problem. It’s an iPhone app, it’s an iPad app, it’s desktop app, it’s a whipped topping. Unfortunately it is not a windows app (yet).I spend most of my work hours on a Windows machine. I have developed a couple of rountines that allow me to integrate OmniFocus with my workflow on Windows. An easy way to add tasks to OmniFocus is by way of email. I’ll briefly describe the hack and subsequently tell you that it is no longer needed.

    Tasks by email
    This is really just a modification of the excellent workflow described by Shawn Blanc. I’ve made some changes that make it a little more accurate and contemporaneous. All of this requires a mac at home running full time. That’s not a problem for me since I already had my mac running as a server for several reasons. Maybe I’ll write some posts about those other users. In OmniFocus for Mac, turn on the mail rule in the preferences

    OF_Prefs

    Head over to Apple’s Mail.app and look at the newly added mail rule. I added an extra trigger that looks for mail to a special gmail address.I actually signed up for another email account that was prefixed with “qqq” so that it’s easy to remember and type and is likely to be unique in my address book. Gmail also allows you to place a dot in the middle of your gmail address and still receive the mail. For example, “myemailaddress@gmail.com” also works as “my.email.adress@gmail.com” for receiving messages. Give it a try. I use the “qqq” prefix because it’s easy to type to get an auto-suggestion in Outlook. I also added a rule that only accepts tasks from my preferred list of email addresses (Note that you can set that in the OmniFocus settings as well). Namely, my personal and work email accounts. This helps, in case the spammers get smart enough to start sending OmniFocus enabled emails. How aweful would it be to get spam tasks. The horror!

    OF_Mail_Rule.png

     

    Adding a task from Outlook on Windows is simple. Fire up Outlook and send an email to your special address like this:

    OF_Outlook

    Now we have a precise rule that adds tasks to OmniFocus, except we have to wait for OmniFocus Mac to sync to the cloud before that task is available everywhere else. I wasn’t happy with waiting. I decided to modify the Applescript that the Mail.app rule uses. I added a couple of lines to force OmniFocus to initiate a sync everytime it receives a taks from Mail.app.

    tell application “OmniFocus”

    synchronize default document

    end tell

    Everything is working well. So why did I abandon this workflow? Spootnik!

    Spootnik Sync
    I first discovered Spootnik when I was looking for sync server for OmniFocus on iOS. This was before Omni Group offered their terrific and free sync service. Spootnik is much more than a sync server though. The primary reason I continue to pay the $3 per month for Spootnik is for the fantastic web interface. I can now access my task list from any browser. Specifically IE and Firefox from my work computer. I can review, check-off and add tasks from the web interface. It’s a pretty full featured product. The only things you can not do is add due times to tasks or move tasks to another project. It is primarily intended as a simple web front end to your tasks in OmniFocus. It accomplishes that very well.Spootnik also offers integration with Bascamp from 37Signals. I’m not a Basecamp user so I can not describe the integration or the quality of the results. Based on the sync and web services from Spootnik, I’d bet it is a good implementation of Basecamp.