Multi-User Lightroom

My wife and I take a lot of photos and we’ve been searching for a system where we could combine and manage our various pictures. I had been using Adobe Lightroom to manage my photos and she had been using Apple’s Aperture. We wanted one system where we could access, catalog, manage, develop and print our photos. We decided to standardize on Lightroom, but Lightroom is currently single-user only. We needed to be able to access our Lightroom catalog from multiple computers and Lightroom’s SQLite-based database is not designed for that. So after some research, I put together the following system. It allows us to use one Lightroom catalog on multiple computers. The caveat is that only one of us can be running Lightroom at a time. Other than that, it solves our problem.

WARNING: This is a hack. While it works for us, I do not guarantee that this will not trash your Lightroom catalog. Make backups and proceed carefully.

SECOND WARNING: These directions and the script are not polished. This post assumes some technical savvy.

There are a couple parts to my solution. It requires a network share on a NAS and it requires a service like Dropbox, that syncs a set of files across multiple computers. Some NAS devices come with software that provides Dropbox-like functionality. The NAS I have, a Synology DS412+, has software, called CloudStation, which provides this functionality. Also, we’re a Apple Mac-based household. This solution should work for Windows as well, but you will have to customize the shell script.

In short, we store our photos on the NAS and we store the Lightroom catalog on the Dropbox folder. We invoke Lightroom using a shell script that ensures that only one person can run Lightroom at a time. The reason we put the Lightroom catalog in a Dropbox folder is for speed; the catalog and previews are stored locally.

Many people already store their photos on a NAS. If you are not currently doing so, there are several tutorials to help you migrate your photos, such as this one.

To begin, make sure you’re not running Lightroom. Locate the Lightroom catalog, which is usually stored in your Pictures folder. You’re looking for the ‘Lightroom 5 Catalog.lrcat’ and ‘Lightroom 5 Catalog Previews.lrdata’  files. Copy these to a folder in your Dropbox, and then rename the old ones so that Lightroom doesn’t try to use them in the future. When you next launch Lightroom, it will ask you for the catalog file; point it to the one in your Dropbox folder.

The ‘Lightroom 5 Catalog Previews.lrdata’ file is a cache of previews of your photos. It can be large, but can be regenerated at any time. I choose to not have Dropbox/CloudStation sync that across the various computers, and let each computer generate it when Lightroom is run. Dropbox and CloudStation both have selective sync functions that allow you to exclude files/folders from syncing; that’s how I do that.

Now you should have a normally working Lightroom installation, with your photos on the network share on the NAS and your catalog in the Dropbox folder. The last bit of the solution is to only run Lightroom through the use of the following shell script, which I’ll explain.

#!/bin/sh

USER="INSERTUSERNAMEHERE"
PASSWORD="INSERTPASSWORDHERE"
NAS="INSERTNASIPADDRESSHERE"
MOUNTDIR="/Volumes/home"

TIMEFILE="/Volumes/home/Lightroom/lightroom.lasttime"
LOCKDIR="/Volumes/home/Lightroom/lightroom.lockdir"

if [ ! -d "${MOUNTDIR}" ]; then
 mkdir "${MOUNTDIR}"
 mount_afp afp://${USER}:${PASSWORD}@${NAS}/home ${MOUNTDIR}
fi

# Want to delay at least N seconds since last instance was closed to
# allow for CloudStation propagation
if [ -f "${TIMEFILE}" ]; then

if test `find "${TIMEFILE}" -atime +15s`; then
 echo "ok"
 else
 osascript -e 'tell app "System Events" to display alert "Need to sleep, Lightroom will start momentarily"'
 sleep 15
 fi

fi
if mkdir "${LOCKDIR}"; then

echo "Locking succeeded" >&2
 open -W /Applications/Adobe\ Photoshop\ Lightroom\ 5.app
 touch "${TIMEFILE}"
 rmdir "${LOCKDIR}"

else

osascript -e 'tell app "System Events" to display alert "Someone else is currently using Lightroom"'
 echo "Lock failed - exit" >&2
 exit 1

fi

What the shell script does is as follows:

  1. It makes sure the network share containing the photos is mounted.
  2. On the network share, it looks for a time file that was created by a previous instance of running the shell script, and indicates the last time the script (and Lightroom) were run.
  3. If the file exists, it checks the time and makes sure it’s been at least 15 seconds since the last run. This is to allow Dropbox time to synchronize the catalog from any other computer. The 15 seconds is a guess on my part; you may want to make it longer.
  4. Once it’s been at least 15 seconds, the script attempts to create a lock directory on the network share. This only succeeds if the lock directory doesn’t already exist. If it exists, the script assumes that someone else is running Lightroom and displays an error message.
  5. One the lock directory is created, it launches Lightroom and then waits for Lightroom to close.
  6. Once Lightroom closes, it removes the lock directory and updates/creates the time file.

Things you have to customize in the script:

  • The USER, PASSWORD and NAS variables lines 3,4,5
  • The script assumes your network share is mounted at /Volumes/home and that there is a Lightroom directory there. This does not have to be where your photos are stored.

To run the script, I used Platypus to create a Mac application out of the shell script. I placed the resulting app, which I call ‘RunLightroom’, on the network share, and then on each computer I dragged that to the Dock, to make it easy to run.

Hopefully this helps someone else out. Family photo sharing/management is a huge opportunity that Adobe should probably own (for better or worse). This post only addresses part of the problem; another issue is access to your photos on all your devices. Synology has a solution for that and I’m working on integrating that with Lightroom. I’ll put up another post when/if I have that figured out.

Please let me know if you have suggestions for improving this post; this is just a first draft and these instructions are admittedly pretty rough.

Advertisements

Photo – Norwegian Boat Houses

Photo & Video Sharing by SmugMug

This past summer we vacationed in Scandinavia, visiting Norway, Sweden and Russia. This photo was taken as we travelled by ferry from Oslo to Balestrand, Norway.

Backup and Dropbox Strategy

The hard drive on my iMac is making a funny noise, which is a good excuse to review my current backup strategy. It’s fairly simple these days. All of my data is on a 3TB iMac fusion drive. That gets backed up 3 ways. It’s backed up to an Apple Time Capsule, which also serves as my main WiFi router. I also use CrashPlan to back up to their cloud service, CrashPlan Central. And as a third backup, I use CrashPlan to back up to a USB drive every couple of weeks. The USB drive is otherwise stored in a (hopefully) fireproof safe. This gives me the safety of an off-site backup as well as the speediness of two different on-site backups. I’ve had occasion to use the Time Capsule to recover some files, but I have not yet had to rely on any of the CrashPlan backups.

CrashPlan provides the software to do local backups for free; they make their money on CrashPlan Central. I signed up for the 4 year CrashPlan+ Family unlimited plan, because we have several computers to back up. When I first set up the CrashPlan cloud backup, I used their ‘seed service’, in which a hard drive is mailed to you, you use it to do a local backup, and then you mail the drive back to them. This is much faster than doing the initial backup entirely over the net.

These days, a discussion of backups wouldn’t be complete without talking about Dropbox. My wife and I share a Dropbox account. It’s a great way to share family-related information, and it’s automatically backed up. But we wanted some extra security on the files we share, so we encrypt our Dropbox account using BoxCryptor. BoxCryptor creates an encrypted volume on top of a Dropbox directory. This shows up on Windows as another drive; on Mac it shows up as a volume. It encrypts files on a per-file basis, instead of creating a monolithic encrypted filesystem. This allows DropBox to continue to sync on a file-by-file basis when something changes. BoxCryptor is free for individuals; the paid version has extra features.

One feature to consider is encryption of file names. It provides an extra level of security; if someone were able to look at your DropBox account, they’d only see a bunch of files with gibberish for file names. In the end, I decided against enabling that feature. We’re giving up a little bit of security (the file data itself is still encrypted). The advantage of not encrypting file names comes up in the case of recovering deleted files, should you have to do that. You’ll be able to locate the files to recover because the file names are still readable. That wouldn’t be possible with encrypted file names.

Yahoo Groups

I read with interest Marissa Mayer’s comments today at the Goldman Sachs Technology conference, specifically her mention of Yahoo Groups:

One of our strongholds has been Yahoo Groups, as it moves to the phone it opens up all kinds of possibilities. The phone is a much better place to do group communication.

My first startup was ONElist, which was renamed Yahoo Groups after we were acquired in August 2000. Over the past 12 plus years, I’ve watched as Yahoo did basically nothing with Groups. It’s still almost the same as when it was acquired. Yahoo has devoted only enough resources to keep it going all these years. In fact, if you try to use the site now, it often times out and is generally extremely sluggish. I don’t have current numbers, but I’ve been told that even with all the neglect, Groups still has over 100 million users. The group archives make up many petabytes of data. It is not a small service.

Email groups are great ways to communicate. As numerous people have told me over the years, Yahoo Groups have affected people’s lives in significant and profound ways. As my friends will attest, I’m at least as cynical as the next software engineer. But I think group communication is one of the most important aspects of the Internet and I truly believe that it has and continues to make the world a better, safer, more inclusive place. But Y! Groups has stagnated for 12 years.

Several months ago, I got fed up with the state of (neglect of) Groups and decided to start working on a next generation Groups service. It’s not ready yet, but it’s not too far out.

With all that, ever since Mayer took over as CEO, I’ve been watching for signs that she’d devote resources to Groups, and this is the first sign I’ve seen that they may be working on an update. They have a lot of challenges in doing so. With a service that hasn’t changed in 12 years, people have become accustomed to the interface and I believe there will be a lot of resistance from long time Groups users (which is the subject of an essay for another day). But I know that Groups can be so much more than what Y! Groups are right now. It’s only a matter of time. Whether Yahoo, or I, or someone else launches the next generation of groups, it will happen, and people will be better for it.

Book Review: The Centre Cannot Hold


I’ve been on safari in Africa twice; the first time was our honeymoon in 2011. We had such an amazing time that we decided our next trip would be another safari, and so we went again this past June. And we knew even before we returned, that it won’t be our last safari. I’ve posted some of the photos I took on those trips here on the blog and several adorn our house.

For Christmas, my in-laws got me The Centre Cannot Hold, a book by David Gulden, of black and white images taken in Africa of (mostly) animals. David’s goal was to take photos that no one else had been able to capture. This entailed using such devices as an infrared-triggered camera, and going to such lengths as using a cross-bow to mount a camera near an eagle’s nest. His effort was worth it. The images are stunning, and not just because of his MacGyver ways. The man clearly has a talent. The result is a great coffee-table book. And for this newbie photographer, the photos are an inspiration.

ONElist Office

Sam Rushing recently came across some old photos he took, including this one, which is a panorama of the old ONElist building in Redwood City. It was taken in February, 2000, which was after we merged with eGroups and before we were acquired by Yahoo (and became Yahoo Groups). The office was a converted warehouse and had about 50 people in it. This photo doesn’t show all the cubicles behind the photographer, nor does it show the offices underneath. During the whirlwind that was ONElist, to my lasting regret, I never took any photos, so I especially appreciate Sam’s rediscovery.

The cardboard cutout, btw, is Sarah Michelle Geller, during her Buffy The Vampire Days. I never knew the story behind why that cutout was in the office.

Stitched Panorama

Shuttle Endeavor Flyover

The Space Shuttle Endeavor did a flyover of the bay area this morning. I headed out to KPAO, the Palo Alto Airport, to see if I could get a good view. It was impressive as it passed overhead at 1500′.
Photo & Video Sharing by SmugMug

Tanzania Safari Report – Final Day

Lee suggested that we’d have time for a brief drive before our flight this morning. We jumped at the opportunity to do so, calling it our bonus drive, and we were immediately rewarded. Lee mentioned that he had heard some lion calls near our lodge in the night, so we went looking for them, and 10 minutes later came across a pair of lions mating. Out of respect for the delicate readers of this blog, this first photo is post-coitus. The male lion is walking away to find something to read while the female lion rolls on her back, pawing the air and says “Wait, can’t we talk about feelings now?”

The mating process takes around 3 days, during which they will have sex approximately every 20 minutes. I got tired just typing that sentence. Each, umm, event, only takes about 10 seconds. Feel free to insert your own jokes here. At the point of climax, both lions roar. It’s quite impressive. Especially when you’re just 20 feet away.

At the end of our bonus drive we came across a pair of jackals. They’re small, canine scavengers. These guys were definitely less shy than the other jackals we saw on the trip.

Thus ends our safari adventure. I hope that both of you reading this enjoyed it!

Tanzania Safari Report – Day 8 / Serengeti

As mentioned previously, we set out this morning to see hippos and crocs. The section of the Grumeti river where the hippos and crocs were located is a two hour drive from our camp, so we left the lodge early. On the way there, we came across three cheetah, a mother and her two one year old sons. We found them in a tree, and followed them for half an hour as they stalked some Thomson’s Gazelle. The gazelle caught wind of them (literally, the cheetah were upwind of them), and so the hunt was soon over, and we continued on our drive.

The rest of the drive was uneventful and we eventually came upon the crocs and hippos. This next photo is of a large pod of hippo that we watched for awhile. Hippo apparently taste pretty good (my go to question to our driver Lee when seeing any particular species of animal was “So, how do they taste?”), and so I have decided that hippos should be referred to from now on as ‘river pigs’. That’s a lot of bacon! Fun fact: apparently one cup of Hippo fat can feed 8 people.

We thought tonight’s drive was to be our final drive before our flight to Dar es Salaam tomorrow morning. It was fairly uneventful with the exception of seeing a large herd of elephant by another section of the Grumeti. We were hoping that we’d get some pictures of elephants frolicking in the river, but they did not cooperate.

Tanzania Safari Report – Day 7 / Serengeti

Things really kicked into gear today. Our wakeup call was at 5:15am for our 6am drive to the balloon. The balloon flight was outstanding, lasting a little more than an hour. We then had an extended game drive until around 12:30pm, and another game drive in the evening. But I’m getting ahead of myself.

Here’s a view from the balloon of some of the wildebeest. They look almost like ant trails when viewed from a few hundred feet AGL.

Photo & Video Sharing by SmugMug

After the balloon ride, we spent most of the morning with the wildebeest. These next two photos are of a few of them stampeding, as they are prone to do on a regular basis. It is rather impressive when you’re in the middle of it.

Everybody just wants their picture taken.

We ended the morning with 4 lions, sleeping under trees. The afternoon drive started with a cheetah. She had eaten recently and was just lounging the day away. Kind of like us, really. This was the first time in our safaris that we had been close to a cheetah. Pretty neat.

The rest of the afternoon game drive, in handy bullet point form:

  1. Elephants
  2. Elephants fighting under a tree with a lioness hanging out in the tree
  3. Storm clouds approaching, trying to outrun the storm
  4. A pride of 12 lions feasting on a recent wildebeest kill
  5. Making it back to the lodge without getting drenched
  6. Leveraging synergies and shifting paradigms

As referenced by bullet point #2, here’s a lion in a tree, trying to stay away from an angry Elephant. The photo’s not great, but by the time we got into position, the lion had moved further into the tree and you couldn’t see her at all.

Once again we had to outrun the evening rain showers. It did make for some great light, however.

Tomorrow: crocodiles and hippos!