Background information: Rube Goldberg machine

The Woot! Enthusiast and Fanatic badges are awarded to users who manage to log into one of the sites every day for 30 and 100 days straight, respectively.

We have already seen that this is easy to accomplish, either through sheer user addiction or through the use of simple scripts that automatically bring up the website each day.

What I am interested in, however, is how complex you can make this process.

In the spirit of famed cartoonist Rube Goldberg and his overly complicated machines to perform menial tasks, I bring the challenge to you, the Meta community.


  • Not required to actually work
  • The more complicated the better
  • Should be able to make it at least 30 days (Woot! Enthusiast) or 100 days (Fanatic)
  • Bonus points if it would actually work
  • Bonus points for humor (this is Friday Afternoon, after all)
  • 3
    facepalm Commented Sep 11, 2009 at 18:20
  • I did not know about the fanatic badge, but now I'm disturbed at their being 160 people that are big enough losers to get it. stackoverflow.com/badges/83/fanatic Commented Sep 11, 2009 at 18:22
  • I don't understand what you are challenging me to do.
    – devinb
    Commented Sep 11, 2009 at 18:24
  • @devinb: Design an overly complicated system that will keep you logged in so that you can get a Woot! or Fanatic badge.
    – TheTXI
    Commented Sep 11, 2009 at 18:25
  • should be wiki. :))
    – mmx
    Commented Sep 11, 2009 at 18:26
  • Seems like any physical robot that is designed to log into my computer, hit "windows key" type "firefox" pause... type CTRL-L... type "stackoverflow.com". would be 'overly complicated'.
    – devinb
    Commented Sep 11, 2009 at 18:27
  • 4
    Should be deleted, and TXI should be banned for abusing the community.
    – Welbog
    Commented Sep 11, 2009 at 18:27
  • would that win the prize?
    – devinb
    Commented Sep 11, 2009 at 18:27
  • 4
    Welbog should be banned for being Canadian.
    – TheTXI
    Commented Sep 11, 2009 at 18:27
  • 2
    Canadians are eh' holes!
    – Troggy
    Commented Sep 11, 2009 at 18:29
  • @Troggy: I'm offended by puns. And Canadian jokes. And your face.
    – devinb
    Commented Sep 11, 2009 at 19:37

6 Answers 6




  • 5
    Lets just hope it survives longer this time. Last thing we need is a nuclear meltdown. Commented Sep 11, 2009 at 19:50

Do people count as Rube Goldberg machines? If so, I submit myself...

  • Not required to actually work

Well, I am on MSO right now, so I'm clearly not working.

  • The more complicated the better

Oh, I got all kinds of complicated!

  • Should be able to make it at least 30 days (Woot!) or 100 days (Fanatic)

Done and done!

  • Bonus points if it would actually work

Did you not just hear me? I said "Done!"

  • Bonus points for humor (this is Friday Afternoon, after all)



Let's take another pass at it. I think a proper solution has to have maximum scalability and uptime, and since we're talking about the web here, should also be easily portable and made cross platform.

To that end ...

The Web Service

  1. Procure hosting at GoDaddy ('cause I like Danica Patrick. Oh, she's a professional race car driver, too?)
  2. Develop a web service in ASP.NET which will hit any given web site, provided that the web site's IP address is passed in as a binary string (you never know when domain names will change, or the way an IP address is read by the browser will change, or even when the ASCII/ANSI/UTF representations of numbers will change, so let's go for the gusto.)
  3. Additional parameters for the web service will include the binary string representation of the IP address of an OpenID provider, and for maximum security, the octal representation of the encrypted username and password to provide.
  4. The web service will parse the IP addresses into their four dotted components, and send asynchronous HttpRequest to the given OpenID provider and web site.
  5. The web request will return a value of -2147483648 if the request succeeds. It will return +2147483647 if the request fails.
  6. I'll host this web service in my company's datacenter. (What, you thought I'd use GoDaddy?)

The Client

In order to make absolutely certain that the client software will communicate with the ASP.NET web service (because you never know when Microsoft will sneak some kind of anti-competitive monopolistic time warps into their WSDL), the client software will also be written in .NET. It will be a very simple command-line utility, running on my work PC, as I no longer have a home PC (just the Mac).

  1. The command-line utility will read a very simple text file to determine the input of OpenID provider, username, password, and target site. For maximum flexibility, none of these settings will be shared across sites.
  2. The text file format will be thus:
  3. (Don't worry, the password doesn't have to be encrypted. We'll use EFS to handle that. What could go wrong?)
  4. The text file will be parsed using regular expressions to strip out the delimiters, which were chosen to ensure that nothing which might appear in the other text would accidentally trigger a delimit. Sure, I could just quote the text strings, but then I have to worry about escaping the quotes, and this that and the third.
  5. The command line utility will start by calling downforeveryoneorjustme for the site name, open ID provider and web service.
  6. Upon ensuring that the sites are up, the command line utility will then perform an IP lookup for the site and OpenID providers.
  7. The IP addresses will be converted to binary strings.
  8. The username and password will be encrypted, and their encrypted representations converted to strings of octal.
  9. The command line utility will call the web service asynchronously. That way it can display a very useful string of . characters for every second it spends waiting for the service to return.
  10. Upon successful completion, the command line utility will draw ASCII art of a smiling Danica Patrick.
  11. Upon failure, the command line utility will draw welbog.


You and I both know we can't trust all this Microsoft technology. So this will all be spawned by the following process on my MacBook, via a cron job that kicks off a shell script:

  1. Initiates a VPN tunnel to my office.
  2. Starts a Remote Desktop Connection to my office PC.
  3. Sends the following set of keystrokes to the RDC: CTRL+ESC, cmd.exe, enter c:\path\cooltool.exe config, enter.
  4. Waits until a fourth app I write recognizes the drawing of Danica Patrick in the command prompt window.
  5. Disconnects the RDC.

The cron jobs will be spaced out by 10 minutes to ensure that they don't conflict with each other.

Hey -- infinitely scalable, service-oriented, with the potential for cross-platform clients. What could possibly go wrong? :)


Start with sharks. Attach frikken laser beams to their heads. These laser beams fire intermittently. Occasionally, they fire at other animals, including other sharks with frikken laser beams attached to their heads. When the LASER hits another shark with a frikken laser beam attached to its head, that shark dies. There's a module attached to the frikken laser beam that can detect when a shark dies and uploads that shark's score to a server I've set up in my house. Every 15 minutes, a monkey checks the server to find if any sharks have died. If one has died, it gets very angry and sad and begins crying and throwing feces all around my house.

When I get home and find feces everywhere, I get very angry and sad and begin beating the living snot out of the monkey until it's dead. Once the monkey is dead, I become very lonely and need to purchase another monkey. Not knowing where one buys a monkey (and being so torn with grief that I can't remember where I purchased the last one), I fire up my browser, one of whose home pages is stack overflow.

Bottom line: As long as one shark dies from laser beams every day for 100 days, I become a fanatic of the site. Only drawback? A house that continually smells like feces. However, that's something that every fanatic deals with, so I shrug it off as coming with the territory.

  • 2
    I'm not liking the odds on the sharks killing each other every day. No bonus points for it working. :) (But hey, it is your house. And I do love me some frikkin sharks with frikkin lasers!)
    – John Rudy
    Commented Sep 11, 2009 at 18:57
  • 2
    You'll never get the monkeys to check the server.
    – devinb
    Commented Sep 11, 2009 at 19:41
  • 3
    Where's welbog? He should be upvoting the monkey feces out of this answer.
    – John Rudy
    Commented Sep 11, 2009 at 20:04
  • @John Rudy: I'd upvote it if it were any good. Moreover, I find the fact that you suppose to know my motivations well enough to predict my actions disturbing. You can pretend to understand the ponderings of my cranium's convoluted contents but the reality is I am so much crazier than you can possibly imagine with your tiny, primitive mind. Your head isn't even in a jar. How you can possibly think that you could understand the majesty that is Welbog is preposterous to the highest degree. I wash my hands of your silliness. And I hope you chop off your hands, too, because they aren't helping you.
    – Welbog
    Commented Sep 14, 2009 at 14:42
  • I like my lazers to be of the "frikken" brand. the "imma firin mah" are nice too. Commented Jan 10, 2012 at 4:16

I'll bite. What the hell, I have so little rep here to worry about losing anyway. :)

I have a simple, NOT Rube Goldbergian solution that (I hope) will work for me: Four icons on my iPhone, one for each of the SOFU sites + Meta. I make sure to hit them each once in the morning before work, and once in the evening closer to bedtime. (Not sure when the days hit my time zone. Yes, I could easily figure it out, but who cares.) This makes sure I hit each site at least once, in case I can't do it at work, and especially on weekends.

Now that's what I actually use, in addition to real activity.

Here's my Rube Goldbergian solution that for S&Gs I might actually try to do:

  1. Write a perl script which hits one of the sites.
  2. Instead of writing code with perl's HTTP tools, I'll just have the perl script fire off a Firefox process going to the right site.
  3. The site to hit will be passed in not via a command-line parameter, but rather via piped text file. Naturally, the perl script will have to string trim the file.
  4. The perl script will initiate the Firefox process as a background daemon
  5. Create the requisite four separate text files to pass in the site names.
  6. Add four instances of the perl script, each as a daemon process, to my Macbook's crontab. Each will load from a different text file. I'll stagger them each by 1 minute.
  7. Leave the MacBook on, plugged in, and off power save mode FOREVER, thereby turning it into a desktop machine that just happens to be Aluminum and have a tiny screen.
  8. In no time flat (well, 30 days and 100 days respectively), those badges will be mine! Bwa-hahahahahah!
  9. Buy more RAM at some point due to all the daemons I'm spawning that are never being unloaded. :)

(Can you even start a GUI app as a daemon on Macs? Never tried anything that jacked up before. Mostly because it's a really jacked up idea.)

  • 4
    In retrospect, this won't make it very far. I forgot to use regular expressions somewhere.
    – John Rudy
    Commented Sep 11, 2009 at 18:56
  • 1
    Replace perl with AppleScript, and I actually had this set up on an old G4. Every 12 hours cron would run the AppleScript which would quit Firefox and then relaunch it, opening windows for SO, MSO, SF and SU. It actually did work! Commented Apr 13, 2012 at 22:17

Somebody did make a script:


Enough said.


Not the answer you're looking for? Browse other questions tagged .