Every so often someone asks whether there will be a version of BTZS Plotter for OS X. I can sympathize and understand where they are coming from but unfortunately the sad truth is that the development costs and time associated with such a project makes it just not financially feasible. The market for Plotter was never a large market even in its heyday but just as interest in film has tapered off over the years so has buying desktop oriented software.

The current version of Plotter was written 10+ years ago now. It was written specifically to bring Plotter to Windows since at that time, there was a version for the Mac. As such Plotter for Windows was written without any consideration of it being ported to other platforms. It is written using a software framework that down to its core, just isn’t suitable to porting. To “port” Plotter to other platforms at this point means starting from scratch and I mean really from scratch - going back to the BTZS book for a fresh start. There is virtually no code that can be shared – not even the code that reads and writes the file formats. It is simple just too Windows-centric.

As such I’d estimate that a complete re-write of Plotter to be somewhere between 1 and 2 man-years worth of effort. It is 10’s of thousands of lines of complex code, most of which hasn’t been touched for many, many years.

The good news is, Plotter for Windows runs just fine on OS X and you don’t even need to buy a copy of Windows or anything else to install it on OS X. Is it a native OS X application? Well no – but it runs and functions very well. The key to using this is an open source project called “Wine”, which is an emulation layer that allows Windows programs to be run on lots of platforms such as OS X and Linux.

Traditionally setting up Wine on OS X has been somewhat complicated for non-developers but that has changed now. Using a Wine package builder such as Wineskin, WineBottler, or Crossover makes this very easy. I just did it from scratch using Wineskin and including the time to download it took about 10 minutes from start to finish. In the end I had a Wine-Plotter application that I could just launch on OS X. It really is very easy. I just followed the excellent but short manual for Wineskin.

Here is a quick rundown of the process for installing Plotter on OS X from scratch:

  1. Download the Winery package to your Mac and launch it. If this is your first time of using Winery, you have to download a Wine Engine. I just used the latest available (WS9Wine1.7.0X)
  2. Select an Engine and Create a new Wrapper and give it a name – I called mine WinePlotter (a wrapper is a Mac App that you launch to run a Windows program)
    • Note: As part of the new package creation process you’ll see two notices about not having Mono and Gecko packages installed. You can just hit cancel for each as neither of these are needed by Plotter.
  3. Once the wrapper is created in your ~/Applications/Wineskin folder, open it like any other application. The first time it is run you’ll be presented with options. Click Install Software and point it at your WinPlotter.msi installer file. Once the installer finishes you’ll be ask to choose the .exe program to run when launched (it should be /Program Files/WinPlotter/Plotter.exe). Once Plotter is install, Quit the wrapper app as no other options should need to be set.
  4. To launch Plotter just open the finished wrapper app and Plotter will automatically launch.

From this point on you can use Plotter just like any other installed app. I know that not having Plotter as a native OS X application rubs some people the wrong way and I am sorry for that but given the constraints of time and development costs, this is the best option for those who want to use Plotter on their Mac at this point in time.

Postscript: A few of you have asked where to get Plotter from these days. Plotter as a product for sale has transitioned back to me from the View Camera Store. I’m working on making Plotter available as an online purchase. I’m now also looking into making a pre-packaged Wine version for Mac users. I’ll post more details when Plotter is available.

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

Flux and Mutability

The mutable notebook of David Jade