The Thumbtribes Project
Imagine when you sit on the same train everyday commuting to work. You see the same people. Where do these people go after work? Do they move in similar circles to you? Do you have similar interests? What are the chances of walking past somebody in a street miles away from your home and then finding out you live in the same neighbourhood? Thumbtribes is a social experiment which hopes to study such randomness. Why? Because even something that seems so simple can be technically challenging. What are the chances of overcoming issues of critical mass?
Thumbtribes D-Bus proximity daemon
Introduction
Thumbtribes is a light-weight, low-bandwith proximity server which runs as a D-Bus daemon. A typical use case would be to obtain the distance of another device and trigger an alert when that device is within a certain distance. The daemon has been designed to continually run and attempts to minimize the amount of traffic by using encoding techniques based on ASN.1 Packed Encoding Rules.
The basic usage is as follows:
Connect to the daemon and ping in your location. This serves two purposes. It will update your position relative to others in the system. It will also update your local database containing the distance of other users. To control how many users your database may contain you can set a distance filter. For example, by specifying a distance of 1000 kilometers you database would only contain users who are within that distance. The ping action could be considered "self-clocking" - to get more up-to-date information ping in more frequently.
After a ping you can then issue a lookup on an id to find the distance of a specific user. The id may be something private that you share with somebody else or might be something more public like an email address. Thumbtribes does not enforce any standard for this and therefore requires no account creation/validation to be used. The current version of Thumbtribes is going to use Bluetooth MAC addresses as the id. To support this there is a tool called btlogger which will log addresses to an sqlite database.
A basic command line client exists to connect to daemon and demonstrate the functionality.
Methods
connect(id)
Connect to the Thumbtribes daemon where id is a string representing your unique user id. This method has no return value.
dbus-send --type=method_call --print-reply --dest=org.zedstar.Thumbtribes /org/zedstar/Thumbtribes org.zedstar.Thumbtribes.connect string:john@doe.com
disconnect
Disconnect from the Thumbtribes daemon. This method has no return value.
dbus-send --type=method_call --print-reply --dest=org.zedstar.Thumbtribes /org/zedstar/Thumbtribes org.zedstar.Thumbtribes.disconnect
set_distance(kilometers)
Set the distance you wish to filter responses on. Distance is an integer expressed in kilometers. This method has no return value.
dbus-send --type=method_call --print-reply --dest=org.zedstar.Thumbtribes /org/zedstar/Thumbtribes org.zedstar.Thumbtribes.set_distance int32:10000
get_distance
Returns an integer representing the current distance filter in kilometers.
dbus-send --type=method_call --print-reply --dest=org.zedstar.Thumbtribes /org/zedstar/Thumbtribes org.zedstar.Thumbtribes.get_distance
ping(latitude, longitude)
Ping in your location by supplying latitude and longitude as doubles. The return value is an integer representing the number of users found who are currently using the system and are within your distance filter. A value of -1 indicates the ping failed.
dbus-send --type=method_call --print-reply --dest=org.zedstar.Thumbtribes /org/zedstar/Thumbtribes org.zedstar.Thumbtribes.ping double:51.5 double:-0.15
lookup(id)
Lookup the distance of another user in the system by specifying their id as a string. The return value is an integer representing their distance from you in meters. If there is no matching id the return value will equal -1.
dbus-send --type=method_call --print-reply --dest=org.zedstar.Thumbtribes /org/zedstar/Thumbtribes org.zedstar.Thumbtribes.lookup string:foo@bar.com
Signals
already_connected
Occurs if you try and connect to the daemon having already connected without disconnecting.
thumbtribes_exception
Handles various kind of network errors. On receiving this signal you will need to re-connect to the Thumbtribes daemon to continue.
changed_distance
Simply informs you that the distance filter was changed.
outofrange_distance
Occurs if you try and set an invalid value for the distance filter. Valid values are 1 to 20,000 kilometers.
invalid_coordinates
Occurs if the coordinates supplied are not in a valid range.
Interface
https://projects.openmoko.org/docman/view.php/136/25/thumbtribes-dbus-interface.xml
Future work
At the moment everything is run and controlled from the command line. I have no intention of building a GUI but would like to have some kind of control panel applet running from the window manager.
All kinds of data could be shared. I am interested in using accelerometers to provide a gesture interface to transmit your current mood to others.
Contact
Please contact me using jptmoore at gmail dot com.
I am interesting in possible academic collaboration with social scientists and mathematicians.
(last edited August 26, 2008) - Read Only
[info]
[diff])
FindPage by browsing or searching
5 best incoming links:
TextFormattingRules (8), RecentChanges (2), TestPage (1)
5 best outgoing links:
btlogger (4)client (4)
5 most popular nearby:
btlogger (879), RecentChanges (661), client (461), TextFormattingRules (458), TestPage (420)
|