<?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>Stefan Hayden &#187; resources</title>
	<atom:link href="http://www.stefanhayden.com/blog/category/resources/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.stefanhayden.com/blog</link>
	<description>Graphic Artist, Technophile, Web Librarian, Embarrassingly cute spelling mistakes.</description>
	<lastBuildDate>Fri, 23 Jul 2010 03:23:50 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>Set Windows 7 Default Email program to Gmail (using Chrome)</title>
		<link>http://www.stefanhayden.com/blog/2010/06/23/set-windows-7-default-email-program-to-gmail-using-chrome/</link>
		<comments>http://www.stefanhayden.com/blog/2010/06/23/set-windows-7-default-email-program-to-gmail-using-chrome/#comments</comments>
		<pubDate>Thu, 24 Jun 2010 04:02:41 +0000</pubDate>
		<dc:creator>Stefan Hayden</dc:creator>
				<category><![CDATA[resources]]></category>

		<guid isPermaLink="false">http://www.stefanhayden.com/blog/?p=1542</guid>
		<description><![CDATA[yarg. why is this so hard? Start > type &#8220;regedit&#8221; > hit enter go to HKEY_LOCAL_MACHINE\SOFTWARE\Classes\mailto\shell\open\command\ Edit (default) to &#8220;C:\Users\*username*\AppData\Local\Google\Chrome\Application\chrome.exe&#8221; https://mail.google.com/mail?extsrc=mailto&#038;url=%1 make sure to replace *username* with your username]]></description>
			<content:encoded><![CDATA[<p>yarg. why is this so hard?</p>
<ol>
<li><strong>Start</strong> > type &#8220;<strong>regedit</strong>&#8221; > hit enter</li>
<li>go to HKEY_LOCAL_MACHINE\SOFTWARE\Classes\mailto\shell\open\command\</li>
<li>Edit (default) to <strong>&#8220;C:\Users\*username*\AppData\Local\Google\Chrome\Application\chrome.exe&#8221; https://mail.google.com/mail?extsrc=mailto&#038;url=%1</strong></li>
<li>make sure to replace *username* with your username</li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://www.stefanhayden.com/blog/2010/06/23/set-windows-7-default-email-program-to-gmail-using-chrome/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>vimtutor</title>
		<link>http://www.stefanhayden.com/blog/2008/12/18/vimtutor/</link>
		<comments>http://www.stefanhayden.com/blog/2008/12/18/vimtutor/#comments</comments>
		<pubDate>Thu, 18 Dec 2008 16:58:10 +0000</pubDate>
		<dc:creator>Stefan Hayden</dc:creator>
				<category><![CDATA[resources]]></category>

		<guid isPermaLink="false">http://www.stefanhayden.com/blog/?p=1399</guid>
		<description><![CDATA[Took me two years to find it but go to your nearest ssh app and do a quick &#8220;vimtutor&#8220;. It&#8217;s the best tutorial I have found because you learn by doing not by reading and memorizing.]]></description>
			<content:encoded><![CDATA[<p>Took me two years to find it but go to your nearest ssh app and do a quick &#8220;<a href="http://linuxcommand.gds.tuwien.ac.at/man_pages/vimtutor1.html">vimtutor</a>&#8220;. It&#8217;s the best tutorial I have found because you learn by doing not by reading and memorizing.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.stefanhayden.com/blog/2008/12/18/vimtutor/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Javascript Event onJSReady Fires When All JS Files Have Loaded</title>
		<link>http://www.stefanhayden.com/blog/2008/07/29/javascript-event-onjsready-fires-when-all-js-files-have-loaded/</link>
		<comments>http://www.stefanhayden.com/blog/2008/07/29/javascript-event-onjsready-fires-when-all-js-files-have-loaded/#comments</comments>
		<pubDate>Tue, 29 Jul 2008 15:57:35 +0000</pubDate>
		<dc:creator>Stefan Hayden</dc:creator>
				<category><![CDATA[design]]></category>
		<category><![CDATA[resources]]></category>
		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://www.stefanhayden.com/blog/?p=992</guid>
		<description><![CDATA[Update: jdalton has what looks like a great improvement on my attempt below. Read below to learn about the problem but look at jdalton&#8217;s script to see what is now the current best way to implement a solution. Update (August 5th, 2008): There was an update to the JavaScript below to better handle IE firing [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Update:</strong> <a href="http://www.protolific.net/">jdalton</a> has what looks like a great improvement on my attempt below. Read below to learn about the problem but look at <strong><a href="http://pastie.org/244187">jdalton&#8217;s script</a></strong> to see what is now the current best way to implement a solution.</p>
<p><strong>Update (August 5th, 2008):</strong> There was an update to the JavaScript below to better handle IE firing off the ready state.</p>
<p><strong style="font-size:150%; color:#FDCB26">Warning!:</strong> Due to a Prototype bug This code is not reliable in any version of IE. This bug is expected to be fixed in Prototype 1.6.0.3.</p>
<hr />
<p>So the <a href="http://yuiblog.com/blog/2008/07/22/non-blocking-scripts/">YUI blog had a great post on how javascript blocks downloads</a> and makes the page take longer to load. This is because any JS file can modify the DOM and so the DOM can&#8217;t be ready until all JS files have loaded.</p>
<p><a href="http://www.flugpo.com">Flugpo</a> uses Prototype and not YUI and so to get the speed benefits I needed to build my own Bells and whistles. The problem is that once you load the JS files asynchronously any onDOMReady function will fire before all the JS files download. This is a problem for any inline function calls that have dependencies on other JS files.</p>
<p>Using the Prototype based onDOMReady extension I have created an onJSReady function that checks that all JS files have been loaded. The function needs to know 2 things. How many JS files there are and how many have currently been loaded. When those two number match the even fires and runs any code that is waiting.</p>
<pre style="overflow:scroll; width:460px; border:1px solid; margin-bottom:10px;"><code >
/**
 * A modified version of Stefan Hayden's onJSReady Prototype plugin.
 * http://www.stefanhayden.com/blog/2008/07/29/javascript-event-onjsready-fires-when-all-js-files-have-loaded/
 *
 * @author John-David Dalton <john.david.dalton[at]gmail[dot]com>
 * @usage
 *   Prototype.include(['test1.js','test2.js','test3.js']); // array
 *   Prototype.include('test1.js', 'test2.js', 'test3.js'); // separate arguments OR
 *   Prototype.include('test1.js,test2.js,test3.js');       // comma separated string OR
 *
 *   document.observe('scripts:loaded', function(){ dependent_on_external_js() });
 */
Prototype.include = Object.extend(
  function() {
    var callee = arguments.callee,
     head = document.getElementsByTagName('HEAD')[0],
     args = Array.prototype.slice.call(arguments, 0);

    args._each(function(files) {
      if (Object.isString(files))
        files = files.split(',');

      callee.total += files.length;
      files._each(function(file) {
        head.appendChild(
          new Element('script', { type: 'text/javascript', src: file.strip() })
        )
        .observe('readystatechange', function () {
          if (!this.loaded &#038;&#038; /^(loaded|complete)$/.test(this.readyState)) {
            this.loaded = true;
            callee.downloaded++;
          }
        })
        .observe('load', function () {
          if (this.loaded) return;
          this.loaded = true;
          callee.downloaded++;
        }); // end observers
      }); // end files _each
    }); // end args _each
  },
  {
    total: 0,
    downloaded: 0
  }
);

(function() {
  var timer;
  function ready() {
    if (arguments.callee.done) return;
    clearInterval(timer);
    arguments.callee.done = true;
    document.fire('scripts:loaded');
  }

  timer = setInterval(function() {
    var i = Prototype.include;
    if (i.total &#038;&#038; i.downloaded === i.total) ready();
  }, 10);
})();

</code></pre>
<pre style="overflow:scroll; width:460px; height:100px; border:1px solid; margin-bottom:10px;"><code >
This is old... ignore this.
<del datetime="2008-07-30T21:44:42+00:00">window.Total_JS_Files;
window.Downloaded_JS_Files = 0;

function include_js(files) {
	var js=new Array();
	window.Total_JS_Files = files.length;

	for(var i=0; i < files.length; i++) { 

	    var html_doc = document.getElementsByTagName('head')[0];
	    js[i] = document.createElement('script');
	    js[i].setAttribute('type', 'text/javascript');
	    js[i].setAttribute('src', files[i]);
	    html_doc.appendChild(js[i]);

	    js[i].onreadystatechange = function () {
	        if (js[i].readyState == 'complete') {
	            //alert('JS onreadystate fired ');
	            window.Downloaded_JS_Files += 1;
	        }
	    }

	    js[i].onload = function () {
	        //alert('JS onload fired ');
	            window.Downloaded_JS_Files += 1;
	    }
    }
    return false;
}//include_js

Object.extend(Event, {
  timeout : function() {
	alert('asd');
  },
  jsReady : function() {

    if (arguments.callee.done) {return;}
    arguments.callee.done = true;

	Event._NreadyCallbacks.each(function(f) { f(); });
	Event._NreadyCallbacks = null;

  },
  onJSReady : function(f) {
    if (!this._NreadyCallbacks) {
      var jsReady = this.jsReady;

      if (jsReady.done) {return f();} 

		function jsTest() {
			if(window.Downloaded_JS_Files == window.Total_JS_Files) {
				//setTimeout(jsReady,1);
				jsReady();
			}
			Event._Ntimer = setTimeout(jsTest,1);
		}
		Event._Ntimer = setTimeout(jsTest,10); 

        //Event.observe(window, 'load', jsReady);
        Event._NreadyCallbacks =  [];
    }
    Event._NreadyCallbacks.push(f);
  }
});
  </del>
</code></pre>
<p>To implement this the only JS that needs to load is prototype and these two functions above. Then you just need to load the URLs for the JS files and fire off the include_js function.</p>
<pre style="overflow:scroll; width:460px; border:1px solid; margin-bottom:10px;"><code >
var js_paths = new Array;
js_paths[js_paths.length] = '/path/to/js/one.js';
js_paths[js_paths.length] = '/path/to/js/two.js';
js_paths[js_paths.length] = '/path/to/js/three.js';

<del datetime="2008-07-30T21:45:28+00:00">include_js(js_paths);</del>
Prototype.include(js_paths);
</code></pre>
<p>Once all of the JS files have loaded then just like onDOMReady the onJSReady code will fire.</p>
<pre style="overflow:scroll; width:460px; border:1px solid; padding-top:10px; margin-bottom:10px;"><code >
<del datetime="2008-07-30T21:45:28+00:00">Event.onJSReady(function () { dependent_on_external_js(); });</del>
 document.observe('scripts:loaded', function(){ dependent_on_external_js() });

</code></pre>
]]></content:encoded>
			<wfw:commentRss>http://www.stefanhayden.com/blog/2008/07/29/javascript-event-onjsready-fires-when-all-js-files-have-loaded/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Act 1 of Dr. Horrible&#8217;s Sing-Along Blog</title>
		<link>http://www.stefanhayden.com/blog/2008/07/15/act-1-of-dr-horribles-sing-along-blog/</link>
		<comments>http://www.stefanhayden.com/blog/2008/07/15/act-1-of-dr-horribles-sing-along-blog/#comments</comments>
		<pubDate>Tue, 15 Jul 2008 14:21:48 +0000</pubDate>
		<dc:creator>Stefan Hayden</dc:creator>
				<category><![CDATA[resources]]></category>
		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://www.stefanhayden.com/blog/?p=939</guid>
		<description><![CDATA[Act 1 of Dr. Horrible&#8217;s Sing-Along Blog is out and it&#8217;s awesome. Totally buying the DVD.]]></description>
			<content:encoded><![CDATA[<p><a href="http://drhorrible.com/">Act 1 of Dr. Horrible&#8217;s Sing-Along Blog</a> is out and it&#8217;s awesome. Totally buying the DVD. </p>
]]></content:encoded>
			<wfw:commentRss>http://www.stefanhayden.com/blog/2008/07/15/act-1-of-dr-horribles-sing-along-blog/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Copilot Free on Weekends</title>
		<link>http://www.stefanhayden.com/blog/2008/01/25/copilot-free-on-weekends/</link>
		<comments>http://www.stefanhayden.com/blog/2008/01/25/copilot-free-on-weekends/#comments</comments>
		<pubDate>Fri, 25 Jan 2008 21:05:20 +0000</pubDate>
		<dc:creator>Stefan Hayden</dc:creator>
				<category><![CDATA[resources]]></category>
		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://www.stefanhayden.com/blog/2008/01/25/copilot-free-on-weekends/</guid>
		<description><![CDATA[Copilot, the app that lets you easily remote control another&#8217;s computer for user support, is now 100% free on the weekends. And they have a generous definition of weekend. 8pm EST (GMT-5) Friday night to 2am EST Monday morning.]]></description>
			<content:encoded><![CDATA[<p><a href="https://www.copilot.com/">Copilot</a>, the app that lets you easily remote control another&#8217;s computer for user support, is <a href="http://www.joelonsoftware.com/items/2008/01/25.html">now 100% free on the weekends</a>.  And they have a generous definition of weekend. 8pm EST (GMT-5) Friday night to 2am EST Monday morning.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.stefanhayden.com/blog/2008/01/25/copilot-free-on-weekends/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Jaxer &#8211; Server Side Javascript</title>
		<link>http://www.stefanhayden.com/blog/2008/01/24/jaxer-server-side-javascript/</link>
		<comments>http://www.stefanhayden.com/blog/2008/01/24/jaxer-server-side-javascript/#comments</comments>
		<pubDate>Thu, 24 Jan 2008 17:20:19 +0000</pubDate>
		<dc:creator>Stefan Hayden</dc:creator>
				<category><![CDATA[resources]]></category>

		<guid isPermaLink="false">http://www.stefanhayden.com/blog/2008/01/24/jaxer-server-side-javascript/</guid>
		<description><![CDATA[Currently I&#8217;m in love with the idea behind Jaxer which is a server that lets you run javascript both on the client and server. Not sure when or if I&#8217;ll get a chance to play with this but the screencasts have me enamored.]]></description>
			<content:encoded><![CDATA[<p>Currently <a href="http://aptana.com/jaxer/">I&#8217;m in love with the idea behind Jaxer</a> which is a server that lets you run javascript both on the client and server. Not sure when or if I&#8217;ll get a chance to play with this but <a href="http://aptana.com/screencasts">the screencasts</a> have me enamored.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.stefanhayden.com/blog/2008/01/24/jaxer-server-side-javascript/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>how to raise smart kids</title>
		<link>http://www.stefanhayden.com/blog/2007/12/05/how-to-raise-smart-kids/</link>
		<comments>http://www.stefanhayden.com/blog/2007/12/05/how-to-raise-smart-kids/#comments</comments>
		<pubDate>Wed, 05 Dec 2007 17:12:45 +0000</pubDate>
		<dc:creator>Stefan Hayden</dc:creator>
				<category><![CDATA[personal]]></category>
		<category><![CDATA[resources]]></category>

		<guid isPermaLink="false">http://www.stefanhayden.com/blog/2007/12/05/how-to-raise-smart-kids/</guid>
		<description><![CDATA[There seems to be a lot of good articles recently about how to raise smart kids. About how telling them they are smart is different them telling them the amount of effort they put in makes them smart. To a point I definitely suffered from this as a kid and I still struggle with it [...]]]></description>
			<content:encoded><![CDATA[<p>There seems to be a lot of good articles recently about <a href="http://www.sciam.com/article.cfm?id=the-secret-to-raising-smart-kids&amp;print=true">how to raise smart kids</a>. About how telling them they are smart is different them telling them the amount of effort they put in makes them smart. To a point I definitely suffered from this as a kid and I still struggle with it today. It&#8217;s hard to relearn to just put on foot in front of the other.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.stefanhayden.com/blog/2007/12/05/how-to-raise-smart-kids/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title></title>
		<link>http://www.stefanhayden.com/blog/2007/10/30/637/</link>
		<comments>http://www.stefanhayden.com/blog/2007/10/30/637/#comments</comments>
		<pubDate>Tue, 30 Oct 2007 16:01:38 +0000</pubDate>
		<dc:creator>Stefan Hayden</dc:creator>
				<category><![CDATA[blog]]></category>
		<category><![CDATA[resources]]></category>
		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://www.stefanhayden.com/blog/2007/10/30/637/</guid>
		<description><![CDATA[Intense Debate seems like a cool new service. You can install it on your site as a commenting system to replace the default system in popular systems like blogger and wordpress. It seems to integrate pretty well with the ability to import and export comments and just a lot of work was put in to [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.intensedebate.com">Intense Debate seems like a cool new service</a>. You can install it on your site as a commenting system to replace the default system in popular systems like blogger and wordpress. It seems to integrate pretty well with the ability to import and export comments and just a lot of work was put in to not seem like a silo stealing your information.</p>
<p>The functionality seems a little over kill for small site like mine but I do like the benefit of knowing more about who is leaving comments. I can&#8217;t see my self being an early adopter but if this catches on and tons of people use it I would not be opposed to setting it up.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.stefanhayden.com/blog/2007/10/30/637/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>OpenId</title>
		<link>http://www.stefanhayden.com/blog/2007/10/05/openid/</link>
		<comments>http://www.stefanhayden.com/blog/2007/10/05/openid/#comments</comments>
		<pubDate>Fri, 05 Oct 2007 14:05:21 +0000</pubDate>
		<dc:creator>Stefan Hayden</dc:creator>
				<category><![CDATA[resources]]></category>
		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://www.stefanhayden.com/blog/2007/10/05/openid/</guid>
		<description><![CDATA[I&#8217;ve been ignoring openid for a while. For no good reason really. Yesterday I turned my site in to my own openid. With just a little html I can now use my url to log in to any openid website. everyone should do this.]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve been ignoring <a href="http://openid.net/">openid</a> for a while. For no good reason really. Yesterday <a href="http://simonwillison.net/2006/Dec/19/openid/">I turned my site in to my own openid</a>. With just a little html I can now use my url to log in to <a href="https://www.myopenid.com/directory">any openid website</a>. everyone should do this.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.stefanhayden.com/blog/2007/10/05/openid/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Introduction to Databases for the Web</title>
		<link>http://www.stefanhayden.com/blog/2007/09/20/introduction-to-databases-for-the-web/</link>
		<comments>http://www.stefanhayden.com/blog/2007/09/20/introduction-to-databases-for-the-web/#comments</comments>
		<pubDate>Thu, 20 Sep 2007 17:43:07 +0000</pubDate>
		<dc:creator>Stefan Hayden</dc:creator>
				<category><![CDATA[resources]]></category>
		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://www.stefanhayden.com/blog/2007/09/20/introduction-to-databases-for-the-web/</guid>
		<description><![CDATA[Want to be an expert on databases but don&#8217;t know where to start? Introduction to Databases for the Web is a really great article with very plain language that will teach any one the basics.]]></description>
			<content:encoded><![CDATA[<p>Want to be an expert on databases but don&#8217;t know where to start? <a href="http://www.databasejournal.com/sqletc/article.php/26861_1428721_1">Introduction to Databases for the Web</a> is a really great article with very plain language that will teach any one the basics.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.stefanhayden.com/blog/2007/09/20/introduction-to-databases-for-the-web/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>OMG&#8230; photoshop can auto crop and straighten photos scanned in on a flat bed scanner</title>
		<link>http://www.stefanhayden.com/blog/2007/09/02/omg-photoshop-can-auto-crop-and-straighten-photos-scanned-in-on-a-flat-bed-scanner/</link>
		<comments>http://www.stefanhayden.com/blog/2007/09/02/omg-photoshop-can-auto-crop-and-straighten-photos-scanned-in-on-a-flat-bed-scanner/#comments</comments>
		<pubDate>Mon, 03 Sep 2007 04:19:01 +0000</pubDate>
		<dc:creator>Stefan Hayden</dc:creator>
				<category><![CDATA[design]]></category>
		<category><![CDATA[resources]]></category>

		<guid isPermaLink="false">http://www.stefanhayden.com/blog/2007/09/02/omg-photoshop-can-auto-crop-and-straighten-photos-scanned-in-on-a-flat-bed-scanner/</guid>
		<description><![CDATA[OMG&#8230; photoshop can auto crop and straighten photos scanned in on a flat bed scanner! I will not forget this.]]></description>
			<content:encoded><![CDATA[<p><a href="http://blog.thembid.com/index.php/2007/09/01/do-you-still-scan-photos-with-a-flatbed-scanner/">OMG&#8230; photoshop can auto crop and straighten photos scanned in on a flat bed scanner</a>! I will not forget this.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.stefanhayden.com/blog/2007/09/02/omg-photoshop-can-auto-crop-and-straighten-photos-scanned-in-on-a-flat-bed-scanner/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Wikipedia: List of Web Page Layout Engines</title>
		<link>http://www.stefanhayden.com/blog/2007/08/10/wikipedia-list-of-web-page-layout-engines/</link>
		<comments>http://www.stefanhayden.com/blog/2007/08/10/wikipedia-list-of-web-page-layout-engines/#comments</comments>
		<pubDate>Fri, 10 Aug 2007 17:54:06 +0000</pubDate>
		<dc:creator>Stefan Hayden</dc:creator>
				<category><![CDATA[resources]]></category>

		<guid isPermaLink="false">http://www.stefanhayden.com/blog/2007/08/10/wikipedia-list-of-web-page-layout-engines/</guid>
		<description><![CDATA[Wikipedia: List of Web Page Layout Engines]]></description>
			<content:encoded><![CDATA[<p><a href="http://en.wikipedia.org/wiki/List_of_layout_engines">Wikipedia: List of Web Page Layout Engines</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.stefanhayden.com/blog/2007/08/10/wikipedia-list-of-web-page-layout-engines/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Really great, small, fast PDF viewer: Sumatra PDF</title>
		<link>http://www.stefanhayden.com/blog/2007/08/09/really-great-small-fast-pdf-viewer-sumatra-pdf/</link>
		<comments>http://www.stefanhayden.com/blog/2007/08/09/really-great-small-fast-pdf-viewer-sumatra-pdf/#comments</comments>
		<pubDate>Thu, 09 Aug 2007 19:08:43 +0000</pubDate>
		<dc:creator>Stefan Hayden</dc:creator>
				<category><![CDATA[resources]]></category>

		<guid isPermaLink="false">http://www.stefanhayden.com/blog/2007/08/09/really-great-small-fast-pdf-viewer-sumatra-pdf/</guid>
		<description><![CDATA[Really great, small, fast PDF viewer: Sumatra PDF]]></description>
			<content:encoded><![CDATA[<p><a href="http://blog.kowalczyk.info/software/sumatrapdf/">Really great, small, fast PDF viewer: Sumatra PDF</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.stefanhayden.com/blog/2007/08/09/really-great-small-fast-pdf-viewer-sumatra-pdf/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Very cool RegEx tool</title>
		<link>http://www.stefanhayden.com/blog/2007/07/23/very-cool-regex-tool/</link>
		<comments>http://www.stefanhayden.com/blog/2007/07/23/very-cool-regex-tool/#comments</comments>
		<pubDate>Mon, 23 Jul 2007 19:37:32 +0000</pubDate>
		<dc:creator>Stefan Hayden</dc:creator>
				<category><![CDATA[resources]]></category>
		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://www.stefanhayden.com/blog/2007/07/23/very-cool-regex-tool/</guid>
		<description><![CDATA[Very cool RegEx tool. Expression in top text in the second textarea and results appear on the bottom. They even have a build in quick reference sheet. Slowly I&#8217;m getting a good handle on how regex really works.]]></description>
			<content:encoded><![CDATA[<p><a href="http://erik.eae.net/playground/regexp/regexp.html">Very cool RegEx tool</a>. Expression in top text in the second textarea and results appear on the bottom. They even have a build in quick reference sheet. Slowly I&#8217;m getting a good handle on how regex really works.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.stefanhayden.com/blog/2007/07/23/very-cool-regex-tool/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>~1,167 die trying to immigrate to Spain illegally</title>
		<link>http://www.stefanhayden.com/blog/2007/07/19/1167-die-trying-to-immigrate-to-spain-illegally/</link>
		<comments>http://www.stefanhayden.com/blog/2007/07/19/1167-die-trying-to-immigrate-to-spain-illegally/#comments</comments>
		<pubDate>Thu, 19 Jul 2007 15:47:40 +0000</pubDate>
		<dc:creator>Stefan Hayden</dc:creator>
				<category><![CDATA[resources]]></category>

		<guid isPermaLink="false">http://www.stefanhayden.com/blog/2007/07/19/1167-die-trying-to-immigrate-to-spain-illegally/</guid>
		<description><![CDATA[~1,167 die trying to immigrate to Spain illegally. Spain owns two tiny cities on the coast of northern Morocco, Ceuta and Melilla, which are also popular way for Subsaharans to illegally enter the EU. The EU funded ~$70 million to build some very hardcore fences. Which is sad but it&#8217;s also nice to see America&#8217;s [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://theguiridispatches.wordpress.com/2007/07/18/a-look-at-spain-for-a-moment/">~1,167 die trying to immigrate to Spain illegally</a>. Spain owns two tiny cities on the coast of northern Morocco, <a href="http://en.wikipedia.org/wiki/Ceuta">Ceuta</a> and <a href="http://en.wikipedia.org/wiki/Melilla">Melilla</a>, which are also popular way for Subsaharans to illegally enter the EU. The EU funded ~$70 million to build some very <a href="http://en.wikipedia.org/wiki/Ceuta_border_fence">hardcore</a> <a href="http://en.wikipedia.org/wiki/Melilla_border_fence">fences</a>. Which is sad but it&#8217;s also nice to see America&#8217;s not the meanest when it comes to immigration.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.stefanhayden.com/blog/2007/07/19/1167-die-trying-to-immigrate-to-spain-illegally/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
