RubyURL 2.0 on the horizon
RubyURL was a project that I built about 2 1/2 years ago as a late night attempt to see what I could build and deploy with Ruby on Rails in a night. It’s nearing 50,000 unique website links, has a Ruby gem that you can use with it, and rbot plugins.
I’ve rewritten it about three times in the past six months, to try out some new approaches, but haven’t deployed with a new version as I’ve been waiting for someone to help me with a new design. Chris has offered to help out and once we integrate his new design with it, we’ll be launching it.
Everything is not great in RubyURL land though. It appears that it’s become an easy target for comment spammers to abuse the site to generate rubyurls and paste those links in their spam comments. Several pissed off bloggers, forum administrators, and system administrators have emailed me to complain that I’m spamming their site. Sadly, even with a basic disclaimer on the site, they still like to blame me for their spam. It’s gotten common enough, that I’ve written a template email that I respond with that explains how the site works and that I’m not accountable for people posting links to my URL redirect tool.
You can see that it’s popping up around the net via a google search.
So, I’ve been trying to think of ways to make it easier for people to flag URLs as being abusive of the site. I’ve not come up with any elegant solution that doesn’t force the good users of the site to have more steps in their process to create a basic RubyURL.
The ideal (and current) workflow:
- User navigates to http://rubyurl.com
- User pastes in long url into text box/area
- User submits form
- User is provided with new (shortened) rubyurl
- User copies the rubyurl and does what they want with it (generally… pastes into IM, IRC, Email, etc.)
Some people have suggested using a user system to do this, but I really don’t like that as a solution.
Another idea, which I built… and later removed from my new version, involved having the original url load in a frame, and then provide a way for users to flag it as ‘spam’, ‘nsfw’, or ‘dead’. Then, we could provide the user with a warning that the following URL was flagged before, are you sure you want to continue? I didn’t like this as a solution in this way as it felt very obtrusive to have a rubyurl frame at the top of the browser window.
One person suggested a captcha to try and verify that the user is human, but there are problems with this.
- I really dislike captchas. ;-)
- This doesn’t prevent spammers from using the ShortURL gem, which does everything via an API.
In regards to the API, this could be enhanced by requiring that everyone register an email address to get an API key, but only solves the API abusers.
I’m starting to brainstorm some solutions that specifically help the requests made through the web. I haven’t checked the logs enough yet to verify it, but I have a strong suspicion that much of the abuse is happening through a web-based bot, not through ShortURL… because Ruby developers are nicer than that. (I hope…)
So, I am curious… dear readers of my blog. How might you solve this problem without disrupting the user experience? Or, should I just stick with what I’ve got going and find a better way to respond to pissed off bloggers who think I’m spamming them?
Discuss…
Goodbye Instiki, Hello JunebugWiki
If you’ve spent much time on the Ruby on Rails wiki, you know that the spam situation smells like rotten fruit.
We’ve been using Instiki, the same software as the Rails wiki for the PLANET ARGON Documentation Project and the spam situation was becoming an annoyance. So, we’ve switched to JunebugWiki as step one, to see how it holds up. The default styling was a nice improvement because we haven’t had much chance to update the instiki one. It might not solve all of our spam problems, but in the short term, it appears to be a more elegant solution. It’s also the first application built with camping that I have personally deployed.
So… I present to you… the new PLANET ARGON Documentation Project.
In other news, it appears that RubyURL has caught the eye of spammers, which sucks. I’m still thinking over a few possible ways to try and prevent that. :-/
RubyURL hits 10k
Just happened to notice that RubyURL passed the 10k mark recnetly. :-)
“10044 happy rubyurls to date”
I think it’s time for a rewrite and an API. :-)
RubyURL reaches 2000 URLs
2 comments Latest by kh Mon, 21 Aug 2006 09:41:35 GMT
Today, RubyURL reached two-thousand happy rubyurls!
That’s right! 2,000!
The traffic has picked up a bit since a few bots started to use it in IRC channels and with the easy browser toolbar feature is. It’s cool to see people using it on the ruby-related mailing lists, and there seems to be quite a few people in Japan who use it to link to/from Japanese fetish sites (I won’t ask what a green-tea-zipper-party is…). Whatever floats your boat. ;-)
In any event, HAPPY 2000!
Let’s hit 10,000 before it becomes one year old! :-)
http://rubyurl.com
RubyURL meets rbot
1 comment Latest by sdgsdg Mon, 21 Aug 2006 08:56:03 GMT
I was asked to submit the small plugin that I created for rbot so that we can do fun stuff like this in #pdx.rb (irc.freenode.net).
21:42 < robbyonrails> ?help rubyurl
21:42 < pdxrbot> rubyurl <your long url>
21:43 < robbyonrails> ?rubyurl http://www.google.com/
21:43 < pdxrbot> Your RubyURL: http://rubyurl.com/hbGjx
It’s nothing complex and uses the plugin example as a foundation. I just popped in my ShortURL requires and modified what it replies with.
We’re almost at 2,000 unique URLs in RubyURL. :-)
You can pick up the plugin here in the trac for rbot. I don’t know if it will be accepted in the default plugins or not, but you can download the file there and start using it today!
Have fun!
RubyURL raises the bar and becomes a TEXT field
It came to my attention that this RubyURL site that I built many many months ago… would BREAK on URLs that were too long. Thanks to Xinu for figuring that one out and bringing it to my attention. As a result, we gave him a free Typo blog account!
The Problem?
You see, the field was VARCHAR(255)
.
I really didn’t even see that coming… DOH!
The Solution
I changed it to a TEXT
field.
So, you can all sleep well tonight… knowing that the problem is fixed.
This is also a perfect example of why I like PostgrSQL over MySQL. If the site were running MySQL, it wouldn’t have shown Xinu an error as MySQL would have silently truncated anything over the limit and then people would send out bogus RubyURLs.
truncated url = bad rubyurl mojo
This also reminded me that it is time that I spend a few hours working on new features to the site. :-)
RubyURL ( http://rubyurl.com/ )... over 1500+ rubyurls served…
Thanks again Xinu! .. and welcome to the Rails community!
UPDATE I did a search for ‘rubyurl’ and found a review of it compared to some other short url services.
“rubyurl It may be a tech demo, but rubyurl has a clean interface and a small pae. It may not be the most feature-packed service, but it works, and it works well. If only it were faster – about a second and a half for a URL, by my count, makes it too slow for script or website use.”
Link: Comparing the URL Shortening Services by Brian Cairns
Perhaps it is time to move it to Lighttpd? While I was at it, I shrunk the length of rubyurls by two characters. That puts it at the second shortest on that list. It was a 5 char string, but is now a 3 char string. I think that should be sufficient for a while. :-)