The First Bots

Many years ago, when App.net was a reluctant social network1, people had a tough time finding new members to welcome them to the community. There were a lot of accounts being created every day, but most of them were completely automated and quite literally spammed the global timeline, rendering the stream of posts all but useless. People lobbied the creators of the platform to do something about this, but the requests fell on deaf ears. It was at this point that I decided to take matters into my own hands and created Nice.Social, a web client for App.net, along with an API that would read the global timeline in an effort to determine which accounts were powered by a person and which ones were just automatons. The API was called NiceRank and, in the space of four months, it was able to accurately identify the viability of an account with a high degree of accuracy. By the time the service shut down in 2017, a total of 87 spamming techniques were identified in total across every published post to the network. Not everyone liked the system, but it did make it easier to use the global timeline to find real people — which is why the thing was created in the first place.

Given my rather public stance on spam2, it may be a bit unexpected to hear that I plan on creating not one, but two bots for the 10Cv5 platform. These will operate independently of the main source code, but they'll perform the following functions:

  1. To send a welcome message in the Global timeline to let people know there's a new member, and to give new accounts something to see in their Mentions
  2. To share earthquake data

What makes these bots different from a blind spammer, though, is the interactions that will be possible. Much like the bots on IRC, people will be able to ask questions and get an answer back. For me this will be most useful with the earthquake bot, as there is a lot of seismic activity in Japan. The initial data integrations will have just information on quakes in and around Japan while other regions are added later. What I'd like to be able to do is @mention the earthquake bot and ask a question like "@bot last earthquake near Toronto" and have it return a simple message with the data and map outlining the epicentre and maybe intensity rings. This sort of tool is not at all unique or new. Like I mentioned earlier, this is something that people have been doing on IRC for a quarter century through the use of eggdrop bots. What I would like to test is whether something like this would make sense on a service like 10Centuries.

There are some features that need to be restored and rolled out before these tools come online, though. Right now everyone who uses the service is generally limited to three views: the Global Timeline, Mentions, and Interactions. If there's an automated poster in the Global timeline, then there's a good chance that people will see the account as spam, which defeats the purpose of a person-readable Global timeline. In order to keep this clean, bots will be using Personas that are clearly marked as such. If a person wants to interact with a bot, they'll need to change their visibility filter settings to include bot messages, then — if they want to see the posts from the bot regularly — subscribe to updates.

App.net was theoretically supposed to work in a similar fashion. As per the terms of service, a broadcast account was supposed to have their type set as "Bot" when the account was created. More than 90% of the accounts filtered out by NiceRank were marked as human. To ensure a similar thing does not happen on 10C, the code for NiceRank has been "dusted off"3 and would be much more useful as part of a core API than operating as an auxiliary service. Should there be a deluge of spam (or RSS feeds), then the API can be expanded to include NiceRank to first flag, then re-assign personas that are incorrectly labelled.

Unlike the previous version, there would be no visible score. That was perhaps the biggest mistake I made when the tool was on App.net, as a number of people misunderstood the intent behind the service and demanded they be de-indexed. It was unfortunate and probably preventable had I better communicated why there was a score and how it was calculated.

The short term goal is to have these bots set up and ready to join the network next week. There are a number of features that need to be tested more and deployed before any bots can go live. Hopefully the interactive tools will be seen in a more positive light than the blind broadcasters who just shout mindlessly into global timelines everywhere.


  1. I don't know how else to describe it, given that the creators of the platform were hoping the system would turn out to be a unifying API that could be used for a whole host of things, not just a social network. That said, people got hooked on the idea of a "Twitter replacement" … including me.

  2. I am not a fan.

  3. Just a git clone nicerank.git sort of thing so that it's immediately available. The last update was in January 2017, and the code is … disappointingly ugly.