<?xml version="1.0" encoding="UTF-8"?><!-- generator="wordpress/2.3.2" -->
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	>
<channel>
	<title>Comments for BernieCode</title>
	<link>http://www.berniecode.com/blog</link>
	<description>Fun with web development and photography</description>
	<pubDate>Thu, 20 Nov 2008 20:24:26 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.3.2</generator>
		<item>
		<title>Comment on How to debug JavaScript with Visual Web Developer Express by salikosk</title>
		<link>http://www.berniecode.com/blog/2007/03/08/how-to-debug-javascript-with-visual-web-developer-express/#comment-14082</link>
		<dc:creator>salikosk</dc:creator>
		<pubDate>Sat, 15 Nov 2008 01:01:33 +0000</pubDate>
		<guid>http://www.berniecode.com/blog/2007/03/08/how-to-debug-javascript-with-visual-web-developer-express/#comment-14082</guid>
		<description>&lt;a href="http://ar-office.h17.ru/information/forum-blog/topic=lang=ru=160.html" rel="nofollow"&gt;продам эро фото видео&lt;/a&gt;  мож кому нада
забирайте онлайн порно видео секс с животными   порно фото Анастасии Зоворотнюк http://funkyhouse.com.ua/forum/forum-blog/topic=lang=ru=162.html порно фото Анастасии Зоворотнюк</description>
		<content:encoded><![CDATA[<p><a href="http://ar-office.h17.ru/information/forum-blog/topic=lang=ru=160.html" rel="nofollow">продам эро фото видео</a>  мож кому нада<br />
забирайте онлайн порно видео секс с животными   порно фото Анастасии Зоворотнюк <a href="http://funkyhouse.com.ua/forum/forum-blog/topic=lang=ru=162.html" rel="nofollow">http://funkyhouse.com.ua/forum/forum-blog/topic=lang=ru=162.html</a> порно фото Анастасии Зоворотнюк</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on A Computer Geek&#8217;s Guide to Advanced Photographic Technique by Peter</title>
		<link>http://www.berniecode.com/blog/2007/10/17/a-computer-geeks-guide-to-advanced-photographic-technique/#comment-13878</link>
		<dc:creator>Peter</dc:creator>
		<pubDate>Mon, 10 Nov 2008 08:22:11 +0000</pubDate>
		<guid>http://www.berniecode.com/blog/2007/10/17/a-computer-geeks-guide-to-advanced-photographic-technique/#comment-13878</guid>
		<description>Thanks for your really helpful article. You explain things in a very concise and informative way. 

When is the next article coming out? I look forward to it!</description>
		<content:encoded><![CDATA[<p>Thanks for your really helpful article. You explain things in a very concise and informative way. </p>
<p>When is the next article coming out? I look forward to it!</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on How to debug JavaScript with Visual Web Developer Express by anon</title>
		<link>http://www.berniecode.com/blog/2007/03/08/how-to-debug-javascript-with-visual-web-developer-express/#comment-13196</link>
		<dc:creator>anon</dc:creator>
		<pubDate>Mon, 27 Oct 2008 03:45:20 +0000</pubDate>
		<guid>http://www.berniecode.com/blog/2007/03/08/how-to-debug-javascript-with-visual-web-developer-express/#comment-13196</guid>
		<description>thank u thank u very very much! =P</description>
		<content:encoded><![CDATA[<p>thank u thank u very very much! =P</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on How to debug JavaScript with Visual Web Developer Express by Select-Option abwhlen per JS --&#62; .selected = false - jswelt - Forum (Javascript, PHP, MySQL, AJAX, Webdesign)</title>
		<link>http://www.berniecode.com/blog/2007/03/08/how-to-debug-javascript-with-visual-web-developer-express/#comment-12950</link>
		<dc:creator>Select-Option abwhlen per JS --&#62; .selected = false - jswelt - Forum (Javascript, PHP, MySQL, AJAX, Webdesign)</dc:creator>
		<pubDate>Wed, 22 Oct 2008 08:01:34 +0000</pubDate>
		<guid>http://www.berniecode.com/blog/2007/03/08/how-to-debug-javascript-with-visual-web-developer-express/#comment-12950</guid>
		<description>[...] kannst du debuggen. fr die kostenlose Express Version hab ich jetzt mal diesen Trick gefunden: BernieCode How to debug JavaScript with Visual Web Developer Express  als DOM-Explorer benutze ich das hier: Download details: Internet Explorer Developer [...]</description>
		<content:encoded><![CDATA[<p>[&#8230;] kannst du debuggen. fr die kostenlose Express Version hab ich jetzt mal diesen Trick gefunden: BernieCode How to debug JavaScript with Visual Web Developer Express  als DOM-Explorer benutze ich das hier: Download details: Internet Explorer Developer [&#8230;]</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on The hacktastic story of how inamo became arguably the world&#8217;s first two mouse Flash installation by geoff</title>
		<link>http://www.berniecode.com/blog/2008/10/18/the-hacktastic-story-of-the-inamo-mouse/#comment-12872</link>
		<dc:creator>geoff</dc:creator>
		<pubDate>Mon, 20 Oct 2008 22:59:57 +0000</pubDate>
		<guid>http://www.berniecode.com/blog/2008/10/18/the-hacktastic-story-of-the-inamo-mouse/#comment-12872</guid>
		<description>Fantastic work, and lovely story.</description>
		<content:encoded><![CDATA[<p>Fantastic work, and lovely story.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on The hacktastic story of how inamo became arguably the world&#8217;s first two mouse Flash installation by bernie</title>
		<link>http://www.berniecode.com/blog/2008/10/18/the-hacktastic-story-of-the-inamo-mouse/#comment-12859</link>
		<dc:creator>bernie</dc:creator>
		<pubDate>Mon, 20 Oct 2008 16:22:01 +0000</pubDate>
		<guid>http://www.berniecode.com/blog/2008/10/18/the-hacktastic-story-of-the-inamo-mouse/#comment-12859</guid>
		<description>That's exactly what I ended up doing.

The first version of that approach, the latency was too high because sending data over TCP on a thin client computer takes to long. The mouse pointer movement trailed quite a way behind your finger movement.

The current version still uses XMLSocket, but now the pointer is drawn to the screen by the socket server application, so it doesn't suffer the TCP delay.</description>
		<content:encoded><![CDATA[<p>That&#8217;s exactly what I ended up doing.</p>
<p>The first version of that approach, the latency was too high because sending data over TCP on a thin client computer takes to long. The mouse pointer movement trailed quite a way behind your finger movement.</p>
<p>The current version still uses XMLSocket, but now the pointer is drawn to the screen by the socket server application, so it doesn&#8217;t suffer the TCP delay.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on The hacktastic story of how inamo became arguably the world&#8217;s first two mouse Flash installation by jonathan</title>
		<link>http://www.berniecode.com/blog/2008/10/18/the-hacktastic-story-of-the-inamo-mouse/#comment-12857</link>
		<dc:creator>jonathan</dc:creator>
		<pubDate>Mon, 20 Oct 2008 16:12:14 +0000</pubDate>
		<guid>http://www.berniecode.com/blog/2008/10/18/the-hacktastic-story-of-the-inamo-mouse/#comment-12857</guid>
		<description>Good article.
Just wondering why you went through all of that trouble instead of implementing the app using an xmlsocket server to collect and broadcast the multiple inputs.</description>
		<content:encoded><![CDATA[<p>Good article.<br />
Just wondering why you went through all of that trouble instead of implementing the app using an xmlsocket server to collect and broadcast the multiple inputs.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on How to debug JavaScript with Visual Web Developer Express by plast</title>
		<link>http://www.berniecode.com/blog/2007/03/08/how-to-debug-javascript-with-visual-web-developer-express/#comment-12629</link>
		<dc:creator>plast</dc:creator>
		<pubDate>Thu, 16 Oct 2008 09:05:15 +0000</pubDate>
		<guid>http://www.berniecode.com/blog/2007/03/08/how-to-debug-javascript-with-visual-web-developer-express/#comment-12629</guid>
		<description>I was just about to kill the IE team when i found this :).. it helped me alot!! thanks thanks thaaanks ^^,
plast</description>
		<content:encoded><![CDATA[<p>I was just about to kill the IE team when i found this :).. it helped me alot!! thanks thanks thaaanks ^^,<br />
plast</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on How to debug JavaScript with Visual Web Developer Express by sK blogas &#187; Blog Archive &#187; JS debugger for IE7</title>
		<link>http://www.berniecode.com/blog/2007/03/08/how-to-debug-javascript-with-visual-web-developer-express/#comment-12602</link>
		<dc:creator>sK blogas &#187; Blog Archive &#187; JS debugger for IE7</dc:creator>
		<pubDate>Wed, 15 Oct 2008 20:22:21 +0000</pubDate>
		<guid>http://www.berniecode.com/blog/2007/03/08/how-to-debug-javascript-with-visual-web-developer-express/#comment-12602</guid>
		<description>[...] URL: http://www.berniecode.com/blog/2007/03/08/how-to-debug-javascript-with-visual-web-developer-express/ [...]</description>
		<content:encoded><![CDATA[<p>[&#8230;] URL: <a href="http://www.berniecode.com/blog/2007/03/08/how-to-debug-javascript-with-visual-web-developer-express/" rel="nofollow">http://www.berniecode.com/blog/2007/03/08/how-to-debug-javascript-with-visual-web-developer-express/</a> [&#8230;]</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Inheritance is evil and must be destroyed by bernie</title>
		<link>http://www.berniecode.com/blog/2007/09/29/inheritance-is-evil-and-must-be-destroyed/#comment-12178</link>
		<dc:creator>bernie</dc:creator>
		<pubDate>Wed, 08 Oct 2008 08:09:45 +0000</pubDate>
		<guid>http://www.berniecode.com/blog/2007/09/29/inheritance-is-evil-and-must-be-destroyed/#comment-12178</guid>
		<description>An interesting point - I was thinking about class-based languages when I wrote the piece.

JavaScript is a special case, since in JavaScript, *every method* is already a Strategy. In JavaScript you can choose to swap out any method at runtime, dynamically build new classes, or modify the prototype of existing classes for AOP effects. In short, far from not requiring the pattern I suggest in this article, JavaScript implements it by default. I would argue that since the Strategy pattern is already so well supported in JavaScript, that's extra reason not to resort to MI and mixins.

Here's an example - supposing you are building an object that at some point needs to alter the value of a string in a way that the user of the class wants to control. You can provide the string editing as a Strategy or a mixin.

A nice trick in JavaScript is to provide a default Strategy function 'this.stringEditor(str)' and whenever you call it, use the code 'this.stringEditor.call(this, str)', i.e. by using the 'call' method that exists on all function objects. If client code needs to supply new string editing behaviour, they can write a new function and replace the existing 'this.stringEditor' on a per-object basis or for a whole class using the prototype. If the bit of behaviour is more complex (e.g. it has multiple configuration options and helper functions) then 'this.stringEditor' can be replaced with an object that contains a 'call(parent, str)' method. This lightweight Strategy pattern lets you get all the benefit of Strategy objects, without the overhead when you're not using them.

Now consider if you'd used a mixin. In the simple case of one function editString, it's fine. When your mixin starts needing complex state and helper functions, these pollute the object's namespace and make it difficult or impossible to change the Strategy at runtime.

That said, some JavaScript frameworks make great use of mixins for providing core functionality to classes. Prototype's Enumerable mixin is a perfect example. It is so successful because it is providing core functionality to an object, and there is no way you'd want to change the way an object Enumerates its children at runtime.</description>
		<content:encoded><![CDATA[<p>An interesting point - I was thinking about class-based languages when I wrote the piece.</p>
<p>JavaScript is a special case, since in JavaScript, *every method* is already a Strategy. In JavaScript you can choose to swap out any method at runtime, dynamically build new classes, or modify the prototype of existing classes for AOP effects. In short, far from not requiring the pattern I suggest in this article, JavaScript implements it by default. I would argue that since the Strategy pattern is already so well supported in JavaScript, that&#8217;s extra reason not to resort to MI and mixins.</p>
<p>Here&#8217;s an example - supposing you are building an object that at some point needs to alter the value of a string in a way that the user of the class wants to control. You can provide the string editing as a Strategy or a mixin.</p>
<p>A nice trick in JavaScript is to provide a default Strategy function &#8216;this.stringEditor(str)&#8217; and whenever you call it, use the code &#8216;this.stringEditor.call(this, str)&#8217;, i.e. by using the &#8216;call&#8217; method that exists on all function objects. If client code needs to supply new string editing behaviour, they can write a new function and replace the existing &#8216;this.stringEditor&#8217; on a per-object basis or for a whole class using the prototype. If the bit of behaviour is more complex (e.g. it has multiple configuration options and helper functions) then &#8216;this.stringEditor&#8217; can be replaced with an object that contains a &#8216;call(parent, str)&#8217; method. This lightweight Strategy pattern lets you get all the benefit of Strategy objects, without the overhead when you&#8217;re not using them.</p>
<p>Now consider if you&#8217;d used a mixin. In the simple case of one function editString, it&#8217;s fine. When your mixin starts needing complex state and helper functions, these pollute the object&#8217;s namespace and make it difficult or impossible to change the Strategy at runtime.</p>
<p>That said, some JavaScript frameworks make great use of mixins for providing core functionality to classes. Prototype&#8217;s Enumerable mixin is a perfect example. It is so successful because it is providing core functionality to an object, and there is no way you&#8217;d want to change the way an object Enumerates its children at runtime.</p>
]]></content:encoded>
	</item>
</channel>
</rss>
