For the past couple of weeks I’ve been participating in the Dailyshoot project, a gift to the world from James Duncan Davidson and Mike Clark. Now I’m feeding that photostream into this space. Apologies to subscribers for the 16-picture backlog; in future it’ll be a dull rumble. This raises some interesting issues in photography and publishing policy and mashup technology.
Photographically Speaking · Dailyshoot takes almost no time and I enjoy it and I think that it’d be good for the development of almost any photographer. I route the assignment tweets to SMS so they’re on my phone real early every morning. The assignment rattles around in the back of my mind as I go about my daily business. It helps that I always carry a pocket camera.
I absolutely haven’t committed to doing this every day, but every day for the last 16, something has come along. Even with Lightrooming and Flickring and Tweeting, the total time per day is only a few minutes.
I refuse to look at anyone else’s submissions till I’ve done mine, then I really enjoy looking at the other approaches. Not only does the quality vary wildly from shot to shot, but the group quality goes up and down as a function of the assignment; it’s hard to predict which assignments will produce good (or bad) results.
I’m afraid, first of all, that this won’t scale, and secondly, that I’m contributing to that problem with this post, but oh well.
Anyway, a hearty thank-you to Duncan and Mike.
Why Mash Up? · Maybe I’m being a megalomaniac or otherwise unreasonable, but I want the online fruits of my labors to have a home on territory I control, for a bunch of reasons that seem too obvious to explain at length. I don’t mind contributing to Twitterville or Flickrland, as long as I have a copy too.
This is the same reason I batch up a week’s tweets in this space every Monday. Following on subscriber shouting, I exclude the tweetbatch from the Atom feed; but I think I’ll leave the Dailyshoot in. It’s only one short piece per day, and some of the pictures are pretty.
It’s sort of a pity that you have to be a computer programmer to achieve this very desirable result.
This Mash-up · It’s not very interesting, I merged it in with the code that batches up the tweets once a week, and the whole thing altogether is 330 or so lines of Ruby.
The signal to Dailyshoot is a tweet directed at
@dailyshoot containing a link to
the picture on one of a few photo-sharing sites, plus the tag of the day, for
example on day 75
The first input is which day to process. The code computes the Dailyshoot number relative to Day 0 (2009/11/15) and scans the day’s Twitter timeline for a tweet with that tag. Any accompanying verbiage is extracted and used for the title of the blog post.
Then the hashcode is used to find the picture in Flickr, and retrieve the full-size bits and any extra description to go in the blog body. This relies on my manually tagging the picture; it might actually be more reliable to pull apart the Flickr URI to get the photo’s ID number and work with that. Whatever. The Flickr API is, um, let’s be polite here, idiosyncratic.
Finally, if you stick
.json on the end of a Dailyshoot URI,
that’s what you get, so assuming you know the assignment number it’s trivial
to get the assignment text.
Thus you have all the pieces necessary to construct a blog post; the way you’d assemble them would be specific to your blogging system.
The only moderately interesting thing about the code is that I did a little extra work to make the Twitter timeline an Enumerable (the constructor has optional begin and end dates), so a lot of the processing reduces to some one-liner or another.
Mash-up Technology ·
This is all done with ad-hoc Ruby, using
Net::HTTP to fetch
the bits & pieces, and REXML to parse them and XPath out the pieces I
want. The only problems were figuring out the Flickr API arcana, and the fact
that I kept running into the Twitter rate limiter while I was debugging and
then processing the backlog.
The obvious question that arises is, shouldn’t you be able to do this kind of service wrangling without ad-hoc HTTP/XML/JSON munging? That’s what Yahoo Pipes is supposed to be about, as well as Sun’s own late lamented Zembly.
I don’t know. I sort of think that if it were straightforward, someone would have done it by now. And when you get right down to it, ad-hoc HTTP/XML/JSON munging isn’t exactly rocket science.
My professional status is a little, er, transitory at the moment, so I probably shouldn’t post the source code, even though I went and made a place for it on GitHub.