My new project: Tact, a simple chat app.

Moodgeist 2006-2010

October 21, 2010

I had a project once, called Moodgeist.

I was working on it actively in 2006 and 2007. Since 2007, it was sort of in a weird hibernated state where the server, receiving pings from people, was online, but the display part was not, so nobody really benefitted from it. Amazingly, when I went to shut it down, I found that some people are still running the pinging software and sending me the moods. The ping receiving server had been on autopilot for 3 years and was still working fine. I guess that tells you something about how stable my code and hosting setup can be.

I did a data dump and was amazed to find out that over time, the system had received over 400K moods. Yep, that’s four hundred thousand. I archived everything, took the site down, but I’ll come back to the data below.

Why shut it down?

Why shut things down this way? It wasn’t really costing me a dime to run it. Now, all the links to it and its blog and such are dead.

Two reasons: digital junk, and mental capacity.

Internet is full of junk, because it does not cost anybody much to make or maintain it. Old obsolete material is abundant. All URLs should live forever, right?

That’s the deterministic nerd-engineer way to look at it. Very binary. What’s put there must live, because someone somewhere MIGHT link to it, and someone else MIGHT want to follow that link in ten years, and it should still work.

Alan Cooper in his Inmates are running the asylum calls this thinking “homo logicus.” You are trying to design for all possible cases.

Real world does not work that way. Real world, and real people, if you go above deep levels of engineering and systems design, think about probable, not possible cases. Sure, old links die. Does it matter? Most of the time, no. Unless it is culturally important material, in which case, other ways will be found to preserve it.

On top of this, add Google where you can find anything in a second. Even if you completely change the URL structure of a site, and it still can be just somehow found by the Google spider, it’s in their index and searchable. Add latest browser innovation on top of it where search is either very accessible or downright merged with the URL field like in Chrome, and URL-s suddenly start mattering much less. Sure, they’re still there like the cable that is between your hard drive and motherboard, but it’s an irrelevant technical detail.

Another train of thought in the same direction was presented by danah boyd, saying that teens switch profiles and just abandon old ones, something that would be unthinkable to internet gurus. Now, I am not a teen, but I do think this indicates a direction where the world is going.

This brings me to the mental capacity argument. All of us have a certain capacity. Now, whether it changes over time and how different is for people is another matter, but let’s agree that at any given time, there is a capacity for us. And my claim is that everything you are working on, even if it is in a very dormant state, like, just a domain name you have to maintain or a piece of code running somewhere, is occupying a small slot of that capacity. And the more of these tiny things you have in your head, the less room is left for stuff that really matters. Like, your daily work or your active ongoing projects or what not.

Projects should either live or die. They should live to the fullest, enjoying their every second, not just hang around. If they don’t live, they should die. Dormant things are a waste of time and space. “Maybe something will come out of it” may work, but for me, it’s often an annoyance, not an opportunity.

My goal was not to shut down Moodgeist on its own; it’s part of a bigger digital house cleaning. I recently moved my Estonian blog from Movable Type to Tumblr, as MT is an obsolete, dying platform from my perspective. I’ll do the same with this English blog and then throw out a lot of design and code that I made less than a year ago, as the Tumblr site will be much nicer.

I also re-evaluated other code I’ve written over time, and either put it on Github or deleted it. Or, it just sits in a pile on my hard drive because code is cheap to archive. But it shouldn’t be littering the Internet if there isn’t a good purpose for it. Code is more than code; each piece of code you write is a journey you go through, to get to a place where you write better code. Rinse and repeat. The lessons matter more than what you made, which in many cases does not deserve to be saved.


I was clicking through old Moodgeist references. This post by Ross Mayfield is quite amusing, written at a time when it wasn’t quite clear what’s going to become of Twitter. Well, fast forward three years, and we all know how that went.

It’s an interesting argument that Moodgeist could have been something like Twitter for Skype. To me, that wasn’t the goal; it was always a personal research project, and I was too lazy to sell and push it more widely in Skype and align with ongoing work. Maybe it could have been closer to the product, but it wasn’t, and that’s it.

I stated an agenda for Moodgeist. Let’s go through it and evaluate.

First, it brings us interesting data for the public consumption.

That didn’t really happen, as I ran into some technical trouble with making it work properly, and shut this piece of the app down in 2007. But, I’ll come back to this later.

Secondly, it’s a personal development project that helps me learn how to plan, build, deploy and maintain websites, clients and protocols.

Now, this one actually went well. As I said, something I wrote worked for three years unattended, just quietly collecting data. A reflection of this is also the work I’ve been recently doing on Crème. I had not really thought about this, but it just struck me how Crème and Moodgeist are similar in several ways. The end user proposition is of course different: one was about collecting and re-displaying data, whereas the other is about providing superior Twitter experience on a personal device or computer. But, both of them involve working with clients and servers and hosting and protocols and all those under-the-hood things that make products tick, and it occurs to me that the work I’ve been doing with Crème cloud sync is remarkably similar to Moodgeist, and though subconsciously, was definitely inspired and encouraged by it in part.

Thirdly, it’s a first-hand experience of being a Skype add-on/extra developer, working through the API-s and policies.

I don’t recall the Skype API being particularly hard to work with. It just worked, though there were concerns then, as there are now, about Skype not being cloud-based (so there was no place for me to fetch the data from, I had to ping it from each end user device), not having login API, which I think are mostly still valid.

Recently, it seems that Skype has shifted attention from serving the long tail to working with fewer larger industry players, while publishing key code like SILK codec in their core expertise. I don’t think there ever was a healthy developer ecosystem around Skype like you see for, say, Twitter, Facebook and the like. Does it matter? Would Skype be different if there were many Moodgeists around it? Would it be better, or would it be worse? Skype has been, and continues to be, successful with the core product. Would it be Skype moods, and not Twitter, that we’d be seeing on CNN if things had worked out differently? If it had been Google, not eBay, who had bought Skype and actually invested in it becoming the Internet’s social fabric? Or would it have diluted the core offering and Skype would make less sense now, and would go the way of Buzz and Wave, another roadkill? I don’t know. All interesting topics for speculation, which I don’t particularly care for.

What should I do with the data?

Here’s a question. I have 400K+ mood messages. Here’s their partial schema, or the interesting fields of the data.

CREATE TABLE `moodgeist_mood` (
  `mood_text` longtext NOT NULL,
  `skypename` varchar(32) NOT NULL,
  `poster` varchar(32) NOT NULL,
  `posted` datetime NOT NULL,
  `remote_addr` varchar(16) NOT NULL,
  `skypename_language` varchar(7) NOT NULL,

Is there anything interesting I could or should do with this? Naturally, since it’s private data, I won’t be publishing the raw material, but I could run queries or visualize it in interesting ways. A general word cloud, or per-language word cloud? Time of day distribution vs geoIP vs language? Distribution of number of contacts?

I don’t really know what’s in the data. Maybe it’s a gold mine, or maybe it’s full of crap. The population was obviously self-selected since you had to run the app and thus it’s not reflective of… well, probably anything really, but still. As the rest of the project was a cool exercise, this would also be an interesting dataviz and analysis playground for me. Are there any good free infoviz/query/reporting/… tools available today, that would make this kind of analysis easy?