What is up with Mail.app and Exchange?

Fired up Mail.app on my work laptop today for the first time in a while.

Outlook 2011, OWA (the Outlook Web interface) and my iPhone all show the same state of my inbox, with a single message in it.

Mail.app shows two messages – the one that the other guys show and one that I filed many hours ago.

Things I tried (all of which failed):

  1. Telling Mail.app to resynchronize
  2. Telling Mail.app to rebuild the mailbox
  3. Restarting Mail.app
  4. Deleting my Exchange account and adding it back (and the rebuilding the mailbox for good measure)
  5. Quitting Mail.app, moving my ~/Library/Mail folder to somewhere else, Start Mail.app, go through the wizard to see up my Exchange account all over again.

Nope. Still shows those blasted two messages. The last one is rather amazing to me. If I moved the folder out of the way, that seems to me like it would be pretty much starting from scratch. If that didn’t work, I can only guess that either the OS is doing some caching that I don’t know about or the message is still on the server and Mail.app is just interpreting the server state didn’t from all the others. Strange.

It still amazes me how much trouble we all have with computers with pretty basic stuff like email, calendars, and addressbooks, and getting it all to sync. I hate crap like this, because it breaks the trust that I have in computers to do the simple stuff for me. But then if I can’t trust it, I don’t know, I might as well go back to pen and paper. Imagine how much time we could free up as a culture if we didn’t have to deal with Exchange, IMAP, ActiveSync, SyncServices, and all of that other crap that sounds nice but then fails in strange ways.

An unnecessary AppleScript to convert an OmniFocus task into a project

I hacked this up and then discovered via a tweet from Ken Case of the OmniGroup that it’s completely unnecessary, because you can convert a task into a project in OmniFocus simply by using the outlining outdent shortcut of Command-[. I thought I’d post it anyway, in case anyone finds it to be a useful example of scripting OmniFocus (which I found somewhat hard to get started with) and also because I feel bad about wasting time on writing this thing and publishing it somewhere kind of sort of justifies the effort. 🙂

Using TextExpander to expand a sequence of OmniFocus tasks: A failed experiment

I recently got turned on to TextExpander by the Mac Power Users podcast.

One of my ideas was to use snippets in OmniFocus to create certain repetitive multi-action sequences. For example, when a project involves emailing someone and then waiting for a reply, it would be nice to type a short abbreviation and then enter a fill-in for the name of the person and then have TextExpander create two actions in OmniFocus; one called “Email ” with a context of “Online” followed by another called “Waiting for reply from ” with a context of “Waiting”. I theorized this should be doable because TextExpander lets you insert key presses like Tab and Enter into snippets.

Well, it didn’t work for me as expected. Strangely, it works with the first action; I get the title and context that I want. For the second action, however, I cannot get it to set the context. No matter how many tabs I insert into my snippet expansion, any text that I try to make it put in the context field of the second task seems to go in the title instead. Strange.

Here is the snippet:

If you get it to work or have any insights, please let me know…

OS X Lion: Restore windows when quitting and re-opening apps

I just upgraded my work laptop to Lion recently.

After the reversed scrolling behavior, the next big annoyance was that when I launch apps they open with all of the documents that were open when I quit them. This was particularly noticeable and annoying with Preview.app and Microsoft Word, because I typically open these to quickly look at something and then I quit them.

If you’re wondering how to turn this behavior off, uncheck the box shown below in System Preferences | General | Restore windows when quitting and re-opening apps:

Append to nvALT journal – Alfred.app extension for nvALT

I whipped up a quick little extension for Alfred that lets me very quickly jot down time-stamped text. The hope is that if I make it ridiculously easy to log what I’m doing and when, then maybe I can have better records of what I’m doing and it will be easier for me to switch back to task after interruptions. I can also look at where I’m spending my time.

I have this extension mapped to the keyword “nj” (for “nvALT Journal”). I activate Alfred and type “nj <text>” and the extension automatically opens up nvALT and makes sure that there’s a note with the current date in the form “YYYY-mm-dd” and then appends my text to the end of the note with a 24 hour timestamp in front of it. It then switches back to the application that I was previously in so I can go immediately back to whatever I was doing.

Prerequisites

Download

GitHub

OmniFocus extension for PopClip

I just hacked together an OmniFocus extension for PopClip

The extension creates a new task with the selected task in the OmniFocus quick entry window. Just a tiny bit of AppleScript.

Installation

Unpack into ~/Library/Application Support/PopClip/Extensions/OmniFocus.popclipext and then open the extension by double-clicking in Finder or using the open command.

PopClip resources

PyOmniFocus

A while back, I mentioned here and here that OmniFocus maintains some kind of cache of your data in a SQLite database.

I just hacked together a quick little prototype Python module for reading OmniFocus data:

https://github.com/msabramo/PyOmniFocus

Please feel free to fork it and send pull requests! Or file bugs. Or send ideas for improvements.

This could be used as part of a larger solution to pull all the data out of OmniFocus and publish it as some consumable format for the web (e.g.: XML, JSON, HTML, etc.). Or to have an OmniFocus CLI, which is what I’m most interested in.