<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	>

<channel>
	<title>Rudd-O.com &#187; Around the Internets</title>
	<atom:link href="http://rudd-o.com/archives/category/around-the-internets/feed/" rel="self" type="application/rss+xml" />
	<link>http://rudd-o.com</link>
	<description>We only do fun stuff.</description>
	<pubDate>Fri, 29 Aug 2008 11:39:17 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.6</generator>
	<language>en</language>
			<item>
		<title>This is real attitude</title>
		<link>http://rudd-o.com/archives/2008/06/30/this-is-real-attitude/</link>
		<comments>http://rudd-o.com/archives/2008/06/30/this-is-real-attitude/#comments</comments>
		<pubDate>Mon, 30 Jun 2008 19:14:52 +0000</pubDate>
		<dc:creator>Rudd-O</dc:creator>
		
		<category><![CDATA[Around the Internets]]></category>

		<category><![CDATA[Curiosidades]]></category>

		<guid isPermaLink="false">http://rudd-o.com/archives/2008/06/30/this-is-real-attitude/</guid>
		<description><![CDATA[What would you do if you were blind?  Think about that for a moment.  Then look at this video.  And prepare to be amazed.




]]></description>
			<content:encoded><![CDATA[<p>What would you do if you were blind?  Think about that for a moment.  Then look at this video.  And prepare to be amazed.</p>

<p><span id="more-1933"/></p>

<p style="text-align:center"><object width="425" height="344"><param name="movie" value="http://www.youtube.com/v/gkDI_spL0HQ&amp;hl=en"/><param name="wmode" value="transparent"/><embed src="http://www.youtube.com/v/gkDI_spL0HQ&amp;hl=en" type="application/x-shockwave-flash" wmode="transparent" width="425" height="344"/></object></p>
]]></content:encoded>
			<wfw:commentRss>http://rudd-o.com/archives/2008/06/30/this-is-real-attitude/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Flying penis interrupts Gary Kasparov</title>
		<link>http://rudd-o.com/archives/2008/05/19/flying-penis-interrupts-gary-kasparov/</link>
		<comments>http://rudd-o.com/archives/2008/05/19/flying-penis-interrupts-gary-kasparov/#comments</comments>
		<pubDate>Mon, 19 May 2008 17:39:14 +0000</pubDate>
		<dc:creator>Rudd-O</dc:creator>
		
		<category><![CDATA[Around the Internets]]></category>

		<category><![CDATA[Haha!]]></category>

		<guid isPermaLink="false">http://rudd-o.com/archives/2008/05/19/flying-penis-interrupts-gary-kasparov/</guid>
		<description><![CDATA[You need to see this:




 


]]></description>
			<content:encoded><![CDATA[<p>You need to see this:</p>

<p><span id="more-1920"></span></p>

<p style="text-align: center"><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=8,0,0,0" width="425" height="350">
<param name="movie" value="http://files.sharenator.com/vid347"></param><param name="wmode" value="transparent"></param><param name=menu value="false"> <embed src="http://files.sharenator.com/vid347" type="application/x-shockwave-flash" quality="high"  width="425" height="350" wmode="transparent" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer"></embed></param></object></p>

<p><br /></p>
]]></content:encoded>
			<wfw:commentRss>http://rudd-o.com/archives/2008/05/19/flying-penis-interrupts-gary-kasparov/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Google Treasure Hunt 2008: the bot in the checkerboard problem</title>
		<link>http://rudd-o.com/archives/2008/05/18/google-treasure-hunt-2008-the-bot-in-the-checkerboard-problem/</link>
		<comments>http://rudd-o.com/archives/2008/05/18/google-treasure-hunt-2008-the-bot-in-the-checkerboard-problem/#comments</comments>
		<pubDate>Sun, 18 May 2008 16:15:00 +0000</pubDate>
		<dc:creator>Rudd-O</dc:creator>
		
		<category><![CDATA[Around the Internets]]></category>

		<category><![CDATA[Google]]></category>

		<category><![CDATA[Math]]></category>

		<guid isPermaLink="false">http://rudd-o.com/archives/2008/05/18/google-treasure-hunt-2008-the-bot-in-the-checkerboard-problem/</guid>
		<description><![CDATA[I have the solution to the bot in the pseudocheckerboard problem for the Google Treasure Hunt 2008 .



(I have munged some of the key points here, so don’t feel sorry if you can’t replicate it.)

It took me moments to figure out that it was not a series problem.  It was immediately obvious to me [...]]]></description>
			<content:encoded><![CDATA[<p>I have the solution to the bot in the pseudocheckerboard problem for the <a href="http://treasurehunt.appspot.com/">Google Treasure Hunt 2008 </a>.</p>

<p><span id="more-1919"></span></p>

<p>(I have munged some of the key points here, so don&#8217;t feel sorry if you can&#8217;t replicate it.)</p>

<p>It took me moments to figure out that it was not a series problem.  It was immediately obvious to me that I needed to count the paths.</p>

<p>It took me an hour to devise a solution in Python with a random bot that traced all possible paths (computationally intractable for 8&#215;8 and bigger checkerboards), and put them into a <code>Set</code>.  The only way to interrupt this program was with Ctrl+C (skip to the end of this article for program listings).</p>

<p>It took me thirty minutes to devise a much faster, deterministic recursive solution in Python which essentially acts as a lazy tree lookup, which is also computationally intractable for 12&#215;12 and bigger checkerboards.</p>

<p>It took me twenty minutes to reduce this solution to a two-variable recursive by-parts function that I couldn&#8217;t simplify to a sum or a product or any other computationally tractable form.  It&#8217;s not impossible to do, because there IS a way to do it, but my limited math skills didn&#8217;t allow me.  In essence, my program is just this:</p>

<pre><code>f(0,0) = 0
f(m,0) = 1
f(1,n) = 1
f(m,n) = [not gonna tell you]
</code></pre>

<p>It took me another thirty minutes to dabble in freshly installed Haskell and Scilab, but Scilab was impossible to use and Haskell (while letting me declare a function by parts) was just ten times slower than Python.  So much for functional languages.</p>

<p>However, my last Python solution allowed me to generate a permutation of tables with OO.o and discover that there IS a progression embedded in the tables, and that said progression needs to be folded unto itself several times (the length of the progression and the number of folds are equal to the dimensions of the checkerboard).  I reverse-engineered the progression using OO.o formulas.  This is how one of the tables looks.</p>

<pre><code>./googlebotproblem 7 4
[1, 1, 1, 1]
[1, 2, 3, 4]
[...snipped...]
84
</code></pre>

<p>Once I figured it out, I wrote a ten-liner Python script that replayed the OO.o formulas onto a row of data.  Lo and behold, in less than a second I had the answer.</p>

<p>Other people just coded the <em>exact</em> same algorithm I devised for trees, but with a twist: they used a cache to speed up computation.  Never occurred to me &#8212; it should have.  However, I have yet to see someone who actually folded the problem into a formula, nor have I seen anyone who figured out the series trick.</p>

<p>I still don&#8217;t know how to fold that formula into a computationally feasible one.  Dear Lazyweb, care to enlighten me?</p>

<h2>Source code</h2>

<p>This is the source code of the three problems, in one file:</p>

<p><pre>#!/usr/bin/env python</pre></p>

<p>import sys</p>

<p>from random import choice
from sets import Set</p>

<p>rows = int(sys.argv[1])
columns = int(sys.argv[2])</p>

<p>class OutOfBounds(Exception): pass
paths = Set()
def generate_path():
    cols = columns
    row = 1
    col = 1
    path = []
    while not ( row == rows and col == cols ):
        if row == rows: movement = "right"
        elif col == cols: movement = "down"
        else: movement = choice(["down","right"])
        if movement == "down":  row = row + 1
        else:               col = col + 1
        path.append(movement)
    return path</p>

<p>def stumble():
    try:
        while True:
            try:
                path = generate_path()
                paths.add(" ".join(path))
                print len(paths)
            except OutOfBounds, e: pass
                #print "killed:",e
    except KeyboardInterrupt:
        paths = [ p for p in paths ]
        paths.sort()
        for p in paths:
            print p</p>

<h1>recursive solution</h1>

<p>def rec(row,column):
    # breakaway condition
    if row == 1 and column == 1: return 0
    # options where there is only one possible path
    if row == 1 or column == 1: return 1
    recs = [...munged...]
    return sum(recs)</p>

<h1>table solution</h1>

<p>def rowize(row):
    newrow = [1]
    for n in [...munged...]
        [...munged...]
    return newrow</p>

<p>def calculate(rows,columns):
    row = [1] * columns
    for n in [...munged...]
        row = rowize(row)
    return row[-1]</p>

<h1>print stumble(rows,columns)</h1>

<h1>print rec(rows,columns)</h1>

<p>print calculate(rows,columns)</p>

<h1>a solution with memoize to not explore alternative routes</h1>

<p>cache = {}</p>

<h1>Removed, sorry!</h1>

<p>print count(rows,columns)</p>
]]></content:encoded>
			<wfw:commentRss>http://rudd-o.com/archives/2008/05/18/google-treasure-hunt-2008-the-bot-in-the-checkerboard-problem/feed/</wfw:commentRss>
		</item>
		<item>
		<title>The biggest rickroll ever</title>
		<link>http://rudd-o.com/archives/2008/04/08/the-biggest-rickroll-ever/</link>
		<comments>http://rudd-o.com/archives/2008/04/08/the-biggest-rickroll-ever/#comments</comments>
		<pubDate>Tue, 08 Apr 2008 07:37:20 +0000</pubDate>
		<dc:creator>Rudd-O</dc:creator>
		
		<category><![CDATA[Around the Internets]]></category>

		<category><![CDATA[Haha!]]></category>

		<guid isPermaLink="false">http://rudd-o.com/archives/2008/04/08/the-biggest-rickroll-ever/</guid>
		<description><![CDATA[Imagine Shea stadium full of people.  Imagine them all, singing along.  Overwhelming, isn’t it?  Now, what if they were rickrolling the Mets instead?  Oh, yeah, baby!  Never gonna give you up…
]]></description>
			<content:encoded><![CDATA[<p>Imagine Shea stadium full of people.  Imagine them all, singing along.  Overwhelming, isn’t it?  Now, <strong><a href="http://www.metsblog.com/2008/04/07/news-rick-astely-wins-for-one-day/">what if they were rickrolling the Mets instead</a>?  Oh, yeah, baby! </strong> <em>Never gonna give you up…</em></p>
]]></content:encoded>
			<wfw:commentRss>http://rudd-o.com/archives/2008/04/08/the-biggest-rickroll-ever/feed/</wfw:commentRss>
		</item>
		<item>
		<title>A college band in full 16-bit glory</title>
		<link>http://rudd-o.com/archives/2008/01/21/a-college-band-in-full-16-bit-glory/</link>
		<comments>http://rudd-o.com/archives/2008/01/21/a-college-band-in-full-16-bit-glory/#comments</comments>
		<pubDate>Tue, 22 Jan 2008 00:29:03 +0000</pubDate>
		<dc:creator>Rudd-O</dc:creator>
		
		<category><![CDATA[Around the Internets]]></category>

		<category><![CDATA[Cool]]></category>

		<category><![CDATA[Haha!]]></category>

		<category><![CDATA[Videogames]]></category>

		<guid isPermaLink="false">http://rudd-o.com/archives/2008/01/21/a-college-band-in-full-16-bit-glory/</guid>
		<description><![CDATA[The chaps at the UC Berkeley marching band have an amazing gift for entertainment.  If you are old enough to have played Mario and Tetris, you’ll like this:






]]></description>
			<content:encoded><![CDATA[<p>The chaps at the UC Berkeley marching band have an amazing gift for entertainment.  If you are old enough to have played Mario and Tetris, you’ll like this:</p>

<p><span id="more-1864"/></p>

<p style="text-align:center">
<object type="application/x-shockwave-flash" data="http://www.collegehumor.com/moogaloop/moogaloop.swf?clip_id=1789288&amp;fullscreen=1" width="480" height="360"><param name="allowfullscreen" value="true"/><param name="movie" quality="best" value="http://www.collegehumor.com/moogaloop/moogaloop.swf?clip_id=1789288&amp;fullscreen=1"/></object>
</p>
]]></content:encoded>
			<wfw:commentRss>http://rudd-o.com/archives/2008/01/21/a-college-band-in-full-16-bit-glory/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Wrong window</title>
		<link>http://rudd-o.com/archives/2007/12/12/wrong-window/</link>
		<comments>http://rudd-o.com/archives/2007/12/12/wrong-window/#comments</comments>
		<pubDate>Wed, 12 Dec 2007 18:08:51 +0000</pubDate>
		<dc:creator>Rudd-O</dc:creator>
		
		<category><![CDATA[Around the Internets]]></category>

		<category><![CDATA[Haha!]]></category>

		<guid isPermaLink="false">http://rudd-o.com/archives/2007/12/12/wrong-window/</guid>
		<description><![CDATA[Have you had those ‘moments’ when you type something on the wrong chat window?




]]></description>
			<content:encoded><![CDATA[<p>Have you had those ‘moments’ when you type something on the wrong chat window?</p>

<p><span id="more-1843"/></p>

<p style="text-align:center"><img src="http://rudd-o.com/wp-content/uploads/2007/12/wrong-window.jpg" alt="Awkward!"/></p>
]]></content:encoded>
			<wfw:commentRss>http://rudd-o.com/archives/2007/12/12/wrong-window/feed/</wfw:commentRss>
		</item>
		<item>
		<title>¿Hoy es navidad?</title>
		<link>http://rudd-o.com/archives/2007/11/22/%c2%bfhoy-es-navidad/</link>
		<comments>http://rudd-o.com/archives/2007/11/22/%c2%bfhoy-es-navidad/#comments</comments>
		<pubDate>Fri, 23 Nov 2007 02:33:25 +0000</pubDate>
		<dc:creator>Rudd-O</dc:creator>
		
		<category><![CDATA[Around the Internets]]></category>

		<category><![CDATA[Haha!]]></category>

		<guid isPermaLink="false">http://rudd-o.com/archives/2007/11/22/%c2%bfhoy-es-navidad/</guid>
		<description><![CDATA[¿Alguna vez has tenido la duda de si hoy es navidad?  ¡No más!  Visita IsItChristmas.com para averiguarlo.
]]></description>
			<content:encoded><![CDATA[<p>¿Alguna vez has tenido la duda de si hoy es navidad?  ¡No más!  Visita <a href="http://www.isitchristmas.com/">IsItChristmas.com</a> para averiguarlo.</p>
]]></content:encoded>
			<wfw:commentRss>http://rudd-o.com/archives/2007/11/22/%c2%bfhoy-es-navidad/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Amazingly cool Internet filter against stupidity!</title>
		<link>http://rudd-o.com/archives/2007/11/12/amazingly-cool-math-against-stupidity/</link>
		<comments>http://rudd-o.com/archives/2007/11/12/amazingly-cool-math-against-stupidity/#comments</comments>
		<pubDate>Mon, 12 Nov 2007 23:12:42 +0000</pubDate>
		<dc:creator>Rudd-O</dc:creator>
		
		<category><![CDATA[Around the Internets]]></category>

		<category><![CDATA[Computers]]></category>

		<category><![CDATA[Haha!]]></category>

		<category><![CDATA[Math]]></category>

		<category><![CDATA[Morons]]></category>

		<category><![CDATA[Software bacán]]></category>

		<guid isPermaLink="false">http://rudd-o.com/archives/2007/11/12/amazingly-cool-math-against-stupidity/</guid>
		<description><![CDATA[If you ever had to undergo the horrible torture that is reading YouTube comments, you can now rest safe and sound, knowing that rampant stupidity will soon be a thing of the past, thanks to Bayesian probabilities.



The system in question that will deliver us from stupid is called (somewhat appropriately, would you say?) StupidFilter, and [...]]]></description>
			<content:encoded><![CDATA[<p>If you ever had to undergo the horrible torture that is reading YouTube comments, you can now rest safe and sound, knowing that rampant stupidity will soon be a thing of the past, thanks to Bayesian probabilities.</p>

<p><span id="more-1815"/></p>

<p>The system in question that will deliver us from stupid is called (somewhat appropriately, would you say?) <a href="http://stupidfilter.org/main/index.php?n=Main.Status">StupidFilter</a>, and has been in development for a while now.</p>

<p>It consists of a rather dumb Bayesian system — the exact opposite of an expert system, which consists of brute-forcing a corpus of data and inferring useful information from the corpus without contextual understanding.  In other words, it’s a giant, incredibly stupid but learning machine that is being trained to identify the stupid out of a quarter of a million wastes of time pulled straight out of (wait for it) YouTube itself!</p>

<p>How it works is rather simple.  Given a large amount of comments ranked smart to stupid, it identifies the chance that a particular word is in a stupid comment.  Example: if the word <em>moran</em> frequently appears in comments deemed stupid, then future comments with that word will be deemed stupid.  Bayesian filtering was suggested first by Paul Graham in his now-famous essay <a href="http://www.paulgraham.com/spam.html">A plan for spam</a>, and (perhaps due to its dead-simple mathematical ruthlessness, perhaps because it works like a charm) is now in use for antispam systems in both mail servers and the Akismet blog commenting filter.</p>

<p>At the moment, there’s not much from the project to showcase, except for a damn <a href="http://stupidfilter.org/random.php">hilarious stupid randomizer</a> that will let you spend countless hours and inches of eyelashes at your computer, marveling at the utter inanity of regular YouTubers.  It cracked the fuck me up — and it’s feature-complete, down to the customary big MOAR button!</p>

<p>Let’s hope they deliver a solution soon.  I can’t wait to plug it into my blog and clean up comments en masse.</p>
]]></content:encoded>
			<wfw:commentRss>http://rudd-o.com/archives/2007/11/12/amazingly-cool-math-against-stupidity/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>
