moodgeist: March 2006 Archives
As published previously, Moodgeist publishes the mood messages of all your contacts to the world. We haven’t got too many bad reactions to that, but we realize that this may be undesirable in some situations, no matter how nicely we word it.
It’s always safer to go for opt in. So I walked down the street today going hmm… how can we have an opt-in for Moodgeist? If we only allow people to ping their own mood, this will never fly. And Skype at this time doesn’t provide many controls for developers to enable easily developing such tools… more on this below.
When suddently it dawned to me. We already have an opt-in which we can “leverage” (ahhhh I love inserting random corpspeak!) here. It’s off by default. And people who are interested in broadcasting themselves to the world turn it on.
It’s called SkypeWeb.
So we made an update. As of this moment, we capture moods of only those Skype Names who have SkypeWeb enabled.
Drop in just five new lines of code and you got a noise keyword filter. Some keywords are “noise”, not adding any significant value being there. So now we have a filter that removes common English words such as “that”, “this”, “with” from the list, giving more focus to the actual “content” that people put there. And we can add and remove keywords with a few mouseclicks with no need to hardcode anything anywhere. I like automatic admin backend generation :)
UPDATE Feb 2007: Someone asked what’s the noise keyword list. There’s no online list, but at this time, the noise keywords are: “than”, “that”, “from”, “this”, “with”.
We now filter “too similar” moods. If you ping over a mood that is slightly different from the previous few ones to this user, but still “too similar”, you will get a “200 Too Similar” response (also updated the pinger protocol post to reflect that) and it won’t be captured. This is to make the database more interesting and representative and less biased towards overloading it with only slight changes.
What is Moodgeist?
Moodgeist is an experiment to show what’s currently happening in the “Skype Land” and what’s the Skype community’s collective state of mind.
How can I use Moodgeist?
You can use Moodgeist in two ways.
- if you just want to browse the data, then you can do so right on moodgeist.com front page, or use the API if you need some other feeds.
- it would be great if you also pinged Moodgeist with data for your own contacts. This helps us all to get a more complete “big picture”. For this, please install the Pinger program and just leave it running — there’s nothing more you need to do. You will then see data from your own contacts showing up in the “collective state of mind”.
How does Moodgeist work?
Moodgeist consists of two parts.
- “pinger” is the program that sits in the computers of the users who have chosen to install it, and “pings” over the data from their Skype contact lists to the Moodgeist server. Read more about the pinger and Ping protocol.
- “server” is moodgeist.com — it collects and stores the pinged data and publishes it for everyone to see and use.
Are there any privacy or security concerns around Moodgeist?
The “mood messages” concept is quite new and part of Moodgeist’s objective is to test out how people feel about this kind of thing. See this discussion for more.
What does “moodgeist” mean?
Moodgeist is a derivative of the “zeitgeist” theme. (Thanks to Teller for the name suggestion.) We call it “moodgeist” because it’s based on Skype’s “mood messages” feature.
Who built Moodgeist?
Moodgeist is an off-hours community initiative by some people working at Skype and some other people interested in Skype. See this for more.
I have some comments or questions. How can I contact you guys?
It’s great you have feedback. Please post them on your blog and trackback to us, or post your comments in this blog. If you want to write us e-mail, you can do so by writing webmaster ‘at’ moodgeist.com.
Here are the feeds and URL-s you can use with Moodgeist to retrieve the data. Some people would also call it the “Moodgeist API”, but API is a bit of a fancy word for a few simple URL-s, so we just call them URL-s and feeds.
Quick start
First off, if you’re a nerd and want to get going quickly then here are the feeds in regexp format, straight from the config. Split on multiple lines for layout — each expression actually spans two lines.
'^/do/view/latest/((?P<count>(10|50|100))/)?
((?P<language>[a-zA-Z][a-zA-Z0-9-]+)/)?$'
'^/do/view/latestcompact/((?P<count>(10|50|100))/)?
((?P<language>[a-zA-Z][a-zA-Z0-9-]+)/)?$'
'^/do/view/latestfeed/((?P<count>(10|50|100))/)?
((?P<language>[a-zA-Z][a-zA-Z0-9-]+)/)?$'
'^/do/view/keywords/((?P<count>(10|50|100))/)?
((?P<language>[a-zA-Z][a-zA-Z0-9-]+)/)?$'
'^/do/view/keywordscompact/((?P<count>(10|50|100))/)?
((?P<language>[a-zA-Z][a-zA-Z0-9-]+)/)?$',
'^/do/view/keyword/((?P<count>(10|50|100))/)?
((?P<language>[a-zA-Z][a-zA-Z0-9-]+)/)?(?P<keyword>.+)/$'
'^/do/view/keywordfeed/((?P<count>(10|50|100))/)?
((?P<language>[a-zA-Z][a-zA-Z0-9-]+)/)?(?P<keyword>.+)/$'
Ehrm… WHAT? Ok, here’s the English version.
There’s a bit of controversy in how Moogeist treats users’ mood messages. In short, it can be summarized as follows.
In Skype’s contact and authorization model, mood messages are displayed only to the contacts who you have “authorized” (or, in recent version, “exchanged contact details with”). Moodgeist circumvents this by displaying mood messages to the wide world, including people who you haven’t authorized.
Now… at first sight, this may seem like a pretty unsmart thing to do and actively violate the mandated privacy model. But we decided to go ahead with Moodgeist in its current format for the following main reasons. (UPDATE March 29: in addition to what’s said below, we now use SkypeWeb for opt in.)
The moodgeist pinger protocol is how Moodgeist collects its mood messages. We provide a reference Python client (see below), but you are more than welcome to contribute a pinger of your own, or embed MoodGeist into any of your Skype add-ons. There’s also an alpha Win32 GUI client — if you want it, ask Jaanus or Kevin.
Essentially, the ping is a simple HTTP POST request to the following URL: http://www.moodgeist.com/do/ping/. The POST must have these parameters. All parameters must be present.
| parameter name | example value | maximum length | can be empty? | comment |
|---|---|---|---|---|
| protocol | 1 | 1 | no | The Moodgeist protocol version. Currently, only “1” is defined. |
| skypename | echo123 | 32 | no | Skype Name whose mood message you are pinging over. Note that 32 is also the maximum allowed length of a Skype Name in Skype. |
| mood_text | I am very happy | 256 | no | The pinged mood message |
| poster | echo123 | 32 | no | Skype Name who is running the pinger and pinging over the mood message. |
| skypename_language | fr | 7 | yes | Language set in skypename’s profile. May be blank. |
All parameters except mood_text should be plain ASCII. mood_text supports international characters — it the POST, it must be a simple URL-encoded UTF-8 bytestream. UTF-8 also happens to be the encoding that the Skype API returns messages in, so you can just “pass them through” from the API to the POST (after proper URL-encoding, of course).
The ping URL returns a simple string with the numeric code and text explanation. The numeric code is also the HTTP response code.
- 200 OK. The server successfully received the ping and stored the mood message.
- 200 Duplicate. The server successfully received the ping, but this mood message was already recently captured for this Skype Name. It is possible to ping the same mood message twice if there were different moods set and pinged inbetween them, but recent duplicates are filtered out.
- 200 Too Similar. Ping received OK and the mood is slightly different from previously known, but still too similar to be considered.
- 200 SkypeWeb not enabled. That Skype Name has not opted in to SkypeWeb. Mood not saved. Read more on this update.
- 400 Invalid Protocol. Protocol number was invalid or unknown.
- 400 Parameters Missing. Some of the required parameters were missing.
- 400 Parameters Invalid. Some parameters had invalid contents (like Skype Name being too long).
- 400 Parameters Empty. Some of the required parameters had empty contents.
- 403 Forbidden. For various reasons, access to the ping node may have been denied to this pinger.
- 500 Server Error. There was a server-side error (like the database being down or crowded for a second).
Reference client
There’s a reference (example) Python client available: moodgeist-reference-pinger.py.txt. To run it, you also need the Skype Python API wrapper, although I patched a bit for my purposes: around line 170, disable all the self._send commands so that it wouldn’t send any “startup” commands on its own. Here’s my patched version — just drop it to Python’s “site-packages” folder.
The reference client illustrates how it should work — first you ping over everyone’s current mood from your contact list, and then you sit around processing ongoing mood change events.
You can leave the reference client running also for daily use if you’re of the hacker type, but for daily use, it’s not very practical, so we welcome friendlier versions of the Pinger, and also non-Win32 ones. The API connection sometimes dies for no apparent reason and it won’t inform you, so it’s not very resilient — if you notice the API connection was lost, just re-run it.
Moodgeist Pinger is the program that sits in your computer, collects your Skype contacts’ mood messages and sends them over to the Moodgeist server. For each “ping”, the following data are sent:
- contact Skype Name
- contact mood message
- contact profile language (so that we could provide feeds of messages in different languages)
- your own Skype Name (so that we can count how many people post to us)
At this time, we do not have a Pinger available that you could easily install and use. We have an alpha one for Windows that can act up a bit but mostly works. If you want it, the right thing to do at this time is just ask Jaanus or Kevin for it. We are thinking of getting one any time soon now — contributions would be welcome. Especially for non-Windows platforms like Mac OS X. If you make one, then please tell us so we could link to it and perhaps also host it here.
To write your own Pinger, see the Moodgeist Pinger protocol.
Moodgeist is an open community initiative by some people at Skype, mainly myself — I got the idea, coded up the system out of my own time and basically “just did it”. Other people have helped me a bit with design and testing out of their own time — thanks. Also involved is Kevin from KhaosLabs who coded the first version of Pinger for Windows and helped me with ideas and thoughts.
You could say it’s a Skype initiative, but we’re deliberately not positioning it as a Skype “offering” because of the experimental nature of the project. Moodgeist serves as a testing and experimenting platform for some of the ideas we have about social tools, personal publishing, feeds, visual representations and such. Over time, the results and feedback of Moodgeist may make it back to Skype software and platform.
So we are doing this first because we have these ideas we want to try out, but secondly, also because it’s just fun, and we haven’t seen such fun efforts around Skype and personal publishing happened, so what’s a better way to get them done than just do them :) We have many ideas about where we may eventually get with this, but the ultimate test of ideas is always when they are “out” on the “market”, and this is why we put Moodgeist out even if it’s not that polished.
A very important part of Moodgeist is to engage with the community and see where it takes us all. If you have any cool ideas about how to use the current feeds, then please do them and tell us — in your blogs and e-mails and other forms of feedback. If you have ideas about where this could or should go, post your comments. If you think we could do something better or are simply dead wrong, tell us too.
