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 #ds75.

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.


Comment feed for ongoing:Comments feed

From: Boris Mann (Jan 30 2010, at 20:14)

It's actually pretty easy to do mashed up feeds without being a developer. Controlling it on your domain is a different matter, of course.

Google Reader, tagging feeds, and making that tag public is one way. Friendfeed is another. Yahoo Pipes is a third.

And on mashups - while I enjoy your photos, I'd rather have a "just the written blog posts" feed, and subscribe to your photos separately (in my folder of RSS feeds that are photos, of course).

Two feeds that people can choose to subscribe to separately are, in fact, better than one.


From: Jed Soane (Jan 31 2010, at 15:00)

Hmm, I think I was taking the Daily Shoot too seriously. It was taking me about 1.5 hours, from conception to upload, plus a lot of energy to get something I felt happy with, so my participation has tailed off. I felt that was the amount of effort I needed to put in to improve.

I really enjoy seeing the way other people intepret the brief too. I don't think that scaling will be an issue. It's kind of like Twitter. You don't need to see all of the photos that are made. Just dipping into the stream from time to time is enough.


From: Colin Prince (Feb 01 2010, at 08:29)

I like the Daily Shoot photos in your stream. One request however: could you somehow mark them in the title? E.g., "[DS]" or "ds-"


author · Dad · software · colophon · rights
picture of the day
January 29, 2010
· Technology (87 fragments)
· · Web (393 more)
· Dailyshoot (57 more)

By .

The opinions expressed here
are my own, and no other party
necessarily agrees with them.

A full disclosure of my
professional interests is
on the author page.