Home » Miscellany

The Responsibility of Web App Programmers

5 February 2010 One Comment

I had an interesting experience yesterday that illustrated to me the danger of building Twitter-based web applications without seriously considering the consequences of what you are doing. It was a perfect low-consequence wake-up call on the incredible responsibility web application programmers have.

It was basically a case of my Twitter stream being SPAMmed by an application that I didn’t know existed and don’t really care about. This is pretty important to me since I’m developing the “for fun” side project Tweetscore, which might have some day done the same thing.

Tweetscore is an experiment in contextual ranking systems1 designed so that Twitter users can send each other points in their stream.

Yesterday, I met with another developer who is creating a Facebook application and who is interested in combining his app with Tweetscore in some way. After our meeting, we both made posts on Twitter giving each other points for fun (because, well, we were just talking about that). Everything seemed peachy.

Until about 5 minutes later, when I got a message from the @playtagnic account that stated that my friend had given me points on PlayTagnic.

What?

Heading over to the site, it turns out that the PlayTagnic application, which was following my friend’s Twitter stream, parsed out his comment about giving me points, and pulled my Twitter account to create a profile on the Tagnic website so that it could list those points under it.

My first thought: “What? No one was talking to you!”

But wait, there’s more.

Because my friend used Tweetscore’s “conversational aside” post format (@tweetscore, give @somebody X points for something), the Tagnic web application’s parsing strategy duplicated the points and did the same thing to the Tweetscore account profile.

So, now, instead of just one user suddenly having a profile that was generated completely out of context, there are two users that do.

My biggest worry is that now this rogue PlayTagnic application is going to parse my Twitter stream, and start SPAMming other people with messages that I never intended it to send, or even see!

The Responsibility of Web Programmers

This is one of the main problems with easy web application frameworks, and with programming for a platform such as Twitter.

In a word: Context.

There is more information than you can imagine flowing through that firehose, and people are using the information in ways that are often vastly different than you are, or have imagined. Thus, any sloppiness in your design strategy is going to be magnified… firehose-style.

PlayTagnic is an example, and an ironically timed one. The entire purpose to Tweetscore is to experiment with the possibility of keeping a Twitter application’s involvement completely contextual. I’ve worked hard in early development to make sure that it doesn’t send messages to people who are not interested in its existence. So it’s pretty ironic when the use of Tweetscore itself causes another application to use the information in a way that’s completely out of context.

My friend wasn’t playing their game, he never intended to introduce me to their game, yet there it was, forcing it’s way into our conversation and causing a conceptual dissonance by sending us random messages out of context– out of left field, actually.

Current web frameworks make programming easy. Sometimes I wonder if it’s too easy. You can create and deploy a web application in just a few hours that has the ability to affect literally millions of people.

Talk about needing to acknowledge your own responsibility!

Coda

We have a serious responsibility as programmers, moreso now than ever. Programming for a public application is hard, it’s made harder by informationally dense firehoses like Twitter. We shouldn’t make things even harder, on ourselves, on each other, and on the innocent bystanders, by causing problems that are orthogonal to our own sphere of concern.

This was a lesson to me. A lesson that I need to be careful. I don’t want to create an application that does the same thing as PlayTagnic, and force it’s way into people’s stream as the equivalent of Twitter SPAM. I’ll need to think real hard now about Tweetscore’s parsing, and maybe ensure that I only parse conversations that I know are in context.

I have a responsibility as a programmer. I hope I take that seriously enough.

Crow, fire up the Hexfield View Screen!
  • Digg
  • del.icio.us
  • Facebook
  • Google Bookmarks
  • FriendFeed
  • HackerNews
  • Identi.ca
  • LinkedIn
  • Netvibes
  • Reddit
  • Slashdot
  • StumbleUpon
  • Suggest to Techmeme via Twitter
  • Technorati
  • Twitter
  1. Some people call it social currency, but I think that’s taking things a bit too seriously. The anthropologist in me wants to see the word “currency” tied to something much more culturally substantial []

This website uses IntenseDebate comments, but they are not currently loaded because either your browser doesn't support JavaScript, or they didn't load fast enough.

One Comment »

  • jnpdx said:

    Interesting idea. I'm actually surprised that Twitter suffers from as little spam as it does, given how easy it is to produce.

    @Tagalus only reponds to messages sent directly to it, but it did have one somewhat nightmarish incident when the IDs that Twitter assigned to each tweet became longer than the data type that most people used to store them in their databases (unsigned integer). The result was that Tagalus kept responding to people over and over again (every minute actually) because it couldn't "remember" that it had already done it. Luckily I shut it down within about 20 minutes, but it was definitely a scary moment – unintentional spam is a good way to kill your reputation.

Leave your response!

Add your comment below, or trackback from your own site. You can also subscribe to these comments via RSS.

Be nice. Keep it clean. Stay on topic. No spam.

You can use these tags:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre lang="" line="" escaped="">

This is a Gravatar-enabled weblog. To get your own globally-recognized-avatar, please register at Gravatar.

Powered by WP Hashcash