If you were on the media social much shortly before Christmas, you no doubt heard quite the kerfuffle about changes to Instagram’s Terms of Service that would take effect on January 16th, 2013, in part related to Facebook’s purchase of the service earlier last year. While much of this response was overblown, and based on misunderstandings of the relevant legalese, and Instagram later apologized and canceled some of the changes, the folderol was a reminder to me that you can’t really trust a service you’re not paying for for hosting your content under the license you want. Thus, I quit.

I had been using Instagram since October 2011, primarily since it made social network cross-posting so trivial from my phone. All told, I shared 240 pictures on Instagram, many of which were shared to Facebook and Twitter. My uptick in usage was triggered in large part with upgrading my iPhone 3GS to a 4S on my last contract renewal, and the major camera upgrade that came along with that. While I regularly used the filters, for fun, they were not the reason I used the service. I also never participated in the “discovery” features, such as browsing hashtags or sharing publicly to build up likes. It was all about easy sharing, and I just can’t trust Instagram anymore.

I decided that, since I already have this self-hosted WordPress blog, I would migrate my photo sharing here. This is in large part enabled by the Quick Photo feature of the WordPress iOS app, which was added last year. This lets me license my photos the way I prefer, with a Creative Commons Attribution (or CC-BY) license. The main thing I’m losing is that sharing (and commenting) is a little bit harder, and the performance of a large-scale cloud service. I know a lot of Instagram refugees went to Flickr, but I’ve been fleeing Yahoo!’s services for years. (I moved my DNS to easyDNS, my bookmarks from Delicious to Pinboard, and mostly dropped my Yahoo! Mail account in favor of GMail.)

Quitting, for me, consisted of three steps:

  • Exporting all of my photos to WordPress
  • Deleting all of my photos from Instagram
  • Improving my WordPress setup

I had all of the originals in my iPhoto library, but not the captions or comments, which I wanted to preserve. I briefly looked at writing my own export script in Python using the Instagram API, but found an existing WordPress plugin, DsgnWrks Instagram Importer, which could do most of what I wanted. It had a bug where it was just hotlinking to the Instagram version of an image, not actually downloading it to my server; I fixed that and submitted a pull request to the developer. I also added some quick hacks to pull in comments and likes as well as captions; these haven’t been integrated into the trunk, since I know almost nothing about WordPress plugin development (or PHP, for that matter). My fork with these changes is available on GitHub; I make no claims regarding its functionality other than “it worked for me”. My archive of former Instagram posts is now just a category here, much like my old LiveJournal archive.

As Andrle also discovered, there is no mass delete functionality with Instagram (short of deleting your account), and many deletes in a row through the app were getting rate-limited. I think it took me about 20 deletion sessions over the course of two days to eliminate all of them after exporting. I think this ended up being more labor intensive than making the code changes above; it was five taps per image to delete, instead of a nice swipe action. Lame, Instagram. Lame. I suppose it’s optimized to avoid accidental deletions (especially for people who don’t have a copy of the images), and Instagram has no incentive to make it easier to flee their service.

Finally, I took the time to switch to a WordPress theme that handled photo posts better, especially on mobile devices, namely Responsive. This was also an opportunity to finally integrate the logo I had bought some time ago from a former guildmate, Joe Sites. You’ll probably see that rolling out on more of my sites over the course of this year, now that I’m done taking classes. The idea for this logo is to evoke both a U and N for UltraNurd, and a waveform (although it does contain an infinite slope). I also emphasized my photos category as a top-level tab in this new theme.

I welcome feedback on how this new mode of photo sharing is working – I’m still tweaking the server configuration, so I understand that the slowness might be annoying. I may have to spring for a beefier VPS from Rackspace for hosting my sites. Also I think you may need to add a third-party cookies exception if you want to comment. Sweet, terrible freedom!

(Yes, the title of this post is a biology pun.)