Ask HN: Review My (Twitter) App: Follow Ham
followham.com
followham.com
The hard part was getting ready for it. I decided to do a very basic spam filter for Twitter, one which looked only at the profile information, and not the text of anyone's tweets, since that'd require too many API calls without special access beyond even a whitelisted API account. I wrote some scripts that would use Twitter's search API to find tweets directed at @spam for a week and a half. It took that long because looking at old tweets would yield accounts Twitter had already suspended, meaning I couldn't get any info about them through the API. I had to get the reports while they were fresh and download the profile info of known spammers to build a training corpus. For the "ham" examples I used the following lists of trusted friends with various interests.
I used that corpus to build and prune a decision tree, which tested to around 99% precision/recall accuracy with 2000 ham and 2000 spam examples. Then I manually rewrote the tree as simple conditionals in PHP to create the classifier for the website.
Note: I'm about to hit my rate limit (on a whitelisted account, so 20k calls) in only half an hour...
Also, that only applies to OAuth, so you should get on that boat soon. They're deprecating basic auth this summer.
Using up someone's entire API usage in a flash while they need it for the rest of the hour to run their Twitter client isn't gonna fly.
The best I can do right now is make 20k authorized requests from my whitelisted account, and 20k unauthorized requests from my whitelisted IP. I just built in some status checking on the homepage so it won't let more people add themselves to the queue when it's already overloaded for the hour.
One thing to do is to cache the user information locally so that when they're requested again, you don't have to make an API call. For your app, I would think spammy users wouldn't change profile details all that often.
There was a long discussion about that a few months ago on the dev mailing list, whether this by purpose or mistake. Back then, the official response was that it's by purpose, but verify if that's true. If it is, you have plenty of API calls you can do per user.
This way you gain two things - 1. More users will try the service (giving away Twitter username is easier than giving away email address). 2. More chances that people will RT this messages and spread the word about the service.
And as @dschobel mentioned - you should register @followham.
My only suggestion: perhaps you could tell me how many are in the queue ahead of me, and estimate time till arrival?
Don't ask for an email address. Just give the user a unique page that auto-updates and tells you what the wait time is. If the users wants, let the user enter their email on this second page.
Asking for an email (even with a disclaimer that says trust me, I will never ever spam you, etc.) is a huge barrier to entry.
Don't ask for my Twitter login / password. That's a terrible, terrible practice which trains people to get phished. You don't even use SSL, so the username and password is transmitted in the clear!
At the very least, you should warn people about the dangers of giving a third party 100% access to their Twitter account and the dangers of transmitting their login credentials openly. This is true for any site -- let alone a project with 0 reputation. As it stands I have to say that your web app seems really irresponsible.
I'm actually working with the Twitter API right now myself and have been meaning to filter out accounts that don't bother to upload their own picture. That might be something you could think about.
All (and only) default images are stored on http://s.twimg.com, I think.
I wonder where you got the background.
As an example, here's one of the accounts that was marked as "not spam": @PhatApples (NSFW!)
It seems that the image adjusts to the size of the screen, so when I had FF maxed out on my monitor (1680 x 1050) it blew up the image and made it much louder.
Other than that the results were interesting.
Yes feedback is definitely needed to improve it! And to identify spam for other users with the same followers.
The only downside is that the request might take longer.
Btw, beware that some spam accounts use others tweets to look legit. I can send you some for example, if you're interested.
Edit: I just registered @spamorham for this