Category Archives: development

All Finished

Well I’m all finished.  Handed in my report, I’m pleased with all I’ve accomplished through this project.

Here is the Abstract for the report:

Through discussion and analysis of current research in collaborative tagging systems, an emerging area of research was discovered, improving accessibility and search of visual resources through tagging.  Of particular interest were two tagging projects ESP Game and Steve.Museum, where users were encouraged to tag images to improve accessibility and search of images.  VideoTag extends this research by harnessing the user motivations of Play and Competition to increase and improve the meta data of a selection of YouTube videos through tagging. 

The VideoTag tagging experiment consisted of a one player game where users were encouraged to tag a selection of sixty carefully chosen, funny or interesting YouTube Videos.  The videos were separated over five difficulty levels.  Gameplay was carefully planned in order to encourage users to tag the videos more descriptively, using tags of a subordinate rather than basic cognitive level.  The experiment was uncontrolled with random users being attracted to the game through promotion on various Web 2.0 sites.

Analysis of the results focused on whether a game environment is beneficial to encouraging users to tag videos.  Quantitative methods of analysis found VideoTag to be successful at increasing the amount of tags per video compared to YouTube.   A long tail effect was found to present in the tag data which allowed for qualitative analysis of the quality of the tags entered based on their cognitive level.  

As only a small selection of videos were used, tag data generated by the VideoTag experiment is not sufficient to test whether the data can improve search for those selected videos, or create descriptions to improve accessibility for visually impaired users.  Analysis and evaluation does discuss how VideoTag proves as a concept, game based tagging could be used to improve accessibility and search and there is scope for future research . 

<6 weeks to go

I’ve got 6 weeks till i have to hand in my project.  In real terms as i don’t get all the time in the world to work that gives me 12 days.  12 days to write up 2 chapters detailing what i’ve done, describing the experiment, explaining the results, analysing the results and critical evaluation of the whole thing.  On top of this i remain completly baffled by SPSS and it really is the best way to produce my longtail graphs.  Although i am tempted to knock some out in excel if time runs out.  To top it all off i have writers block.  The chapters are running round in my head all jumbled up but i can’t get them out onto paper for some reason.

I’m also regretting ever finding facebook as it is a perfect distraction to stop me starting writing.  And it turns out so is this blog as i’m writing this instead of just mind dumping on paper to get myself started!

you tube rss feeds

In order to analyse the quality of the tags VideoTag is generating, i want to compare them to the existing tags for the videos in YouTube.   So i set about the arduous task of collecting all these tags and entering them into my database.  I checked the YouTube rss feed and no example for favourites, so i googled it and found sites that use the youTube API to let you rss feed users favourites, but you only get the 10 off the first page, which is useless for my 60 odd videos.  So i resorted grudgingly to manually copying and pasting off each video.  Then i had the bright idea of seeing if i could rss feed my playlist.  After a quick google search i found this site:
I was kicking myself for not thinking of this sooner, it saved me lots of time,  especially when after entering all the YouTube tags for my 63 videos i got this error “possible deep recursion attack” and lost them all!!

So my annoyance at not having found it earlier, changed to being thankful i’d found it at all so re entering the 63 sets of tags wouldn’t take quite so long.  grrr i hate it when quick jobs to ease you into your working day take up half of it unexpectedly.

play as guest

i made my mind up and added a play as guest facility.  I decided as long as the tags were recorded it was better to have more players tagging than know their username.  However i have put limitations on the guest accounts, they cannot progress passed level 1 and can not be entered onto the leaderboard.

Cheating and future developments

I have changed my mind about leaving off the board of shame.   I have had my first cheater.  It didn’t take much to work out you could enter anything and score points i’m lucky so far only 1 person has discovered this.  So i have stripped him of his points and added him to the board of shame, hopefuly this will deter others from doing it.  It is too much for this run of the game and my MSC project to add dictionary checks on the tags, although i would like to implement this in the future.

I was considering adding a play as guest facility, but have decided to stick with my register at the minute, i don’t ask for much information, i feel if i have play as guest nobody will bother to register.   Again this is something i will implement in the future.  Maybe a try game before registering option and let them play for a bit but not score points.

I had another idea to try and keep players tagging and sustain interest – adding a Golden Tag.  This could be a highly descriptive tag that if found would award the user with a large number of points.  There would be one golden tag for each video.   I like this idea and it will definatly go into a new version of the game.

I might also enlist some graphic design skills to  give the look and feel of the game more impact, especially the homepage, i agree with feedback that this will attract more users.

One wierd thing i’ve noticed is that people are bothering to register, but then not playing, i would like to know why this is.  They probably think the game looks rubbish and leave, or their connections slow so the game doesn’t work properly.

It’s so interesting now my game has some users to disect it with the help of feedback and the data it’s generating and find ways to improve it.  i think even if i don’t get the oppurtunity to continue this project into phd level i will re develop the game with these additions added.

I keep thinking about the play as guest facility – should i allow it or not?

VideoTag – live and ready to play

The VideoTag game is all finished, working and ready to play. I am pleased with it, i think it works well and should, providing people play it, be a useful vehicle at generating the data i want.

The all important link:

There was only one thing that i couldn’t fix and that was the onkeypress problem mentioned in the Ajax post. I couldn’t stop it refreshing the page each time a tag was submitted, so the return/enter key has been left disabled. Not the best usability, but a more desirable fix than having a new video after every tag entered.

I have definatly reached the top of the MSC hill, the downward slope being filled with evaluating results and critically evaluating the whole project. Oh an writing up what i did and how i did it and creating some extra design document that i left to the end if i had time. So not too much work then! Roll on Sept 30th, then i won’t have a clue what to do with my time and my brain will have nothing to think about! I’ll be lost.

Ajax GET and POST

I’m posting my GET and POST ajax code it will hopefully be useful to some people.

I searched a lot to find some simple code as i didn’t need to validate the forms. So many scripts didn’t work properly or seemed unnecesserily complicated for my requirements.

The code has been adapted from

the GET from:

Hope you find this helpful!

//Set up the XMLHttpRequest

var http = createRequestObject();
function createRequestObject() {
var objAjax;
var browser = navigator.appName;
if(browser == “Microsoft Internet Explorer”){
objAjax = new ActiveXObject(“Microsoft.XMLHTTP”);
objAjax = new XMLHttpRequest();
return objAjax;


function getNewContent(){‘get’,’newcontent.php’);
http.onreadystatechange = updateNewContent;
return false;

function updateNewContent(){
if(http.readyState == 4){
document.getElementById(‘Content’).innerHTML = http.responseText;


function postForm() {
var url = “formentry.php”;
var formtag = document.getElementById(‘fmfield’).value;
var params = “newfield=” + formfield;“POST”, url, true);

//Send the proper header information along with the request
http.setRequestHeader(“Content-type”, “application/x-www-form-urlencoded”);
http.setRequestHeader(“Content-length”, params.length);
http.setRequestHeader(“Connection”, “close”);

http.onreadystatechange = function() {//Call a function when the state changes.
if(http.readyState == 4 && http.status == 200) {
document.getElementById(‘fomentered’).innerHTML = http.responseText;
document.getElementById(‘fmfield’).value = “”;

the functions are called through an onclick event
GET <a href=”#” onclick=”getNewContent()”>New Content</a>
POST <a href=”#” onclick=”postForm()”><img src=”Submit.gif”></a>

I couldn’t get it to work properly with a button with type image and i wanted an image so i did it with an <a> tag – i think it works with a normal <input type=”button” onclick=”postForm()”> But it won’t work if you have an <input type=”submit”> button.

I am still trying to figure out how to get it to work when the user presses return or enter – it calls the postForm() but refreshes the page.

If any one can help me on this please comment!!

Firebug, Pitfalls and Videos

Decided this is a good place to put notes for my final report – mostly critical evaluation, rather than a word document where i’ll never rememeber the title and end up opening a different one each time, at least here they’re in one place and i can browse through and pick bits out that might be useful.

So firstly testing – i have discovered how useful the firebug extension for firefox is. I’ve had it for ages and never used it but it’s fantastic. I found it particularly useful when developing the Ajax sections of the site as i could tell whether or not the script was making the ajax call and whether the problem was with an other area of the code. It was sometimes one or the other, but then i could fix the relevent bit instead of spending hours just messing around wondering what wasn’t working.

Secondly pitfalls – how did i create them? Basically, in most cases i entered the first tags that came to mind when i thought of the video. I figured that as this would make them the tags that took least cognitive effort to create, this would make it likely that players of the game would also think of the same tags. Some are very basic, some not so. I did watch a couple of videos and come up with tags that were based on objects or words that stood out. This was especially the case for videos in tougher levels where more pitfalls needed to be found.

What criteria did i use to select the videos? A painful process of watching clips, seeing if they made me laugh or at least smile, sometimes then having to rule them out because although the begining was funny it got a bit silly toward the end. I was also careful to avoid videos with strong language, sexual references or violence – so that ruled out half of what i had looked at. I have let the odd mild violence video through – comparable with Tom and Jerry or The Simpsons levels of violence and there is the odd isolated case of strong language. As my demographic age range is over 18’s then i reasoned that the content was suitable for the percieved audience. Some videos aren’t histerically funny, but were ‘nice’ videos, or scary or simply high rated and i was running out of time and patience so they’ve made it in there. 3 of the videos are what 3 very kind people uploaded to my youtube group. If i get more and they are suitable, i will consider adding some extra videos to the game over the next couple of months as it will keep it fresh.

I have one problem left to fix with the game points and the tags not updating from a set timeout function which is frustrating – again it’s because i’m trying to be clever and use ajax! i need to build my admin section and create a questionnairre. i think that’s it i’m so close, i reckon 3 or 4 hurdles to go to the finish line.

I’ve nearly built a game!!

Wow, i’m nearly there.  Taking a breather from coding to write this, i have programmed solidly pretty much for over a week.  I’ve been dreaming about programming, a little piece of my mind has constantly been writing scripts no matter what else i’m doing.  But it’s been worth it as i nearly have a finished game.  I have managed to get the http requests working which was a real headache The most annoying thing, once i’d fixed something i’d be all happy and then it would have created a new problem that i’ve had to fix.  Sometimes the fixes are not best for usability, ie the form submits using ajax so that the page doesn’t refresh, but if the user presses enter/return it doesn’t call the function and attempts to submit the form normally.  I couldn’t find a fix for this as any onkeypress functions made the page refresh even when calling the ajax function.  Very irratating so i have had to resort to disabling the return key on the text box.  Not the best move, it’s annoying me so will probably annoy lots of other people too, but at least their video isn’t refreshing after every tag entry, that would annoy them more i reckon.

My  problem solving skills have been pushed to the limits coding this game.

The final problem that i don’t know if i’ll be able to solve is that as the video is being downloaded from youtube, and entering tags and getting suggestions involves requests to the server, the whole thing is very slow – any i have a good internet connection.  I’ve thought about pre loading, but to pre load all the videos may mean a user is waiting 10 minutes before they get to play the game so they’d have left by then anyway.   So not sure what to do about that.

I think i’m going to leave the board of shame off.  To allow other users to state whether or not they think a tag is relevent or not will involve moderation, which i don’t have the time to do.  Also it is my opinion over another persons opinion over anothers, so i’ve decided to trust that people are not going ot cheat!

The only other big job now is to create the page that shows thumbnails of the videos and the tags entered and then the admin section which will allow me to pull off stats.  And then i need to make it look pretty.  So the end of the month is looking attainable – never thought in a million years it would be!

Well ths has been a brain dumping excercise to try and clear my  mind a bit – and also have somewhere i can read it back again in future in case any of it is relevent for the critical evaluation.

Programming Hell

Oh how i enjoy my work!  I do really.  Especially at the end when it’s finished and i have something to show for the blood, sweat and tears!  I haven’t written anything for ages, obviously i used this a distraction when writing my literature review.  Or the novelty of blog writing ran out very quick, most likely a bit of both.

Anyway i have finished the literature review.  I created a poster which was submitted to the i3 conference at Robert Gordon University.  I met some lovely people at the pre-conference workshop, which i really enjoyed and now I am busy building the game itself.  And it’s as difficult as i anticipated.  Thankfully there are some really helpful forums and tutorials out there to help me find out how to do things.

The best language for a game is probably Java, as I’m using YouTubes Flash player to embed the videos, i could have used Flash 8 to create the game – as i don’t know enough about either i am using php and javascript.  As my research is all about Web2.0 i am also going to use aspects of Ajax.  I need the XMLHttpRequest() function in particular as i need lots of bits of the page to update independently without refreshing the page.  A challenge and a half – never created an Ajax app before.   I’ve barely got passed document.write in javascript, so I’ve set myself a big challenge.

What a sense of achievement i will have when i get the game built.  At the moment i can’t quite get my head round all the bits and bobs I’ve got to bolt together to get a fully functional game that does everything i want it too.

It’s going to be a bit of a hack job. but I’m sure I’ll get it done.  At the moment i am using dreaded frames – i hate myself, i feel bad enough for using tables instead of rising to the css and div tag challenge.  I figured my time better spent in programming than messing about endlessly with layout.  I know where i am with tables.

I’ve waffled enough – back to work.

I’m going to post a link to the registration page of VideoTag – if i put it here no one will read it, i’m sure anyone who stumbled upon this page has now got bored of my waffle!