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.


Here’s a quick tip that I recently ran across. Maybe it’s old news but I haven’t seen it before.

Sometimes you want to pause or sleep a few seconds in a command/batch script. By default Windows doesn’t have any form of a “sleep” command installed that you can use in script files. Sure there’s versions of sleep.exe or similar programs that you can install but there’s another utility that’s already installed by default that you can use*. It’s called “choice” and it’s normally used to prompt a user to make a choice between several options. The trick is, it has a default choice timeout that can be set in seconds.

So here’s how to use choice.exe to pause or sleep for 10 seconds in a command script or batch file:

choice /T:10 /D N /N > Nul

Here we’re telling choice.exe to select the default choice, set by /D, in 10 seconds as set by the /T option. The /N and redirection to Nul just keeps the console output clean. I’ve tried with with fairly large timeouts and it seems to work for me. The upper limit appears to be 9999 seconds, which is roughly 2.75 hours.

btw, another common way that I’ve seen used to pause or sleep in a batch file is to use “ping” to repeatedly ping an IP with a timeout value but this method seems much cleaner to me.

* Note: Unfortunately, choice.exe isn’t available by default on Windows XP but it is on Windows Server 2003, Vista, and presumably all later versions of Windows.


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.


With Windows Vista Microsoft has changed where user account profile and program data gets stored. Instead of storing all profile data under "c:\Documents and Settings\" as they did with Windows XP, things are now split between "c:\Users\" and "c:\ProgramData\" (on a standard Vista installation). In order for older programs that hard-coded these directories names (instead of using the proper API to find them) will continue work, Microsoft has used features of the NTFS file system, specially junction points and symbolic links, to create virtual folders that look like the older locations but in reality point to the new locations. This virtualization scheme is pretty complex and for the most part hidden from regular standard users, but as a programmer and system administrator it is sometimes handy to know how these folders have been constructed.

I have created this diagram that maps out these junction points and symbolic links to their physical directories. I have also include information on the virtualized folders that get used when programs attempt to store data in 'c:\Program Files\'  or 'c:\Windows\'.

 

Vista System Volume

Click to download this diagram as a PDF file


After hemming and hawing for quite a while I decided to dive into the deep end and make the transition to Windows Vista. The tipping point came with a new gift, a tiny mobile computer called an OQO model 02. It came preloaded with Vista Ultimate and it worked so well even on the lower-powered OQO that I decided that for the new development machine I was going to build, I would try Vista as my primary OS.

So far the transition, while not completely painless, has been remarkable smooth. Sure I've had a few unproductive moments (aka system crashes) but these have all been related to drivers, mainly the display drivers for the new NVidia GeForce 8800 GTS card I put in the machine. I should mention up front that I don't play graphic intensive games so I'm not really pushing the display card to it's limits and thus probably not stressing the driver or card that much. The 8800 is complete overkill for what I need but I also wanted a DX10 card so that I could experience the full Vista/WPF experience. Plus I wanted room to grow as I will probably never trade-up the card for the life of this machine. This whole experience reminds me of the transition from Windows 2000 to Windows XP but it's a bit less painful than that actually.

Along the way I've learned some tips, which I thought I would share here:

Monitor color calibration in Vista

The color management system has changed in Vista however you can still use the older .ICM format color profiles. Unfortunately, it seems that Vista still cannot properly load custom LUT tables into video cards from the ICM profiles; you still need to use a profile loader to set the custom profile for your Video card. Furthermore, there still seems the be the restriction that you cannot load separate color profiles in a multi-monitor setup unless you are using separate video cards as well (i.e. no color profiling for dual-output video cards). This really amazes considering that Macs have had this for something like a decade but what's worse is that there seems to be a bug in Vista that will cause it to reset the gamut table for the video cards shortly after the profile loader sets it at startup. I'm sure this depends on loading order but that's not something that can be easily worked around. My solution was to use the new task schedule as set up a task to launch my profile loader about 1 minute after the login event. This way, shortly after logging in and after Vista has reset my video card, the profile loader can load it again properly. Until Microsoft fixes Vista, this works pretty well.

Virtual CDROM/DVD drive

Every now and then I need to mount an .ISO or .IMG file from a CD or DVD drive, usually for software installation. Vista of course knows nothing about how to do this. There are however several free ISO/IMG loaders that allow you to create virtual CDROM drives. I've used one for the last few years but when I transitioned to Vista I had to search out a new one that would work properly. Virtual CloneDrive is the one I settled on. It's easy to use and works very well and requires a minimum of stuff to be installed. It supports multiple virtual drives and best of all, it's free.

Start++

Another thing that I installed which has become indispensable is a small utility called Start++. If you've ever used the older version of Windows Desktop Search on Windows XP, you might have been aware that you could easily create shortcuts or macro commands that could be launched from the search toolbar. Start++ brings that capability to the search feature in Vista. But it goes further in that it has even richer macro scripting and these macros also work at the command prompt as well. Down the road the author is promising an API where you will be able to create plug-ins for even richer commands.

I use Start++ to set up commands to quickly search Google, or EventId.net. I've also used it to set up shortcuts for quickly launching the remote desktop client and connecting to a specific machine or opening network folders that I use frequently. It has several built-in commands but by far the most useful one is sudo, for launching a program with elevated privileges (UAC will still prompt you though). I can't recommend Start++ enough. It's so useful that I never open the start menu's run command anymore, I just hit the "Windows" key and type in a command to run the program I need.

Indexing network folders with Desktop Search

I love Windows Desktop Search. I've been using it on Windows for years (even in its earlier incarnation as the older index service, which Desktop Search has evolved from and despite Google complaints, has been a part of Windows since the early days of Windows NT). Searching is something that I firmly believe should be a core part of the OS, not an add-on. There are many things that can be accomplished once indexing and searching are services of the OS and Vista is a great example of this. Searching feels natural, not like something tacked on. All applications can share a common and universal API. Microsoft has given Vista a very smart architecture for indexing and searching with its iFilters, property handlers, protocol handlers, and store providers. But one of the things that is missing out of the box is the ability to index remote file locations. This is especially important if you share documents or media files from a network location. Luckily Microsoft has release an add-on for Vista's indexing service that allows you to specify network folders to index. Simply install it and you will have the option to index network locations. There is also an add-on to index your Internet Explorer browser history as well, but I have not tried it yet.

 

That's it for now. I'll blog more about my experiences with Vista and any tips/workarounds that I stumble across.


Flux and Mutability

The mutable notebook of David Jade