<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://weblogs.asp.net/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Brian Dukes, Web Developer</title><link>http://weblogs.asp.net/briandukes/default.aspx</link><description>I am a .NET Developer (&lt;a href="http://www.microsoft.com/learning/mcp/mcpd/webdev/"&gt;&lt;acronym title="Microsoft Certified Professional Developer"&gt;MCPD&lt;/acronym&gt;&lt;/a&gt;) working for &lt;a href="http://www.engagesoftware.com/"&gt;Engage Software&lt;/a&gt; in St. Louis, MO, USA.  I work mostly in web applications, specifically modules for &lt;a href="http://www.dotnetnuke.com/DesktopModules/LinkExchange/Reciprocate.aspx?linkid=208"&gt;&lt;acronym title="DotNetNuke"&gt;DNN&lt;/acronym&gt;&lt;/a&gt;.  I am passionate about writing secure, solid code, adhering to web standards, and using jQuery and JavaScript for progressive enhancement.</description><dc:language>en</dc:language><generator>CommunityServer 2007 SP1 (Build: 20510.895)</generator><item><title>DNN World 2012</title><link>http://weblogs.asp.net/briandukes/archive/2012/10/15/dnn-world-2012.aspx</link><pubDate>Mon, 15 Oct 2012 18:35:00 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:9110649</guid><dc:creator>bdukes</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/briandukes/rsscomments.aspx?PostID=9110649</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/briandukes/commentapi.aspx?PostID=9110649</wfw:comment><comments>http://weblogs.asp.net/briandukes/archive/2012/10/15/dnn-world-2012.aspx#comments</comments><description>I just returned from DotNetNuke 2012 and wrote up a review of the experience at my Engage Software blog ....(&lt;a href="http://weblogs.asp.net/briandukes/archive/2012/10/15/dnn-world-2012.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=9110649" width="1" height="1"&gt;</description><category domain="http://weblogs.asp.net/briandukes/archive/tags/Engage+Software/default.aspx">Engage Software</category><category domain="http://weblogs.asp.net/briandukes/archive/tags/DotNetNuke/default.aspx">DotNetNuke</category><category domain="http://weblogs.asp.net/briandukes/archive/tags/Development/default.aspx">Development</category><category domain="http://weblogs.asp.net/briandukes/archive/tags/General+Software+Development/default.aspx">General Software Development</category><category domain="http://weblogs.asp.net/briandukes/archive/tags/ASP.NET/default.aspx">ASP.NET</category><category domain="http://weblogs.asp.net/briandukes/archive/tags/Community+News/default.aspx">Community News</category><category domain="http://weblogs.asp.net/briandukes/archive/tags/JavaScript/default.aspx">JavaScript</category><category domain="http://weblogs.asp.net/briandukes/archive/tags/.NET/default.aspx">.NET</category><category domain="http://weblogs.asp.net/briandukes/archive/tags/Module+Development/default.aspx">Module Development</category><category domain="http://weblogs.asp.net/briandukes/archive/tags/HTML/default.aspx">HTML</category><category domain="http://weblogs.asp.net/briandukes/archive/tags/Presentations/default.aspx">Presentations</category><category domain="http://weblogs.asp.net/briandukes/archive/tags/Knockout/default.aspx">Knockout</category></item><item><title>Day of DotNetNuke Recap</title><link>http://weblogs.asp.net/briandukes/archive/2012/06/05/day-of-dotnetnuke-recap.aspx</link><pubDate>Tue, 05 Jun 2012 22:30:00 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:8571899</guid><dc:creator>bdukes</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/briandukes/rsscomments.aspx?PostID=8571899</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/briandukes/commentapi.aspx?PostID=8571899</wfw:comment><comments>http://weblogs.asp.net/briandukes/archive/2012/06/05/day-of-dotnetnuke-recap.aspx#comments</comments><description>This weekend was the Day of DotNetNuke in Charlotte, NC .&amp;#160; I was there to present two session, along with three other Engage colleagues ( Oliver Hine and Anthony Overkamp also presented).&amp;#160; I was honored to be able to present on the Client Resource...(&lt;a href="http://weblogs.asp.net/briandukes/archive/2012/06/05/day-of-dotnetnuke-recap.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=8571899" width="1" height="1"&gt;</description></item><item><title>DNN World 2011</title><link>http://weblogs.asp.net/briandukes/archive/2011/11/14/dnn-world-2011.aspx</link><pubDate>Mon, 14 Nov 2011 14:45:56 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:8055873</guid><dc:creator>bdukes</dc:creator><slash:comments>4</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/briandukes/rsscomments.aspx?PostID=8055873</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/briandukes/commentapi.aspx?PostID=8055873</wfw:comment><comments>http://weblogs.asp.net/briandukes/archive/2011/11/14/dnn-world-2011.aspx#comments</comments><description>We’re on the plane flying back to St. Louis from DNN World 2011 .&amp;#160; I gave a presentation titled DNN 6 UI/UX Patterns , discussing the form patterns introduced in the administrative modules in DNN 6 (the new look and feel that you immediately noticed...(&lt;a href="http://weblogs.asp.net/briandukes/archive/2011/11/14/dnn-world-2011.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=8055873" width="1" height="1"&gt;</description><category domain="http://weblogs.asp.net/briandukes/archive/tags/DotNetNuke/default.aspx">DotNetNuke</category><category domain="http://weblogs.asp.net/briandukes/archive/tags/ASP.NET/default.aspx">ASP.NET</category><category domain="http://weblogs.asp.net/briandukes/archive/tags/DotNetNuke+Modules/default.aspx">DotNetNuke Modules</category><category domain="http://weblogs.asp.net/briandukes/archive/tags/JavaScript/default.aspx">JavaScript</category><category domain="http://weblogs.asp.net/briandukes/archive/tags/CSS/default.aspx">CSS</category><category domain="http://weblogs.asp.net/briandukes/archive/tags/Module+Development/default.aspx">Module Development</category><category domain="http://weblogs.asp.net/briandukes/archive/tags/HTML/default.aspx">HTML</category><category domain="http://weblogs.asp.net/briandukes/archive/tags/Presentations/default.aspx">Presentations</category><category domain="http://weblogs.asp.net/briandukes/archive/tags/DotNetNuke+6/default.aspx">DotNetNuke 6</category></item><item><title>JavaScript: true, false, and in between</title><link>http://weblogs.asp.net/briandukes/archive/2011/08/10/javascript-true-false-and-in-between.aspx</link><pubDate>Wed, 10 Aug 2011 13:58:00 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:7904678</guid><dc:creator>bdukes</dc:creator><slash:comments>5</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/briandukes/rsscomments.aspx?PostID=7904678</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/briandukes/commentapi.aspx?PostID=7904678</wfw:comment><comments>http://weblogs.asp.net/briandukes/archive/2011/08/10/javascript-true-false-and-in-between.aspx#comments</comments><description>In JavaScript, all values can be coerced into a Boolean value (i.e. true or false ). Most values will evaluate to true , there are just a handful that will be false . Aside from the literal false value, the number zero ( 0 ), an empty string ( '' ), NaN...(&lt;a href="http://weblogs.asp.net/briandukes/archive/2011/08/10/javascript-true-false-and-in-between.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=7904678" width="1" height="1"&gt;</description><category domain="http://weblogs.asp.net/briandukes/archive/tags/Development/default.aspx">Development</category><category domain="http://weblogs.asp.net/briandukes/archive/tags/General+Software+Development/default.aspx">General Software Development</category><category domain="http://weblogs.asp.net/briandukes/archive/tags/JavaScript/default.aspx">JavaScript</category><category domain="http://weblogs.asp.net/briandukes/archive/tags/JavaScript+Common+Difficulties+and+Misconceptions/default.aspx">JavaScript Common Difficulties and Misconceptions</category><category domain="http://weblogs.asp.net/briandukes/archive/tags/Logical+Operators/default.aspx">Logical Operators</category><category domain="http://weblogs.asp.net/briandukes/archive/tags/Boolean/default.aspx">Boolean</category></item><item><title>JavaScript: this</title><link>http://weblogs.asp.net/briandukes/archive/2011/06/30/javascript-this.aspx</link><pubDate>Thu, 30 Jun 2011 15:00:00 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:7846924</guid><dc:creator>bdukes</dc:creator><slash:comments>2</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/briandukes/rsscomments.aspx?PostID=7846924</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/briandukes/commentapi.aspx?PostID=7846924</wfw:comment><comments>http://weblogs.asp.net/briandukes/archive/2011/06/30/javascript-this.aspx#comments</comments><description>
&lt;p&gt;JavaScript is a language steeped in juxtaposition.&amp;nbsp; It was made to “&lt;a href="http://brendaneich.com/2008/04/popularity/" mce_href="http://brendaneich.com/2008/04/popularity/"&gt;look like Java&lt;/a&gt;,” yet is dynamic and classless.&amp;nbsp; From this origin, we get the &lt;a href="https://developer.mozilla.org/en/JavaScript/Reference/Operators/Special/new" mce_href="https://developer.mozilla.org/en/JavaScript/Reference/Operators/Special/new"&gt;&lt;code&gt;new&lt;/code&gt; operator&lt;/a&gt; and the &lt;a href="https://developer.mozilla.org/en/JavaScript/Reference/Operators/Special/this" mce_href="https://developer.mozilla.org/en/JavaScript/Reference/Operators/Special/this"&gt;&lt;code&gt;this&lt;/code&gt; keyword&lt;/a&gt;.&amp;nbsp; You are probably used to &lt;code&gt;this&lt;/code&gt; referring to the current instance of a class, so what could it mean in a language without classes?&lt;/p&gt;
  
&lt;p&gt;In JavaScript, &lt;code&gt;this&lt;/code&gt; refers to the object off of which a function is referenced when it is invoked (unless it is invoked via &lt;code&gt;&lt;a href="https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Function/call" mce_href="https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Function/call"&gt;call&lt;/a&gt;&lt;/code&gt; or &lt;code&gt;&lt;a href="https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Function/apply" mce_href="https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Function/apply"&gt;apply&lt;/a&gt;&lt;/code&gt;). What this means is that &lt;code&gt;this&lt;/code&gt; is not bound to your function, and can change depending on how your function is invoked. It also means that &lt;code&gt;this&lt;/code&gt; changes when declaring a function inside another function (i.e. each function has its own &lt;code&gt;this&lt;/code&gt;), such as when writing a callback. Let's see some of this &lt;a href="http://jsfiddle.net/bdukes/u58xD/3/" mce_href="http://jsfiddle.net/bdukes/u58xD/3/"&gt;in action&lt;/a&gt;:&lt;/p&gt;
  &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:812469c5-0cb0-4c63-8c15-c81123a09de7:adf4a2de-6ce5-4e2e-8f38-088fac4502ba" class="wlWriterEditableSmartContent"&gt;
&lt;pre name="code" class="brush:js"&gt;var obj = {
    count: 0,
    increment: function () {
        this.count += 1;
    },
    logAfterTimeout = function () {
        setTimeout(function () {
            console.log(this.count);
        }, 1);
    }
};
obj.increment();
console.log(obj.count); // 1
var increment = obj.increment;
window.count = 'global count value: ';
increment();
console.log(obj.count); // 1
console.log(window.count); // global count value: 1
var newObj = {count:50};
increment.call(newObj);
console.log(newObj.count); // 51
obj.logAfterTimeout();// global count value: 1
obj.logAfterTimeout = function () {
    var proxiedFunction = $.proxy(function () {
            console.log(this.count);
        }, this);
    setTimeout(proxiedFunction, 1);
};
obj.logAfterTimeout(); // 1
obj.logAfterTimeout = function () {
    var that = this;
    setTimeout(function () {
        console.log(that.count);
    }, 1);
};
obj.logAfterTimeout(); // 1&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;The last couple of examples here demonstrate some methods for making sure you get the values you expect.&amp;nbsp; The first time &lt;code&gt;logAfterTimeout&lt;/code&gt; is redefined, we use &lt;a href="http://api.jquery.com/jQuery.proxy/" mce_href="http://api.jquery.com/jQuery.proxy/"&gt;&lt;code&gt;jQuery.proxy&lt;/code&gt;&lt;/a&gt; to create a new function which has its &lt;code&gt;this&lt;/code&gt; permanently set to the passed in value (in this case, the current &lt;code&gt;this&lt;/code&gt;).&amp;nbsp; The second time &lt;code&gt;logAfterTimeout&lt;/code&gt; is redefined, we save the value of &lt;code&gt;this&lt;/code&gt; in a variable (named &lt;code&gt;that&lt;/code&gt; in this case, also often named &lt;code&gt;self&lt;/code&gt;) and use the new variable in place of &lt;code&gt;this&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Now, all of this is to clarify what’s going on when you use &lt;code&gt;this&lt;/code&gt;.&amp;nbsp; However, it’s pretty easy to avoid using &lt;code&gt;this&lt;/code&gt; altogether in your code (especially in the way I’ve demonstrated above).&amp;nbsp; Instead of using &lt;code&gt;this.count&lt;/code&gt; all over the place, it would have been much easier if I’d made &lt;code&gt;count&lt;/code&gt; a variable instead of a property, and then I wouldn’t have to use &lt;code&gt;this&lt;/code&gt; to refer to it.&amp;nbsp; &lt;/p&gt;

&lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:812469c5-0cb0-4c63-8c15-c81123a09de7:a6040989-bc14-43fd-90ce-c68984f76569" class="wlWriterEditableSmartContent"&gt;
&lt;pre name="code" class="brush:js"&gt;var obj = (function () {
    var count = 0;
    
    return {
        increment: function () {
            count += 1;
        },
        logAfterTimeout = function () {
            setTimeout(function () {
                console.log(count);
            }, 1);
        },
        getCount: function () { return count; }
    };
}());&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;If you’re writing your code in this way, the main place you’ll run into issues with &lt;code&gt;this&lt;/code&gt; is when handling DOM events (where &lt;code&gt;this&lt;/code&gt; is the element on which the event occurred).&amp;nbsp; In that case, just be careful when using a callback within that event handler, that you’re not expecting &lt;code&gt;this&lt;/code&gt; to still refer to the element (and use &lt;code&gt;proxy&lt;/code&gt; or &lt;code&gt;that&lt;/code&gt;/&lt;code&gt;self&lt;/code&gt; if you need to refer to it).&lt;/p&gt;

&lt;p&gt;Finally, as demonstrated in the example, you can use &lt;code&gt;call&lt;/code&gt; or &lt;code&gt;apply&lt;/code&gt; on a function to set its &lt;code&gt;this&lt;/code&gt; value.&amp;nbsp; This isn’t often needed, but you may also want to know that you can use &lt;code&gt;apply&lt;/code&gt; to pass in an array of arguments to a function (e.g. &lt;code&gt;console.log.apply(console, [1, 2, 3, 4])&lt;/code&gt;).&lt;/p&gt;
&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=7846924" width="1" height="1"&gt;</description><category domain="http://weblogs.asp.net/briandukes/archive/tags/General+Software+Development/default.aspx">General Software Development</category><category domain="http://weblogs.asp.net/briandukes/archive/tags/JavaScript/default.aspx">JavaScript</category><category domain="http://weblogs.asp.net/briandukes/archive/tags/JavaScript+Common+Difficulties+and+Misconceptions/default.aspx">JavaScript Common Difficulties and Misconceptions</category></item><item><title>JavaScript: Global Variables</title><link>http://weblogs.asp.net/briandukes/archive/2011/06/14/javascript-global-variables.aspx</link><pubDate>Tue, 14 Jun 2011 16:30:00 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:7829374</guid><dc:creator>bdukes</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/briandukes/rsscomments.aspx?PostID=7829374</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/briandukes/commentapi.aspx?PostID=7829374</wfw:comment><comments>http://weblogs.asp.net/briandukes/archive/2011/06/14/javascript-global-variables.aspx#comments</comments><description>One of the biggest issues that you can run into with writing JavaScript is abusing the shared global namespace, and overwriting the variables of an unrelated script. Everything that you declare in JavaScript is available to every other script on the page...(&lt;a href="http://weblogs.asp.net/briandukes/archive/2011/06/14/javascript-global-variables.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=7829374" width="1" height="1"&gt;</description><category domain="http://weblogs.asp.net/briandukes/archive/tags/JavaScript/default.aspx">JavaScript</category><category domain="http://weblogs.asp.net/briandukes/archive/tags/jQuery/default.aspx">jQuery</category><category domain="http://weblogs.asp.net/briandukes/archive/tags/JavaScript+Common+Difficulties+and+Misconceptions/default.aspx">JavaScript Common Difficulties and Misconceptions</category><category domain="http://weblogs.asp.net/briandukes/archive/tags/Global+Variables/default.aspx">Global Variables</category></item><item><title>JavaScript Functions</title><link>http://weblogs.asp.net/briandukes/archive/2011/06/09/javascript-functions.aspx</link><pubDate>Thu, 09 Jun 2011 16:25:00 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:7823834</guid><dc:creator>bdukes</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/briandukes/rsscomments.aspx?PostID=7823834</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/briandukes/commentapi.aspx?PostID=7823834</wfw:comment><comments>http://weblogs.asp.net/briandukes/archive/2011/06/09/javascript-functions.aspx#comments</comments><description>When coming from a strongly-typed, object-oriented background, there may be some surprising elements when looking at how functions are used in JavaScript. Functions in JavaScript don’t have any real concept of a signature, like they would in .NET. All...(&lt;a href="http://weblogs.asp.net/briandukes/archive/2011/06/09/javascript-functions.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=7823834" width="1" height="1"&gt;</description><category domain="http://weblogs.asp.net/briandukes/archive/tags/JavaScript/default.aspx">JavaScript</category><category domain="http://weblogs.asp.net/briandukes/archive/tags/JavaScript+Common+Difficulties+and+Misconceptions/default.aspx">JavaScript Common Difficulties and Misconceptions</category><category domain="http://weblogs.asp.net/briandukes/archive/tags/Functions/default.aspx">Functions</category></item><item><title>Why isn’t My Scheduled Task Executing?</title><link>http://weblogs.asp.net/briandukes/archive/2011/06/08/why-isn-t-my-scheduled-task-executing.aspx</link><pubDate>Wed, 08 Jun 2011 15:39:49 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:7822894</guid><dc:creator>bdukes</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/briandukes/rsscomments.aspx?PostID=7822894</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/briandukes/commentapi.aspx?PostID=7822894</wfw:comment><comments>http://weblogs.asp.net/briandukes/archive/2011/06/08/why-isn-t-my-scheduled-task-executing.aspx#comments</comments><description>A quick diversion from the JavaScript Common Difficulties and Misconceptions series (I have another post queued up, just need to write the sample code), for an issue I just ran into. Created a scheduled task for DNN, but it’s sitting in the scheduler...(&lt;a href="http://weblogs.asp.net/briandukes/archive/2011/06/08/why-isn-t-my-scheduled-task-executing.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=7822894" width="1" height="1"&gt;</description><category domain="http://weblogs.asp.net/briandukes/archive/tags/DotNetNuke/default.aspx">DotNetNuke</category><category domain="http://weblogs.asp.net/briandukes/archive/tags/Development/default.aspx">Development</category><category domain="http://weblogs.asp.net/briandukes/archive/tags/General+Software+Development/default.aspx">General Software Development</category><category domain="http://weblogs.asp.net/briandukes/archive/tags/Troubleshooting/default.aspx">Troubleshooting</category><category domain="http://weblogs.asp.net/briandukes/archive/tags/ASP.NET/default.aspx">ASP.NET</category><category domain="http://weblogs.asp.net/briandukes/archive/tags/.NET/default.aspx">.NET</category><category domain="http://weblogs.asp.net/briandukes/archive/tags/Module+Development/default.aspx">Module Development</category><category domain="http://weblogs.asp.net/briandukes/archive/tags/DotNetNuke+5.x/default.aspx">DotNetNuke 5.x</category></item><item><title>Closure and Scope</title><link>http://weblogs.asp.net/briandukes/archive/2011/05/31/closure-and-scope.aspx</link><pubDate>Tue, 31 May 2011 14:30:00 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:7810389</guid><dc:creator>bdukes</dc:creator><slash:comments>4</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/briandukes/rsscomments.aspx?PostID=7810389</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/briandukes/commentapi.aspx?PostID=7810389</wfw:comment><comments>http://weblogs.asp.net/briandukes/archive/2011/05/31/closure-and-scope.aspx#comments</comments><description>The term closure refers to a function which references variables outside of its scope; the function is “closed over” those variables. I’ll give an example of misusing closure in JavaScript and C#, then compare the solutions. This example is going to attempt...(&lt;a href="http://weblogs.asp.net/briandukes/archive/2011/05/31/closure-and-scope.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=7810389" width="1" height="1"&gt;</description><category domain="http://weblogs.asp.net/briandukes/archive/tags/JavaScript/default.aspx">JavaScript</category><category domain="http://weblogs.asp.net/briandukes/archive/tags/JavaScript+Common+Difficulties+and+Misconceptions/default.aspx">JavaScript Common Difficulties and Misconceptions</category><category domain="http://weblogs.asp.net/briandukes/archive/tags/Scope/default.aspx">Scope</category><category domain="http://weblogs.asp.net/briandukes/archive/tags/Closure/default.aspx">Closure</category></item><item><title>JavaScript: The Language</title><link>http://weblogs.asp.net/briandukes/archive/2011/05/24/javascript-the-language.aspx</link><pubDate>Tue, 24 May 2011 13:05:57 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:7802132</guid><dc:creator>bdukes</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/briandukes/rsscomments.aspx?PostID=7802132</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/briandukes/commentapi.aspx?PostID=7802132</wfw:comment><comments>http://weblogs.asp.net/briandukes/archive/2011/05/24/javascript-the-language.aspx#comments</comments><description>I gave my JavaScript language talk at the St. Louis .NET/DotNetNuke User Group last night.&amp;#160; I’ve posted the presentation (with some updated, clarified example code) up on slideshare. JavaScript: The Language I woke up this morning thinking through...(&lt;a href="http://weblogs.asp.net/briandukes/archive/2011/05/24/javascript-the-language.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=7802132" width="1" height="1"&gt;</description><category domain="http://weblogs.asp.net/briandukes/archive/tags/Development/default.aspx">Development</category><category domain="http://weblogs.asp.net/briandukes/archive/tags/General+Software+Development/default.aspx">General Software Development</category><category domain="http://weblogs.asp.net/briandukes/archive/tags/JavaScript/default.aspx">JavaScript</category><category domain="http://weblogs.asp.net/briandukes/archive/tags/Presentations/default.aspx">Presentations</category><category domain="http://weblogs.asp.net/briandukes/archive/tags/jQuery/default.aspx">jQuery</category><category domain="http://weblogs.asp.net/briandukes/archive/tags/JavaScript+Common+Difficulties+and+Misconceptions/default.aspx">JavaScript Common Difficulties and Misconceptions</category></item><item><title>Escaping Commas in ReSharper Live Templates Comma-Delimited Macros</title><link>http://weblogs.asp.net/briandukes/archive/2011/02/21/escaping-commas-in-resharper-live-templates-comma-delimited-macros.aspx</link><pubDate>Mon, 21 Feb 2011 21:46:43 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:7710712</guid><dc:creator>bdukes</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/briandukes/rsscomments.aspx?PostID=7710712</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/briandukes/commentapi.aspx?PostID=7710712</wfw:comment><comments>http://weblogs.asp.net/briandukes/archive/2011/02/21/escaping-commas-in-resharper-live-templates-comma-delimited-macros.aspx#comments</comments><description>ReSharper is an irreplaceable tool in my coding arsenal.&amp;#160; One of its myriad of amazingly useful tools is Live Templates , a much enhanced version of Visual Studio’s code snippets.&amp;#160; When defining a live template you can specify a number of placeholders...(&lt;a href="http://weblogs.asp.net/briandukes/archive/2011/02/21/escaping-commas-in-resharper-live-templates-comma-delimited-macros.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=7710712" width="1" height="1"&gt;</description></item><item><title>Chicago Day Of DotNetNuke 2010 Recap</title><link>http://weblogs.asp.net/briandukes/archive/2010/10/12/chicago-day-of-dotnetnuke-2010-recap.aspx</link><pubDate>Tue, 12 Oct 2010 14:00:47 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:7626038</guid><dc:creator>bdukes</dc:creator><slash:comments>2</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/briandukes/rsscomments.aspx?PostID=7626038</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/briandukes/commentapi.aspx?PostID=7626038</wfw:comment><comments>http://weblogs.asp.net/briandukes/archive/2010/10/12/chicago-day-of-dotnetnuke-2010-recap.aspx#comments</comments><description>Saturday, October 2nd was the Day of DotNetNuke in Chicago .&amp;#160; A number of us from Engage attended and spoke .&amp;#160; I gave two presentations, which are now available on SlideShare (linked below).&amp;#160; I’ve added some notes (be sure to click the...(&lt;a href="http://weblogs.asp.net/briandukes/archive/2010/10/12/chicago-day-of-dotnetnuke-2010-recap.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=7626038" width="1" height="1"&gt;</description><category domain="http://weblogs.asp.net/briandukes/archive/tags/Engage+Software/default.aspx">Engage Software</category><category domain="http://weblogs.asp.net/briandukes/archive/tags/DotNetNuke/default.aspx">DotNetNuke</category><category domain="http://weblogs.asp.net/briandukes/archive/tags/Development/default.aspx">Development</category><category domain="http://weblogs.asp.net/briandukes/archive/tags/General+Software+Development/default.aspx">General Software Development</category><category domain="http://weblogs.asp.net/briandukes/archive/tags/ASP.NET/default.aspx">ASP.NET</category><category domain="http://weblogs.asp.net/briandukes/archive/tags/Community+News/default.aspx">Community News</category><category domain="http://weblogs.asp.net/briandukes/archive/tags/JavaScript/default.aspx">JavaScript</category><category domain="http://weblogs.asp.net/briandukes/archive/tags/.NET/default.aspx">.NET</category><category domain="http://weblogs.asp.net/briandukes/archive/tags/Engage+Modules/default.aspx">Engage Modules</category><category domain="http://weblogs.asp.net/briandukes/archive/tags/Module+Development/default.aspx">Module Development</category><category domain="http://weblogs.asp.net/briandukes/archive/tags/DotNetNuke+5.x/default.aspx">DotNetNuke 5.x</category><category domain="http://weblogs.asp.net/briandukes/archive/tags/Module+Installation/default.aspx">Module Installation</category><category domain="http://weblogs.asp.net/briandukes/archive/tags/Presentations/default.aspx">Presentations</category><category domain="http://weblogs.asp.net/briandukes/archive/tags/jQuery/default.aspx">jQuery</category></item><item><title>My Messages Inbox: A Mobile DotNetNuke Application for the St. Louis DNN Hackathon</title><link>http://weblogs.asp.net/briandukes/archive/2010/08/30/my-messages-inbox-a-mobile-dotnetnuke-application-for-the-st-louis-dnn-hackathon.aspx</link><pubDate>Mon, 30 Aug 2010 17:24:06 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:7602139</guid><dc:creator>bdukes</dc:creator><slash:comments>2</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/briandukes/rsscomments.aspx?PostID=7602139</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/briandukes/commentapi.aspx?PostID=7602139</wfw:comment><comments>http://weblogs.asp.net/briandukes/archive/2010/08/30/my-messages-inbox-a-mobile-dotnetnuke-application-for-the-st-louis-dnn-hackathon.aspx#comments</comments><description>This past week was the St. Louis DotNetNuke Hackathon .&amp;#160; This was a competition for DNN developers to create a mobile application which interacts with DNN .&amp;#160; We had one week to create something worth showing off.&amp;#160; So, I, along with another...(&lt;a href="http://weblogs.asp.net/briandukes/archive/2010/08/30/my-messages-inbox-a-mobile-dotnetnuke-application-for-the-st-louis-dnn-hackathon.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=7602139" width="1" height="1"&gt;</description><category domain="http://weblogs.asp.net/briandukes/archive/tags/Engage+Software/default.aspx">Engage Software</category><category domain="http://weblogs.asp.net/briandukes/archive/tags/DotNetNuke/default.aspx">DotNetNuke</category><category domain="http://weblogs.asp.net/briandukes/archive/tags/Development/default.aspx">Development</category><category domain="http://weblogs.asp.net/briandukes/archive/tags/DotNetNuke+Modules/default.aspx">DotNetNuke Modules</category><category domain="http://weblogs.asp.net/briandukes/archive/tags/Community+News/default.aspx">Community News</category><category domain="http://weblogs.asp.net/briandukes/archive/tags/.NET/default.aspx">.NET</category><category domain="http://weblogs.asp.net/briandukes/archive/tags/C_2300_/default.aspx">C#</category><category domain="http://weblogs.asp.net/briandukes/archive/tags/Module+Development/default.aspx">Module Development</category><category domain="http://weblogs.asp.net/briandukes/archive/tags/Java/default.aspx">Java</category><category domain="http://weblogs.asp.net/briandukes/archive/tags/Android/default.aspx">Android</category><category domain="http://weblogs.asp.net/briandukes/archive/tags/Hackathon/default.aspx">Hackathon</category><category domain="http://weblogs.asp.net/briandukes/archive/tags/Mobile/default.aspx">Mobile</category></item><item><title>New Helper Methods in .NET 4 (or, A Great New Method With a Caveat)</title><link>http://weblogs.asp.net/briandukes/archive/2010/03/03/new-helper-methods-in-net-4.aspx</link><pubDate>Wed, 03 Mar 2010 15:28:00 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:7368914</guid><dc:creator>bdukes</dc:creator><slash:comments>3</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/briandukes/rsscomments.aspx?PostID=7368914</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/briandukes/commentapi.aspx?PostID=7368914</wfw:comment><comments>http://weblogs.asp.net/briandukes/archive/2010/03/03/new-helper-methods-in-net-4.aspx#comments</comments><description>On Twitter yesterday, Brad Abrams mentioned String.IsNullOrWhiteSpace , to awesome new helper to replace compliment String.IsNullOrEmpty . I'm really excited to get to use this, since it seems like it makes more sense in the majority of cases than IsNullOrEmpty...(&lt;a href="http://weblogs.asp.net/briandukes/archive/2010/03/03/new-helper-methods-in-net-4.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=7368914" width="1" height="1"&gt;</description><category domain="http://weblogs.asp.net/briandukes/archive/tags/.NET/default.aspx">.NET</category><category domain="http://weblogs.asp.net/briandukes/archive/tags/C_2300_/default.aspx">C#</category><category domain="http://weblogs.asp.net/briandukes/archive/tags/.NET+4/default.aspx">.NET 4</category><category domain="http://weblogs.asp.net/briandukes/archive/tags/Enum/default.aspx">Enum</category><category domain="http://weblogs.asp.net/briandukes/archive/tags/BCL/default.aspx">BCL</category><category domain="http://weblogs.asp.net/briandukes/archive/tags/bitwise+operators/default.aspx">bitwise operators</category><category domain="http://weblogs.asp.net/briandukes/archive/tags/String/default.aspx">String</category></item><item><title>DotNetNuke &amp; MVC</title><link>http://weblogs.asp.net/briandukes/archive/2010/01/28/dotnetnuke-amp-mvc.aspx</link><pubDate>Thu, 28 Jan 2010 15:36:00 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:7326303</guid><dc:creator>bdukes</dc:creator><slash:comments>6</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/briandukes/rsscomments.aspx?PostID=7326303</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/briandukes/commentapi.aspx?PostID=7326303</wfw:comment><comments>http://weblogs.asp.net/briandukes/archive/2010/01/28/dotnetnuke-amp-mvc.aspx#comments</comments><description>Earlier this week, Shaun Walker, DotNetNuke 's Co-Founder and Chief Architect, caused a bit of a ruckus in the blogosphere/twitterverse with his blog post ASP.NET MVC and DotNetNuke . I think many disagreed with his representation of ASP.NET MVC, whether...(&lt;a href="http://weblogs.asp.net/briandukes/archive/2010/01/28/dotnetnuke-amp-mvc.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=7326303" width="1" height="1"&gt;</description><category domain="http://weblogs.asp.net/briandukes/archive/tags/DotNetNuke/default.aspx">DotNetNuke</category><category domain="http://weblogs.asp.net/briandukes/archive/tags/ASP.NET/default.aspx">ASP.NET</category><category domain="http://weblogs.asp.net/briandukes/archive/tags/Community+News/default.aspx">Community News</category><category domain="http://weblogs.asp.net/briandukes/archive/tags/.NET/default.aspx">.NET</category><category domain="http://weblogs.asp.net/briandukes/archive/tags/ASP.NET+MVC/default.aspx">ASP.NET MVC</category></item></channel></rss>