I love my iPhone but I really don’t care for iTunes. I also use Exchange for email, contacts, and calendar so I a spoiled when it comes to online automatic syncing of my data. I have to use iTunes for getting my .MP3 files onto my iPhone and I have to use it for backing up my iPhone, but other than that I try to use it as little as possible. One thing that really bothers me however is that in order to get my pictures off on my iPhone I either have to plug in a USB cable and use iTunes or I have to pay $99/year for mobile me. For a phone that is so well connected to the Internet this seems really silly to me. Sure I could email them to myself or put them on Flckr but what I really want is to sync the full resolution .jpegs to my computer.

If you look in the iTunes App Store you’ll likely find a bunch of picture syncing apps. A lot of these will let you sync your pictures to your computer but most of them all have a very specific sequence that you have to go through each time, which usually goes something like this:

  1. Start the app on your iPhone
  2. The app will display a random HTTP address
  3. Then you go to your computer and type in the address in your web browser, which will then show your pictures
  4. Then you click and save each picture

There are a few other apps but they all seems to suffer from similar complications. Virtually none of them just push the pictures from your iPhone to your computer with a single click. Many of them also suffer in that they don’t send the full resolution pictures but instead send resized versions. However I’ve figured out something that can do this. It’s not quite automatic but it’s all done by using free apps and services.

First you’ll need an account on Pixelpipe.com. Pixelpipe is an interesting app/service. It lets you set up “pipes” that you can use to send pictures to online services such as blogs, file sharing, and picture sharing sites. To use Pixelpipe you set up “pipes” which tell Pixelpipe where to route the pictures that you send to it. You can send your pictures to Pixelpipe via email, SMS, or the free iPhone app called Pixelpipe. They also have plug-ins for many applications such as Lightroom and Picasa which allow you to directly send your pictures from within these applications.

The next step is that you’ll need an account at box.net. Box.net is one of many file sharing sites on the Internet. You can get a free account with box.net that will allow you to store up to 1GB of data. For transferring pictures, that should be plenty. If you plan to store your pictures online in your box.net account (which might be a good idea as a simple to use backup), then you can upgrade to any of their reasonably priced premium accounts.

Once you have your box.net account, you need to set up a “pipe” in Pixelpipe to route all pictures sent to it to your new box.net account. To do this, start up the Pixelpipe app and go to settings and add a new destination, using your box.net account information.

Now whenever you want to sync your pictures from your iPhone you simply start the Pixelpipe app, select the pictures, and upload them. You can optionally add a title, caption and keywords for each picture at this time as well.

Now this gets us almost there. Your pictures are now on your box.net account but still not on your computer. You could go to the box.net web site and view them but to download them, box.net will make you select each picture one at a time for download (at least with the free account). There’s a trick though that will allow you to drag/drop all of your pictures straight from box.net to any folder on your computer.

The trick is to open your box.net account as a WebDAV or Web Folder. This is something that Windows has supported since at least XP. Box.net however doesn’t officially support this but it seems to work for me, YMMV. (I’m also told that Macs support this as well, just search for WebDAV folders to learn how to set them up).

On Windows Vista, to open your box.net account as a Web Folder you first need to open your “Computer” folder. Then you want to right-click and choose “Add a Network Location.” Next you want to choose “Add a Custom Location” and type in https://box.net/dav and click to finish. When you open this new network location, simply use your box.net account information to log it. This Web Folder can then be opened in Explorer just like any other folder except that it is a remote folder.

Once the Web Folder is open, you can simple drag/drop your uploaded pictures to any folder on your computer. You could even set up automatic syncing via one of the many file syncing tools available since many of them support WebDAV folders as well.

While it’s not the most straightforward thing to set up, once it is set up I find it reliable and easy to use and best of all, free for something that really should have been free all along.

There's a new virtual desktop manager available over at CodePlex, Vista/XP Virtual Desktop Manager. Prior to finding this one I used AltDesk on XP for years and it worked pretty good. On Vista however, I never got it to work properly. It lost windows and crashed a lot. These days I have multiple monitors on my main desktop machine but I still find virtual desktop managers useful for having separate 'workspaces' when I am multitasking on several things at once. They are also super useful on my laptop when I travel. I can have an email/Internet workspace and a development workspace and switch back and forth as necessary.

This new one is by far the best one I have seen for Vista (or XP). Unlike AltDesk it has a very minimal UI, which I actually prefer. It allows up to 9 virtual desktops and has flexible hot-key assignment for all of the features. You can pull up the "switcher" which will show all of the virtual desktops at once and allows you to drag/drop windows between them. It supports 'sticky' applications which will show on all of the virtual desktops, which is really useful for things like the task manager, Vista's gadgets, etc... Another nice feature is that it supports live thumbnails on Vista as well as an Exposé-like application switcher.

Vista/XP Virtual Desktop Manger is open source and seems to be actively worked on. At this point it is labeled an RC candidate but so far it seems pretty stable to me.

First, a little context on why I wanted to do this in the first place. If you just want to get the source code then just scroll down to the "The source code".

A fair number of the things that make it on to my ToDo list are messages that I receive in Outlook. I've been using Outlook's flags to mark these items for follow up so that I could keep track of them. I use a different colored flag that denotes its own meaning as defined by me. This way I can flag an item using a action type (ToDo, Deferred, Waiting For, etc...). This has worked fairly well for me but once I had a large number of items flagged in Outlook (did I mention that I am a procrastinator?) it didn't really help me keep track of the things I needed to keep track of in any meaningful way. All I could even see was the complete list of flagged items but I couldn't break it down further into projects or context.

To overcome this limitation I've recently started managing my ToDo list outside of Outlook in a program called MyLifeOrganized (aka MLO) . MLO allows you to drag/drop Outlook items into MLO's task list. When you do this it creates a new MLO task using the subject of the dropped Outlook item for the task name. However MLO does something else really smart when you drag/drop an Outlook item. It not only put the text of the Outlook item into the notes, it will also create a hyperlink that will open up the original Outlook item when clicked. It does this by using Outlook's URL syntax which looks something like this:

Outlook:<entry_id> where <entry_id> is an Outlook Entry ID

Windows naturally understands this form of URLs. If you click on one it will cause Outlook to open the item referenced. This has allowed me to take Outlook items and create MLO items simply by dragging them to the MLO task list. In most cases this feature in MLO does exactly what I want, take an Outlook message that I need to follow up on and place it into my ToDo list. However sometimes this isn't exactly what I want. Sometimes I just want to place a link to Outlook items in the notes of an existing MLO item. Unfortunately MLO doesn't support this but there is a way to do it if you willing to do a little macro work in Outlook.

Update 6/4/2007: If you are using Office 2007 then you will probably need to enable the Outlook URL protocol handler so that hyperlinks to mail messages work.To do this requires editing the registry. You simple need to create these registry keys (substituting your installation paths of course):

    • outlook
      (Default) = URL:Outlook Folders
      URL Protocol=""
      • DefaultIcon
        (Default) = "C:\PROGRA~1\MICROS~2\OFFICE12\OUTLLIB.DLL,-9403"
      • shell
        • open
          • command
            (Default) = "C:\PROGRA~1\MICROS~2\OFFICE12\OUTLOOK.EXE" /select "%1"

The source code

Below is the source for a two VB macros that can be added to Outlook. These macros will loop over all of the currently selected messages, getting the subject and Outlook EntryID for each message. With these two pieces of information they then build a string of text with the message's subject and its Outlook URL, each on their own line. It extends this text string for each selected message and places the resulting text string on the clipboard. The end result is one block of text that contains the message subject followed by the Outlook URL for each selected message. This text can then be pasted into any document that understands hyperlinks. This includes the notes of MLO items as well as all of the other Microsoft Office applications. This macro will work with multiple items selected in the main Outlook window as well as from the opened window of a single Outlook message. To use it, simple invoke the CopyItemIDs() macro. You can bind this macro to a menu or toolbar button for easier access within Outlook.

Note: I should mention that if you are using Microsoft Exchange server, the message Entry ID can change on you and break any existing Outlook URLs. This unfortunately always happens if you move a message to another folder so if you plan on using this, only invoke this macro after you have moved the message to a new folder.

Update: There is just one more thing you must do before you run this script. You need to include a reference to FM20.dll, which is the Forms 2.0 library. This will allow you to use the DataObject to manipulate the clipboard. Thanks to 'Some Guy' who pointed this omission out.

Sub CopyItemIDs()
    Dim myOLApp As Application
    Dim myNameSpace As NameSpace
    Dim currentMessage As MailItem
    Dim ClipBoard As String
    Dim DataO As DataObject
    ' Housekeeping: set up the macro environment
    Set myOLApp = CreateObject("Outlook.Application")
    Set myNameSpace = myOLApp.GetNamespace("MAPI")
    ' Figure out if the active window is a list of messages or one message
    ' in its own window
    On Error GoTo QuitIfError    ' But if there's a problem, skip it
    Select Case myOLApp.ActiveWindow.Class
        ' The active window is a list of messages (folder); this means there
        ' might be several selected messages
        Case olExplorer
            ' build the clipboard string
            For Each currentMessage In myOLApp.ActiveExplorer.Selection
                ClipBoard = GetMsgDetails(currentMessage, ClipBoard)
        ' The active window is a message window, meaning there will only
        ' be one selected message (the one in this window)
        Case olInspector
            ' build the clipboard string
            ClipBoard = GetMsgDetails(myOLApp.ActiveInspector.CurrentItem, _
        ' can't handle any other kind of window; anything else will be ignored
    End Select
QuitIfError:       ' Come here if there was some kind of problem
    Set myOLApp = Nothing
    Set myNameSpace = Nothing
    Set currentMessage = Nothing

    Set DataO = New DataObject
    DataO.SetText ClipBoard
    Set DataO = Nothing

End Sub

Function GetMsgDetails(Item As MailItem, Details As String) As String

    If Details <> "" Then
        Details = Details + vbCrLf
    End If
    Details = Details + Item.Subject + vbCrLf
    Details = Details + "Outlook:" + Item.EntryID + vbCrLf

    GetMsgDetails = Details

End Function

Here’s a tip for tracking important email responses that you’re waiting for. Many email clients these days support flagging or labeling items as well as rules for processing items. I use Outlook as my email manager which has a robust set of rules and in the 2003 version, something called “search folders” which are saved searched that you can quickly access. Using Outlook I can set up folders to automatically sort all of my emails with a certain flag into one place for quick access. In my email system I use flags for managing the flow of “Next Actions” as defined in GTD (Getting Things Done by David Allen). Right now I have a fairly simple set of flags that I use, “Action”, “Deferred”, and “Waiting For”. Anything else that is not flagged is by default considered reference information (or completed actions if I have checked them off).

The “Action” and “Deferred” flags are pretty self-explanatory; it means that there is an action (or possible future action) that I need to perform; usually something that takes more time than a quick response. “Waiting For” is also fairly self-explanatory but its use is sometimes a little more complicated in practice.

In most cases I use it to simple flag something that I am waiting for, such as flagging an order shipment email or flagging something important that someone has told me they would follow up on. Where it gets more complicated is when I need to track a request that I am sending to someone. In those cases I use a special rule to flag a copy of the item as “Waiting For”. In Outlook I have a rule set up that checks for emails that I have Cc’s to myself. When Outlook’s rule engine finds those items it marks them as read and flags them as “Waiting For”. Now whenever I want to track a request to someone, I just Cc myself on the request and a reminder will automatically be generated and filled in my “Waiting For” folder.

I’ve recently discovered a name (and a tool) for something that most of us do but that I didn’t know had a name. It’s called Mind Mapping and if you’ve written on a whiteboard chances are you’ve already done it. Mind Mapping in its simplest form is just writing down your thoughts in a visual way, i.e. text connected with lines and more text. The real discovery for me however was not that it had a name but rather that there are tools out that facilitate creating mind maps on a computer. The product I found is called MindManager from MindJet and from what I can tell they seem to be the market leader and for good reason. They have a well designed and functional product equally on par with anything in Microsoft Office, which it can fully integrate with.

While MindManager can be used with any PC the real beauty of this program is that it is probably the best TabletPC program out there, far better than anything Microsoft has ever produced. When installed on a TabletPC it has a special Pen mode that takes full advantage of all the features of a TabletPC including gestures. Creating mind maps this way is very fast and intuitive. You can insert text, drawings, make connections, etc… all with simple strokes of the TabletPC’s pen.

So what does a MindManger mind map look like? Here’s a simple example (you can click on it for a larger view)



This is a very simple example of a mind map (there are many more in the MindJet.com online gallery) and in fact they can look just about anyway you like. There is an abundance of styles and images included that you can use to build mind maps. You can also link in live data from other sources (excel, outlook, databases, etc…). In addition to capturing text you can also insert hyperlinks to other maps or external sources.

Besides just capturing thoughts and ideas you can use mind maps for all sorts of things like taking notes during a meeting or creating process flow diagrams or even creating dashboard type diagrams that link to other sources of information.

After reading about it I was eager to try it but I waited until I had a good idea that I wanted to capture. I’ve always been unsatisfied with handwritten notes, both on paper and electronic especially when trying to capture complex thoughts. Usually I find that when I go back to them (if I can read them) I have a hard time recalling the thinking behind the notes. My notes just don’t seem as connected to my original thoughts or my original thought process. Some when my next big idea came along, I picked up Mind Manager and starting creating a mind map of it. I was amazed at how quickly I could capture thoughts and more importantly, relate them to one another. Rearranging my thoughts throughout the capture process was also easily done just by dragging things around. I found it far more effective at capturing and organizing my thoughts than paper. Running out of room for inserting new thoughts was just not an issue at all.

The real test though came days later after I had captured my original thought stream and went back to try and decipher it. I found that my mind map notes made more sense to me than the chicken scratch I normally write down. I could see the connections between my thoughts much better than with my old note taking style. The best thing however was how easy it was to extend the map with new thoughts. As I drilled down deeper into my original notes adding new layers was by far easier than any other system of note taking I have ever used. It made me an instant convert. I would highly recommend giving it a try.

MindManager is available for both the PC and Mac. You can download a free 21-day trial from MindJet.com. Be warned though that it is not cheap, retailing at $350 for the Pro version (I got my copy for $275 on Ebay though).

Flux and Mutability

The mutable notebook of David Jade