CHALLENGE DETAIL

Ruby App to put Twitter or Facebook users in "My Doghouse"

OVERVIEW

CODE

doghouse image

Social networking is great except when your "friends" pollute your feed with sponsored spam, political flamewars, and live-tweets of some show or event you don't care about (or are jealous you didn't get to attend!).  Sure you could unfollow/unfriend them, but you really want a way to tell them they are being annoying without permanently ending your connection with them.

This challenge is to create a "doghouse" app in Ruby that will allow users to authenticate via twitter or facebook, then send friends or people they follow "to my doghouse" -- this will temporarily unfollow/unfriend them, and then re-follow/re-friend them after a certain period of time.

This is a creative challenge, so scores will be heavily influenced by your user interface and interesting/useful features you come up with.

REQUIREMENTS

Your app must be written in Ruby, and must allow the user to authenticate using their twitter or facebook account.

Once authenticated, you must provide a way for your app's user to find and select the users on twitter/fb that are annoying them.  You can do this in a number of ways, including showing recent posts from their feed, showing filterable lists of their friends/people they follow, providing search capability on posts and/or users, etc.

Once your user selects the people they want to send to their doghouse, you should provide some options about how long they want them to stay in the doghouse, and also provide the option to post/tweet about this punishment, ideally including a number of canned posts like "[target user name]'s in my doghouse for posting dinner photos again" and the ability to write their own custom posts.  After selecting whatever options you have made available, your user should be able to click on a button (or engage some other UI element) to actually execute the unfriending/unfollowing of all the selected people.

Finally, your app needs to implement a means of letting people "out of the doghouse" (re-follow/re-friend them) after the specified period of time has elapsed (if you can allow the user to configure a custom tweet/post when this happens that would be even better!).  Utilizing some kind of asynchronous queue would be one way to do this, but you can do whatever you like as long as it's reasonably reliable.

You may use any libraries, frameworks, add-ons, or plug-ins you like as long as they are open source.

You can deploy/host your app anywhere you like, as long as it is accessible from the public internet.

Be creative and have fun!

SUBMISSION DETAILS

Submit the URL for your live app.  If it requires any credentials, be sure to provide them in the comments for your submission.
 
Upload all your source code as a zip and include any documentation and/or instructions that are needed. Please be clear and concise with any setup instructions.
 
A short demo video using Jing or YouTube is required.

Your submission will be judged by a panel of peers based upon this criteria. If you would like to request an extension, please read Can challenge deadlines be extended for more time? on our FAQ. We do not want to grant extensions unless there is a valid reason.

ADDITIONAL INFO

Facebook developer site: https://developers.facebook.com/
Twitter developer site: https://dev.twitter.com/

PARTICIPATION


DISCUSSION

dubroe
I have a question about the item in the scorecard: "Is the code appropriately batched? Code should not be operated on individual items if possible" What exactly is this referring to? The one thing I see that fits is letting people out of the doghouse? Do you want the api call to Twitter to include all people that should be followed again, instead of one at a time? I'm working in Ruby on Rails and I'm planning on using DelayedJob to set a job to release the person from the doghouse (i.e. re-follow them and send tweet) right when they are added to the doghouse, setting the appropriate time in the future to do so in the job. Would I lose points for doing this? Any elaboration on this requirement would be appreciated.
dubroe, Jun 11, 2012 at 10:06 AM reply
appiriorob
You don't have to worry about the batch processing item if it doesn't apply to your design. It's a standard scorecard item that I left in because it might be relevant depending on how people architect their solutions. Basically, as long as you aren't making unscalable decisions or inefficient use of APIs, you won't lose points.
appiriorob (admin), Jun 11, 2012 at 10:18 AM
dubroe
Quick question about the "deployment guide". What can I assume the judges will already know. For example, I'm developing my platform in Ruby on Rails. Do I need to explain how to download rails, set up RVM, etc? Or can I assume the judge has already run rails apps and thus just mention anything beyond what would be accepted?
dubroe, Jun 13, 2012 at 21:51 PM reply
appiriorob
You can assume the judges know how to set up ruby and rails. Don't forget to include a link to your deployed & running app in your submission. Good luck!
appiriorob (admin), Jun 13, 2012 at 21:54 PM
dubroe
Thanks. By any chance do you have an example of a deployment guide for a previous rails app that has been submitted for one of your contests. I'm unclear as to what should be included in one. I'm using all standard gems and a basic setup as far as I know. I'll definitely make sure to include a link to my code on Github and to my deployed app on Heroku. Another quick question; should I include login credentials for my development app on Twitter. If the judges plan on running the code, they'll need to set the callback address on twitter to their local IP. Is everyone registered getting emails when I post something?
dubroe, Jun 13, 2012 at 22:01 PM reply
appiriorob
Sorry I missed your follow-up question. You don't need a complicated deployment guide, just a quick README to explain how to set up anything specific to getting your app to run. Here's one example: http://dl.dropbox.com/u/7324810/README_CLOUDESPOKES_CHALLENGE_1195 Definitely include all credentials needed to access developer environments/apps.
appiriorob (admin), Jun 20, 2012 at 11:28 AM
poundinc
Hello, The scope is fairly good and so would request an extension of 24 hours....
poundinc, Jun 20, 2012 at 02:06 AM reply
appiriorob
Unfortunately it is too late to request an extension because our policy is to give all registered members at least 12 hours to object: http://www.cloudspokes.com/faq
appiriorob (admin), Jun 20, 2012 at 06:53 AM
poundinc
Fair Enough...But if issue is escalated before 12 hours which was done in this case..you got to have a mechanism to extend it ...in most cases the issue raisers are given extension privately...for their submissions... Have a great day...
poundinc, Jun 20, 2012 at 06:56 AM
tomaisthorpe
I've looked at adding friends through Facebook and the only way you can seem to do it is through this: https://developers.facebook.com/docs/reference/dialogs/friends/ But this means you can't automatically refriend them. I don't think you can even unfriend them in the first place. Is using just Twitter okay?
tomaisthorpe, Jun 20, 2012 at 03:32 AM reply
poundinc
Yes...Also refriend is not one usecase here...adding repetition is not possible.Unfriend also requires authorization...so a trivial one....
poundinc, Jun 20, 2012 at 03:40 AM
appiriorob
Supporting just twitter is okay.
appiriorob (admin), Jun 20, 2012 at 06:51 AM
poundinc
Pretty less time.....sorry would not be able to submit
poundinc, Jun 20, 2012 at 06:52 AM

The discussion board is closed for this challenge.



PARTICIPATION

26 members participating with 15 registered

TECHNOLOGIES

Ruby

WINNER SELECTED

Ended Jun 20, 2012 at 3:58 PM
Winner Announced on June 29, 2012
View the challenge results
Give us your feedback about this challenge.

PRIZES

Total: $2,000
1st $1000
2nd $500
3rd $250
4th $150
5th $100

SHARE

Chrome Extension

Install the CloudSpokes Chrome Extension for quick and easy access to the latest CloudSpokes challenges, your payments, leaderboards and more!