Google Chart API

Playing around with Google Chart API to create QrCodes. The code below is generated by a call to the API... very handy indeedy.

Check it out here http://code.google.com/apis/chart/docs/chart_wizard.html

Google Earth Game

I've just finished the Google Earth game for this weeks assignment. Design by committee is always hard, especially if you are communicating asynchronously; but I think we've got a good concept and an entertaining and educational game.

If you have Google Earth installed you can download this kmz file and start playing straight away.

Enjoy :-)

Changing identity in online society.

It's getting close to the end of the taught part of term and time to start writing more frequently.

I've been asked this week to consider how the various identities, personae and aliases that we construct for use online are relevant to e-learning. Personally, I can count about ten individual online alter egos that I would regularly "use"; and although I've made efforts to aggregate those through this site, there will always be sides to any person which remain hidden. Perhaps I am a level 50 dark mage, perhaps I masquerade regularly as a lonely housewife, perhaps I hack NASA on a daily basis searching for alien evidence. We can only hope to know one another through the things we share.

It's an area that I've already been giving some thought to after discovering the work of cultural anthropologist Mike Wesch and his students. He offers the suggestion that new media bring new forms of self-understanding. Here's a great video of a lecture presented at the 2009 Personal Democracy Forum entitled, The Machine is (Changing) Us: YouTube and the Politics of Authenticity. It's insightful, entertaining and ultimately quite hopeful.



Two of his references are particularly relevant to the week's theme, so I did a bit of web trawling to be able to expand on them here:

1. Charles Taylor in his “Ethics Of Authenticity” tells us that humans are social creatures who can only truly understand themselves through interaction and dialogue with others. Thus dialogue allows us to construct our values and beliefs.

2. Neil postman in his book “Amusing ourselves to death” modifies McLuhan's aphorism that "the medium is the message" to read “the medium is the metaphor”, and says that each new medium offers new opportunities for new types of knowledge.

So how could new forms of self-understanding be relevant to e-learning? We could claim that the various personae and identities which we construct in online spaces are really helping us to understand ourselves, both as individual, (gestalt???) people and consequently, as learners too.

Dialogue is essential, and I seem to keep coming back to the idea that the web's social aspect is a real game changer for education. If our students are so fluent with social networks, and are possibly even more comfortable in these spaces than they are in the traditional halls of academia; then perhaps our focus should be on emphasizing peer supported, social learning more strongly when we consider such things as course design, lesson and exercise planning and maybe even course content itself.

Moving data in and out of Second Life

My plan for (virtual) world domination is moving fairly slowly, so I thought I might as well just release the voting code here. This is published under GPL3, so do what you want with it... reuse it, re-release it, sell it, whatever... just give me credit as the original author.

The following LindenScript code it adapted from the LSL Script Library. Everything in Second Life has a key which identifies it uniquely; in this case we're interested in the id of the http request itself, which is populated using the function llHTTPRequest. The webserver should respond with a standard http response, which we're capturing with the http_response function. If the returned id matches our known request id, we can be sure that we have the correct response. Then we just "say" the returned value to the avatar using llOwnerSay(). Kewl huh?


key http_request_id;
 
default
{

  touch(integer num_detected)
     {
        http_request_id = llHTTPRequest("http://www.example.com/vote.php?action=new_vote", [], "");
     }
 
  
  http_response(key request_id, integer status, list metadata, string body)
    {
        if (request_id == http_request_id)
        {
            llOwnerSay(body);
        }
    }
}

Ok, so once the user clicks the HUD we now have a http request which goes from Second Life out to your webserver. In this case the request is to a file named vote.php

The following PHP code is an example skeleton implementation. You'll see that SL sends it's own headers with the request. This allows us to grab all kinds of information about the avatar or script that made the request.

Notice that to send data back into Second Life, we just echo out as if writing to a web page. Anything which is in the response body will be picked up by our LSL script.


query($query_check);
	if($Db->affected_rows() > 0)
	{
		echo "You have already voted for this region.";
	}
	else {
		$query_vote = "INSERT INTO `votes` (etc, etc, etc);";
		$Db->query($query_vote);
		if($Db->affected_rows() > 0)
		{
			echo "Thanks for voting.";
		}
	}
}
else {
	echo "You can only access this page from within Second Life.";
}
?>

Second Life voting HUD

Well, I just couldn't stay away from the machine... so I've been messing around with Second Life again. The Second Life scripting language Linden Script allows HTTP requests to be made by any objects in world. I've used that functionality to construct a simple voting heads up display which can be worn by the avatar. Any regions which allow user executed scripts can be voted for by clicking the HUD vote button.
The votes are recorded in a database and displayed here: http://www.eirewave.com/secondlife/voting/