I have a problem: I’ve put all my photos I’ve taken the past ten years into Lightroom. To ensure that I didn’t miss any, I’ve put in all from my server, all from my backups etc etc etc. In short: duplicate galore. Now, I’ve sorted by filename and removed duplicates. I’ve sorted by capture time and removed duplicates. That made me go from 88k to 74k. But I still have duplicates. They have different times because some were posted in my galleries. They have different sizes because some were thumbnails. They have different names because some were exported and sent via mail. And some are more odd, or perhaps a combination of them all. But in 74k photos, finding duplicates and deciding which one to keep is hard!

I have made a solution: a little Python script that will go through the Lightroom database, generate a 9x9 thumbnail of the photo, and compare it to all other photos. It takes a couple of hours to run on my 74k photos, helped me clean out 2k duplicates with only two false positives. That’s not bad!

What it does is that it sets the label with a string representing the thumbnail, and then you sort your grid view by label and voila, you’re good to go. Since it goes for the raw files, it will find duplicates even if they have been corrected or worked on afterwards:

Another example is that if you’ve changed the colours a bit around, it will still find it:

So that’s all very nice. :-) Here’s the source code, under BSD license. Put it in your Lightroom directory together with Lightroom.lrdata. And oh, btw, if it blows up anything at all, do tell me, but don’t hold me responsible. This hasn’t been tested on much. But if you read the code, I think you’ll find it can do very limited harm

Challenges ahead:

  • RAW files not supported yet
  • Doesn’t work too well on the different size problem, must find a better solution
  • Faster run times?

Hope you can use it as well as it helped me


I’m making OSC controllers for the iPhone, and I just sat down to check out the competition. Some projects, like TouchOSC and OSCemote are for pay. However, they are both out-competed on features and looks by Mrmr by Eric Redlinger. His version is soo much closer to what I have in mind, implements all the features by the two others and is free. That’s a mighty good package you have there, Eric.

Status on my week is that I’m not to fond of doing the web-bit, so I’m not giving myself any exposure either. The functionality is coming nicely together for the apps, and I’m starting to get a couple of beta-testers, but I’ll probably spend some time finding a couple more. Right now I really need a graphics artist and someone who enjoys doing CSS ;-)


Jay, revived a project from back in April (Lighting Matrix for Max) from back when the iPhone SDK was NDA and only beta #3 was out. Well, for my first day of serious iPhone dev, I revived it, made it run with the current version, ripped out the Max/MSP part and inserted OSC instead. Good fun :-)


For those of you who attended my bachelor party, be sure to read this article from Eksta Bladet


Does your console log look much like

Oct  8 22:23:56 MyComputer com.apple.launchd[210] (com.company.app.task): Throttling respawn: Will start in 10 seconds
Oct  8 22:24:02 MyComputer com.apple.launchd[1] (com.company.app.task)[39664]): posix_spawnp("/Library/Vendor/Folder/task", ...): No such file or directory
Oct  8 22:24:02 MyComputer com.apple.launchd[1] (com.company.app.task)[39664]): Exited with exit code: 1
Oct  8 22:24:02 Halloumi com.apple.launchd[1] (com.company.app.task): Throttling respawn: Will start in 10 seconds

then chances are you’ve installed software and deleted it again. We all do from time to time, some more frequent than other. This can be quite annoying when debugging a problem, as well as fill up space and drown more important messages. launchd is the cron of OS X, but you won’t find /etc/launchd.conf. Instead, look in /Library/LaunchAgents and ~/Library/LaunchAgents and you’ll find the ones that started the problem