Home My Page Project Tree Code Snippets Project Openings Thumbtribes
 
 
Summary Forums Tasks Docs News SCM Files Wiki
 

Front Page

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)

Powered By GForge Collaborative Development Environment