<?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"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>d8d Blog</title>
	<atom:link href="http://d8d.org/blog/?feed=rss2" rel="self" type="application/rss+xml" />
	<link>http://d8d.org/blog</link>
	<description>Comments on web development, printing, and more.</description>
	<lastBuildDate>Sun, 13 Sep 2009 05:28:17 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>ActionScript 3 Maze Generator</title>
		<link>http://d8d.org/blog/?p=70</link>
		<comments>http://d8d.org/blog/?p=70#comments</comments>
		<pubDate>Sun, 13 Sep 2009 05:21:31 +0000</pubDate>
		<dc:creator>sponge</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Web]]></category>

		<guid isPermaLink="false">http://d8d.org/blog/?p=70</guid>
		<description><![CDATA[This is something that&#8217;s been sitting on my hard drive for a very long time now, an AS3 implementation of the Depth First Search algorithm, used here to generate mazes. This was originally created as a personal project, but it also ended up being applicable to a class. On both counts, the final product turned [...]]]></description>
			<content:encoded><![CDATA[<p>This is something that&#8217;s been sitting on my hard drive for a very long time now, an AS3 implementation of the <a href="http://en.wikipedia.org/wiki/Depth_first_search">Depth First Search algorithm,</a> used here to generate mazes. This was originally created as a personal project, but it also ended up being applicable to a class. On both counts, the final product turned out to be pretty cool.</p>
<p><a href="http://d8d.org/blog/wp-content/uploads/2009/09/mikemaze_screenshot.jpg"><img class="alignnone size-medium wp-image-73" title="mikemaze_screenshot" src="http://d8d.org/blog/wp-content/uploads/2009/09/mikemaze_screenshot-300x216.jpg" alt="mikemaze_screenshot" width="300" height="216" /></a></p>
<p>In addition to generating mazes, it also allows you to spawn mice to mindlessly scamper through the maze. Although the same algorithm to generate the maze could be used to solve it, this would&#8217;ve been pretty boring to look at. The mice, when faced with a decision, simply randomly pick a direction to go. This simple solving algorithm also allows you to spawn a few hundred mice without any real speed loss, which makes it slightly more exciting to watch.</p>
<p>The only real problem with this implementation as it stands is that the mazes it makes aren&#8217;t very tough. The incorrect paths usually hit a dead end pretty quickly, making it a lot easier to backtrack and continue.</p>
<p>The download containing everything is attached below, released under a 2 clause BSD license.</p>
<p><a href="http://d8d.org/blog/wp-content/uploads/2009/09/mikemaze.zip">Download SWF and source</a></p>
]]></content:encoded>
			<wfw:commentRss>http://d8d.org/blog/?feed=rss2&amp;p=70</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>JSONTamer: XUL-based JSON visualizer</title>
		<link>http://d8d.org/blog/?p=59</link>
		<comments>http://d8d.org/blog/?p=59#comments</comments>
		<pubDate>Mon, 27 Jul 2009 06:43:20 +0000</pubDate>
		<dc:creator>sponge</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[Web]]></category>

		<guid isPermaLink="false">http://d8d.org/blog/?p=59</guid>
		<description><![CDATA[JSONTamer is a simple Firefox extension that adds a new sidebar, and a new menu item under Tools. It allows the user to paste in any valid JSON string, as defined by JSON.org. When a string is entered, and the user hits Display, a tree is generated, showing the resulting object.]]></description>
			<content:encoded><![CDATA[<p>JSONTamer is a simple Firefox extension that adds a new sidebar, and a new menu item under Tools. It allows the user to paste in any valid JSON string, as defined by <a href="http://json.org/" target="_blank">JSON.org</a>. When a string is entered, and the user hits <strong>Display</strong>, a tree is generated, showing the resulting object.</p>
<p><a href="http://d8d.org/blog/wp-content/uploads/2009/07/jsontamer_screenshot.png"><img class="alignnone size-medium wp-image-60" title="jsontamer_screenshot_thumb" src="http://d8d.org/blog/wp-content/uploads/2009/07/jsontamer_screenshot-300x246.png" alt="jsontamer_screenshot_thumb" width="300" height="246" /></a></p>
<p>Current planned features include a version that can be used with the most excellent <a href="http://www.activestate.com/komodo/" target="_blank">Komodo IDE</a>, and a set of tools to allow creation of objects from scratch and manipulating existing objects.</p>
<p>A git repository will be available in the near future. For now, JSONTamer is only tested with Firefox 3.0 and above, though may work on older versions.<a href="http://d8d.org/blog/wp-content/uploads/2009/07/jsontamer_ffox.xpi"></a></p>
<p><a href="http://d8d.org/blog/wp-content/uploads/2009/07/jsontamer_ffox.xpi">Download JSONTamer 0.1</a></p>
]]></content:encoded>
			<wfw:commentRss>http://d8d.org/blog/?feed=rss2&amp;p=59</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Invoking the Firebug debugger from a script</title>
		<link>http://d8d.org/blog/?p=48</link>
		<comments>http://d8d.org/blog/?p=48#comments</comments>
		<pubDate>Tue, 09 Jun 2009 23:57:43 +0000</pubDate>
		<dc:creator>sponge</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[Web]]></category>

		<guid isPermaLink="false">http://d8d.org/blog/?p=48</guid>
		<description><![CDATA[If you&#8217;re tired of digging through the Firebug scripts tab to find and insert breakpoints, I was told today about a little-known trick in Firebug that allows you to add breakpoints directly in the source JS file itself.
By issuing the &#8216;debugger&#8217; statement anywhere in your code, Firebug will halt execution of the script at that [...]]]></description>
			<content:encoded><![CDATA[<p>If you&#8217;re tired of digging through the Firebug scripts tab to find and insert breakpoints, I was told today about a little-known trick in Firebug that allows you to add breakpoints directly in the source JS file itself.</p>
<p>By issuing the &#8216;debugger&#8217; statement anywhere in your code, Firebug will halt execution of the script at that location, popping up it&#8217;s debugger and highlighting the line where it was used. Example:</p>
<pre>    &lt;body&gt;
        Debugging:
            &lt;script type="text/javascript"&gt;
            for (var i=0; i&lt;100; i++) {
                if (i === 50) {
                    debugger;
                }
                document.write(i+"&lt;br&gt;");
            }
            &lt;/script&gt;
        Page end!
    &lt;/body&gt;</pre>
<p>Unfortunately, this feature seems to be specific to Firebug only, although the Chrome Javascript Debugger (CTRL + SHIFT + L) allows you to use the &#8220;break&#8221; command with an optional conditional. There does not seem to be any similar functionality in IE8, Opera, and Safari, although I would be glad to hear if it did.</p>
]]></content:encoded>
			<wfw:commentRss>http://d8d.org/blog/?feed=rss2&amp;p=48</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>QUAKE LIVE Twitter IRC Bot</title>
		<link>http://d8d.org/blog/?p=27</link>
		<comments>http://d8d.org/blog/?p=27#comments</comments>
		<pubDate>Fri, 13 Mar 2009 22:06:49 +0000</pubDate>
		<dc:creator>sponge</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[Web]]></category>

		<guid isPermaLink="false">http://d8d.org/blog/?p=27</guid>
		<description><![CDATA[On #quakelive on QuakeNet, there is a bot named QLTwitter that spits out text everytime the QUAKE LIVE Twitter account is updated. I&#8217;ve gotten a few requests for the code, so figure I&#8217;d publicly release it.
It has a couple of dependencies, all of which are available in Debian packages. Specifically, it requires POE, its IRC [...]]]></description>
			<content:encoded><![CDATA[<p>On #quakelive on QuakeNet, there is a bot named QLTwitter that spits out text everytime the <a href="http://www.twitter.com/quakelive">QUAKE LIVE Twitter account</a> is updated. I&#8217;ve gotten a few requests for the code, so figure I&#8217;d publicly release it.</p>
<p>It has a couple of dependencies, all of which are available in Debian packages. Specifically, it requires POE, its IRC client module, and JSON modules. It is basic, but it works, and can easily be changed to broadcast tweets from any other account.</p>
<p><code>
<pre>
use warnings;
use strict;

use POE;
use POE::Component::IRC;
use JSON;
use LWP::Simple;
use Time::HiRes qw(time);

my ($irc) = POE::Component::IRC->spawn();
my $currStatus = '';
my $updateDelay = 120;
sub CHANNEL { "#quakelive" }

POE::Session->create(
    inline_states => {
       _start     => \&#038;bot_start,
       irc_001    => \&#038;on_connect,
       tick       => \&#038;checkTweet
    },
);

sub bot_start {
    $irc->call(register => "all");
    $irc->call(connect =>
          { Nick => 'QLTwitter',
            Username => 'QLTwitter',
            Ircname  => 'QLTwitterBot by sponge',
            Server   => 'us.quakenet.org',
            Port     => '6667',
          }
    );
}

sub on_connect {
	$irc->call(privmsg => 'Q@CServe.quakenet.org', 'AUTH sponge ------');
	$irc->call(join => CHANNEL);
	$irc->call(privmsg => CHANNEL, 'QLTwitterBot is LARGE and IN CHARGE!');
	$_[KERNEL]->delay( tick => $updateDelay);
	checkTweet();
}

sub checkTweet {
	eval {
		my $json = get 'http://twitter.com/statuses/user_timeline/quakelive.json';
		my @statuses = from_json($json);
		my $curr = $statuses[0][0]->{'text'};
		if ($currStatus ne $curr) {
			$irc->call(privmsg => CHANNEL, "New QUAKE LIVE Twitter update: $curr");
			$currStatus = $curr;
		}
	};
	eval { $_[KERNEL]->delay( tick => $updateDelay); }
}

$poe_kernel->run();
exit 0;
</pre>
<p></code></p>
]]></content:encoded>
			<wfw:commentRss>http://d8d.org/blog/?feed=rss2&amp;p=27</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>New Server</title>
		<link>http://d8d.org/blog/?p=25</link>
		<comments>http://d8d.org/blog/?p=25#comments</comments>
		<pubDate>Tue, 10 Mar 2009 04:13:21 +0000</pubDate>
		<dc:creator>sponge</dc:creator>
				<category><![CDATA[Personal]]></category>
		<category><![CDATA[Site Updates]]></category>

		<guid isPermaLink="false">http://d8d.org/blog/?p=25</guid>
		<description><![CDATA[If you are reading this (which is kind of silly since if you&#8217;re not reading this you&#8217;ll have no idea this is there) then you&#8217;re reading d8d on the new server! Have been spending a couple of hours tonight getting all my stuff off our old server which is very likely ready to die any [...]]]></description>
			<content:encoded><![CDATA[<p>If you are reading this (which is kind of silly since if you&#8217;re not reading this you&#8217;ll have no idea this is there) then you&#8217;re reading d8d on the new server! Have been spending a couple of hours tonight getting all my stuff off our old server which is very likely ready to die any moment now. Anyway, hopefully all goes well, and time permitting, there&#8217;s been a few things I&#8217;ve been meaning to blog about.</p>
]]></content:encoded>
			<wfw:commentRss>http://d8d.org/blog/?feed=rss2&amp;p=25</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>New design online!</title>
		<link>http://d8d.org/blog/?p=24</link>
		<comments>http://d8d.org/blog/?p=24#comments</comments>
		<pubDate>Thu, 29 Jan 2009 09:14:34 +0000</pubDate>
		<dc:creator>sponge</dc:creator>
				<category><![CDATA[Site Updates]]></category>
		<category><![CDATA[Web]]></category>

		<guid isPermaLink="false">http://d8d.org/blog/?p=24</guid>
		<description><![CDATA[Finished up the couple of remaining bits, and my new design is now officially up! The blog at the moment is still unskinned, but I&#8217;ll probably be fixing that in the near future. The new site should hopefully be compatible, or at least working, in most major browsers, so any feedback on broken things would [...]]]></description>
			<content:encoded><![CDATA[<p>Finished up the couple of remaining bits, and my new design is now officially up! The blog at the moment is still unskinned, but I&#8217;ll probably be fixing that in the near future. The new site should hopefully be compatible, or at least working, in most major browsers, so any feedback on broken things would be greatly appreciated.</p>
]]></content:encoded>
			<wfw:commentRss>http://d8d.org/blog/?feed=rss2&amp;p=24</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
