kelvinluck.com

a stroke of luck

New This happened website


This happened is a series of events focusing on the stories behind interaction design. Having ideas is easier than making them happen. We delve into projects that exist today, how their concepts and production process can help inform future work.
This happened is an event originally organised by Chris O’Shea, Joel Gethin Lewis and Andreas Müller in London. I’ve been lucky enough to attend a few times and it is always really interesting and inspiring. The fact that the speakers talk about the process and the failures along the way is much more interesting than someone just showcasing their work. And I find the field of “interaction design” really interesting – a world somewhere between computers and the real world and somewhere between art and science.

So when Chris asked if I’d help out with a flickr viewer for the new website I was more than happy to help. I put together a little swf which is used throughout the site. It connects to the Flickr API (using as yet unfinished and unrealeased as3 version of flashr) and grabs photos matching certain machine tags. Depending on where in the site you are the swf displays relevant photos (e.g. from a particular city or a particular event) as a simple slidehow. The thishappened team can easily choose to display any photos that attendees have uploaded to flickr with relevant permissions. And they keep editorial control over the content via a special “auth” machine tag which they can generate through their CMS. It’s all pretty simple but it’s a nice way to bring user generated content to their site easily.

This happened is branching out and encouraging people to host events across the world so keep an eye out for one near you (or even set one up yourself) and if you get the chance make sure you attend.



Wellcome Trust competition


A few months back I heard about a competition being organised by Ico Design, BD4D and the Wellcome Trust. The idea behind this competition was to “produce an interactive Flash piece that is playful and engaging using at least 2 words from the Word Soup”. The “Word Soup” is a collection of words that form part of the branding for the Wellcome Collection.

I managed to scrape together a little bit of time so I put together an entry. It was a mashup between the provided words and Flickr. I built it using Flashr and skinned it with a nice clean design knocked up by my good friend Leigh Kayley (based on the look and feel of the scramble game we found on the Wellcome collection’s site).

The entry is described quite succinctly in an article in Design Week so I’ll borrow their words:

Kelvin Luck asks us to look at images plucked from Flickr and choose from the wordsoup which one was used to tag the picture. It is harder than you think: what word could describe a masked woman in a spangly bikini who is wielding a chainsaw? Clue: it is not what you might think.

If that doesn’t explain it then you can play it yourself and see if you can get on the high scores. It can be frustrating at times because some people tag their photos a bit randomly but that adds to the adictiveness :)

Last night I was invited to the launch event for the new online exhibits site (where all of the competition entries are showcased) and the announcement of the competition’s winners. I was very surprised and pleased to find out that my entry got the second prize! Yay :)

I’d recommend checking out the site to see the many cool entries and the very nice innovative interface for finding them (also courtesy of Ico Design)



Has your Flash/ Flickr app stopped working?


Update

For the latest up to date information about Flashr please check out the new Flashr microsite

It was announced on the flickr mailing list last week that flickr.com were making some changes to how their API works. Those changes have completed today with the removal of the crossdomain.xml file from flickr.com.

What does that mean for me?

If you wrote a flash application that used the Flickr API then you will need to make a small change to it and recompile it. If you don’t do this then your swf will not be allowed to connect to flickr.com and query the API and so won’t work.

Why did they change it?

Not just to annoy all flash developers! Basically, the way the API was previously set up, any flash file could request any data from flickr.com (not just via the API). So it would be potentially possible for someone to craft an “evil” swf which could connect to flickr.com. If the viewer’s browser was logged in to flickr.com then this evil swf could potentially do evil stuff like deleting their photos.

How can I fix my app?

Luckily, the fix is very simple. If you are using Flashr you can just apply the changes in this changeset.

The change you have to make will depend on whether you are using version 0.4 or 0.5 of Flashr and should be self explanatory. Basically you are just telling Flashr to connect to http://api.flickr.com/ instead of http://www.flickr.com/.

It only took me a little while to update Selfportratir, my interestingness experiments and my colourfields experiment. Mario and Doug have both posted about this too and have updated their various experiments.

If you’ve written any Flash applications that connect to flickr please check they are still working or apply the fix, if you come across any other sites where Flash is meant to be connecting to flickr and you just see a blank screen then please let their makers know.

I’m not going to update some of my older experiments and examples because version 0.5 of Flashr is going to be released very soon along with a shiny new microsite and I will put new versions of everything up there.



Selfportraitr: An Interactive Exhibition Curating the Flickr Community


A while back I was approached by Stephen Jablonsky from the School of Visual Arts in New York. He was looking for someone to help with a project him and and his colleague Jeremy Chien were doing for the Pace/MacGill Gallery. He had come across Flashr and some of my experiments with it and thought that I may be able to help with the project.

It turned out I could! The project became “Selfportraitr”. The idea is that through ten computers in the gallery itself and through the Pace/MacGill website people can search through the thousands of photographs on flickr tagged with “selfportrait” and can choose the ones they like best to add to the gallery’s favourites. This enables members of the public to act as curators for an exhibition in a major New York gallery. More information on the app and the background to it is available in the official press release.

You can view the exhibition online using one of two applications:
  • Viewr – this application shows a slideshow of self portrait pictures. The interactivity of this application is limited to adding passing images to the gallery favourites.
  • Selfportraitr – this is the full on application as it appears in the gallery. It was designed for display on the Apple 23″ cinema displays in the gallery at a resolution of 1920×1200 so unless you have a massive screen it may appear a bit cramped and some text may be tricky to read. But you will get to play with the full functionality of the app and hopefully find some nice photos :)

This project was featured on the flickr blog, the New York Times (registration required) and even on ABC news which is pretty cool. It also sparked some controversy on the Flickr Central discussion board although in general people seem to appreciate what it is doing.

I built the app in Flash 8 using the bleeding edge version of Flashr. As you will have seen, some of the functionality of the app is pretty advanced and creating this app led to a number of bug fixes and enhancements to the Flashr code. A good by-product of this is that now the long awaited 0.5 release is within sight. It was also interesting to collaborate internationally across time zones on a project as complex as this and all things considered it went remarkably smoothly.



FlashrSimpleSearch


Update 3:

This is a very old page imported from my previous blog. If there is missing content below or anything that doesn’t make sense then please check the page on my old blog.

Update 2:

For the latest up to date information about Flashr please check out the new Flashr microsite

Update:

This example will no longer work as-is – you will need to update your Flashr files as described here.

Somebody on the Flashr mailing list was having difficulties getting to grips with Flashr. Since a picture is worth a thousand words and I needed to do some examples of using Flashr 0.5 anyway, I put this very simple example together…

Basically all it does is connects to the Flickr API and does a search for a tag using flickr.photos.search. It then calls flickr.photos.getInfo on each of the returned photos to get more detailed information (like authors name, description and tags used). Once it has got all this information it simply traces it to the output window in Flash.

All of this is made much easier by a feature in the as yet not officially released Flashr 0.5. Now when you make multiple requests to the Flickr API the requests are added to a queue and each one executes in turn. This makes writing applications that rely on multiple API requests (such as this one) much simpler.

DOWNLOAD
You can download all the files for this example from here. This includes the latest version of Flashr 0.5 (see the trac timeline for recent changes). The specific file you are interested in is com.kelvinluck.flashr.example.FlashrSimpleSearch.as.

THE CODE
Here is the entire class which powers this little “application”.

import com.kelvinluck.util.LogWrapper;
import com.kelvinluck.flashr.core.FlashrResponse;
import com.dynamicflash.utils.Delegate;
import com.kelvinluck.flashr.core.ResultsSet;
import com.kelvinluck.flashr.core.Photo;
import com.kelvinluck.flashr.core.Flashr;
/**
* Class: FlashrSimpleSearch
*
* Very simple example showing how to search for a tag using Flashr 0.5 and then
* get more detailed information about each matching photo.
*
* Currently just traces the relvant information out.
*
* Author:
* Kelvin Luck
*/

class com.kelvinluck.flashr.example.FlashrSimpleSearch extends MovieClip
{
   
   public static var SEARCH_TAG:String = "snow";
   public static var NUM_RESULTS:Number = 10;
   
   private var _flashr:Flashr;
   private var _flashrResponse:FlashrResponse;
   
   private var _numResults:Number;
   private var _photos:Array;
   
   /**
   * Function: FlashrSimpleSearch
   * Constructor
   **/

   function FlashrSimpleSearch()
   {
      // uncomment the following lines if you want to see the internals of what is happening with Flashr.
      //LogWrapper.getInstance().init();
      //LogWrapper.getInstance().addTracePublisher();
     
      _photos = [];
     
      _flashr = Flashr.getFlashr();
      _flashr.apiKey = "b40e05adf210ad4c4cc4da00f99f4184";
      _flashr.cacheQueries = true;
     
     
      _flashrResponse = new FlashrResponse();
      _flashrResponse.onPhotosSearch = Delegate.create(this, onPhotosSearch);
      _flashrResponse.onPhotosGetInfo = Delegate.create(this, onPhotosGetInfo);
     
      trace("Searching for " + NUM_RESULTS + " photos matching tag '" + SEARCH_TAG + "'");
      _flashr.photosSearch({tags:SEARCH_TAG, per_page:NUM_RESULTS});
   }
   
   function onPhotosSearch(rs:ResultsSet)
   {
      _numResults = rs.photos.length;
      trace("Loaded data for " + _numResults + " photos out of " + rs.total + " matching tag, requesting more details about each photo");
      for (var i:Number=0; i<_numresults ; i++) {
         var thisPhoto:Photo = rs.photos[i];
         _flashr.photosGetInfo(thisPhoto.id, thisPhoto.secret);
      }
   }
   function onPhotosGetInfo(photo:Photo)
   {
      trace("Loaded detailed data for photo '" + photo.id + "'");
      _photos.push(photo);
      if (_photos.length == _numResults) {
         onAllPhotosLoaded();
      }
   }
   function onAllPhotosLoaded()
   {
      trace("*************ALL PHOTO INFO LOADED*************");
      trace(" ");
      for (var i:Number=0; i<_photos.length; i++) {
         var thisPhoto:Photo = _photos[i];
         trace("Photo " + thisPhoto.id + " :");
         trace("  Title: " + thisPhoto.title);
         trace("  Description: " + thisPhoto.description);
         trace("  Taken: " + thisPhoto.dateTaken);
         trace("  Author: " + thisPhoto.owner.username);
         trace("  Author ID: " + thisPhoto.owner.nsid);
         trace("  Thumbnail: " + thisPhoto.thumbnailUrl);
         trace("  Photo page URL: " + thisPhoto.photoPageUrl);
         trace("  Tags: " + thisPhoto.getTagsAsStrings());
         trace("------------------");
         trace(" ");
      }
   }
   
   /**
   * Function: toString
   **/

   public function toString():String
   {
      return "[com.kelvinluck.flashr.example.FlashrSimpleSearch]";
   }
}

I hope this is useful to someone, please leave any feedback as a comment below or on the Flashr mailing list;



Flashr 0.5 under construction


Update 2:

This is a very old page imported from my previous blog. If there is missing content below or anything that doesn’t make sense then please check the page on my old blog.

Update:

For the latest up to date information about Flashr please check out the new Flashr microsite

After a lot of discussion on the Flashr mailing list I have decided to make some pretty extensive changes to Flashr for the 0.5 release.

This will involve breaking backward compatibility in some cases but the rewards will be a cleaner API and the addition of a bunch of cool new features like a priority ordered request queue, request caching, and request timeouts…

It also means that until 0.5 is released the trunk of the Flashr repository will contain unstable code. If you want the latest and greatest copy of 0.4 (with a few improvements from the zipped 0.4) then please grab it via subversion from the 0.4 branch. I think I changed all the relevant links on the site but thought I’d give this headsup just in case…

In the meantime you might want to check my latest experiment which is something that will benefit greatly from queueing system in the upcoming version of Flashr and so which can act as a kind of benchmark for it :)



2005 – an interesting year on flickr


Update 2:

This is a very old page imported from my previous blog. If there is missing content below or anything that doesn’t make sense then please check the page on my old blog.

Update:

For the latest up to date information about Flashr please check out the new Flashr microsite

With the release of a new method on the Flickr API it is now possible for us to find the most interesting photos on a given day. I’ve combined this with the excuse that it’s a new year and put together a little toy which lets you look back over the most interesting photos of 2005…

The toy shows you the 15 most interesting photos from this date a year ago… You can click on a photo to find out more about it or you can drag the little slider at the bottom to choose a different day… Quite a cool way to discover some of the amazing photos on flickr!

Update

I carried on playing around with the idea and made a new version. In this version you can see the top 3 most interesting photos for five consecutive days. I thought that you would end up with the same photo staying at the top for a few days but I guess flickr’s interestingness algorithm stops that happening… Interesting, ey?



Flashr gets more interesting


Update 2:

This is a very old page imported from my previous blog. If there is missing content below or anything that doesn’t make sense then please check the page on my old blog.

Update:

For the latest up to date information about Flashr please check out the new Flashr microsite

As just announced on the flickr mailing list, the guys at flickr have just released a new API method – flickr.interestingness.getList.

This cool new method lets you get a list of the most interesting photos for any given date… So I went straight ahead and added the method into the subversion repo for Flashr. You can see the exact changes here.

I’m not going to package up another release so soon after 0.4 but if you are interested in using this new method then grab the source from subversion and enjoy :) I certainly like the new method – I just stuck together a little example using it :)



Flashr 0.4 released


Update 2:

This is a very old page imported from my previous blog. If there is missing content below or anything that doesn’t make sense then please check the page on my old blog.

Update:

For the latest up to date information about Flashr please check out the new Flashr microsite

I have just released version 0.4 of Flashr. This is just a bunch of changes which have been sitting in the subversion repositry for a while along with newly generated docs.

The changes since the last release can be seen in detail on the trac site or you can look at the changelog.txt for a more concise rundown.

Any comments on the changes or on Flashr in general please direct to the mailing list.



Made with Flashr


Update 2:

This is a very old page imported from my previous blog. If there is missing content below or anything that doesn’t make sense then please check the page on my old blog.

Update:

For the latest up to date information about Flashr please check out the new Flashr microsite

Over the last few weeks lots of people have suddenly released cool new experiments using Flashr to connect to flickr.com. It’s great to see people making cool stuff and finding a use for Flashr – now I need to get round to finishing and releasing some of my own experiments with it! Anyway – here’s some little descriptions of the new stuff…

Flickeur by Mario Klingemann.
Really cool program which “retrieves random images from Flickr.com and creates a stream-of-consciousness type of video clip”. Mario has created incredible transitions between different images using Flash 8′s BitmapData Object and (I imagine) lots of really clever maths and who knows what else! The end result is a film which looks professionally put together even though it is in fact randomly generated by your computer!

Flappr by Buck DeFore
In the words of it’s maker, “Flapper is a Flash 8 interface for Flickr. Its goal is to provide a more explorative way of browsing the best repository of publicly shared photographs on the Internet”.
Basically it lets you search for photos, browse and view them. It builds a history of user’s whose photos you have looked at and you can easily navigate to any of their tags or groups. You can also see and link straight through to related tags for any tag you are looking at.
Another feature which I have just discovered is that it keeps a history of the photos you have looked at (try rolling off the right hand side of a photo when looking at it – it should shrink down and show you all the previous photos and let you click through to them) – cool :) Buck is still developing it so stand by for more cool features!

Findr by Doug Marttila
Findr again allows you to browse through photos on flickr.com by typing in a start tag. The clever twist here is that you can then “drill down” in your search by choosing another tag from the current tag’s related tags. And you see photos which match all the tags you have selected so far. Try it – it makes a lot more sense when you do it than my explanation does!

Flickr Wing by Iiley Chen
A demo of the ASWing open source component framework for Flash and an interface to Flickr. Allows you to search for photos on Flickr and browse through the search results.

So – some really cool stuff as you can see! Great work everyone :) If you have made anything with Flashr then please let me know – either through the mailing list or by leaving a comment below…