Uploading to Flickr on Ubuntu: the options aren’t amazing

2/24/11 UPDATE: The recent release of Frogr 0.4 makes this post obsolete. It's the Flickr uploader for Ubuntu I've been waiting for. It does everything I was looking for, and more-- I highly encourage anyone looking for a Flickr solution on Ubuntu to go download it.

In April, I switched to Ubuntu for my main (non-work) machine. One of the major hurdles in doing so was figuring out what to do about Flickr. I import, edit, and upload 200-ish photos a week, and I need a piece of software that lets me:

  1. Change the title
  2. Freely add tags
  3. Add a description
  4. Add the image to sets

Long story short, none of the Linux-native software I was able to get working (on 64-bit Jaunty or Karmic, or 32-bit Lucid) made the cut. Fortunately, the official Windows Flickr Uploadr (v. 3.2.1) installed flawlessly on Wine (v. 1.1.31)... but only on Jaunty and Karmic. On Lucid, it installs fine but throws an XULRunner error, "Couldn't load XPCom", that I haven't been able to get around.

Largely because of this issue, I'm hesitant to upgrade my Karmic machine to Lucid. Solid Flickr uploading software is a must, and in Karmic, the Windows Uploadr works like a dream. On my work Mac, canceling an upload in Flickr Uploadr (intentionally, or through losing the wireless connection) not-infrequently meant losing all the work I'd done on the remaining photos, but the Windows version on Wine consistently saves data, even when you shut it down in the middle of an upload, or lose connectivity.

If you're running Lucid, and the official Flickr Uploadr isn't an option, here's a comparison and description of the other software I tried. My recommendation on Lucid would have to be jUploadr-- it's a bit annoying to use, it has a number of shortcomings (see below), but the features are there and it won't crash your machine.

Titles Tags Description Sets Permissions
F-Spot No Annoyingly Yes* No Yes
Shotwell No Yes No No Yes
jUploadr Yes Yes Yes Yes Yes
Postr Yes Yes Yes Yes Yes


I initially used F-Spot for importing images and automatically organizing them into date-based folders, like I used to do in Bridge CS4. Annoyingly, even though Ubuntu offers to import the photos using F-Spot when you attach your card reader, it'll only do the date-based organization if you start the import from within F-Spot itself. I've switched to Shotwell (and so will Ubuntu, in 10.10) and been much happier with it.

F-Spot really falls short on the Flickr uploading front (Photo > Export to > Flickr). A bit of Googling appears to have confirmed my suspicion that you can't rename photos in F-Spot-- not to mention giving the photos new titles specifically for the upload. The tags you assign in F-Spot carry over when you upload the image, but you have to pre-populate the F-Spot database with the tags. I've got far too many tags for that to be plausible; additionally, the tags are only saved within F-Spot, so if you switch software, you lose your tags. You can add a description for Flickr in the "Comment" field (at the bottom in the "Edit Image" view), and you can fiddle with the privacy settings, but there's no way to identify the content type or add the photo to a set.


As a photo organizer, Shotwell is a step up from F-Spot. Being able to assign comma-separated tags is a major improvement over pre-populating a database. Other than that, Shotwell suffers from all the same Flickr uploading shortcomings as F-Spot. No assigning titles (nor renaming the photo within Shotwell), descriptions, or sets; permissions are limited to visibility.

The worst part is, on my netbook running Lucid (10.04), Shotwell crashes as soon as I try to upload anything.


Of all the Linux-friendly software I've tried, jUploadr has one of the best sets of features. It meets all my requirements, and then some (it has a nice option for adding geo data).

The UI, though, drives me crazy. It distorts the preview of the images. I hate having to right-click on an image to get the metadata options to show up-- and they do so in another window. And if it crashes, unlike the official Flickr Uploadr it doesn't try to save your data. Worse, if you drop a group of photos in there, it uploads them backwards-- the last one you put in is the first one that gets uploaded, which will mess up the chronology of your photostream if you don't plan ahead and carefully drop your photos in there, one-by-one, in reverse chronological order. No sorting options or re-arranging available. It also doesn't seem to always respect the metadata (available with some cameras) that indicates whether your photo was taken in portrait or landscape mode, so it won't show the photos rotated in the preview. If you try to fix them yourself with the jUploadr rotate button, the upload will get screwed up as Flickr rotates them one more time. So just tilt your head while you're adding tags.

Postr (Flickr Uploader), 0.12.3-1ubuntu2/0.12.4-2

Postr, the GNOME Flickr uploadr, might just be the perfect solution... if I could get it to work. The integration with the GNOME desktop is convenient, it meets all my criteria, but on my laptop running Karmic (9.10), shortly after I add an image and before I can do anything with it, I get flooded with "User timeout caused connection failure" messages that at times completely freeze up my whole system. It looks like it's not the most common problem (Bugzilla still lists it as unconfirmed), so perhaps others will have better luck.

I managed to get it to work, briefly, on Lucid. One beautiful afternoon I was able to upload 11 photos. The experience could've been better-- when you're doing a multi-photo batch, it does tell you what photo it's on, but not when you're uploading a single photo there's no way to tell if it's frozen or actually uploading.

Unfortunately, the next time I tried to use Postr, I was flooded with error messages-- different ones, about not being able to contact the host (no other programs were having connectivity issues), another message about a timeout. Often the error boxes would pop up without any text in them. More than once, it completely locked up my system and I had to do a hard reboot. Uninstalling, reinstalling, re-authenticating, nothing helped.


From rooted Evo 4G to Unrevoked Forever + Froyo

Thanks to a clever Sprint employee who secretly stockpiled the coveted phone for new customers, I've had an Evo 4G since the day after it was released. Despite foolishly accepting the first OTA upgrade, I was still able to use the original Unrevoked to gain enough root access to get android-wifi-tether working (thanks to this XDA thread), which has been fantastic while traveling.

It's been over two months, and the release of Froyo and Unrevoked Forever motivated me to do some upgrading. The following is the step-by-step tutorial I wish I'd had going into the process. The assumption is that you've rooted, but not using Unrevoked3. The entire walkthrough is written with the goal of being as simple as possible for users who are new to doing their own updates, flashing new images, or even using Ubuntu.

Unrevoked3 on Ubuntu (9.10)

Installing Unrevoked3 on the Mac is easy-- you download an installer package, drag it to Applications and run it. If you're on Windows, I'd recommend using Ubuntu LiveCD with instructions by shad0wf0x. Since I run Ubuntu (Karmic/9.10, but should work equally well for Lynx/10.04), here are some instructions:

  • Download Unrevoked 3
  • Unzip reflash.tar.gz (you can double-click on it to open File Roller, and hit the extract button); the result is an executable called reflash. Let's assume you extracted it in your Downloads folder. Now, run it as root by opening Terminal (Applications > Accessories > Terminal) and typing in sudo Downloads/reflash. It'll ask you for your password, and then it'll launch Unrevoked3.
  • The UI that comes up has the Unrevoked logo and the message "Waiting for device. Plug phone in now and enable USB debugging. You may require Linux root access."
  • Enable USB debugging on your Evo by going to Settings > Applications > Development > USB debugging and plug in your phone.
  • From there Unrevoked3 just runs-- it reboots a couple times, and drops you off in ClockworkMod recovery (a dark-colored screen with greenish text.) Select "reboot system now" by pressing the power button, and your system will restart.

Radio baseband and Wimax updates

When I compared my radio baseband version to those supported for Unrevoked Forever, I was dismayed to discover that mine wasn't listed. Time for a radio update, and a Wimax update for good measure. Conveniently, after I installed these two updates I no longer had to remove the battery before I could turn my Evo on after turning it off-- an annoying quirk that'd plagued me since I got the phone.

How can you tell what baseband version you're running? You could restart your phone while holding the "volume down" button like the Unrevoked folks suggest, but it's easier to look in the Evo UI: Settings > About phone > Software information > Baseband version.

  • Go to this XDA thread and download Radio update: and Wimax Update 26023 from the first post. These are two zip files, and Save them to the root of your SD card.
  • Turn off your phone, and turn it back on while holding the volume-down button. This will take you to the bootloader, a white screen with some Androids on skateboards at the bottom.
  • The instructions say you can use the volume keys to navigate between options; on my Evo, it wouldn't let me do this for a few seconds, then it'd run HBOOT (a bunch of green text saying it's looking for various things and not finding them), and when HBOOT couldn't find anything then it would let me navigate to the other options.
  • Choose Recovery, and press the power button. This will launch ClockworkMod Recovery (the same dark screen with green text as before.)
  • Select install zip from sdcard, then choose zip from sdcard. Scroll down until you see either of the update zip files you've just added to your SD card. (Depending on how many files and folders you have on the root of your SD card, this may take a while.)
  • Select the update zip file, scroll through all the "no"'s and select "yes". The update will run.
  • Be sure to reboot after each update-- select +++++Go Back+++++, then reboot system now
  • Repeat this same process with the other update zip file.
  • To double-check if the update went through, check on your radio baseband version again, like before.

Unrevoked Forever and custom splash screen

One of my irrational fears is that one morning, as the alarm is going off on my Evo, I'll fumble and accidentally hit the button accepting an unrootable OTA update. With Unrevoked Forever, you can still flash a custom recovery image if that happens, so I went to install it. (Update: it also lets you install AdFree, which you can't do with a normal Unrevoked root.) This step isn't necessary if you just want a rooted Froyo.

  • Download the latest version -- it's a zip file, just like the radio and Wimax updates-- and put it on the root of your SD card.
  • Follow the same process as before, using ClockworkMod Recovery to install zip from sdcard.
  • When you reboot, if you hold down the volume-down button and go into the bootloader, you'll see SUPERSONIC EVT2-2 SHIP S-OFF at the top if it's been successful.
  • If you want a custom Unrevoked splash screen (their Unrevoked Forever logo in black, very tasteful, which will replace the HTC Evo 4G logo on startup), download PC36IMG.ZIP from their website. Put that exact file, same filename and all, in the root of your SD card.
  • Reboot into the bootloader (holding down the volume-down key); this time, HBOOT will find what it's looking for when it runs, and it will ask if you want to start the update. Choose 'yes', and then say yes to rebooting the device.

Installing rooted Froyo

I didn't want to re-install all my apps and reconfigure my phone from scratch, so I first went in search of a backup option.

  • Backing up your data: download and install MyBackup from the Marketplace. (The free version should be fine, so long as you're not planning on taking more than 30 days to finish this tutorial.)
  • Choose Backup, then Applications (or Data-- you'll probably want to do them both), then Local (SD Card). Select the apps you want to backup, give your backup a name and choose APKs + DATA. The process is essentially the same for backing up data.
  • Acquiring the ROM: Download HTC OTA Froyo 2.2, *FINAL*, build 3.36.651.6 (Rooted) Odexed from the first post on XDA. It's about 167 MB. Move it to the root of your SD card.
  • Flashing the ROM: download and install ROM Manager from the Marketplace.
  • Select Flash ClockworkMod recovery-- it's counterintuitive, if you've already run Unrevoked3, but necessary. Confirm your phone model, confirm the Superuser Request, and the app will do the rest of the work.
  • Choose Install ROM from SD card and select the Froyo ROM you previously downloaded. It'll give you check-box options for backing up your existing ROM and wiping the phone; certainly agree to wipe it, and you might want to back up your current ROM just to be safe.
  • This will reboot your phone into ClockworkMod Recovery, where the backup, phone wiping, and Froyo installation will happen
  • When the Froyo installation is done, your phone will go black, and you'll see the HTC logo in Android green. My screen flickered to the horrible rainbow-colored default home screen for a moment, before going back to the HTC logo, when it kicked me into the setup screens for Froyo (using the onscreen keyboard, whether or not to allow Google location services, configuring e-mail clients, etc.)
  • Getting your stuff back: download and install MyBackup again, and this time choose Restore. You can choose between Applications and Data, and then select the backup you made before.
  • Restoring from MyBackup will return all of your apps and data, including your home screen layout and saved logins for your apps. I still had to re-configure the home screen for my browser, allowing the installation of non-Marketplace apps, etc., but it still saved me a lot of time.
  • Wifi tethering: Froyo's native wifi tethering is still under Sprint's thumb, but android-wifi-tether didn't let me down-- I installed wireless_tether_2_0_5-pre8.apk, and it works great.

Addendum: I initially had problems connecting to 4G after doing all this, and it seems I wasn't alone. The fix, helpfully suggested by cyberenz on the XDA forum, is to re-flash the Wimax update.

Many, many thanks to the Unrevoked team: Matt Mastracci, Eric Smaxwill, Matthew Fogle, Joshua Wise, Ryan Pearl, and Koush Dutta. Not only do they do incredibly awesome work, they also direct all donations to the Electronic Frontier Foundation. You guys are my heroes.


State of the projects (early July 2010)

Birchbark letter XML

I have at least a first pass at the names-in-context data for documents 1-23, to supplement the proof-of-concept data I put together previously.

Medieval Slavic wiki

I've put together a work plan (subject to change) with the articles I'd like to try to incorporate into the wiki by October. After starting to go through the articles, it seemed reasonable to first work through the first chapters of Zaliznjak's 2004 Древненовгородский диалект to have a framework with some general overview content that I can then flesh out with details, arguments, points and counter-points from the articles. To this end, I've added pages on the Old Novgorod and Old Pskov dialects, along with related pages as necessary.


Why I've walked away from Apple

Yesterday, a friend made the mistake of asking me why I switched from iPhone to Android, on an afternoon when I had some time to kill at the airport. His response to my long e-mail was that I should publish it on a blog somewhere. I've polished it up somewhat and added a few things, and the following is where I stand on the topic of device/OS choice.

Why Android?

For me, Android was an easy choice, simply on the merits of the device. It's just-- I think fairly objectively-- better. I wrote and e-mailed this on my laptop, while wirelessly tethered to my Evo 4G-- using a free app, rather than the extra-charge Sprint plan. On the bus, I was playing one of my favorite childhood video game, using a SNES emulator that would never make it into the iTunes store.

I have full root access. I can change the frequency of the processor to save battery life. I can flash new ROMs if I want; I'll likely be installing Froyo, the new OS, well sooner than the phone manufacturer will make it available. I'm particularly looking forward to streaming music from my home machine without having it directly on the device, and Flash 10.1 support-- two new Froyo features. Speaking of Flash, I enjoy being able to look at restaurant websites, a great many of which are Flash-based.

My Android happily ingests and displays video formats that would cause the iPhone to choke. I can transfer those videos, and any other media, to and from the device like a normal hard drive. It comes with free, built-in turn-by-turn navigation. I can fully customize the UI-- themes, widgets, skins, multi-screen wallpapers. My Evo 4G has an 8 megapixel camera, and a 4.3" display.

I personally think the hardware is better-designed, too: I picked up my old iPhone for the first time in a month today, and tried to figure out how the hell to do anything without the built-in "back" and "menu" buttons. No wonder Apple has such rigid design specifications in terms of how menus can be laid out and such: they've got to make up for their hardware sho‌rtcomings.

I can now get calls in my apartment-- and pretty much anywhere else I've been in the last month-- through Sprint. And their 4G in much of Chicago is better than my home DSL.

The iPhone 4? None of the above. I think the case for Android is an open-and-shut one.

Walking away from Apple

Less obvious, and less clear-cut, is my decision to eschew Apple in my personal life. It's an unusual position to take, given the role that Apple plays in my work life. Everyone with a laptop in my group has a Mac. The computers in our mini "lab" for faculty are Macs. One of my people has been developing software for the Mac (and, more recently, iOS) since before I was born. I'll be managing an adoption project for Project Bamboo that involves using scholarly servies via an iPad app, and one of our ongoing projects is investigating interesting scholarly applications for the iPad. I recently had lunch with the university's Apple reps to talk about their role on campus, and what they can do to whip up some excitement about developing for the iOS platform.

The easiest and most natural thing would be to let Apple permeate my personal technological life as well. I already have access to some of their best, most "magical" products as part of my work. And I used them for quite some time, since I started my job, three years ago yesterday.

I haven't thrown out the cobbled-together old PowerPC Franken-towers I inherited over the years (that would just be stupid-- we use them as a TV replacement), but my husband and I are pretty committed to never purchasing another device from Apple. (As it happens, the only ones I've ever purchased myself have been two iPods and the iPhone in 2008.)

Other than when I end my day far away from my office, I leave my Macbook Pro at work. I have a laptop running Ubuntu, with a big Ubuntu sticker (and a smaller Tux sticker) on the lid-- that's my primary machine outside of work. I find it a little distasteful going out in public with my work Macbook; I do not want to be part of the walking ad campaign for Apple. A remark made at the most recent Bamboo workshop, about almost all the laptops in the room being silver Macs, made me wince.

Why, you may ask?

I've never been thrilled with Apple's tight-- and at times, seemingly arbitrary-- grip over the iTunes store. I'm not a fan of their continued use of DRM on videos that people purchase. Or their inclination to restrict what people do with their hardware, like their efforts to brick jailbroken iPhones, or claim that jailbreaking a device is illegal. I was even less thrilled with their abuse of the patent system (yeah, I know everyone does it), applying for unreasonably broad patents and filing suit against HTC.

But frankly, the final straw for me was their change in developer policy for iPhone apps. To a certain extent, if you buy into the Apple world, that comes with restrictions. It's a decision, it has consequences for the buyer, fine. But banning cross-compilers has an effect on the entire mobile ecosystem. Telling developers they have to choose-- iPhone, the biggest platform, or other devices-- will probably have a chilling effect on what's available on all platforms. It penalizes people who haven't made the choice to opt into the Apple world. A couple days after I heard about that announcement, when I'd had a chance to give it some serious thought, I sat down and bought a reasonably priced laptop that I could install Ubuntu on. And I've had no regrets.

This, though, I will say: Apple strikes me as a legitimate option. Ubuntu is getting much, much better than even a year ago, in terms of ease of use, working out-of-the-box, and not making people go to the "scary" command line to fix things. But when things don't work, there's still the need to do some troubleshooting in ways that most people aren't used to, and I can understand why people who want nothing to do with tweaking any settings, who want something that other people will know and recognize and can help with, who aren't "computer people" or willing to stick a toe into that world-- I can see why they might want to go the Mac route. Windows, I don't understand, other than as a side option for people who have to use Windows-only applications that can't run on Wine. Why on earth would you choose both "proprietary" and "sucks"? The relative cost compared to a Mac is the only factor I can think of, though when my husband found himself in that situation a little over a year ago-- needed a new laptop, couldn't stomach Windows, couldn't afford a Mac-- it compelled him to try Ubuntu. He's not the biggest techie by nature, but it only took him a week or two to become a huge fan of Ubuntu.

I'm not in that position, though. I'm a-okay with fiddling with things-- hell, I even enjoy it sometimes! Freedom (as in speech) and openness are very important to me; I can't really write code, but I license everything I do using Creative Commons. I'm not a fanatic-- when there are applications I really need where the open source equivalents are simply not up to par, and if I have to choose between not getting the results I want and using proprietary software, I'll go with the proprietary software. (I'm sorry, PicSay Pro on my Android has better brightness and contrast than GIMP. The ability to run Photoshop on Wine was non-negotiable for me when setting up my Ubuntu system.)

Why I support open source: an anecdote

Every now and again, something happens to remind me of the value of the open source community, rather than a tight-lipped corporation calling all the shots. I think it's fair to say that the Mac developer in my group is one of the world's Xcode experts. He's even written two books on the topic.

But right after his last book went to press-- when it was too late to make revisions-- Apple announced development for the iPhone. Since his book didn't cover iPhone development, this sudden and badly-timed news from Apple cut the book off from a large potential audience. And just a few weeks ago, as he was finishing up a new edition-- 350 pages, ready to go-- Apple announced Xcode 4 at WWDC. He has to start over.

Banning cross-compiling for iOS applications, keeping major changes under wraps and springing them on developers without giving them a heads-up that would allow them to make more informed choices, an iron fist of control over the only legit channel for obtaining applications, and an inclination to change the TOS for that channel to suit their own purposes-- leaving people no real recourse if they don't like those changes. Given all this, I cannot support Apple.

Thanks to Steve for prodding me to publish this, Google for releasing their Android logo under a Creative Commons Attribution license, Ben Bois for submitting an iPhone to OpenClipArt, and Randall Munroe for licensing xkcd under a Creative Commons Attribution-NonCommercial license.



Subscribe to Blog