Make StackOverflow Explode (bookmarklet) Sometimes people get frustrated on the StackExchange network (specifically SO).



Your task is to create a bookmarklet that causes StackOverflow to explode/implode/destroy in some fashion.  This will provide a nicer way of dispersing our frustrations.

The Rules:


it must be in the form of a bookmarklet
must work in Chrome and Firefox (latest stable)
jQuery is on the site, so you can use it
no creating a script tag that pulls explosionThisPage.js or similar 


Scoring is the number of characters that need to be copied and pasted, except:


-1 if you include an explanation
-5 for each upvote
-10 if you don't use jQuery
-10 if it makes an explosion sound
+9e72 if it actually does harm to the site (F5 should repair the damage)


If the gif's distracting, remove it.
Here's my entry, which I'll call the drunkenator:

javascript:void(setInterval(function(){c='1234567890poiuytrewqasdfghjklmnbvcxzZXCVBNMLKJHGFDSAQWERTYUIOP=)(/&amp;%25$%23"!1';$(':not(iframe,script,style)').contents().each(function(){if(this.nodeType==3&amp;&amp;/\S/.test(this.nodeValue)){a=this.nodeValue.split('');x=0;for(i=0;i&lt;a.length;i++){r=Math.random()*9999;if(r&lt;10){x=1;j=c.indexOf(a[i]);a[i]=(r&lt;4%3F(t=a[i-1],a[i-1]=a[i],t):r&lt;5%3F'':r&lt;6%3Fa[i]+a[i]:j&lt;0%3Fa[i]:c.charAt(j+(r&lt;8%3F1:-1)))}}if(x)this.nodeValue=a.join('')}})},100))


At 474 chars, it's probably not going to win any golf prizes, but I'm hoping to make up for it in upvotes. :)

Here's the same code de-obfuscated:

setInterval(function () {
  var c = '1234567890poiuytrewqasdfghjklmnbvcxzZXCVBNMLKJHGFDSAQWERTYUIOP=)(/&amp;%$#"!1';
  $(':not(iframe,script,style)').contents().each(function () {
    if (this.nodeType==3 &amp;&amp; /\S/.test(this.nodeValue)) {
      var a = this.nodeValue.split('');
      var x = 0;
      for (i = 0; i &lt; a.length; i++) {
        r = Math.random() * 9999;
        if (r &lt; 10) {
          x = 1;
          j = c.indexOf(a[i]);
          a[i] = ( r &lt; 4 ? (t = a[i-1], a[i-1] = a[i], t)
                 : r &lt; 5 ? ''
                 : r &lt; 6 ? a[i] + a[i]
                 : j &lt; 0 ? a[i] : c.charAt(j + (r &lt; 8 ? 1 : -1)) ); 
        }
      }
      if (x) this.nodeValue = a.join('');
    }
  });
}, 100);


What it does is randomly mutate the text on the page, swapping adjacent characters, deleting or duplicating characters or replacing them with ones adjacent to them on the keyboard.  The effect is kind of subtle at first, but leave it running for a while, and the page content will inevitably decay into a mess of drunken typing:



Ps. The code isn't in any way SO-specific, so it'll work on any website that uses jQuery.  Try it on Wikipedia for hilarious results.  The idea is based on something I wrote years ago as a creative interpretation of the "99 bottles of beer" challenge: my version introduced a slowly increasing number of typos into each verse, until the last ones were all but unrecognizable.  If anyone wants to see it, here's the original Perl code.