Session organised in collaboration with Fundación Telefónica.
WORKSHOP: Facesponge with Aymeric Mansoux and Gerald Kogler. 10h-14h
Have you ever wondered what is going on “behind the scenes” on social networks like Facebook? In this workshop we will explore our so-called social data and get a glimpse at how it is viewed by the company and third parties who access it. In order to break several myths about Facebook applications, you will be invited to take part in designing small programs that extracts and manipulate you and your friend’s online information. Nothing will be written back to Facebook at any time, we will only be reading existing data. No data will be collected or viewable by anyone else.
No programming experience is required. Basic knowledge of javascript can be useful to explore more advanced possibilities of the Facesponge sandbox.
This workshop is part of the Naked on Pluto project, a critical text adventure Facebook game concerned with issues of online privacy and control within centralized commercial social networks, designed and written by Marloes de Valk, Aymeric Mansoux and Dave Griffiths.
Facesponge is developed in collaboration with Baltan Laboratories.
All Naked on Pluto software is released under free culture licenses.
Schedule:
* Naked on Pluto presentation
* Gameplay session
* Anatomy of an FB app
* Introduction to Facesponge
* Breaking FB apps myths
* Group discussion
Practical information:
* The workshop will be taught in English.
* You will need to bring your own laptop.
* Places are limited.
DEBATE: Identity and simulation. Artificial life on the networks. With Jussi Parikka, Pau Waelder, Aymeric Mansoux and Mónica Bello. 19h-21h
Internet is changing our way of understanding the public space. The Web has become a dominant structure that covers all aspects of contemporary society. The proliferation of virtual agents, designed to stimulate non-fortuitous reactions and meetings, reconfigures the profile of individuals in dynamics that are innovative but also invasive, and generates new forms of control. In this brand new context, identity and simulation become decisive themes of behaviour on the Web.
REGISTRATION:
Workshop + Debate: 6€
Please send an email explaining the reasons for your interest to cursos@cccb.org
Limited capacity!
Debate: 3€
Tel-entrada (tel. 902 101 212 / www.telentrada.com)
CCCB page for the event
In the last days Dave and the whole VIDA team are putting together the final bits of the installations. Come and check the result from the 16th of the 19th of this month.
]]>My first approach was to write a scheme bricks representation for Javascript objects, and see how bits of the game looked if rendered in this way.
This is part of the ArrivalLobby, and all the internal information is present with no explanations, which is great, but it results in very large images. The next thing was to try filtering the objects to remove most of this information:
function node_filter() { this.filter=function(obj) { return {objects:obj.objects.map(function(object) { return object.name; })}; } }
This code provides a single method for filtering locations in the game – it simply returns an object consisting of a list of names of things found at that location. These filters can be easily changed over time, to include different information or process it in different ways. Rendered with the same code as before, this makes the location diagrams much smaller:
Add a few more locations, put them together in a circular formation (the projection will be onto the floor space in the gallery), add some bezier curves to indicate paths between locations and it looks like this:
There is also some relatively complex jiggery-pokery to detect when bots have moved from one location to another and animate them. The moving bots display more detail including what they are wearing and who has ‘liked’ them. In this image you can see the AdverBot004 moving to the HelpDesk, and the HyperClock and GreenwichClock on the upper right as they move from the Palace Garden.
]]>
(Programming a spybot with it’s behaviour)
Eventually the plan is to be able to program the bots fully within the game client – this is still a long term goal, but there are of course some fairly complex security problems with this idea.
(dressing a AudienceBot with another object)
Not all players have the ability to use these secret commands right now, in order to access them a player has to be carrying a special object (also known as a “Golden Medallion”). This allows you access to all areas of the game, including an “administration room” and various other secret powers.
]]>Just like our cleaner bot, we will be using existing platforms, more precisely the newspaper will be a good old WordPress blog and each bot will have its own editor account. Thanks to XML-RPC, making the bridge between EVr14 ecosystems and the blog was quite trivial.
#!/usr/bin/python import xmlrpclib, sys target = 'http://nothing.now/xmlrpc.php' if len(sys.argv) >= 6: try: post = {'title': sys.argv[4], 'description': sys.argv[5], 'categories': [sys.argv[3]]} blog = xmlrpclib.ServerProxy(target) blog.metaWeblog.newPost('Plutonian Times', sys.argv[1], sys.argv[2], post, 1) except: print 'OOPS: ' + str(sys.exc_info()[1]) else: print 'Usage: '+sys.argv[0]+' user password category title content'
We still have to figure out what kind of generative information will be made with this script when it’s called from scheme, but no matter what in a couple of days we should have the first edition of this newspaper up and running!
]]>I’ve been reacquainting myself with bot programming, and trying some experimental and dangerous things with conversations.
As an example, here is a bot that simply repeats things it overhears – if you throw a couple of these in a room and start them going by saying something – chaos follows as they start to repeat you and then each other’s messages:
(define (talkative-action entity graph node) (if (and (< (random 5) 3) ; do this 3 out of 5 times (< (length (pluto-node-old-messages node)) 10)) ; safety valve (foldl ; loop over all the messages (lambda (msg node) ; get the name of the sender (let ((name (entity-name (pluto-node-entity-get node (pluto-message-from msg))))) (pluto-say-to-random ; make a new message node ; to a random entity entity (string-append ; build the message (choose (list (string-append name " just said: ") (string-append "I just heard " name " saying: "))) (pluto-message-txt msg))))) ; repeat the message node (pluto-node-old-messages node)) node))]]>
Here is the code for the tweepy daemon:
#!/usr/bin/env python import tweepy import os.path import time auth = tweepy.OAuthHandler("your consumer key", "your consumer secret") print(auth.get_authorization_url()) # you need to visit this site, logged in as the twitter user verifier = raw_input('Verifier:') # then input the verifier code here before continuing auth.get_access_token(verifier) api = tweepy.API(auth) # this api allows us to read or write from the user's account while True: if os.path.isfile("msg"): # look for a file called "msg" f = open("msg", "r") api.update_status(f.read()) # dump the contents into the twitter stream f.close() os.remove("msg") time.sleep(10)]]>
On the left is the naked on pluto server, the machine in the middle is your computer running the client in the browser, and on the right is facebook’s server.
The first thing to notice is that the NoP server doesn’t ever communicate with facebook directly. The other thing to notice is that we never write anything to your facebook account.
The client only passes your name and facebook ID number to the server, where it gets incorporated into the game world. This information is considered public by facebook so it’s a usual thing to do. We use it to pass back to other players, so they can see who else is playing. The facebook ID is used to get the right icon for the players, but we also use it to find the player’s in-game entity when they log in (they are unique – so two people with the same name can play).
All the other information you can see – your friends and their data, is displayed by your client based on the data read by your machine from facebook. None of this gets passed to our server or other players.
For more information on how this all relates to facebook privacy policy, see the plutonian clothing stragegy.
]]>