<?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>Christopher Pryce</title>
	<atom:link href="http://www.pryce.net/feed" rel="self" type="application/rss+xml" />
	<link>http://www.pryce.net</link>
	<description>Web Developer</description>
	<lastBuildDate>Fri, 10 Feb 2012 15:31:28 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>JavaScript Prototypal Inheritance</title>
		<link>http://www.pryce.net/archives/100</link>
		<comments>http://www.pryce.net/archives/100#comments</comments>
		<pubDate>Fri, 10 Feb 2012 14:48:14 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[javascript]]></category>
		<category><![CDATA[web development]]></category>

		<guid isPermaLink="false">http://www.pryce.net/?p=100</guid>
		<description><![CDATA[In this example of prototypal inheritance, we are creating a Bug prototype. It serves as a base to provide properties and methods that all bugs share. Then we will instantiate new instances of the Bug prototype for specific implementations. var clone = function(o) { function F(){} F.prototype = o; return new F; }; // Our [...]]]></description>
			<content:encoded><![CDATA[<p>
In this example of prototypal inheritance, we are creating a Bug prototype. It serves as a base to provide properties and methods that all bugs share. Then we will instantiate new instances of the Bug prototype for specific implementations. </p>
<pre>
var clone = function(o) {
    function F(){}
    F.prototype = o;
    return new F;
};

// Our insect prototype
var Bug = {
    species: "Prototype Bug",
    attributes: [
        'Three Body Segments',
        'Six Legs',
        'Exo-Sekelton'
    ],
    getSpecies: function() {
        return this.species;
    }
};

var beetle = clone(Bug);
beetle.species = 'Beetle';
beetle.attributes.push('Eats Dung');

// we now have a child of the prototype with additional attributes.
console.log(beetle);

// The prototype
var ladyBug = clone(Bug);
ladyBug.species = 'Japanese Bug';
console.log(ladyBug);
</pre>
<p>
The problem here is that the ladyBug object gets the attribute &#8216;Eats Dung&#8217;, because beetle actually modified a reference to the attributes in the prototype, not its own copy. This will trip up programmers that are used to a classical inheritance model.
</p>
<p>
The solution is to create factory functions to provide these properties and methods. </p>
<p><pre>
var Bug = {
    getSpecies: function() {
        return this.species;
    }
};
Bug.species = 'default species';
Bug.addBugAttributes = function() {
    var attr = ['three body segments', 'six legs', 'compound eyes'];
    return attr;
};
Bug.attributes = Bug.addBugAttributes();

var beetle = clone(Bug);
beetle.species = 'Beetle';
beetle.attributes = Bug.addBugAttributes();
beetle.attributes.push('Eats Dung');

var ladyBug = clone(Bug);
ladyBug.species = 'Japanese Beetle';
ladyBug.attributes = Bug.addBugAttributes();
ladyBug.attributes.push('Eats Aphids');

console.log(ladyBug);
console.log(beetle);
</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.pryce.net/archives/100/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Bricss &#8211; Simple responsive design test page</title>
		<link>http://www.pryce.net/archives/97</link>
		<comments>http://www.pryce.net/archives/97#comments</comments>
		<pubDate>Mon, 06 Feb 2012 15:38:43 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[web development]]></category>

		<guid isPermaLink="false">http://www.pryce.net/?p=97</guid>
		<description><![CDATA[I was completely excited when I saw this post. A responsive design test page. Make sure to check out the links at the end of the article to the bookmarklets that have been generated around this idea. Very handy little tool that will be part of my tool kit going forward. Bricss &#8211; Simple responsive [...]]]></description>
			<content:encoded><![CDATA[<p>I was completely excited when I saw this post. A responsive design test page. Make sure to check out the links at the end of the article to the bookmarklets that have been generated around this idea.</p>
<p>Very handy little tool that will be part of my tool kit going forward.</p>
<blockquote><p><a href='http://bricss.net/post/16538278376/simple-responsive-design-test-page'>Bricss &#8211; Simple responsive design test page</a>.</p>
</blockquote>
]]></content:encoded>
			<wfw:commentRss>http://www.pryce.net/archives/97/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Primitives vs. Constructed Objects in JavaScript</title>
		<link>http://www.pryce.net/archives/84</link>
		<comments>http://www.pryce.net/archives/84#comments</comments>
		<pubDate>Wed, 01 Feb 2012 17:00:14 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[javascript style]]></category>

		<guid isPermaLink="false">http://www.pryce.net/?p=84</guid>
		<description><![CDATA[A user asked me a question in a recent training session. Can you use a constructor to create primitives? In other words: var x = new Boolean(false); I thought about it, and answered, &#8220;Sure. But why?&#8221; I mean, we aren&#8217;t programming in Java here. This type of constructor is also dangerous. // Don't do this [...]]]></description>
			<content:encoded><![CDATA[<p>A user asked me a question in a recent training session.</p>
<blockquote><p>Can you use a constructor to create primitives?</p></blockquote>
<p>In other words: </p>
<pre>
var x = new Boolean(false);
</pre>
<p>
I thought about it, and answered, &#8220;Sure. But why?&#8221; I mean, we aren&#8217;t programming in Java here. This type of constructor is also dangerous.
</p>
<pre>
// Don't do this in production
var maybeAlertUser = new Boolean(false);

(maybeAlertUser  === true); // this is false, but ...

if (maybeAlertUser) {
    // this always alerts
    alert("Houston, we have a problem");
}

alert(typeof maybeAlertUser); // object
</pre>
<p>We discussed that it is safe to use the object to type cast:</p>
<pre>
var x = 0;
var maybeAlertUser = Boolean(x);

if (maybeAlertUser) {
    // this never alerts
    alert("Houston, we have a problem");
}

(maybeAlertUser === false); // yup!
</pre>
<p>
The JavaScript idiom to use negation operator seems to be just as safe. In this instance, the first operation converts zero to a boolean and inverts the value (turning it to true). And the second inverts the value (turning it to false), but it strikes terror into Java coders.
</p>
<pre>
var x = 0;
var maybeAlertUser = !! x;

if (maybeAlertUser) {
    alert("Houston, we have a problem"); // never alerts
}

(maybeAlertUser === false); // yup!
</pre>
<p>Which do you prefer?</p>
]]></content:encoded>
			<wfw:commentRss>http://www.pryce.net/archives/84/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>HTML5 and You &#124; Nettuts+</title>
		<link>http://www.pryce.net/archives/77</link>
		<comments>http://www.pryce.net/archives/77#comments</comments>
		<pubDate>Mon, 16 Jan 2012 16:21:17 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[HTML 5]]></category>

		<guid isPermaLink="false">http://www.pryce.net/?p=77</guid>
		<description><![CDATA[NetTuts has an outstanding collection of HTML 5 Tutorials organized into a 14-article Session: HTML5 has been the buzzword with the web development community for a while now. If you feel a bit overwhelmed and behind the pack, never fear. This session is all you need to get up to speed, fast. We cover everything [...]]]></description>
			<content:encoded><![CDATA[<p>NetTuts has an outstanding collection of HTML 5 Tutorials organized into a 14-article Session: </p>
<blockquote>
<p>HTML5 has been the buzzword with the web development community for a while now. If you feel a bit overwhelmed and behind the pack, never fear. This session is all you need to get up to speed, fast. We cover everything from the new HTML5 elements, to microdata, to the new JavaScript APIs.</p>
</blockquote>
<p>See the full article: <a href='http://net.tutsplus.com/sessions/html5-and-you/'>HTML5 and You | Nettuts+</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.pryce.net/archives/77/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Test-Driven JavaScript Development in Practice &#124; Nettuts+</title>
		<link>http://www.pryce.net/archives/75</link>
		<comments>http://www.pryce.net/archives/75#comments</comments>
		<pubDate>Mon, 16 Jan 2012 15:03:13 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[javascript]]></category>
		<category><![CDATA[web development]]></category>

		<guid isPermaLink="false">http://www.pryce.net/?p=75</guid>
		<description><![CDATA[I ran across this tutorial which was originally posted in November of 2012. Recently, I gave a demonstration of qunit in our technology discussion group, so the timing is right on. Test-Driven JavaScript Development in Practice Christian Johansen on Jan 14th 2012 Tutorial Details Topic: JavaScript Testing Difficulty: Intermediate-Advanced TDD is an iterative development process [...]]]></description>
			<content:encoded><![CDATA[<p>I ran across this tutorial which was originally posted in November of 2012. Recently, I gave a demonstration of qunit in our technology discussion group, so the timing is right on.</p>
<blockquote>
<h3>Test-Driven JavaScript Development in Practice</h3>
<p>Christian Johansen on Jan 14th 2012</p>
<p>Tutorial Details</p>
<ul>
<li>Topic: JavaScript Testing</li>
<li>Difficulty: Intermediate-Advanced</li>
</ul>
<p>TDD is an iterative development process where each iteration starts by writing a test which forms a part of the specification we are implementing. The short iterations allow for more instant feedback on the code we are writing, and bad design decisions are easier to catch. By writing the tests prior to any production code, good unit test coverage comes with the territory, but that is merely a welcome side-effect.</p>
<p>See the full article:  <a href="http://net.tutsplus.com/tutorials/javascript-ajax/test-driven-javascript-development-in-practice/?utm_source=feedburner&amp;utm_medium=feed&amp;utm_campaign=Feed%3A+nettuts+%28Nettuts%2B%29">Test-Driven JavaScript Development in Practice | Nettuts+</a>.</p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://www.pryce.net/archives/75/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Links</title>
		<link>http://www.pryce.net/archives/73</link>
		<comments>http://www.pryce.net/archives/73#comments</comments>
		<pubDate>Fri, 13 Jan 2012 20:43:07 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[web development]]></category>

		<guid isPermaLink="false">http://www.pryce.net/?p=73</guid>
		<description><![CDATA[Some links from a recent discussion. Zurb grid boiler plates http://foundation.zurb.com/ Nettuts : web tutorials http://www.nettuts.com CSS Tips and Tricks http://css-tricks.com/]]></description>
			<content:encoded><![CDATA[<p>Some links from a recent discussion.</p>
<p>Zurb grid boiler plates<br />
<a href="http://foundation.zurb.com/ ">http://foundation.zurb.com/ </a></p>
<p>Nettuts : web tutorials<br />
<a href="http://www.nettuts.com">http://www.nettuts.com</a></p>
<p>CSS Tips and Tricks<br />
<a href="http://css-tricks.com/">http://css-tricks.com/</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.pryce.net/archives/73/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Encapsulation in JavaScript</title>
		<link>http://www.pryce.net/archives/15</link>
		<comments>http://www.pryce.net/archives/15#comments</comments>
		<pubDate>Wed, 11 Jan 2012 23:17:26 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[javascript]]></category>
		<category><![CDATA[web development]]></category>

		<guid isPermaLink="false">http://www.pryce.net/?p=15</guid>
		<description><![CDATA[Some Notes from a discussion of encapsulation in JavaScript The topic of encapsulation in JavaScript came up in our bi-weekly technologists group recently. First question was, what is encapsulation and why is it a good thing. The first obvious benefit is the elimination of global values. An example with global variables. TAX_RATE is vulnerable; it [...]]]></description>
			<content:encoded><![CDATA[<h2>Some Notes from a discussion of encapsulation in JavaScript</h2>
<p>The topic of encapsulation in JavaScript came up in our bi-weekly technologists group recently. First question was, what is encapsulation and why is it a good thing. The first obvious benefit is the elimination of global values.</p>
<p>An example with global variables. TAX_RATE is vulnerable; it is a global variable that can be overwritten.</p>
<pre>
// Not Best Practice. Relies on Global variables and functions.
var TAX_RATE = 0.07;

function calculateTotalPrice(basePrice) {
    return basePrice + (basePrice * TAX_RATE);
}

function calcPrice () {
    var basePrice = document.getElementById('ex1_basePrice').value;
    basePrice = basePrice - 0; // cast to integer
    var totalPrice = calculateTotalPrice(basePrice);
    document.getElementById('ex1_totalPrice').value = totalPrice;
}
</pre>
<p>The problem with the global variable, or course, is that anything can come along a modify it. In this HTML example, click Calculate Price. Then open a console window (Use Firebug or Developer Tools) and alter this global variable: </p>
<pre>
> TAX_RATE = 1.00;
</pre>
<p>Now click Calculate Price. It would be just as easy to overwrite the global functions to produce different values: </p>
<pre>
> calcPrice = function() { return 1; }
</pre>
<p>Now our price calculation is completely re-written. </p>
<p>One practice to prevent the collision of global variables is to organize them in a single global variable: </p>
<pre>
var myApp = {
    TAX_RATE: 0.08,
     
    calculateTotalPrice: function(basePrice) {
        return basePrice + (basePrice * this.TAX_RATE);
    },
     
    calcPrice: function() {
        var basePrice = document.getElementById('ex3_basePrice').value;
        basePrice = basePrice - 0;
        var totalPrice = myApp.calculateTotalPrice(basePrice);
        document.getElementById('ex3_totalPrice').value = totalPrice;
    }
};
</pre>
<p>This works, but it can still leave myApp vulnerable. myApp.TAX_RATE is still globally accessible. </p>
<p>Using encapsulation, it is possible to create protected members.  </p>
<pre>
var calcPrice2 = (function() {
    // private
    var PRIVATE_TAX_RATE = 0.05;

    function calculateTotalPrice2(basePrice) {
        return basePrice + (basePrice * PRIVATE_TAX_RATE);
    }

    // public
    return function() {
        var basePrice = document.getElementById('ex2_basePrice').value;
        basePrice = basePrice - 0;
        var totalPrice = calculateTotalPrice2(basePrice);
        document.getElementById('ex2_totalPrice').value = totalPrice;
    };
})();
</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.pryce.net/archives/15/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Custom exception handling in JavaScript</title>
		<link>http://www.pryce.net/archives/47</link>
		<comments>http://www.pryce.net/archives/47#comments</comments>
		<pubDate>Wed, 11 Jan 2012 21:09:13 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[javascript]]></category>
		<category><![CDATA[web development]]></category>

		<guid isPermaLink="false">http://www.pryce.net/?p=47</guid>
		<description><![CDATA[A co-worker showed me a neat trick today. Many of you have no doubt seen it, but I thought I would use it in a discussion about custom exception handling in JavaScript. I was buried in some Java Coding, so the topic was fresh. The trick: Math.max.apply(Math, array); Awesome. It returns the highest value in [...]]]></description>
			<content:encoded><![CDATA[<p>A co-worker showed me a neat trick today. Many of you have no doubt seen it, but I thought I would use it in a discussion about custom exception handling in JavaScript. I was buried in some Java Coding, so the topic was fresh. </p>
<p>The trick: </p>
<pre>
Math.max.apply(Math, array);
</pre>
<p>Awesome. It returns the highest value in the array.</p>
<p>What happens if a member of array can&#8217;t be parsed as a Number? It returns NaN. Which is great, but I wondered if I can wrap that in a try/catch block and catch NaN. Not exactly, but I can come close. </p>
<p>The try/catch/finally mechanism isn&#8217;t exactly new in JavaScript, but it is, In my opinion, under-utilized. Mostly, developers use it to protect code from errors. Consider: </p>
<pre>
var foo;

try {
    foo.undefinedFunction("bar");
} catch (ex) {
    console.log(ex);
}

alert("the error didn't stop me.");
</pre>
<p>In this example, the try catch is used instead of the traditional if (typeof foo.undefinedFunction !== &#8220;undefined&#8221;) .</p>
<p>But it is possible with JavaScript keyword throw to implement exception handling. </p>
<pre>
function getMaxValueOfArray(ar) /* throws illegal argument error, NaN error */ {
    var n;
    if (ar instanceof Array) {
        if (isNaN(n = Math.max.apply(Math, ar))) {
            throw new Error("NaN error. The first argument to getMax must be an array of Numbers");
        }

        return n;
    } else {
        throw new Error("illegal Argument. The first argument to getMax must be an instance of Array");
    }
}

var max;
try {
   max = getMaxValueOfArray('1');
} catch (ex) {
  alert(ex);
}

try {
    max = getMaxValueOfArray([1, 'foo', 2]);
} catch(ex) {
   alert(ex);
}

try {
     max = getMaxValueOfArray([1, 4, 2]);
} catch(ex) {
     alert(ex);
}

max;
</pre>
<p>We can extend the practice and add some more debugging information for FireFox with a custom function: </p>
<pre>

function CustomError(errorName, errorMessage) {
   var error = new Error();
   error.name = errorName;
   error.message = errorMessage;

// For FireFox at least, there is property called stack to hold the stack trace.
   if (typeof error.stack !== "undefined") {
      var errorstack = error.stack.split(/\s*(@|at)\s*/);
      errorstack = errorstack[errorstack.length - 1]
                   .replace(/^\s+|\s+$/g, '')
                   .split(/\:([0-9]+)/);
      error.fileName = errorstack[0];
      error.lineNumber = errorstack[1];
   }
   return error;
}

function getMaxValueOfArray(ar) /* throws illegal argument error, NaN error */ {
    var n;
    if (ar instanceof Array) {
        if (isNaN(n = Math.max.apply(Math, ar))) {
            throw new CustomError("NaN Error", "The first argument to getMax must be an array of Numbers");
        }

        return n;
    } else {
        throw new CustomError("illegalArgument Error", "The first argument to getMax must be an instance of Array");
    }
}

var max;
try {
   max = getMaxValueOfArray('1');
} catch (ex) {
   ex.stack ? alert(ex.stack) : alert(ex);
}

try {
    max = getMaxValueOfArray([1, 'foo', 2]);
} catch(ex) {
    ex.stack ? alert(ex.stack) : alert(ex);
}

try {
     max = getMaxValueOfArray([1, 4, 2]);
} catch(ex) {
     ex.stack ? alert(ex.stack) : alert(ex);
}
</pre>
<p>Further reading:<a href="http://www.sitepoint.com/throwing-better-errors-using-stack/"> http://www.sitepoint.com/throwing-better-errors-using-stack/</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.pryce.net/archives/47/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Understanding Prototypal Inheritance in JavaScript &#124; LakTEK</title>
		<link>http://www.pryce.net/archives/12</link>
		<comments>http://www.pryce.net/archives/12#comments</comments>
		<pubDate>Fri, 06 Jan 2012 20:13:53 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[javascript]]></category>
		<category><![CDATA[web development]]></category>

		<guid isPermaLink="false">http://www.pryce.net/?p=12</guid>
		<description><![CDATA[A good basic description of the Prototypal Inheritance in JavaScript: Understanding Prototypal Inheritance in JavaScript 02 February 2011 Behavior reuse is one of the key aspects of Object Oriented programming. Many mainstream Object Oriented languages, achieves behavior reuse by using class based inheritance. In class based inheritance, a class defines how objects stemming from it [...]]]></description>
			<content:encoded><![CDATA[<p>A good basic description of the Prototypal Inheritance in JavaScript:</p>
<blockquote><p><a href="http://laktek.com/2011/02/02/understanding-prototypical-inheritance-in-javascript/">Understanding Prototypal Inheritance in JavaScript</a></p>
<p>02 February 2011</p>
<p>Behavior reuse is one of the key aspects of Object Oriented programming. Many mainstream Object Oriented languages, achieves behavior reuse by using class based inheritance. In class based inheritance, a class defines how objects stemming from it should behave.</p>
<p>However, not all languages use class based inheritance to achieve behavior reuse. The best possible example is JavaScript. It doesn&#8217;t have a concept of classes. Some people often confused about JavaScript&#8217;s object oriented capabilities due to this fact. But in reality, JavaScript is a more expressive and flexible Object Oriented language compared to some of the mainstream languages.</p>
<p>If JavaScript doesn&#8217;t have class based inheritance, how does it reuse the behavior? For that it follows the technique called Prototypal Inheritance.</p></blockquote>
<p>See the Full Article: <a href="http://laktek.com/2011/02/02/understanding-prototypical-inheritance-in-javascript/">Understanding Prototypal Inheritance in JavaScript | LakTEK</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.pryce.net/archives/12/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>An In Depth Overview of HTML5 Multimedia and Accessibility &#124; Nettuts+</title>
		<link>http://www.pryce.net/archives/6</link>
		<comments>http://www.pryce.net/archives/6#comments</comments>
		<pubDate>Thu, 05 Jan 2012 15:07:10 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.pryce.net/?p=6</guid>
		<description><![CDATA[An In Depth Overview of HTML5 Multimedia and Accessibility &#124; Nettuts+. Ian Devlin on Jan 4th 2012 Tutorial Details Topic: HTML5 Media Difficulty: Moderate In this tutorial, you’ll learn how HTML5 helps to provide you with several ways of presenting your media content to users. As a result, you’ll increase the availability of your media [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://net.tutsplus.com/tutorials/html-css-techniques/an-in-depth-overview-of-html5-multimedia-and-accessibility/?utm_source=feedburner&amp;utm_medium=feed&amp;utm_campaign=Feed%3A+nettuts+%28Nettuts%2B%29">An In Depth Overview of HTML5 Multimedia and Accessibility | Nettuts+</a>.</p>
<blockquote><p><a title="Posts by Ian Devlin" href="http://net.tutsplus.com/author/ian-devlin/">Ian Devlin</a> on Jan 4th 2012</p>
<div class="tut_bottom">
<div class="tutorial_details">
<h5>Tutorial Details</h5>
<ul>
<li><strong>Topic: </strong>HTML5 Media</li>
<li><strong>Difficulty: </strong>Moderate</li>
</ul>
</div>
</div>
<p>In this tutorial, you’ll learn how HTML5 helps to provide you with several ways of presenting your media content to users. As a result, you’ll increase the availability of your media to users with different needs and requirements, making it more accessible.</p></blockquote>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.pryce.net/archives/6/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

