<?xml version="1.0" encoding="utf-8"?><rss version="2.0"><channel><title>IBloggable - implemented</title><link>https://weblogs.asp.net:443/nmarun/</link><description></description><item><title>Visual Studio Productivity Tips</title><link>https://weblogs.asp.net:443/nmarun/visual-studio-productivity-tips</link><description>&lt;p&gt;These are some tips in Visual Studio that will help you be more productive. Below are the details of the session:&lt;/p&gt; &lt;table cellspacing="0" cellpadding="0" border="0"&gt; &lt;tbody&gt; &lt;tr&gt; &lt;td valign="bottom" width="366"&gt; &lt;p&gt;Find Feature &lt;/p&gt;&lt;/td&gt; &lt;td valign="bottom" width="60"&gt; &lt;p&gt;01:30&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="bottom" width="366"&gt; &lt;p&gt;Copy text in message box to notepad &lt;/p&gt;&lt;/td&gt; &lt;td valign="bottom" width="60"&gt; &lt;p&gt;09:14&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="bottom" width="366"&gt; &lt;p&gt;Cycle Clipboard &lt;/p&gt;&lt;/td&gt; &lt;td valign="bottom" width="60"&gt; &lt;p&gt;11:00&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="bottom" width="366"&gt; &lt;p&gt;Do not cut/copy empty line &lt;/p&gt;&lt;/td&gt; &lt;td valign="bottom" width="60"&gt; &lt;p&gt;13:45&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="bottom" width="366"&gt; &lt;p&gt;Immediate / Watch window ($user) &lt;/p&gt;&lt;/td&gt; &lt;td valign="bottom" width="60"&gt; &lt;p&gt;15:15&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="bottom" width="366"&gt; &lt;p&gt;Browse with multiple browsers &lt;/p&gt;&lt;/td&gt; &lt;td valign="bottom" width="60"&gt; &lt;p&gt;20:30&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="bottom" width="366"&gt; &lt;p&gt;Page Inspector &lt;/p&gt;&lt;/td&gt; &lt;td valign="bottom" width="60"&gt; &lt;p&gt;24:00&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="bottom" width="366"&gt; &lt;p&gt;Web Essentials (http://vswebessentials.com) &lt;/p&gt;&lt;/td&gt; &lt;td valign="bottom" width="60"&gt; &lt;p&gt;38:45&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="bottom" width="366"&gt; &lt;p&gt;TFS shortcuts (http://tinyurl.com/quickTFS)&lt;/p&gt;&lt;/td&gt; &lt;td valign="bottom" width="60"&gt; &lt;p&gt;49:50&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="bottom" width="366"&gt; &lt;p&gt;Team Foundation Service (http://tfs.visualstudio.com)&lt;/p&gt;&lt;/td&gt; &lt;td valign="bottom" width="60"&gt; &lt;p&gt;54:50&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt; &lt;div id="scid:5737277B-5D6D-4f48-ABFC-DD9C333F4C5D:cad562c5-219b-442f-afb2-275444023930" class="wlWriterEditableSmartContent" style="float: none; padding-bottom: 0px; padding-top: 0px; padding-left: 0px; margin: 0px; display: inline; padding-right: 0px"&gt;&lt;div&gt;&lt;object width="559" height="314"&gt;&lt;param name="movie" value="http://www.youtube.com/v/7hT9_G3EJxY?hl=en&amp;amp;hd=1"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/7hT9_G3EJxY?hl=en&amp;amp;hd=1" type="application/x-shockwave-flash" width="559" height="314"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/div&gt;&lt;div style="width:559px;clear:both;font-size:.8em"&gt;Visual Studio Tips&lt;/div&gt;&lt;/div&gt;</description><pubDate>Tue, 04 Nov 2014 02:09:36 GMT</pubDate><guid isPermaLink="true">https://weblogs.asp.net:443/nmarun/visual-studio-productivity-tips</guid><category>Visual Studio</category><category>Visual Studio 2010</category><category>Visual Studio 2012</category><category>Visual Studio 2013</category><category>.net</category><category>C#</category></item><item><title>Setting up Karma to run unit tests in PhantomJS and Chrome</title><link>https://weblogs.asp.net:443/nmarun/setting-up-karma-to-run-unit-tests-in-phantomjs-and-chrome</link><description>&lt;p&gt;This session talks about setting up Karma to run the unit tests in PhantomJS and Chrome. The unit tests are written using Jasmine. The tests are written for an AngularJS application, however you can write unit tests for just about any JavaScript code.&lt;/p&gt;
&lt;p&gt;If you are new to AngularJS, you might first want to watch my &lt;a href="http://www.youtube.com/watch?v=r6G6NaYeCjk"&gt;Getting to know AngularJS&lt;/a&gt; video.&lt;/p&gt;
&lt;div class="wlWriterEditableSmartContent" id="scid:5737277B-5D6D-4f48-ABFC-DD9C333F4C5D:195e1522-9cb8-45c3-a2cd-d993a80517a1" style="float: none; margin: 0px; display: inline; padding: 0px;"&gt;
&lt;div&gt;&lt;object width="586" height="329"&gt;&lt;param name="movie" value="http://www.youtube.com/v/y1mp8BiMycY?hl=en&amp;amp;hd=1" /&gt;&lt;/object&gt;&lt;embed width="586" height="329" src="http://www.youtube.com/v/y1mp8BiMycY?hl=en&amp;amp;hd=1" type="application/x-shockwave-flash" /&gt;&lt;/div&gt;
&lt;div style="width: 586px; clear: both; font-size: .8em;"&gt;Setting up Karma to run unit tests in PhantomJS and Chrome&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Node packages to install:&lt;/p&gt;
&lt;p&gt;npm install -g karma-cli &lt;br /&gt;npm install -g karma --save-dev &lt;br /&gt;npm install -g phantomjs &lt;br /&gt;npm install -g karma-jasmine --save-dev &lt;br /&gt;npm install -g karma-phantomjs-launcher --save-dev &lt;br /&gt;npm install -g karma-chrome-launcher --save-dev&lt;/p&gt;
&lt;p&gt;Install the last one only if you plan to run your unit tests using Chrome; you don&amp;rsquo;t need it if you prefer running them only in PhantomJS. Now, create the karma configuration file.&lt;/p&gt;
&lt;p&gt;karma init karma2.conf.js&lt;/p&gt;
&lt;p&gt;To run karma: karma start karma2.conf.js&lt;/p&gt;
&lt;p&gt;For code coverage:&lt;/p&gt;
&lt;p&gt;npm install -g karma-coverage&lt;/p&gt;
&lt;p&gt;Make the changes as shown in the video and run karma as shown above.&lt;/p&gt;
&lt;p&gt;Code sample &lt;a href="http://1drv.ms/QOH1s5"&gt;here&lt;/a&gt;.&lt;/p&gt;</description><pubDate>Mon, 28 Apr 2014 08:35:00 GMT</pubDate><guid isPermaLink="true">https://weblogs.asp.net:443/nmarun/setting-up-karma-to-run-unit-tests-in-phantomjs-and-chrome</guid><category>AngularJS</category><category>jQuery</category><category>Testing</category><category>Unit Testing</category><category>Visual Studio 2013</category></item><item><title>Writing E-2-E tests for AngularJS using Protractor</title><link>https://weblogs.asp.net:443/nmarun/writing-e-2-e-tests-for-angularjs-using-protractor</link><description>&lt;p&gt;This is a continuation of my post on &lt;a href="http://weblogs.asp.net/nmarun/archive/2014/02/17/some-advanced-angularjs-concepts.aspx" target="_blank"&gt;Some advanced AngularJS concepts&lt;/a&gt;. This video focuses on writing and debugging end-to-end tests on AngularJS using Protractor.&lt;/p&gt;  &lt;div id="scid:5737277B-5D6D-4f48-ABFC-DD9C333F4C5D:4a6242ac-9775-4e88-9778-993ec9b2ea0d" class="wlWriterEditableSmartContent" style="float: none; padding-bottom: 0px; padding-top: 0px; padding-left: 0px; margin: 0px; display: inline; padding-right: 0px"&gt;&lt;div&gt;&lt;object width="610" height="343"&gt;&lt;param name="movie" value="http://www.youtube.com/v/99Mh-rbeYOM?hl=en&amp;amp;hd=1"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/99Mh-rbeYOM?hl=en&amp;amp;hd=1" type="application/x-shockwave-flash" width="610" height="343"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/div&gt;&lt;div style="width:610px;clear:both;font-size:.8em"&gt;Writing E-2-E tests for AngularJS using Protractor&lt;/div&gt;&lt;/div&gt;  &lt;ul&gt;   &lt;li&gt;Setting up Protractor – 00:13 &lt;/li&gt;    &lt;li&gt;Running e-2-e tests – 03:20 &lt;/li&gt;    &lt;li&gt;How to write tests for Protractor – 04:55 &lt;/li&gt;    &lt;li&gt;Debugging e-2-e tests – 17:30 &lt;/li&gt;    &lt;li&gt;Writing e-2-e tests in C# – 21:56 &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;a href="http://1drv.ms/1honQB2" target="_blank"&gt;Code sample&lt;/a&gt; used in the session.&lt;/p&gt;</description><pubDate>Mon, 17 Feb 2014 07:42:35 GMT</pubDate><guid isPermaLink="true">https://weblogs.asp.net:443/nmarun/writing-e-2-e-tests-for-angularjs-using-protractor</guid><category>AngularJS</category><category>End-to-End testing</category><category>HTML5</category><category>JavaScript</category><category>Testing</category><category>Visual Studio</category><category>Visual Studio 2013</category></item><item><title>Some advanced AngularJS concepts</title><link>https://weblogs.asp.net:443/nmarun/some-advanced-angularjs-concepts</link><description>&lt;div id="scid:5737277B-5D6D-4f48-ABFC-DD9C333F4C5D:b478b664-5dc4-4dad-a489-dccf14ba75a9" class="wlWriterEditableSmartContent" style="float: none; padding-bottom: 0px; padding-top: 0px; padding-left: 0px; margin: 0px; display: inline; padding-right: 0px"&gt;&lt;div&gt;&lt;object width="493" height="277"&gt;&lt;param name="movie" value="http://www.youtube.com/v/9uy3WEPG3vI?hl=en&amp;amp;hd=1"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/9uy3WEPG3vI?hl=en&amp;amp;hd=1" type="application/x-shockwave-flash" width="493" height="277"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/div&gt;&lt;div style="width:493px;clear:both;font-size:.8em"&gt;Some advanced AngularJS concepts&lt;/div&gt;&lt;/div&gt;  &lt;ul&gt;   &lt;li&gt;&lt;font size="2"&gt;DI with $injector.annotate()&lt;/font&gt; – 00:35 &lt;/li&gt;    &lt;li&gt;&lt;font size="2"&gt;Directives&lt;/font&gt;       &lt;ul&gt;       &lt;li&gt;&lt;font size="2"&gt;Transclusion: give me an extreme makeover and please ensure my children still love me!!&lt;/font&gt; – 13:10 &lt;/li&gt;        &lt;li&gt;&lt;font size="2"&gt;Setting Priority to your directives&lt;/font&gt; – 25: 43 &lt;/li&gt;        &lt;li&gt;&lt;font size="2"&gt;compile, preLink and postLink functions&lt;/font&gt; – 30:20 &lt;/li&gt;     &lt;/ul&gt;   &lt;/li&gt;    &lt;li&gt;&lt;font size="2"&gt;Using $provide.decorator() function – 38:15&lt;/font&gt;&amp;#160; &lt;/li&gt;    &lt;li&gt;&lt;font size="2"&gt;Deep-watching objects and arrays&lt;/font&gt; – 44:45 &lt;/li&gt;    &lt;li&gt;&lt;font size="2"&gt;Debugging AngularJS&lt;/font&gt; – 55:55 &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;font size="2"&gt;&lt;a href="http://1drv.ms/1honQB2" target="_blank"&gt;Code sample&lt;/a&gt; used in the session.&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="2"&gt;Used AngularJS v1.2.2 for this session&lt;/font&gt;&lt;/p&gt;</description><pubDate>Mon, 17 Feb 2014 07:41:32 GMT</pubDate><guid isPermaLink="true">https://weblogs.asp.net:443/nmarun/some-advanced-angularjs-concepts</guid><category>AngularJS</category><category>HTML5</category><category>JavaScript</category><category>Visual Studio 2013</category></item><item><title>New Features of Visual Studio 2013</title><link>https://weblogs.asp.net:443/nmarun/new-features-of-visual-studio-2013</link><description>&lt;div id="scid:5737277B-5D6D-4f48-ABFC-DD9C333F4C5D:72e7dd73-d4e2-4291-b31f-8e1937415945" class="wlWriterEditableSmartContent" style="float: none; padding-bottom: 0px; padding-top: 0px; padding-left: 0px; margin: 0px; display: inline; padding-right: 0px"&gt;&lt;div&gt;&lt;object width="527" height="296"&gt;&lt;param name="movie" value="http://www.youtube.com/v/KmOwWVFignA?hl=en&amp;amp;hd=1"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/KmOwWVFignA?hl=en&amp;amp;hd=1" type="application/x-shockwave-flash" width="527" height="296"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/div&gt;&lt;div style="width:527px;clear:both;font-size:.8em"&gt;New features of Visual Studio 2013&lt;/div&gt;&lt;/div&gt;  &lt;p&gt;I have categorized the new features into four general sections:&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;IDE Enhancements (00:40)&lt;/strong&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Can keep your settings in sync through Login, type synchronized in the Quick Launch window &lt;/li&gt;    &lt;li&gt;Scaffolding New Project selection window &lt;/li&gt;    &lt;li&gt;Tools-&amp;gt;Options is searchable (+ resizable) &lt;/li&gt;    &lt;li&gt;Notifications Center &lt;/li&gt;    &lt;li&gt;Track active item or Sync active document &lt;/li&gt;    &lt;li&gt;Edit and Continue on IIS x64 &lt;/li&gt;    &lt;li&gt;Voice Commands (&lt;a href="http://tinyurl.com/pzv2yzy"&gt;http&lt;/a&gt;&lt;a href="http://tinyurl.com/pzv2yzy"&gt;://&lt;/a&gt;&lt;a href="http://tinyurl.com/pzv2yzy"&gt;tinyurl.com/pzv2yzy&lt;/a&gt;&lt;/a&gt;) &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;strong&gt;General Code Improvements (12:30)&lt;/strong&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Code Lens (&lt;a href="http://tinyurl.com/codelens"&gt;http://&lt;/a&gt;&lt;a href="http://tinyurl.com/codelens"&gt;tinyurl.com/codelens&lt;/a&gt;) &lt;/li&gt;    &lt;li&gt;Suspending your work - TFS &lt;/li&gt;    &lt;li&gt;Navigate To (Ctrl+,) &lt;/li&gt;    &lt;li&gt;Peek Window (Alt+F12) &lt;/li&gt;    &lt;li&gt;Enhanced scrollbar is now in VS &lt;/li&gt;    &lt;li&gt;Same class – two views &lt;/li&gt;    &lt;li&gt;See the return value of a method &lt;/li&gt;    &lt;li&gt;Alt + up/down arrows to move line of code/text up or down &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;strong&gt;“betterized” HTML (29:30)&lt;/strong&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;BrowserLink &lt;/li&gt;    &lt;li&gt;Intellisense for HTML Entities and data- attributes &lt;/li&gt;    &lt;li&gt;What’s with Alt+1, 1, 1 and Alt+2? &lt;/li&gt;    &lt;li&gt;Image tag metadata &lt;/li&gt;    &lt;li&gt;VS 2013 knows AngularJS &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;strong&gt;“coolified” JavaScript and CSS (46:00)&lt;/strong&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Script References (&lt;a href="http://tinyurl.com/kg3j7jg"&gt;http&lt;/a&gt;&lt;a href="http://tinyurl.com/kg3j7jg"&gt;://&lt;/a&gt;&lt;a href="http://tinyurl.com/kg3j7jg"&gt;tinyurl.com/kg3j7jg&lt;/a&gt;) &lt;/li&gt;    &lt;li&gt;Intellisense for vendor specifics, media queries, pseudo classes &lt;/li&gt;    &lt;li&gt;Color picker in CSS gets boost &lt;/li&gt; &lt;/ul&gt;</description><pubDate>Fri, 20 Dec 2013 09:08:20 GMT</pubDate><guid isPermaLink="true">https://weblogs.asp.net:443/nmarun/new-features-of-visual-studio-2013</guid><category>.net</category><category>ASP.NET MVC</category><category>Visual Studio 2013</category></item><item><title>JavaScript / jQuery some advanced topics</title><link>https://weblogs.asp.net:443/nmarun/javascript-jquery-some-advanced-topics</link><description>&lt;p&gt;In this session, we will talk about some of the advanced topics of JavaScript and jQuery.&lt;/p&gt;  &lt;p&gt;Agenda:&lt;/p&gt;  &lt;p&gt;How CSS selectors work?&lt;/p&gt;  &lt;p&gt;Function declaration and function operators&lt;/p&gt;  &lt;p&gt;Profile function&lt;/p&gt;  &lt;p&gt;data method&lt;/p&gt;  &lt;p&gt;Linting / Hinting&lt;/p&gt;  &lt;div id="scid:5737277B-5D6D-4f48-ABFC-DD9C333F4C5D:a56be8ff-b094-42b7-b469-99178b98f04a" class="wlWriterEditableSmartContent" style="float: none; padding-bottom: 0px; padding-top: 0px; padding-left: 0px; margin: 0px; display: inline; padding-right: 0px"&gt;&lt;div&gt;&lt;object width="623" height="350"&gt;&lt;param name="movie" value="http://www.youtube.com/v/z4ZCYOvCKDc?hl=en&amp;amp;hd=1"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/z4ZCYOvCKDc?hl=en&amp;amp;hd=1" type="application/x-shockwave-flash" width="623" height="350"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/div&gt;&lt;div style="width:623px;clear:both;font-size:.8em"&gt;JavaScript / jQuery advanced topics&lt;/div&gt;&lt;/div&gt;  &lt;p&gt;PS: Not sure why my face is pixelated.. I don’t look like that in real life!!&lt;/p&gt;</description><pubDate>Mon, 09 Dec 2013 01:29:07 GMT</pubDate><guid isPermaLink="true">https://weblogs.asp.net:443/nmarun/javascript-jquery-some-advanced-topics</guid><category>.net</category><category>JavaScript</category><category>jQuery</category><category>Visual Studio 2012</category></item><item><title>Testing JavaScript with QUnit</title><link>https://weblogs.asp.net:443/nmarun/testing-javascript-with-qunit</link><description>&lt;p&gt;In this session, we will take a look at how to use QUnit to write unit tests for your JavaScript code.&lt;/p&gt;  &lt;p&gt;High-level agenda: &lt;/p&gt;  &lt;p&gt;Introduction to &lt;a href="http://qunitjs.com/" target="_blank"&gt;QUnit&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Code Coverage using &lt;a href="http://blanketjs.org/" target="_blank"&gt;BlanketJS&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Mocking AJAX using &lt;a href="https://github.com/appendto/jquery-mockjax" target="_blank"&gt;MockJax&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Automating unit tests using &lt;a href="http://gruntjs.com/" target="_blank"&gt;GruntJS&lt;/a&gt;&lt;/p&gt;  &lt;div id="scid:5737277B-5D6D-4f48-ABFC-DD9C333F4C5D:409ab0ad-bd5a-481b-b20d-331838d36496" class="wlWriterEditableSmartContent" style="float: none; padding-bottom: 0px; padding-top: 0px; padding-left: 0px; margin: 0px; display: inline; padding-right: 0px"&gt;&lt;div&gt;&lt;object width="611" height="343"&gt;&lt;param name="movie" value="http://www.youtube.com/v/-WLgrVDpI-Y?hl=en&amp;amp;hd=1"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/-WLgrVDpI-Y?hl=en&amp;amp;hd=1" type="application/x-shockwave-flash" width="611" height="343"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/div&gt;&lt;div style="width:611px;clear:both;font-size:.8em"&gt;JavaScript Unit testing with QUnit&lt;/div&gt;
&lt;div&gt;Edit: You can download the code snippet used in this session &lt;a href="http://sdrv.ms/1ax3HQR" target="_blank"&gt;here&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;</description><pubDate>Mon, 02 Dec 2013 13:59:00 GMT</pubDate><guid isPermaLink="true">https://weblogs.asp.net:443/nmarun/testing-javascript-with-qunit</guid><category>.net</category><category>ASP.NET MVC</category><category>BlanketJS</category><category>JavaScript</category><category>QUnit</category><category>Unit Testing</category><category>Visual Studio 2012</category></item><item><title>3 of my apps on BestWindows8Apps.net</title><link>https://weblogs.asp.net:443/nmarun/3-of-my-apps-on-bestwindows8apps-net</link><description>&lt;p&gt;Yesterday I received this email:&lt;/p&gt;  &lt;p&gt;“&lt;em&gt;Congratulations!     &lt;br /&gt;Your apps (Knights Tour, Howzzat Book, Cows N Bulls) has been tested and rated by the BestWindows8Apps.net. Feel free to use Editor's pick award on your web page to show your visitors how highly we value your apps.      &lt;br /&gt;Award:      &lt;br /&gt;&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://bestwindows8apps.net/wp-content/uploads/2013/11/editors_pick.png"&gt;&lt;em&gt;http://bestwindows8apps.net/wp-content/uploads/2013/11/editors_pick.png&lt;/em&gt;&lt;/a&gt;    &lt;br /&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;Your apps:     &lt;br /&gt;&lt;/em&gt;&lt;a href="http://bestwindows8apps.net/knights-tour/"&gt;&lt;em&gt;http://bestwindows8apps.net/knights-tour/&lt;/em&gt;&lt;/a&gt;    &lt;br /&gt;&lt;a href="http://bestwindows8apps.net/howzzat-book/"&gt;&lt;em&gt;http://bestwindows8apps.net/howzzat-book/&lt;/em&gt;&lt;/a&gt;    &lt;br /&gt;&lt;a href="http://bestwindows8apps.net/cows-n-bulls/"&gt;&lt;em&gt;http://bestwindows8apps.net/cows-n-bulls/&lt;/em&gt;&lt;/a&gt;    &lt;br /&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;Best Regards,     &lt;br /&gt;Eric      &lt;br /&gt;BestWindows8Apps.net&lt;/em&gt;”&lt;/p&gt;  &lt;p&gt;And that’s what the award looks like… Wuhoo!&lt;/p&gt;  &lt;p&gt;&lt;img src="http://bestwindows8apps.net/wp-content/uploads/2013/11/editors_pick.png" /&gt;&lt;/p&gt;</description><pubDate>Sat, 30 Nov 2013 02:21:14 GMT</pubDate><guid isPermaLink="true">https://weblogs.asp.net:443/nmarun/3-of-my-apps-on-bestwindows8apps-net</guid><category>.net</category><category>C#</category><category>Windows 8</category></item><item><title>Getting to know AngularJS</title><link>https://weblogs.asp.net:443/nmarun/getting-to-know-angularjs</link><description>&lt;p&gt;I did a session to my colleagues and wanted to share with all of you. Some parts have been edited out as per company policy.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;div id="scid:5737277B-5D6D-4f48-ABFC-DD9C333F4C5D:972771b5-9b6b-448a-9574-e9c0d26b4bf9" class="wlWriterEditableSmartContent" style="float: none; padding-bottom: 0px; padding-top: 0px; padding-left: 0px; margin: 0px; display: inline; padding-right: 0px"&gt;&lt;div&gt;&lt;object width="448" height="252"&gt;&lt;param name="movie" value="http://www.youtube.com/v/r6G6NaYeCjk?hl=en&amp;amp;hd=1"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/r6G6NaYeCjk?hl=en&amp;amp;hd=1" type="application/x-shockwave-flash" width="448" height="252"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/div&gt;&lt;div style="width:448px;clear:both;font-size:.8em"&gt;Getting to know AngularJS&lt;/div&gt;&lt;/div&gt;  &lt;p&gt;Hope this helps.&lt;/p&gt;</description><pubDate>Fri, 29 Nov 2013 05:27:47 GMT</pubDate><guid isPermaLink="true">https://weblogs.asp.net:443/nmarun/getting-to-know-angularjs</guid><category>AngularJS</category><category>HTML5</category><category>JavaScript</category><category>JSON</category><category>Visual Studio 2012</category></item><item><title>Using QUnit for JavaScript unit test and BlanketJS for code coverage</title><link>https://weblogs.asp.net:443/nmarun/using-qunit-for-javascript-unit-test-and-blanketjs-for-code-coverage</link><description>&lt;p&gt;I recently started using &lt;a href="http://qunitjs.com/" target="_blank"&gt;QUnit&lt;/a&gt; for unit testing JS code and I’m really impressed with it. I’m sure &lt;a href="http://pivotal.github.io/jasmine/" target="_blank"&gt;Jasmine&lt;/a&gt; framework is equally good, but I picked up QUnit because none of the languages/frameworks I have learned so far have the letter ‘Q’ in them!!&lt;/p&gt;  &lt;p&gt;So I have a simple page which is used to add two numbers and show the sum as a text.&lt;/p&gt;  &lt;div class="csharpcode"&gt;   &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   1:  &lt;/span&gt;&lt;span class="kwrd"&gt;&amp;lt;!&lt;/span&gt;&lt;span class="html"&gt;DOCTYPE&lt;/span&gt; &lt;span class="attr"&gt;html&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   2:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   3:  &lt;/span&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;html&lt;/span&gt; &lt;span class="attr"&gt;lang&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;en&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;xmlns&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;http://www.w3.org/1999/xhtml&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   4:  &lt;/span&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;head&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   5:  &lt;/span&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;meta&lt;/span&gt; &lt;span class="attr"&gt;charset&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;utf-8&amp;quot;&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   6:  &lt;/span&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;title&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;qUnit and Blanketjs&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;title&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   7:  &lt;/span&gt;&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;head&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   8:  &lt;/span&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;body&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   9:  &lt;/span&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;input&lt;/span&gt; &lt;span class="attr"&gt;type&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;text&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;id&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;arg1&amp;quot;&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;span class="attr"&gt;&amp;amp;nbsp;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  10:  &lt;/span&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;input&lt;/span&gt; &lt;span class="attr"&gt;type&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;text&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;id&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;arg2&amp;quot;&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt; &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;br&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  11:  &lt;/span&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;div&lt;/span&gt; &lt;span class="attr"&gt;id&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;output1&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;span class="attr"&gt;&amp;amp;nbsp;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;div&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  12:  &lt;/span&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;input&lt;/span&gt; &lt;span class="attr"&gt;type&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;button&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;id&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;button1&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;value&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Show sum&amp;quot;&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;p&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  13:  &lt;/span&gt;&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;body&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  14:  &lt;/span&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;script&lt;/span&gt; &lt;span class="attr"&gt;src&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Scripts/jquery-2.0.0.min.js&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;script&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  15:  &lt;/span&gt;    &amp;lt;script src=&lt;span class="str"&gt;&amp;quot;Scripts/main.js&amp;quot;&lt;/span&gt; type=&lt;span class="str"&gt;&amp;quot;text/javascript&amp;quot;&lt;/span&gt;&amp;gt;&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;script&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  16:  &lt;/span&gt;&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;html&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;style type="text/css"&gt;


.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/style&gt;

&lt;p&gt;I’m using jQuery 2.0 for this as it is the current version. My javascript to get the ‘complex’ summation feature looks as below.&lt;/p&gt;

&lt;div class="csharpcode"&gt;
  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   1:  &lt;/span&gt;&lt;span class="kwrd"&gt;var&lt;/span&gt; getSum = &lt;span class="kwrd"&gt;function&lt;/span&gt; (arg1, arg2) {&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   2:  &lt;/span&gt;    &lt;span class="kwrd"&gt;var&lt;/span&gt; intArg1 = parseInt(arg1);&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   3:  &lt;/span&gt;    &lt;span class="kwrd"&gt;var&lt;/span&gt; intArg2 = parseInt(arg2);&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   4:  &lt;/span&gt;    &lt;span class="kwrd"&gt;return&lt;/span&gt; intArg1 + intArg2;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   5:  &lt;/span&gt;};&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   6:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   7:  &lt;/span&gt;&lt;span class="kwrd"&gt;var&lt;/span&gt; getSumText = &lt;span class="kwrd"&gt;function&lt;/span&gt; (arg1, arg2) {&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   8:  &lt;/span&gt;    &lt;span class="kwrd"&gt;var&lt;/span&gt; sum = getSum(arg1, arg2);&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   9:  &lt;/span&gt;    &lt;span class="kwrd"&gt;return&lt;/span&gt; &lt;span class="str"&gt;'The sum of '&lt;/span&gt; + arg1 + &lt;span class="str"&gt;' and '&lt;/span&gt; + arg2 + &lt;span class="str"&gt;' is '&lt;/span&gt; + sum + &lt;span class="str"&gt;'.'&lt;/span&gt;;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  10:  &lt;/span&gt;};&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  11:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  12:  &lt;/span&gt;$(&lt;span class="str"&gt;&amp;quot;#button1&amp;quot;&lt;/span&gt;).click(&lt;span class="kwrd"&gt;function&lt;/span&gt; (e) {&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  13:  &lt;/span&gt;    &lt;span class="kwrd"&gt;var&lt;/span&gt; sumText = getSumText($(&lt;span class="str"&gt;&amp;quot;#arg1&amp;quot;&lt;/span&gt;).val(), $(&lt;span class="str"&gt;&amp;quot;#arg2&amp;quot;&lt;/span&gt;).val());&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  14:  &lt;/span&gt;    $(&lt;span class="str"&gt;&amp;quot;#output1&amp;quot;&lt;/span&gt;).text(sumText);&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  15:  &lt;/span&gt;    e.stopPropagation();&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  16:  &lt;/span&gt;});&lt;/pre&gt;
&lt;/div&gt;
&lt;style type="text/css"&gt;


.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/style&gt;

&lt;p&gt;I’m using the ‘function operator’ methodology to create my functions. See a very good article by &lt;a href="http://twitter.com/helephant" target="_blank"&gt;Helen Emerson&lt;/a&gt; on this &lt;a href="http://helephant.com/2012/07/14/javascript-function-declaration-vs-expression/" target="_blank"&gt;here&lt;/a&gt;. Declaring your functions before they are called will also help you get a ‘green’ from &lt;a href="http://jslint.com" target="_blank"&gt;jsLint&lt;/a&gt; and &lt;a href="http://jshint.com" target="_blank"&gt;jsHint&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;A sample output looks like below.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://aspblogs.blob.core.windows.net/media/nmarun/Media/image_1E0EB796.png"&gt;&lt;img title="image" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="image" src="https://aspblogs.blob.core.windows.net/media/nmarun/Media/image_thumb_3047588B.png" width="376" height="221" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Now let’s start writing unit test for these. QUnit requires three things to get started – the html, QUnit javascript framework and QUnit CSS file. All of these are detailed in the &lt;a href="http://qunitjs.com" target="_blank"&gt;site&lt;/a&gt; itself. My qUnit.html contains a reference of main.js (containing the .js code for the feature) and the mainTests.js where I’m going to write my JavaScript unit test cases in.&lt;/p&gt;

&lt;div class="csharpcode"&gt;
  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   1:  &lt;/span&gt;&lt;span class="kwrd"&gt;&amp;lt;!&lt;/span&gt;&lt;span class="html"&gt;DOCTYPE&lt;/span&gt; &lt;span class="attr"&gt;html&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   2:  &lt;/span&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;html&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   3:  &lt;/span&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;head&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   4:  &lt;/span&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;meta&lt;/span&gt; &lt;span class="attr"&gt;charset&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;UTF-8&amp;quot;&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   5:  &lt;/span&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;title&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;Test Suite&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;title&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   6:  &lt;/span&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;link&lt;/span&gt; &lt;span class="attr"&gt;href&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Content/qunit-1.12.0.css&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;rel&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;stylesheet&amp;quot;&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   7:  &lt;/span&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;script&lt;/span&gt; &lt;span class="attr"&gt;src&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Scripts/jquery-2.0.0.min.js&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;script&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   8:  &lt;/span&gt;    &amp;lt;script src=&lt;span class="str"&gt;&amp;quot;Scripts/main.js&amp;quot;&lt;/span&gt;&amp;gt;&amp;lt;/script&amp;gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   9:  &lt;/span&gt;    &amp;lt;script src=&lt;span class="str"&gt;&amp;quot;Scripts/qunit-1.12.0.js&amp;quot;&lt;/span&gt;&amp;gt;&amp;lt;/script&amp;gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  10:  &lt;/span&gt;    &amp;lt;script src=&lt;span class="str"&gt;&amp;quot;Scripts/mainTests.js&amp;quot;&lt;/span&gt;&amp;gt;&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;script&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  11:  &lt;/span&gt;&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;head&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  12:  &lt;/span&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;body&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  13:  &lt;/span&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;h1&lt;/span&gt; &lt;span class="attr"&gt;id&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;qunit-header&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;Test Suite&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;h1&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  14:  &lt;/span&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;h2&lt;/span&gt; &lt;span class="attr"&gt;id&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;qunit-banner&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;h2&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  15:  &lt;/span&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;div&lt;/span&gt; &lt;span class="attr"&gt;id&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;qunit-testrunner-toolbar&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;div&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  16:  &lt;/span&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;h2&lt;/span&gt; &lt;span class="attr"&gt;id&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;qunit-userAgent&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;h2&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  17:  &lt;/span&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;ol&lt;/span&gt; &lt;span class="attr"&gt;id&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;qunit-tests&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;ol&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  18:  &lt;/span&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;div&lt;/span&gt; &lt;span class="attr"&gt;id&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;qunit-fixture&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;div&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  19:  &lt;/span&gt;&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;body&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  20:  &lt;/span&gt;&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;html&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;style type="text/css"&gt;


.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/style&gt;

&lt;p&gt;Let’s start with writing a unit test for the getSum method.&lt;/p&gt;

&lt;div class="csharpcode"&gt;
  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   1:  &lt;/span&gt;module(&lt;span class="str"&gt;'Sum tests'&lt;/span&gt;);&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   2:  &lt;/span&gt;test(&lt;span class="str"&gt;'should add correctly'&lt;/span&gt;, 1, &lt;span class="kwrd"&gt;function&lt;/span&gt;() {&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   3:  &lt;/span&gt;    &lt;span class="kwrd"&gt;var&lt;/span&gt; sum = getSum(&lt;span class="str"&gt;'2'&lt;/span&gt;, &lt;span class="str"&gt;'1'&lt;/span&gt;);&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   4:  &lt;/span&gt;    deepEqual(sum, 3, &lt;span class="str"&gt;'sum is correct'&lt;/span&gt;);&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   5:  &lt;/span&gt;});&lt;/pre&gt;
&lt;/div&gt;
&lt;style type="text/css"&gt;


.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/style&gt;

&lt;p&gt;The first line declares a module which somewhat equates to a test class under which you can add all related tests. This is not required for unit testing per say, but is a good practice to segregate your tests. Also, as you will see later, QUnit gives a way to run all tests under a specific module.&lt;/p&gt;

&lt;p&gt;The second line declares your unit test with a title – ‘should add correctly’. The second parameter tells the number of assertions expecting in this test case. The third one the function itself. We call the getSum() function passing two arguments and get the return.&lt;/p&gt;

&lt;p&gt;The assertion ‘deepEqual’ compares the output with an expected value along with the type of the result, hence the name ‘deepEqual’. The complete details on using QUnit is provided on their &lt;a href="http://qunitjs.com/cookbook/" target="_blank"&gt;cookbook&lt;/a&gt; page.&lt;/p&gt;

&lt;p&gt;If I run the qUnit.html in the browser, I’ll see the below.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://aspblogs.blob.core.windows.net/media/nmarun/Media/image_7B5A534D.png"&gt;&lt;img title="image" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="image" src="https://aspblogs.blob.core.windows.net/media/nmarun/Media/image_thumb_721E180C.png" width="490" height="296" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;There’s one test method under the module ‘Sum tests’ and it has passed. Wuhoo!&lt;/p&gt;

&lt;p&gt;Now, let’s switch gears and go to &lt;a href="http://blanketjs.org" target="_blank"&gt;BlanketJS&lt;/a&gt; to implement the code coverage part.&lt;/p&gt;

&lt;p&gt;There are three changes we’ll make to get BlanketJS to do it’s job to the qUnit.html page.&lt;/p&gt;

&lt;div class="csharpcode"&gt;
  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   1:  &lt;/span&gt;&lt;span class="kwrd"&gt;&amp;lt;!&lt;/span&gt;&lt;span class="html"&gt;DOCTYPE&lt;/span&gt; &lt;span class="attr"&gt;html&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   2:  &lt;/span&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;html&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   3:  &lt;/span&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;head&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   4:  &lt;/span&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;meta&lt;/span&gt; &lt;span class="attr"&gt;charset&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;UTF-8&amp;quot;&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   5:  &lt;/span&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;title&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;Test Suite&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;title&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   6:  &lt;/span&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;link&lt;/span&gt; &lt;span class="attr"&gt;href&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Content/qunit-1.12.0.css&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;rel&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;stylesheet&amp;quot;&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   7:  &lt;/span&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;script&lt;/span&gt; &lt;span class="attr"&gt;src&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Scripts/jquery-2.0.0.min.js&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;script&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   8:  &lt;/span&gt;    &amp;lt;script src=&lt;span class="str"&gt;&amp;quot;Scripts/main.js&amp;quot;&lt;/span&gt; data-cover&amp;gt;&amp;lt;/script&amp;gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   9:  &lt;/span&gt;    &amp;lt;script src=&lt;span class="str"&gt;&amp;quot;Scripts/qunit-1.12.0.js&amp;quot;&lt;/span&gt;&amp;gt;&amp;lt;/script&amp;gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  10:  &lt;/span&gt;    &amp;lt;script src=&lt;span class="str"&gt;&amp;quot;Scripts/blanket.min.js&amp;quot;&lt;/span&gt;&amp;gt;&amp;lt;/script&amp;gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  11:  &lt;/span&gt;    &amp;lt;script src=&lt;span class="str"&gt;&amp;quot;Scripts/mainTests.js&amp;quot;&lt;/span&gt;&amp;gt;&amp;lt;/script&amp;gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  12:  &lt;/span&gt;&amp;lt;/head&amp;gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  13:  &lt;/span&gt;&amp;lt;body&amp;gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  14:  &lt;/span&gt;    &amp;lt;h1 id=&lt;span class="str"&gt;&amp;quot;qunit-header&amp;quot;&lt;/span&gt;&amp;gt;Test Suite&amp;lt;/h1&amp;gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  15:  &lt;/span&gt;    &amp;lt;h2 id=&lt;span class="str"&gt;&amp;quot;qunit-banner&amp;quot;&lt;/span&gt;&amp;gt;&amp;lt;/h2&amp;gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  16:  &lt;/span&gt;    &amp;lt;div id=&lt;span class="str"&gt;&amp;quot;qunit-testrunner-toolbar&amp;quot;&lt;/span&gt;&amp;gt;&amp;lt;/div&amp;gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  17:  &lt;/span&gt;    &amp;lt;h2 id=&lt;span class="str"&gt;&amp;quot;qunit-userAgent&amp;quot;&lt;/span&gt;&amp;gt;&amp;lt;/h2&amp;gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  18:  &lt;/span&gt;    &amp;lt;ol id=&lt;span class="str"&gt;&amp;quot;qunit-tests&amp;quot;&lt;/span&gt;&amp;gt;&amp;lt;/ol&amp;gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  19:  &lt;/span&gt;    &amp;lt;div id=&lt;span class="str"&gt;&amp;quot;qunit-fixture&amp;quot;&lt;/span&gt;&amp;gt;&amp;lt;/div&amp;gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  20:  &lt;/span&gt;        &amp;lt;script type=&lt;span class="str"&gt;&amp;quot;text/javascript&amp;quot;&lt;/span&gt;&amp;gt;&lt;span class="kwrd"&gt;function&lt;/span&gt; blanket_toggleSource(e) {&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  21:  &lt;/span&gt;    &lt;span class="kwrd"&gt;var&lt;/span&gt; t = document.getElementById(e);&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  22:  &lt;/span&gt;    t.style.display === &lt;span class="str"&gt;&amp;quot;block&amp;quot;&lt;/span&gt; ? t.style.display = &lt;span class="str"&gt;&amp;quot;none&amp;quot;&lt;/span&gt; : t.style.display = &lt;span class="str"&gt;&amp;quot;block&amp;quot;&lt;/span&gt;;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  23:  &lt;/span&gt;}&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;script&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  24:  &lt;/span&gt;&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;body&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  25:  &lt;/span&gt;&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;html&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;The first is the inclusion of the blanket js file as shown in line 10. The second one is the addition of ‘data-cover’ attribute to the reference of main.js on line 8. This is the attribute that BlanketJS looks for to provide code coverage on. The third and the last change is the addition of the script tag as seen in lines 20-23.&lt;/p&gt;

&lt;p&gt;Now if you refresh the qUnit.html page, you’ll see a new option – the Enable coverage checkbox. Click on it and the page refreshes with the coverage details.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://aspblogs.blob.core.windows.net/media/nmarun/Media/image_1CA9D31D.png"&gt;&lt;img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="https://aspblogs.blob.core.windows.net/media/nmarun/Media/image_thumb_1BA1BD73.png" width="611" height="335" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;There you go. Now you have coverage for your main.js file. Clicking on the main.js link gives you even more details.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://aspblogs.blob.core.windows.net/media/nmarun/Media/image_13C9A504.png"&gt;&lt;img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="https://aspblogs.blob.core.windows.net/media/nmarun/Media/image_thumb_30EF4D0E.png" width="601" height="430" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Brilliant right? So now we know the getSumText is not covered, let’s write another test for that and see the results.&lt;/p&gt;

&lt;div class="csharpcode"&gt;
  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   1:  &lt;/span&gt;test(&lt;span class="str"&gt;'should display text correctly'&lt;/span&gt;, 1, &lt;span class="kwrd"&gt;function&lt;/span&gt;() {&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   2:  &lt;/span&gt;    &lt;span class="kwrd"&gt;var&lt;/span&gt; sumText = getSumText(3, 5);&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   3:  &lt;/span&gt;    equal(sumText, &lt;span class="str"&gt;'The sum of 3 and 5 is 8.'&lt;/span&gt;, &lt;span class="str"&gt;'sum text is correct'&lt;/span&gt;);&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   4:  &lt;/span&gt;});&lt;/pre&gt;
&lt;/div&gt;
&lt;style type="text/css"&gt;
.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/style&gt;

&lt;p&gt;The latest results are:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://aspblogs.blob.core.windows.net/media/nmarun/Media/image_0D0675B4.png"&gt;&lt;img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="https://aspblogs.blob.core.windows.net/media/nmarun/Media/image_thumb_5C23BE48.png" width="580" height="546" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;So there you go – JavaScript unit testing and code coverage in real simple steps.&lt;/p&gt;</description><pubDate>Sat, 29 Jun 2013 03:42:51 GMT</pubDate><guid isPermaLink="true">https://weblogs.asp.net:443/nmarun/using-qunit-for-javascript-unit-test-and-blanketjs-for-code-coverage</guid><category>BlanketJS</category><category>DOM</category><category>JavaScript</category><category>jQuery</category><category>QUnit</category><category>Unit Testing</category></item><item><title>Seeing the events attached to a DOM element</title><link>https://weblogs.asp.net:443/nmarun/seeing-the-events-attached-to-a-dom-element</link><description>&lt;p&gt;There is a difference among jQuery versions when it comes to reading the events attached to a DOM element. Let’s start with the pre-1.8 version.&lt;/p&gt;  &lt;div class="csharpcode"&gt;   &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   1:  &lt;/span&gt;&lt;span class="kwrd"&gt;&amp;lt;!&lt;/span&gt;&lt;span class="html"&gt;DOCTYPE&lt;/span&gt; &lt;span class="attr"&gt;html&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   2:  &lt;/span&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;html&lt;/span&gt; &lt;span class="attr"&gt;lang&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;en&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;xmlns&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;http://www.w3.org/1999/xhtml&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   3:  &lt;/span&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;head&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   4:  &lt;/span&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;meta&lt;/span&gt; &lt;span class="attr"&gt;charset&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;utf-8&amp;quot;&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   5:  &lt;/span&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;title&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;Pre 1.8&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;title&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   6:  &lt;/span&gt;&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;head&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   7:  &lt;/span&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;body&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   8:  &lt;/span&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;input&lt;/span&gt; &lt;span class="attr"&gt;type&lt;/span&gt;&lt;span class="kwrd"&gt;='button'&lt;/span&gt; &lt;span class="attr"&gt;id&lt;/span&gt;&lt;span class="kwrd"&gt;='output'&lt;/span&gt; &lt;span class="attr"&gt;value&lt;/span&gt;&lt;span class="kwrd"&gt;='click to see the events attached'&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   9:  &lt;/span&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;div&lt;/span&gt; &lt;span class="attr"&gt;id&lt;/span&gt;&lt;span class="kwrd"&gt;='caller'&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;Pre 1.8 version&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;div&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  10:  &lt;/span&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;div&lt;/span&gt; &lt;span class="attr"&gt;id&lt;/span&gt;&lt;span class="kwrd"&gt;='display'&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;div&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  11:  &lt;/span&gt;&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;body&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  12:  &lt;/span&gt;&lt;span class="rem"&gt;&amp;lt;!--pre 1.8 jquery--&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  13:  &lt;/span&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;script&lt;/span&gt; &lt;span class="attr"&gt;src&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;jquery-1.7.min.js&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;script&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  14:  &lt;/span&gt;&amp;lt;script&amp;gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  15:  &lt;/span&gt;    &lt;span class="rem"&gt;// register some events on an element&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  16:  &lt;/span&gt;    $(&lt;span class="str"&gt;'#caller'&lt;/span&gt;).click(&lt;span class="kwrd"&gt;function&lt;/span&gt; () { $(&lt;span class="str"&gt;'#display'&lt;/span&gt;).append(&lt;span class="str"&gt;'clicked on caller'&lt;/span&gt;); });&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  17:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  18:  &lt;/span&gt;    $(&lt;span class="str"&gt;&amp;quot;#caller&amp;quot;&lt;/span&gt;).hover(&lt;span class="kwrd"&gt;function&lt;/span&gt; () { $(&lt;span class="kwrd"&gt;this&lt;/span&gt;).css(&lt;span class="str"&gt;'color'&lt;/span&gt;, &lt;span class="str"&gt;'red'&lt;/span&gt;); }, &lt;/pre&gt;

  &lt;pre&gt;                              &lt;span class="kwrd"&gt;function&lt;/span&gt; () { $(&lt;span class="kwrd"&gt;this&lt;/span&gt;).css(&lt;span class="str"&gt;'color'&lt;/span&gt;, &lt;span class="str"&gt;'black'&lt;/span&gt;); });&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  19:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  20:  &lt;/span&gt;    $(&lt;span class="str"&gt;'#output'&lt;/span&gt;).click(&lt;span class="kwrd"&gt;function&lt;/span&gt; (e) {&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  21:  &lt;/span&gt;        &lt;span class="rem"&gt;// read all the events registered&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  22:  &lt;/span&gt;        $.each($(&lt;span class="str"&gt;'#caller'&lt;/span&gt;).data(&lt;span class="str"&gt;'events'&lt;/span&gt;), &lt;span class="kwrd"&gt;function&lt;/span&gt; (i, &lt;span class="kwrd"&gt;event&lt;/span&gt;) {&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  23:  &lt;/span&gt;            $(&lt;span class="str"&gt;&amp;quot;#display&amp;quot;&lt;/span&gt;).append(&lt;span class="str"&gt;'&amp;lt;br/&amp;gt;Event='&lt;/span&gt; + i);&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  24:  &lt;/span&gt;            $.each(&lt;span class="kwrd"&gt;event&lt;/span&gt;, &lt;span class="kwrd"&gt;function&lt;/span&gt; (j, h) {&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  25:  &lt;/span&gt;                $(&lt;span class="str"&gt;&amp;quot;#display&amp;quot;&lt;/span&gt;).append(&lt;span class="str"&gt;'&amp;lt;br/&amp;gt;'&lt;/span&gt;);&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  26:  &lt;/span&gt;                &lt;span class="rem"&gt;// the below executes the actual function attached&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  27:  &lt;/span&gt;                &lt;span class="rem"&gt;//$('#display').append(h.handler);&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  28:  &lt;/span&gt;                &lt;span class="rem"&gt;// the below gives the entire function&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  29:  &lt;/span&gt;                $(&lt;span class="str"&gt;&amp;quot;#display&amp;quot;&lt;/span&gt;).append(h.handler.toString());&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  30:  &lt;/span&gt;            });&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  31:  &lt;/span&gt;        });&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  32:  &lt;/span&gt;        e.preventDefault();&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  33:  &lt;/span&gt;    });&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  34:  &lt;/span&gt;&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;script&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  35:  &lt;/span&gt;&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;html&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;style type="text/css"&gt;


.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/style&gt;

&lt;p&gt;I have two divs and a button. Version 1.7 of jQuery is used in this snippet and I’m registering the click and the hover events on the ‘caller’ div. As per jquery &lt;a href="http://api.jquery.com/hover/"&gt;documentation&lt;/a&gt;, hover binds handlers for both mouseenter and mouseleave events.&lt;/p&gt;

&lt;p&gt;When I click on the button, the $(‘#caller’).data(‘events’) code returns the events for the given DOM element. The remainder of the script is just plumbing code to loop through and see the event details. I think I have added enough comments in the click event to make it self-explanatory. Make special note of the line 27. With this, you can actually execute the event by just calling the handler.&lt;/p&gt;

&lt;p&gt;As you can see in the below output, the events (click, mouseover and mouseout) are shown.&lt;a href="https://aspblogs.blob.core.windows.net/media/nmarun/Media/image_3F1B97AA.png"&gt;&lt;img title="image" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="image" src="https://aspblogs.blob.core.windows.net/media/nmarun/Media/image_thumb_1C0B263A.png" width="344" height="188" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This got changed in version 1.8 (see &lt;a href="http://blog.jquery.com/2012/08/09/jquery-1-8-released/"&gt;here&lt;/a&gt; and &lt;a href="https://github.com/IanLunn/Sequence/issues/118"&gt;here&lt;/a&gt;). So in the newer versions (I’ve used 2.0.0 for this exercise), if you want to do the same, use the snippet below.&lt;/p&gt;

&lt;div class="csharpcode"&gt;
  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   1:  &lt;/span&gt;&lt;span class="kwrd"&gt;&amp;lt;!&lt;/span&gt;&lt;span class="html"&gt;DOCTYPE&lt;/span&gt; &lt;span class="attr"&gt;html&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   2:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   3:  &lt;/span&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;html&lt;/span&gt; &lt;span class="attr"&gt;lang&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;en&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;xmlns&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;http://www.w3.org/1999/xhtml&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   4:  &lt;/span&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;head&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   5:  &lt;/span&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;meta&lt;/span&gt; &lt;span class="attr"&gt;charset&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;utf-8&amp;quot;&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   6:  &lt;/span&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;title&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;Post 1.8&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;title&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   7:  &lt;/span&gt;&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;head&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   8:  &lt;/span&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;body&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   9:  &lt;/span&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;input&lt;/span&gt; &lt;span class="attr"&gt;type&lt;/span&gt;&lt;span class="kwrd"&gt;='button'&lt;/span&gt; &lt;span class="attr"&gt;id&lt;/span&gt;&lt;span class="kwrd"&gt;='output'&lt;/span&gt; &lt;span class="attr"&gt;value&lt;/span&gt;&lt;span class="kwrd"&gt;='click to see the events attached'&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  10:  &lt;/span&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;div&lt;/span&gt; &lt;span class="attr"&gt;id&lt;/span&gt;&lt;span class="kwrd"&gt;='caller'&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;Post 1.8 version&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;div&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  11:  &lt;/span&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;div&lt;/span&gt; &lt;span class="attr"&gt;id&lt;/span&gt;&lt;span class="kwrd"&gt;='display'&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;div&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  12:  &lt;/span&gt;&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;body&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  13:  &lt;/span&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;script&lt;/span&gt; &lt;span class="attr"&gt;src&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;jquery-2.0.0.min.js&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;script&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  14:  &lt;/span&gt;&amp;lt;script&amp;gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  15:  &lt;/span&gt;    &lt;span class="rem"&gt;// register some events on an element&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  16:  &lt;/span&gt;    $(&lt;span class="str"&gt;'#caller'&lt;/span&gt;).click(&lt;span class="kwrd"&gt;function&lt;/span&gt; () { $(&lt;span class="str"&gt;'#display'&lt;/span&gt;).append(&lt;span class="str"&gt;'clicked on caller'&lt;/span&gt;); });&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  17:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  18:  &lt;/span&gt;    $(&lt;span class="str"&gt;&amp;quot;#caller&amp;quot;&lt;/span&gt;).hover(&lt;span class="kwrd"&gt;function&lt;/span&gt; () { $(&lt;span class="kwrd"&gt;this&lt;/span&gt;).css(&lt;span class="str"&gt;'color'&lt;/span&gt;, &lt;span class="str"&gt;'red'&lt;/span&gt;); }, &lt;/pre&gt;

  &lt;pre&gt;                              &lt;span class="kwrd"&gt;function&lt;/span&gt; () { $(&lt;span class="kwrd"&gt;this&lt;/span&gt;).css(&lt;span class="str"&gt;'color'&lt;/span&gt;, &lt;span class="str"&gt;'black'&lt;/span&gt;); });&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  19:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  20:  &lt;/span&gt;    $(&lt;span class="str"&gt;'#output'&lt;/span&gt;).click(&lt;span class="kwrd"&gt;function&lt;/span&gt; () {&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  21:  &lt;/span&gt;        console.log($(&lt;span class="str"&gt;'#caller'&lt;/span&gt;)[0]); &lt;span class="rem"&gt;// returns &amp;lt;div id='caller'&amp;gt;, for FYI only&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  22:  &lt;/span&gt;        &lt;span class="rem"&gt;// read all the events registered&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  23:  &lt;/span&gt;        $.each($._data($(&lt;span class="str"&gt;'#caller'&lt;/span&gt;)[0], &lt;span class="str"&gt;'events'&lt;/span&gt;), &lt;span class="kwrd"&gt;function&lt;/span&gt; (i, &lt;span class="kwrd"&gt;event&lt;/span&gt;) {&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  24:  &lt;/span&gt;            $(&lt;span class="str"&gt;'#display'&lt;/span&gt;).append(&lt;span class="str"&gt;'&amp;lt;br/&amp;gt;Event='&lt;/span&gt; + i);&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  25:  &lt;/span&gt;            $.each(&lt;span class="kwrd"&gt;event&lt;/span&gt;, &lt;span class="kwrd"&gt;function&lt;/span&gt; (j, h) {&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  26:  &lt;/span&gt;                $(&lt;span class="str"&gt;'#display'&lt;/span&gt;).append(&lt;span class="str"&gt;'&amp;lt;br/&amp;gt;'&lt;/span&gt;);&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  27:  &lt;/span&gt;                &lt;span class="rem"&gt;// the below executes the actual function attached&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  28:  &lt;/span&gt;                &lt;span class="rem"&gt;//$('#display').append(h.handler);&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  29:  &lt;/span&gt;                &lt;span class="rem"&gt;// the below gives the entire function&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  30:  &lt;/span&gt;                $(&lt;span class="str"&gt;'#display'&lt;/span&gt;).append(h.handler.toString());&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  31:  &lt;/span&gt;            });&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  32:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  33:  &lt;/span&gt;        });&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  34:  &lt;/span&gt;    });&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  35:  &lt;/span&gt;&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;script&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  36:  &lt;/span&gt;&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;html&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;style type="text/css"&gt;


.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/style&gt;

&lt;p&gt;Most of the page is the same as the pre-1.8 example, except for the way in which you read the events registered on an element (line 23).&lt;/p&gt;

&lt;p&gt;The output is again the same as the previous one.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://aspblogs.blob.core.windows.net/media/nmarun/Media/image_6BA405E9.png"&gt;&lt;img title="image" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="image" src="https://aspblogs.blob.core.windows.net/media/nmarun/Media/image_thumb_3118E048.png" width="360" height="201" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;So in short, use $('#caller').data('events') for pre 1.8 and $._data($('#caller')[0], 'events') for 1.8 and later versions.&lt;/p&gt;</description><pubDate>Fri, 28 Jun 2013 14:05:41 GMT</pubDate><guid isPermaLink="true">https://weblogs.asp.net:443/nmarun/seeing-the-events-attached-to-a-dom-element</guid><category>DOM</category><category>JavaScript</category><category>jQuery</category></item><item><title>Find feature in Standard Toolbar Visual Studio 2010, 2012</title><link>https://weblogs.asp.net:443/nmarun/find-feature-in-standard-toolbar-visual-studio-2010-2012</link><description>&lt;p&gt;There is a button ‘Find’ in the Standard toolbar which remains hidden (absolutely no clue why), but adding it can help do some wonders.&lt;/p&gt;  &lt;p&gt;&lt;a href="https://aspblogs.blob.core.windows.net/media/nmarun/Media/image_22FCF205.png"&gt;&lt;img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="https://aspblogs.blob.core.windows.net/media/nmarun/Media/image_thumb_3E71CE3B.png" width="514" height="55" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="https://aspblogs.blob.core.windows.net/media/nmarun/Media/image_2358FF2D.png"&gt;&lt;img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="https://aspblogs.blob.core.windows.net/media/nmarun/Media/image_thumb_3052DF3E.png" width="350" height="86" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;In my machine the shortcut for this is Ctrl+D, but I have also seen Ctrl+/ on other machines. &lt;/p&gt;  &lt;p&gt;As the name suggests, it helps you to find text in the current file. But did you know you can open files, insert breakpoints and use it as a Command window using this button?&lt;/p&gt;  &lt;p&gt;Opening files:&lt;/p&gt;  &lt;p&gt;By default, Ctrl+O is the shortcut to pull up the Open Files dialog window.&lt;/p&gt;  &lt;p&gt;&lt;a href="https://aspblogs.blob.core.windows.net/media/nmarun/Media/image_6E6BF9EF.png"&gt;&lt;img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="https://aspblogs.blob.core.windows.net/media/nmarun/Media/image_thumb_7F03F4DD.png" width="347" height="198" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;To use this feature to open files, type a file name in current solution and press Ctrl+O while the focus is still in the Find textbox and the file will be opened for u.&lt;/p&gt;  &lt;p&gt;&lt;a href="https://aspblogs.blob.core.windows.net/media/nmarun/Media/image_4A832295.png"&gt;&lt;img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="https://aspblogs.blob.core.windows.net/media/nmarun/Media/image_thumb_421F4D3E.png" width="480" height="103" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;It’s that simple. This is not just limited to the files in the solution, you can open any file on your machine if provide the full path.&lt;/p&gt;  &lt;p&gt;&lt;a href="https://aspblogs.blob.core.windows.net/media/nmarun/Media/image_19343835.png"&gt;&lt;img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="https://aspblogs.blob.core.windows.net/media/nmarun/Media/image_thumb_3EBDB596.png" width="478" height="87" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Here’s a question you might ask. What if there are multiple files with the same name in my solution? For example, in my test MVC4 solution, there are multiple Index.cshtml files in the Views folder. So what happens if I just search for Index.cshtml? Based on my testing so far, it opens the first file with that name, with the path sorted alphabetically.&lt;/p&gt;  &lt;p&gt;&lt;a href="https://aspblogs.blob.core.windows.net/media/nmarun/Media/image_43BFF345.png"&gt;&lt;img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="https://aspblogs.blob.core.windows.net/media/nmarun/Media/image_thumb_22604DA9.png" width="224" height="208" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;If I type Index.cshtml Ctrl+O, it opens the Index.cshtml file in the Gamma folder as it is the first file with that name. If you want to open some other file, you can provide the parent folder name.&lt;/p&gt;  &lt;p&gt;&lt;a href="https://aspblogs.blob.core.windows.net/media/nmarun/Media/image_600D3565.png"&gt;&lt;img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="https://aspblogs.blob.core.windows.net/media/nmarun/Media/image_thumb_42B7DD9B.png" width="471" height="78" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;And just as usual, if you type in a file name that does not exist, it gives the default 'operation could not be completed’ message.&lt;/p&gt;  &lt;p&gt;&lt;a href="https://aspblogs.blob.core.windows.net/media/nmarun/Media/image_1C758443.png"&gt;&lt;img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="https://aspblogs.blob.core.windows.net/media/nmarun/Media/image_thumb_2D0D7F31.png" width="416" height="172" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Inserting breakpoints:&lt;/p&gt;  &lt;p&gt;To add a breakpoint, you place the cursor on a line and press the F9 function key. So type in the [ClassName].[MethodName] and press F9 key in the Find textbox and a breakpoint will be inserted at the method declaration.&lt;/p&gt;  &lt;p&gt;&lt;a href="https://aspblogs.blob.core.windows.net/media/nmarun/Media/image_71D9A365.png"&gt;&lt;img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="https://aspblogs.blob.core.windows.net/media/nmarun/Media/image_thumb_02056B5F.png" width="542" height="163" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Just a few points to note here:&lt;/p&gt;  &lt;p&gt;1. This is case-sensitive, so if you had typed in homeController.index and pressed the F9 key, the breakpoint will not be inserted.&lt;/p&gt;  &lt;p&gt;2. You can only insert breakpoints with this and cannot remove existing ones or the ones you just added.&lt;/p&gt;  &lt;p&gt;3. The breakpoint gets added to the method declaration and once debugging begins, the breakpoint is automatically moved to the actual method block.&lt;/p&gt;  &lt;p&gt;4. Best of all, you don’t have to have the file open to have the breakpoint inserted.&lt;/p&gt;  &lt;p&gt;Command Window:&lt;/p&gt;  &lt;p&gt;If you’re not sure what Command window is used for, have a look at the below articles that give a pretty good overview of it’s usage.&lt;/p&gt;  &lt;p&gt;&lt;a title="http://blogs.msdn.com/b/seealso/archive/2011/01/25/using-the-command-window-in-visual-studio-2010.aspx" href="http://blogs.msdn.com/b/seealso/archive/2011/01/25/using-the-command-window-in-visual-studio-2010.aspx"&gt;http://blogs.msdn.com/b/seealso/archive/2011/01/25/using-the-command-window-in-visual-studio-2010.aspx&lt;/a&gt;    &lt;br /&gt;&lt;a title="http://msdn.microsoft.com/en-us/library/vstudio/c785s0kz.aspx" href="http://msdn.microsoft.com/en-us/library/vstudio/c785s0kz.aspx"&gt;http://msdn.microsoft.com/en-us/library/vstudio/c785s0kz.aspx&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;So, I can just start typing in the Command window and I’ll get intellisense.&lt;/p&gt;  &lt;p&gt;&lt;a href="https://aspblogs.blob.core.windows.net/media/nmarun/Media/image_6CC73FE9.png"&gt;&lt;img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; margin: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="https://aspblogs.blob.core.windows.net/media/nmarun/Media/image_thumb_7954ED05.png" width="223" height="224" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;In order to convert the Find text box to a Command window, all you have to do is to just type the ‘&amp;gt;’ and then start typing as it is were the Command window itself.&lt;/p&gt;  &lt;p&gt;&lt;a href="https://aspblogs.blob.core.windows.net/media/nmarun/Media/image_68F9754C.png"&gt;&lt;img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="https://aspblogs.blob.core.windows.net/media/nmarun/Media/image_thumb_75872268.png" width="284" height="154" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Viola!&lt;/p&gt;  &lt;p&gt;Just as an example, you an use the shortcut ‘of’ for open file and you will see the magic happen.&lt;/p&gt;  &lt;p&gt;&lt;a href="https://aspblogs.blob.core.windows.net/media/nmarun/Media/image_33340A25.png"&gt;&lt;img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="https://aspblogs.blob.core.windows.net/media/nmarun/Media/image_thumb_63E711D0.png" width="329" height="145" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;As I started typing the file name, it gave me intellisense options of the possible file names. Just select the one you need and hit Enter and the file opens. Note that this is the Command window now, so you don’t have to do Ctrl+O to open the file.&lt;/p&gt;  &lt;p&gt;Go ahead, fiddle around with this great feature, you’ll never know what else you’ll find. &lt;/p&gt;  &lt;p&gt;THIS FEATURE IS AVAILABLE IN VISUAL STUDIO 2010 AS WELL.&lt;/p&gt;  &lt;p&gt;I also found something with message boxes and although this is completely unrelated to the Find feature, just wanted to share it in this blog itself.&lt;/p&gt;  &lt;p&gt;When you get a message box, like the one shown above for ‘operation could not be completed’, press Ctrl+C with the message box as the active window, open any text editor and press Ctrl+V, you’ll see the entire text of the message box.&lt;/p&gt;  &lt;p&gt;&lt;a href="https://aspblogs.blob.core.windows.net/media/nmarun/Media/image_01E51FC5.png"&gt;&lt;img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="https://aspblogs.blob.core.windows.net/media/nmarun/Media/image_thumb_27026A31.png" width="481" height="269" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;That’s it for now.&lt;/p&gt;</description><pubDate>Thu, 28 Mar 2013 03:42:23 GMT</pubDate><guid isPermaLink="true">https://weblogs.asp.net:443/nmarun/find-feature-in-standard-toolbar-visual-studio-2010-2012</guid><category>.net</category><category>Visual Studio</category><category>Visual Studio 2012</category></item><item><title>A Thank you from Microsoft</title><link>https://weblogs.asp.net:443/nmarun/a-thank-you-from-microsoft</link><description>&lt;p&gt;Sometime back, I received an email from MIcrosoft that said:&lt;/p&gt;  &lt;p&gt;Subject: Thank you for your help with Visual Studio 2012!‏&lt;/p&gt;  &lt;p&gt;“The release of Visual Studio 2012 &amp;amp; .NET Framework 4.5 is upon us! Your input during the development cycle has greatly contributed to this being a successful release for Microsoft® and we would like to send you a thank you gift to show our appreciation.&lt;/p&gt;  &lt;p&gt;…&lt;/p&gt;  &lt;p&gt;On behalf of the entire Microsoft Developer Division, thank you again for your involvement in making Visual Studio 2012 and the .NET Framework 4.5 great!”&lt;/p&gt;  &lt;p&gt;Over the weekend, I received a crystal award that looks really cool.&lt;/p&gt;  &lt;p&gt;&lt;a href="https://aspblogs.blob.core.windows.net/media/nmarun/Media/100_3909_1_3122A289.jpg"&gt;&lt;img title="100_3909_1" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="100_3909_1" src="https://aspblogs.blob.core.windows.net/media/nmarun/Media/100_3909_1_thumb_4EA457BB.jpg" width="515" height="388" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="https://aspblogs.blob.core.windows.net/media/nmarun/Media/100_3911_1_05320300.jpg"&gt;&lt;img title="100_3911_1" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="100_3911_1" src="https://aspblogs.blob.core.windows.net/media/nmarun/Media/100_3911_1_thumb_1C9C9164.jpg" width="519" height="390" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="https://aspblogs.blob.core.windows.net/media/nmarun/Media/Crystal-Award_1_3DCC8740.png"&gt;&lt;img title="Crystal Award_1" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="Crystal Award_1" src="https://aspblogs.blob.core.windows.net/media/nmarun/Media/Crystal-Award_1_thumb_34EC5927.png" width="428" height="403" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Here’s what the text says:&lt;/p&gt;  &lt;p&gt;“On behalf of the entire Visual Studio and .NET team, I would like to extend our heartfelt thanks for all the hard work you put into helping us ship Visual Studio 2012 and the .NET Framework 4.5. Given the shorter beta time lines for VS 2012 and .NET 4.5, we had to streamline the process for collecting and analyzing customer feedback. That required you to give us feedback on a faster cadence and you delivered on that.&lt;/p&gt;  &lt;p&gt;Your contributions were critical to our ability to deliver a better product. This release contains new features in virtually every area of the product, and improvements for all major Microsoft platforms including Windows 8, Windows Server, Windows Azure, Windows Phone and Office 365. The amount of passion you poured into giving us feedback across all the feature sets has helped us learn more about real world use and deliver something truly exciting and impactful for our customers.&lt;/p&gt;  &lt;p&gt;We realize that you have invested significant time to help us and we deeply appreciate your commitment to help us build a better product. As a token of appreciation, please accept this thank you gift. And again, thank you so much for helping us build a better Microsoft Visual Studio 2012 and .NET Framework 4.5.&lt;/p&gt;  &lt;p&gt;All the best,&lt;/p&gt;  &lt;p&gt;&amp;lt;signed S, Somasegar&amp;gt;&lt;/p&gt;  &lt;p&gt;S. Somasegar   &lt;br /&gt;Corporate Vice President,    &lt;br /&gt;Microsoft Developer Division”&lt;/p&gt;  &lt;p&gt;Thank you Microsoft for the recognition.&lt;/p&gt;</description><pubDate>Mon, 21 Jan 2013 03:41:37 GMT</pubDate><guid isPermaLink="true">https://weblogs.asp.net:443/nmarun/a-thank-you-from-microsoft</guid><category>.net</category></item><item><title>2012–year in review</title><link>https://weblogs.asp.net:443/nmarun/2012-year-in-review</link><description>&lt;p&gt;Below are some of the highlights of 2012 for me.&lt;/p&gt;  &lt;p&gt;&amp;gt; Published &lt;a href="http://weblogs.asp.net/nmarun/archive/2012/11/16/my-apps-in-the-windows-8-store.aspx"&gt;4 apps&lt;/a&gt; to the Windows 8 Store &lt;/p&gt;  &lt;p&gt;&amp;gt; Been part of a &lt;a href="http://weblogs.asp.net/nmarun/archive/2012/09/24/i-m-a-guinness-world-record-holder-now.aspx"&gt;Guinness World Record&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&amp;gt; Became a &lt;a href="http://weblogs.asp.net/nmarun/archive/2012/10/18/i-am-a-microsoft-rockstar.aspx"&gt;Microsoft Rockstar&lt;/a&gt;. Eventually I started showing up on the &lt;a href="http://twitpic.com/bgjpp5"&gt;Microsoft India Rockstar&lt;/a&gt; site &lt;/p&gt;  &lt;p&gt;&amp;gt; My game &lt;a href="http://apps.microsoft.com/webpdp/app/knights-tour/3f8dbb0a-0874-4c3f-aa9c-dc0e59960972"&gt;Knight’s Tour&lt;/a&gt; bagged the &lt;a href="http://apptivate.ms/semi-finals/2/games"&gt;third prize&lt;/a&gt; in the apptivate.ms contest &lt;/p&gt;  &lt;p&gt;&amp;gt; Read &lt;a href="http://www.goodreads.com/review/list/5353883-arun-mahendrakar?read_at=2012"&gt;18 books&lt;/a&gt; (although not related to technology, just wanted to toot my horn) &lt;/p&gt;  &lt;p&gt;&amp;gt; Year’s top blog articles:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;a href="http://weblogs.asp.net/nmarun/archive/2012/04/26/obtaining-screen-resolution-scale-details-in-windows-8-metro-style-app.aspx"&gt;Obtaining screen resolution scale details in Windows 8 Metro Style App&lt;/a&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;a href="http://weblogs.asp.net/nmarun/archive/2012/04/17/accessing-files-on-local-machine-in-windows-8-metro-style-apps-using-javascript-and-html5.aspx"&gt;Accessing files on local machine in Windows 8 Metro Style Apps using JavaScript and HTML5&lt;/a&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;a href="http://weblogs.asp.net/nmarun/archive/2012/03/28/saving-user-details-on-onsuspending-event-for-metro-style-apps.aspx"&gt;Saving user details on OnSuspending event for Metro Style Apps&lt;/a&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;a href="http://weblogs.asp.net/nmarun/archive/2012/05/06/running-windows-app-certification-kit-wack-tool-from-command-prompt.aspx"&gt;Running Windows App Certification Kit (WACK) tool from Command Prompt&lt;/a&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;a href="http://weblogs.asp.net/nmarun/archive/2012/09/15/grouping-gridview-on-windows-8.aspx"&gt;Grouping GridView on Windows 8&lt;/a&gt;&lt;/p&gt;&lt;/blockquote&gt;</description><pubDate>Thu, 03 Jan 2013 14:58:51 GMT</pubDate><guid isPermaLink="true">https://weblogs.asp.net:443/nmarun/2012-year-in-review</guid><category>.net</category></item><item><title>Analytics for Windows 8 apps using Markedup</title><link>https://weblogs.asp.net:443/nmarun/analytics-for-windows-8-apps-using-markedup</link><description>&lt;p&gt;The Windows 8 store does provide some analytics information to you in terms of downloads by market or by age group, ratings, in-app purchases.&lt;/p&gt;  &lt;p&gt;&lt;a href="https://aspblogs.blob.core.windows.net/media/nmarun/Media/image_7EC52E78.png"&gt;&lt;img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="https://aspblogs.blob.core.windows.net/media/nmarun/Media/image_thumb_1387012C.png" width="361" height="175" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;I find that a little too limiting. What if I want to know what page my users are spending most of their time or what events are being raised more frequently or are my users calling my app through the search contract I implemented or how many times was the share contract called. To answer questions like this, you need a more mature analytics framework. &lt;a href="http://markedup.com"&gt;Markedup&lt;/a&gt; is one such solution.&lt;/p&gt;  &lt;p&gt;Once you register an account (free at the time of writing this blog), click on Track a new app link.&lt;/p&gt;  &lt;p&gt;&lt;a href="https://aspblogs.blob.core.windows.net/media/nmarun/Media/image_0AB6F8E0.png"&gt;&lt;img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; margin: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="https://aspblogs.blob.core.windows.net/media/nmarun/Media/image_thumb_505B82FE.png" width="244" height="181" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Enter the details in the fields&lt;/p&gt;  &lt;p&gt;&lt;a href="https://aspblogs.blob.core.windows.net/media/nmarun/Media/image_478B7AB2.png"&gt;&lt;img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="https://aspblogs.blob.core.windows.net/media/nmarun/Media/image_thumb_6C3C9229.png" width="355" height="282" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Notice that MarkedUp is available for all types of Win8 development platform – C#/ XAML, JavaScript and C++. This article will concentrate on how to implement MarkedUp for a C# / XAML app. Please refer to the &lt;a href="https://www.markedup.com/docs/getting-started"&gt;documentation&lt;/a&gt; on the site to implement the same if you are using other languages to develop your app.&lt;/p&gt;  &lt;p&gt;Once you click on the Create app button, MarkedUp gives you a unique API Key. This is the key that&amp;#160; you will need to register in your app and all the events that you track will be associated to this API Key. Installing the MarkedUp package through NuGet seems to be the easiest way out.&lt;/p&gt;  &lt;p&gt;One of the requirements to use MarkedUp is that you enable the Internet capability in your app, to enable the transfer of analytics information to MarkedUp servers. Add a Privacy policy to your app once you have enabled Internet capability. See point 5 in this &lt;a href="http://weblogs.asp.net/nmarun/archive/2012/10/07/8-tips-for-your-windows-store-apps.aspx"&gt;article&lt;/a&gt; for details.&lt;/p&gt;  &lt;p&gt;You now need to call the Initialize method of the SDK and pass the API key that was created before. You can get the API key by clicking on the Install MarkedUp link in the site as well. You do this in the, say the OnLaunched event, in your XAML app. Now you are all set to utilize the SDK to the fullest.&lt;/p&gt;  &lt;p&gt;&lt;a href="https://aspblogs.blob.core.windows.net/media/nmarun/Media/image_70D29CE3.png"&gt;&lt;img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="https://aspblogs.blob.core.windows.net/media/nmarun/Media/image_thumb_7D6049FF.png" width="406" height="83" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Let’s go directly to implementing the logging of session events. There are five types of session events that you can utilize based on your scenario.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Navigation Events&lt;/strong&gt; – track a user’s movement through your app. Use the EnterPage and ExitPage events of the SDK in the OnNavigatedTo and OnNavigatedFrom methods. &lt;/p&gt;  &lt;p&gt;&lt;a href="https://aspblogs.blob.core.windows.net/media/nmarun/Media/image_4D55F87E.png"&gt;&lt;img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="https://aspblogs.blob.core.windows.net/media/nmarun/Media/image_thumb_59E3A59A.png" width="359" height="130" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;For XAML apps, you can track navigation events by calling the RegisterNavigationFrame method.&lt;/p&gt;  &lt;p&gt;&lt;a href="https://aspblogs.blob.core.windows.net/media/nmarun/Media/image_69A33A9E.png"&gt;&lt;img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="https://aspblogs.blob.core.windows.net/media/nmarun/Media/image_thumb_0F2CB800.png" width="402" height="90" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Commerce Events&lt;/strong&gt; – tracks commerce activity which includes trial conversion and in-app purchases. Use the InAppPurchaseShown method of the SDK.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Form Events – &lt;/strong&gt;tracks the forms that a user has filled while using your app. The InputFormSubmitted method would be the main one to be used, however if you want more granular detail, you can also implement the InputFieldSelected, InputFieldTextEntered and InputFieldUnselected methods as well.&lt;/p&gt;  &lt;p&gt;&lt;a href="https://aspblogs.blob.core.windows.net/media/nmarun/Media/image_6641A2F6.png"&gt;&lt;img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="https://aspblogs.blob.core.windows.net/media/nmarun/Media/image_thumb_2BE62D15.png" width="365" height="82" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Contract Events&lt;/strong&gt; – tracks the contracts in your like Search and Share contract.&lt;/p&gt;  &lt;p&gt;&lt;a href="https://aspblogs.blob.core.windows.net/media/nmarun/Media/image_7528D210.png"&gt;&lt;img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="https://aspblogs.blob.core.windows.net/media/nmarun/Media/image_thumb_3ACD5C2F.png" width="375" height="104" /&gt;&lt;/a&gt;&lt;/p&gt;    &lt;p&gt;&lt;strong&gt;Life Cycle Events&lt;/strong&gt; – tracks app life cycle events like suspend and resume. AppStart, AppResume, AppSuspend and AppExit methods are available.&lt;/p&gt;  &lt;p&gt;&lt;a href="https://aspblogs.blob.core.windows.net/media/nmarun/Media/image_78E676E0.png"&gt;&lt;img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="https://aspblogs.blob.core.windows.net/media/nmarun/Media/image_thumb_1E6FF442.png" width="407" height="142" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Custom Events&lt;/strong&gt; – tracks any custom action that you want. This is one of my favorite features available in the SDK.&lt;/p&gt;  &lt;p&gt;&lt;a href="https://aspblogs.blob.core.windows.net/media/nmarun/Media/image_7C37E8BB.png"&gt;&lt;img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="https://aspblogs.blob.core.windows.net/media/nmarun/Media/image_thumb_08C595D8.png" width="396" height="63" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;I use custom events to track how my users are faring in the &lt;a href="http://apps.microsoft.com/webpdp/app/knights-tour/3f8dbb0a-0874-4c3f-aa9c-dc0e59960972"&gt;Knight’s Tour&lt;/a&gt; game.&lt;/p&gt;  &lt;p&gt;&lt;a href="https://aspblogs.blob.core.windows.net/media/nmarun/Media/image_5FDA80CE.png"&gt;&lt;img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="https://aspblogs.blob.core.windows.net/media/nmarun/Media/image_thumb_570A7882.png" width="371" height="230" /&gt;&lt;/a&gt;&lt;/p&gt;    &lt;p&gt;Apart from these, the SDK also gives you diagnostic logging where you can log Debug, Errors and Fatal scenarios that your app encounters.&lt;/p&gt;  &lt;p&gt;&lt;a href="https://aspblogs.blob.core.windows.net/media/nmarun/Media/image_1BD69CB7.png"&gt;&lt;img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="https://aspblogs.blob.core.windows.net/media/nmarun/Media/image_thumb_7A0AC425.png" width="411" height="185" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;MarkedUp also provides daily app stats like session and active users.&lt;/p&gt;  &lt;p&gt;&lt;a href="https://aspblogs.blob.core.windows.net/media/nmarun/Media/image_256EE520.png"&gt;&lt;img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="https://aspblogs.blob.core.windows.net/media/nmarun/Media/image_thumb_631BCCDC.png" width="427" height="205" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;You can see daily app installs.&lt;/p&gt;  &lt;p&gt;&lt;a href="https://aspblogs.blob.core.windows.net/media/nmarun/Media/image_40E3C156.png"&gt;&lt;img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="https://aspblogs.blob.core.windows.net/media/nmarun/Media/image_thumb_030729DA.png" width="430" height="190" /&gt;&lt;/a&gt;&lt;/p&gt;    &lt;p&gt;Another really cool feature provided is the app version usage. You can see what percentage of your user-base has upgraded.&lt;/p&gt;  &lt;p&gt;&lt;a href="https://aspblogs.blob.core.windows.net/media/nmarun/Media/image_6F0D9743.png"&gt;&lt;img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="https://aspblogs.blob.core.windows.net/media/nmarun/Media/image_thumb_252F0F93.png" width="433" height="195" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Time spent in the app is also shown.&lt;/p&gt;  &lt;p&gt;&lt;a href="https://aspblogs.blob.core.windows.net/media/nmarun/Media/image_10C94A08.png"&gt;&lt;img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="https://aspblogs.blob.core.windows.net/media/nmarun/Media/image_thumb_4E7631C4.png" width="432" height="198" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;These are some of the main features that I wanted to bring to attention. There are others that are useful as well.&lt;/p&gt;  &lt;p&gt;MarkedUp is in beta (at the time of writing), but they also have a &lt;a href="https://www.markedup.com/pricing"&gt;pricing model&lt;/a&gt; once they come out of beta. You can choose which one fits for you.&lt;/p&gt;  &lt;p&gt;I have implemented these analytics on three of my Windows 8 apps and here are some pointers based on my experience.&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Start analytics right from the first version: You can track your app from the very beginning.&lt;/li&gt;    &lt;li&gt;Implement the events even if the website is not currently supporting them: In their own words – “&lt;em&gt;our reporting dashboard is currently playing catch up with our SDK&lt;/em&gt;”, so log those events, they’ll show up on the site soon.&lt;/li&gt;    &lt;li&gt;Events that are captured during app development are counted as well: MarkedUp said “&lt;em&gt;Yes - MarkedUp will count those calls and measure them; they're usually a drop in the bucket compared to what your live users in the marketplace will accrue though&lt;/em&gt;”. So my suggestion is that you develop you app to almost completion and then add these events just before creating a package for the Win 8 store. The other way would be to comment out the Initialize method call and continue your development.&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Are you MarkedUp yet?&lt;/p&gt;</description><pubDate>Sat, 15 Dec 2012 07:51:11 GMT</pubDate><guid isPermaLink="true">https://weblogs.asp.net:443/nmarun/analytics-for-windows-8-apps-using-markedup</guid><category>.net</category><category>C#</category><category>HTML5</category><category>Markedup</category><category>Metro Style Apps</category><category>Visual Studio 2012</category><category>Windows 8</category><category>XAML</category></item><item><title>Implementing Ads on any page in your Windows 8 XAML app–part 2</title><link>https://weblogs.asp.net:443/nmarun/implementing-ads-on-any-page-in-your-windows-8-xaml-app-part-2</link><description>&lt;p&gt;In my &lt;a href="http://weblogs.asp.net/nmarun/archive/2012/11/24/implementing-ads-on-any-page-in-your-windows-8-xaml-app-part-1.aspx"&gt;previous article&lt;/a&gt;, you saw how you can start implementing ads on some of the page templates. In this one, we’ll see how we can add something called ‘interstitial ads’ – ads that appear as part of the content in your app.&lt;/p&gt; &lt;p&gt;I have added a Grouped Items page to my project. My data model is set to show a few appliances. I have a BaseModel class and the ApplianceModel that inherits the BaseModel class has two properties to represent an appliance. The ProductHolder acts as a container for a list of base models.&lt;/p&gt; &lt;div class="csharpcode"&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   1:  &lt;/span&gt;&lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;class&lt;/span&gt; BaseModel&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   2:  &lt;/span&gt;{ }&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   3:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   4:  &lt;/span&gt;&lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;class&lt;/span&gt; ApplianceModel : BaseModel&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   5:  &lt;/span&gt;{&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   6:  &lt;/span&gt;    &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;string&lt;/span&gt; Title { get; set; }&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   7:  &lt;/span&gt;    &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;string&lt;/span&gt; ImagePath { get; set; }  &lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   8:  &lt;/span&gt;}&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   9:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  10:  &lt;/span&gt;&lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;class&lt;/span&gt; ProductHolder&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  11:  &lt;/span&gt;{&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  12:  &lt;/span&gt;    &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;string&lt;/span&gt; Category { get; set; }&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  13:  &lt;/span&gt;    &lt;span class="kwrd"&gt;public&lt;/span&gt; List&amp;lt;BaseModel&amp;gt; Models { get; set; }&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  14:  &lt;/span&gt;}&lt;/pre&gt;&lt;/div&gt;
&lt;style type="text/css"&gt;.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }
&lt;/style&gt;

&lt;p&gt;For the purpose of demonstration, I’m populating a static list of items to be shown on the page.&lt;/p&gt;
&lt;div class="csharpcode"&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   1:  &lt;/span&gt;&lt;span class="kwrd"&gt;protected&lt;/span&gt; &lt;span class="kwrd"&gt;override&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; LoadState(Object navigationParameter, Dictionary&amp;lt;String, Object&amp;gt; pageState)&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   2:  &lt;/span&gt;{&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   3:  &lt;/span&gt;    List&amp;lt;ProductHolder&amp;gt; products = GetProducts();&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   4:  &lt;/span&gt;    &lt;span class="kwrd"&gt;this&lt;/span&gt;.DefaultViewModel[&lt;span class="str"&gt;"Groups"&lt;/span&gt;] = products;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   5:  &lt;/span&gt;}&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   6:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   7:  &lt;/span&gt;&lt;span class="kwrd"&gt;private&lt;/span&gt; List&amp;lt;ProductHolder&amp;gt; GetProducts()&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   8:  &lt;/span&gt;{&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   9:  &lt;/span&gt;    ProductHolder productHolder = &lt;span class="kwrd"&gt;new&lt;/span&gt; ProductHolder();&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  10:  &lt;/span&gt;    productHolder.Category = &lt;span class="str"&gt;"Appliances"&lt;/span&gt;;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  11:  &lt;/span&gt;    productHolder.Models = &lt;span class="kwrd"&gt;new&lt;/span&gt; List&amp;lt;BaseModel&amp;gt;();&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  12:  &lt;/span&gt;    productHolder.Models.Add(&lt;span class="kwrd"&gt;new&lt;/span&gt; ApplianceModel&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  13:  &lt;/span&gt;    {&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  14:  &lt;/span&gt;        Title = &lt;span class="str"&gt;"Refrigerator"&lt;/span&gt;, ImagePath = &lt;span class="str"&gt;"Assets/Refrigerator.jpg"&lt;/span&gt;,&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  15:  &lt;/span&gt;    });&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  16:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  17:  &lt;/span&gt;    productHolder.Models.Add(&lt;span class="kwrd"&gt;new&lt;/span&gt; ApplianceModel&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  18:  &lt;/span&gt;    {&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  19:  &lt;/span&gt;        Title = &lt;span class="str"&gt;"Heaters"&lt;/span&gt;, ImagePath = &lt;span class="str"&gt;"Assets/Heaters.jpg"&lt;/span&gt;,&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  20:  &lt;/span&gt;    });&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  21:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  22:  &lt;/span&gt;   &lt;span class="rem"&gt;// a few more appliances likewise...&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  23:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  24:  &lt;/span&gt;    List&amp;lt;ProductHolder&amp;gt; products = &lt;span class="kwrd"&gt;new&lt;/span&gt; List&amp;lt;ProductHolder&amp;gt;();&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  25:  &lt;/span&gt;    products.Add(productHolder);&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  26:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  27:  &lt;/span&gt;    &lt;span class="kwrd"&gt;return&lt;/span&gt; products;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  28:  &lt;/span&gt;}&lt;/pre&gt;&lt;/div&gt;
&lt;style type="text/css"&gt;.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }
&lt;/style&gt;

&lt;p&gt;I have created a custom (simpler) template – NormalTemplate to display the details of the model in question.&lt;/p&gt;
&lt;div class="csharpcode"&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   1:  &lt;/span&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;GridView&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   2:  &lt;/span&gt;    &lt;span class="attr"&gt;x:Name&lt;/span&gt;&lt;span class="kwrd"&gt;="itemGridView"&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   3:  &lt;/span&gt;    &lt;span class="attr"&gt;AutomationProperties&lt;/span&gt;.&lt;span class="attr"&gt;AutomationId&lt;/span&gt;&lt;span class="kwrd"&gt;="ItemGridView"&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   4:  &lt;/span&gt;    &lt;span class="attr"&gt;AutomationProperties&lt;/span&gt;.&lt;span class="attr"&gt;Name&lt;/span&gt;&lt;span class="kwrd"&gt;="Grouped Items"&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   5:  &lt;/span&gt;    &lt;span class="attr"&gt;Grid&lt;/span&gt;.&lt;span class="attr"&gt;RowSpan&lt;/span&gt;&lt;span class="kwrd"&gt;="2"&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   6:  &lt;/span&gt;    &lt;span class="attr"&gt;Padding&lt;/span&gt;&lt;span class="kwrd"&gt;="116,137,40,46"&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   7:  &lt;/span&gt;    &lt;span class="attr"&gt;ItemsSource&lt;/span&gt;&lt;span class="kwrd"&gt;="{Binding Source={StaticResource groupedItemsViewSource}}"&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   8:  &lt;/span&gt;    &lt;span class="attr"&gt;ItemTemplate&lt;/span&gt;&lt;span class="kwrd"&gt;="{StaticResource NormalTemplate}"&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   9:  &lt;/span&gt;    &lt;span class="attr"&gt;SelectionMode&lt;/span&gt;&lt;span class="kwrd"&gt;="None"&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  10:  &lt;/span&gt;    &lt;span class="attr"&gt;IsSwipeEnabled&lt;/span&gt;&lt;span class="kwrd"&gt;="false"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  11:  &lt;/span&gt;&lt;span class="rem"&gt;&amp;lt;!-- rest of the code is removed for brevity--&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;style type="text/css"&gt;.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }
&lt;/style&gt;

&lt;p&gt;When the app is run, I see the below rendering for my screen resolution. If you want more details on how to get to this stage, see &lt;a href="http://weblogs.asp.net/nmarun/archive/2012/09/15/grouping-gridview-on-windows-8.aspx"&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://aspblogs.blob.core.windows.net/media/nmarun/Media/image_345E76E1.png"&gt;&lt;img title="image" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="image" src="https://aspblogs.blob.core.windows.net/media/nmarun/Media/image_thumb_48279810.png" width="336" height="277"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Let’s go ahead and introduce ads now. I create a class called AdModel inheriting our good ol’ BaseModel. There is no need for any properties, so I’ll leave this class empty.&lt;/p&gt;
&lt;div class="csharpcode"&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   1:  &lt;/span&gt;&lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;class&lt;/span&gt; AdModel : BaseModel&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   2:  &lt;/span&gt;{ }&lt;/pre&gt;&lt;/div&gt;
&lt;style type="text/css"&gt;.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }
&lt;/style&gt;

&lt;p&gt;In the GetProducts method, I’m going to add a couple these AdModel instances in the collection.&lt;/p&gt;
&lt;div class="csharpcode"&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   1:  &lt;/span&gt;productHolder.Models.Add(&lt;span class="kwrd"&gt;new&lt;/span&gt; ApplianceModel&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   2:  &lt;/span&gt;{&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   3:  &lt;/span&gt;    Title = &lt;span class="str"&gt;"Refrigerator"&lt;/span&gt;, ImagePath = &lt;span class="str"&gt;"Assets/Refrigerator.jpg"&lt;/span&gt;,&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   4:  &lt;/span&gt;});&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   5:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   6:  &lt;/span&gt;productHolder.Models.Add(&lt;span class="kwrd"&gt;new&lt;/span&gt; AdModel());&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   7:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   8:  &lt;/span&gt;productHolder.Models.Add(&lt;span class="kwrd"&gt;new&lt;/span&gt; ApplianceModel&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   9:  &lt;/span&gt;{&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  10:  &lt;/span&gt;    Title = &lt;span class="str"&gt;"Heaters"&lt;/span&gt;, ImagePath = &lt;span class="str"&gt;"Assets/Heaters.jpg"&lt;/span&gt;,&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  11:  &lt;/span&gt;});&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  12:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  13:  &lt;/span&gt;productHolder.Models.Add(&lt;span class="kwrd"&gt;new&lt;/span&gt; ApplianceModel&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  14:  &lt;/span&gt;{&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  15:  &lt;/span&gt;    Title = &lt;span class="str"&gt;"Dishwasher"&lt;/span&gt;, ImagePath = &lt;span class="str"&gt;"Assets/Dishwasher.jpg"&lt;/span&gt;,&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  16:  &lt;/span&gt;});&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  17:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  18:  &lt;/span&gt;productHolder.Models.Add(&lt;span class="kwrd"&gt;new&lt;/span&gt; AdModel());&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  19:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  20:  &lt;/span&gt;productHolder.Models.Add(&lt;span class="kwrd"&gt;new&lt;/span&gt; ApplianceModel&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  21:  &lt;/span&gt;{&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  22:  &lt;/span&gt;    Title = &lt;span class="str"&gt;"Vacuum"&lt;/span&gt;, ImagePath = &lt;span class="str"&gt;"Assets/vacuum.jpg"&lt;/span&gt;,&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  23:  &lt;/span&gt;});&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  24:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  25:  &lt;/span&gt;productHolder.Models.Add(&lt;span class="kwrd"&gt;new&lt;/span&gt; ApplianceModel&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  26:  &lt;/span&gt;{&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  27:  &lt;/span&gt;    Title = &lt;span class="str"&gt;"Washer"&lt;/span&gt;, ImagePath = &lt;span class="str"&gt;"Assets/Washer.jpg"&lt;/span&gt;,&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  28:  &lt;/span&gt;});&lt;/pre&gt;&lt;/div&gt;
&lt;style type="text/css"&gt;.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }
&lt;/style&gt;


&lt;p&gt;You can see lines 6 and 18 where I’m adding a couple of the AdModel instances. I’ll also create the template that should be used to render ads. Make sure you add a reference of Microsoft Ad library to the ResourceDictionary something like xmlns:UI="using:Microsoft.Advertising.WinRT.UI".&lt;/p&gt;
&lt;div class="csharpcode"&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   1:  &lt;/span&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;DataTemplate&lt;/span&gt; &lt;span class="attr"&gt;x:Key&lt;/span&gt;&lt;span class="kwrd"&gt;="AdTemplate"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   2:  &lt;/span&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Grid&lt;/span&gt; &lt;span class="attr"&gt;Width&lt;/span&gt;&lt;span class="kwrd"&gt;="250"&lt;/span&gt; &lt;span class="attr"&gt;Height&lt;/span&gt;&lt;span class="kwrd"&gt;="250"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   3:  &lt;/span&gt;        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;UI:AdControl&lt;/span&gt; &lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   4:  &lt;/span&gt;            &lt;span class="attr"&gt;ApplicationId&lt;/span&gt;&lt;span class="kwrd"&gt;="d25517cb-12d4-4699-8bdc-52040c712cab"&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   5:  &lt;/span&gt;            &lt;span class="attr"&gt;AdUnitId&lt;/span&gt;&lt;span class="kwrd"&gt;="10043107"&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   6:  &lt;/span&gt;            &lt;span class="attr"&gt;Width&lt;/span&gt;&lt;span class="kwrd"&gt;="250"&lt;/span&gt; &lt;span class="attr"&gt;Height&lt;/span&gt;&lt;span class="kwrd"&gt;="250"&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   7:  &lt;/span&gt;    &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;Grid&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   8:  &lt;/span&gt;&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;DataTemplate&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;style type="text/css"&gt;.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }
&lt;/style&gt;

&lt;p&gt;We now need some kind of a template selector that decides, at runtime, what data template should be used to render a particular type of data. The DataTemplateSelector is used specifically for this purpose. I will add a class named CustomTemplateSelector.&lt;/p&gt;
&lt;div class="csharpcode"&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   1:  &lt;/span&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; Windows.UI.Xaml;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   2:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   3:  &lt;/span&gt;&lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;class&lt;/span&gt; CustomTemplateSelector : DataTemplateSelector&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   4:  &lt;/span&gt;{&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   5:  &lt;/span&gt;    &lt;span class="kwrd"&gt;public&lt;/span&gt; DataTemplate NormalTemplate { get; set; }&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   6:  &lt;/span&gt;    &lt;span class="kwrd"&gt;public&lt;/span&gt; DataTemplate AdvertTemplate { get; set; }&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   7:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   8:  &lt;/span&gt;    &lt;span class="kwrd"&gt;protected&lt;/span&gt; &lt;span class="kwrd"&gt;override&lt;/span&gt; DataTemplate SelectTemplateCore(&lt;span class="kwrd"&gt;object&lt;/span&gt; item, DependencyObject container)&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   9:  &lt;/span&gt;    {&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  10:  &lt;/span&gt;        &lt;span class="kwrd"&gt;if&lt;/span&gt; (item &lt;span class="kwrd"&gt;is&lt;/span&gt; AdModel)&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  11:  &lt;/span&gt;        {&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  12:  &lt;/span&gt;            &lt;span class="kwrd"&gt;return&lt;/span&gt; AdvertTemplate;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  13:  &lt;/span&gt;        }&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  14:  &lt;/span&gt;        &lt;span class="kwrd"&gt;return&lt;/span&gt; NormalTemplate;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  15:  &lt;/span&gt;    }&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  16:  &lt;/span&gt;}&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;There are two properties that represent the two data templates that we have created. The SelectTemplateCore method takes in the item that needs to be rendered and all I’m doing here is to say, if the item is of type AdModel, render using the value in the AdvertTemplate property.&lt;/p&gt;
&lt;p&gt;Now for the last step, where you set the CustomTemplateSelector as the item template selector in the GridView.&lt;/p&gt;
&lt;div class="csharpcode"&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   1:  &lt;/span&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;GridView&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   2:  &lt;/span&gt;    &lt;span class="attr"&gt;x:Name&lt;/span&gt;&lt;span class="kwrd"&gt;="itemGridView"&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   3:  &lt;/span&gt;    &lt;span class="attr"&gt;AutomationProperties&lt;/span&gt;.&lt;span class="attr"&gt;AutomationId&lt;/span&gt;&lt;span class="kwrd"&gt;="ItemGridView"&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   4:  &lt;/span&gt;    &lt;span class="attr"&gt;AutomationProperties&lt;/span&gt;.&lt;span class="attr"&gt;Name&lt;/span&gt;&lt;span class="kwrd"&gt;="Grouped Items"&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   5:  &lt;/span&gt;    &lt;span class="attr"&gt;Grid&lt;/span&gt;.&lt;span class="attr"&gt;RowSpan&lt;/span&gt;&lt;span class="kwrd"&gt;="2"&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   6:  &lt;/span&gt;    &lt;span class="attr"&gt;Padding&lt;/span&gt;&lt;span class="kwrd"&gt;="116,137,40,46"&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   7:  &lt;/span&gt;    &lt;span class="attr"&gt;ItemsSource&lt;/span&gt;&lt;span class="kwrd"&gt;="{Binding Source={StaticResource groupedItemsViewSource}}"&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   8:  &lt;/span&gt;    &lt;span class="attr"&gt;SelectionMode&lt;/span&gt;&lt;span class="kwrd"&gt;="None"&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   9:  &lt;/span&gt;    &lt;span class="attr"&gt;IsSwipeEnabled&lt;/span&gt;&lt;span class="kwrd"&gt;="false"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  10:  &lt;/span&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;GridView.ItemTemplateSelector&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  11:  &lt;/span&gt;        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;local:CustomTemplateSelector&lt;/span&gt; &lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  12:  &lt;/span&gt;            &lt;span class="attr"&gt;AdvertTemplate&lt;/span&gt;&lt;span class="kwrd"&gt;="{StaticResource AdTemplate}"&lt;/span&gt; &lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  13:  &lt;/span&gt;            &lt;span class="attr"&gt;NormalTemplate&lt;/span&gt;&lt;span class="kwrd"&gt;="{StaticResource NormalTemplate}"&lt;/span&gt;&lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  14:  &lt;/span&gt;    &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;GridView.ItemTemplateSelector&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;style type="text/css"&gt;.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }
&lt;/style&gt;


&lt;p&gt;Here are the changes from the previous version. The ItemTemplate property is removed and&amp;nbsp; GridView.ItemTemplateSelector is added. I am referencing the CustomTemplateSelector and populating the AdvertTemplate and the NormalTemplate with the data template keys. So the AdvertTemplate property is set to AdTemplate and the NormalTemplate property is set to the NormalTemplate data template.&lt;/p&gt;
&lt;p&gt;The app gets rendered as below now.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://aspblogs.blob.core.windows.net/media/nmarun/Media/image_7E38EA92.png"&gt;&lt;img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="https://aspblogs.blob.core.windows.net/media/nmarun/Media/image_thumb_610B1A8A.png" width="564" height="387"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;So there you go, the 2nd and the 5th position are showing ads on the page. You can use the same technique to add interstitial ads in other pages like Split page, Items page and Group details page.&lt;/p&gt;</description><pubDate>Sun, 25 Nov 2012 08:41:43 GMT</pubDate><guid isPermaLink="true">https://weblogs.asp.net:443/nmarun/implementing-ads-on-any-page-in-your-windows-8-xaml-app-part-2</guid><category>.net</category><category>Metro Style Apps</category><category>Visual Studio 2012</category><category>Windows 8</category><category>XAML</category></item><item><title>Implementing Ads on any page in your Windows 8 XAML app–part 1</title><link>https://weblogs.asp.net:443/nmarun/implementing-ads-on-any-page-in-your-windows-8-xaml-app-part-1</link><description>&lt;p&gt;Let’s look at how you can implements ads on any page in your win 8 app. Before you get to your application, you need to create Ad Units in the &lt;a href="pubcenter.microsoft.com"&gt;MS Pubcenter&lt;/a&gt; site. Once you have set up your account with payout and tax details, go to the Setup tab and you’ll see something like below.&lt;/p&gt;  &lt;p&gt;&lt;a href="https://aspblogs.blob.core.windows.net/media/nmarun/Media/image_21A81973.png"&gt;&lt;img title="image" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="image" src="https://aspblogs.blob.core.windows.net/media/nmarun/Media/image_thumb_70C56207.png" width="316" height="347" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;There are a few options for the sizes of the ad units as shown on the &lt;a href="pubcenter.microsoft.com"&gt;Pubcenter&lt;/a&gt; site.&lt;/p&gt;  &lt;p&gt;&lt;img src="https://pubcenter.microsoft.com/images/win8tablet_500x130.png" width="313" height="199" /&gt;&lt;img src="https://pubcenter.microsoft.com/images/win8tablet_300x250.png" width="313" height="199" /&gt;&lt;img src="https://pubcenter.microsoft.com/images/win8tablet_292x60.png" width="311" height="198" /&gt;&lt;img src="https://pubcenter.microsoft.com/images/win8tablet_250x250.png" width="311" height="198" /&gt;&lt;img src="https://pubcenter.microsoft.com/images/win8tablet_250x125.png" width="313" height="199" /&gt;&lt;img src="https://pubcenter.microsoft.com/images/win8tablet_160x600.png" width="313" height="199" /&gt;&lt;/p&gt;  &lt;p&gt;Remember that these screenshots are just to give you some reference. The actual positioning of the ads in your apps is decided by you.&lt;/p&gt;  &lt;p&gt;Plan ahead and decide what size you want to ‘donate’ for ads in your app. Use the test values in &lt;a href="http://msdn.microsoft.com/en-us/library/hh506361(v=msads.10).aspx"&gt;this article&lt;/a&gt; before you create the ad units for your app. There is a lag of few minutes before you can start using them in your apps after creating the ad units.&lt;/p&gt;  &lt;p&gt;When it comes to a blank/basic page template, which are usually used for game applications, you are at freedom to place the ads anywhere in your app. For example, ads appear at bottom left in the &lt;a href="http://apps.microsoft.com/webpdp/en-US/app/knights-tour/3f8dbb0a-0874-4c3f-aa9c-dc0e59960972"&gt;Knight’s Tour&lt;/a&gt; app. Make sure you get the &lt;a href="http://advertising.microsoft.com/ads-in-apps"&gt;Windows 8 Ads SDK&lt;/a&gt; and add a reference to your project.&lt;/p&gt;  &lt;p&gt;&lt;a href="https://aspblogs.blob.core.windows.net/media/nmarun/Media/image_2C554AFB.png"&gt;&lt;img title="image" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="image" src="https://aspblogs.blob.core.windows.net/media/nmarun/Media/image_thumb_677900F9.png" width="352" height="263" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;div class="csharpcode"&gt;   &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   1:  &lt;/span&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;UI:AdControl&lt;/span&gt; &lt;span class="attr"&gt;x:Name&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;AdHolder&amp;quot;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   2:  &lt;/span&gt;              &lt;span class="attr"&gt;ApplicationId&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;d25517cb-12d4-4699-8bdc-52040c712cab&amp;quot;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   3:  &lt;/span&gt;              &lt;span class="attr"&gt;AdUnitId&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;10043107&amp;quot;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   4:  &lt;/span&gt;              &lt;span class="attr"&gt;Width&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;250&amp;quot;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   5:  &lt;/span&gt;              &lt;span class="attr"&gt;Height&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;250&amp;quot;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   6:  &lt;/span&gt;              &lt;span class="attr"&gt;HorizontalAlignment&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Left&amp;quot;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   7:  &lt;/span&gt;              &lt;span class="attr"&gt;VerticalAlignment&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Bottom&amp;quot;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   8:  &lt;/span&gt;              &lt;span class="attr"&gt;Margin&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;0, 0, 0, 30&amp;quot;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   9:  &lt;/span&gt;              &lt;span class="attr"&gt;Grid&lt;/span&gt;.&lt;span class="attr"&gt;Row&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;1&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;&lt;style type="text/css"&gt;
.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/style&gt;

  &lt;br /&gt;I’ll jump to the ItemDetailsPage template where you show complete details of a particular item. In this page you can create an InlineUIContainer and place the ad unit in there. This way your ad looks to be a part of the content itself.&lt;/p&gt;

&lt;div class="csharpcode"&gt;
  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   1:  &lt;/span&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Paragraph&lt;/span&gt; &lt;span class="attr"&gt;LineStackingStrategy&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;MaxHeight&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   2:  &lt;/span&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;InlineUIContainer&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   3:  &lt;/span&gt;        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Grid&lt;/span&gt; &lt;span class="attr"&gt;Width&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;560&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;Height&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;125&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;MaxHeight&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;125&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   4:  &lt;/span&gt;            &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;UI:AdControl&lt;/span&gt; &lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   5:  &lt;/span&gt;               &lt;span class="attr"&gt;ApplicationId&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;d25517cb-12d4-4699-8bdc-52040c712cab&amp;quot;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   6:  &lt;/span&gt;               &lt;span class="attr"&gt;AdUnitId&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;10043124&amp;quot;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   7:  &lt;/span&gt;               &lt;span class="attr"&gt;Width&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;250&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;Height&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;125&amp;quot;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   8:  &lt;/span&gt;               &lt;span class="attr"&gt;HorizontalAlignment&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Center&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   9:  &lt;/span&gt;        &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;Grid&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  10:  &lt;/span&gt;    &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;InlineUIContainer&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  11:  &lt;/span&gt;&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;Paragraph&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;style type="text/css"&gt;
.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/style&gt;



&lt;p&gt;In the &lt;a href="http://apps.microsoft.com/webpdp/app/howzzat-book/d8afb194-c5de-41b7-a7f0-fee85d4436b3"&gt;Howzzat Book&lt;/a&gt; app, you can see this working.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://aspblogs.blob.core.windows.net/media/nmarun/Media/image_0B51B287.png"&gt;&lt;img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="https://aspblogs.blob.core.windows.net/media/nmarun/Media/image_thumb_326BB022.png" width="383" height="325" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In the &lt;a href="http://weblogs.asp.net/nmarun/archive/2012/11/25/implementing-ads-on-any-page-in-your-windows-8-xaml-app-part-2.aspx"&gt;next article&lt;/a&gt;, we’ll see how to include ads in pages like Split page, Items page, Grouped items page and Group details page.&lt;/p&gt;</description><pubDate>Sat, 24 Nov 2012 09:21:00 GMT</pubDate><guid isPermaLink="true">https://weblogs.asp.net:443/nmarun/implementing-ads-on-any-page-in-your-windows-8-xaml-app-part-1</guid><category>.net</category><category>Metro Style Apps</category><category>Visual Studio 2012</category><category>Windows 8</category><category>XAML</category></item><item><title>My apps in the Windows 8 Store</title><link>https://weblogs.asp.net:443/nmarun/my-apps-in-the-windows-8-store</link><description>&lt;p&gt;I have four apps in the Windows 8 store now.&lt;/p&gt;  &lt;table border="0" cellspacing="0" cellpadding="2" width="605"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td valign="top" width="108"&gt;         &lt;p align="center"&gt;&lt;strong&gt;Logo&lt;/strong&gt;&lt;/p&gt;       &lt;/td&gt;        &lt;td valign="top" width="92"&gt;         &lt;p align="center"&gt;&lt;strong&gt;Name&lt;/strong&gt;&lt;/p&gt;       &lt;/td&gt;        &lt;td valign="top" width="118"&gt;         &lt;p align="center"&gt;&lt;strong&gt;Available since&lt;/strong&gt;&lt;/p&gt;       &lt;/td&gt;        &lt;td valign="top" width="285"&gt;         &lt;p align="center"&gt;&lt;strong&gt;Description&lt;/strong&gt;&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="108"&gt;&lt;a href="http://apps.microsoft.com/webpdp/app/knights-tour/3f8dbb0a-0874-4c3f-aa9c-dc0e59960972"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px; padding-top: 0px" title="Store50x50" border="0" alt="Store50x50" src="https://aspblogs.blob.core.windows.net/media/nmarun/Media/Store50x50_0453873C.png" width="54" height="54" /&gt;&lt;/a&gt;&lt;/td&gt;        &lt;td valign="top" width="92"&gt;         &lt;p align="center"&gt;&lt;a href="http://apps.microsoft.com/webpdp/app/knights-tour/3f8dbb0a-0874-4c3f-aa9c-dc0e59960972"&gt;Knight’s Tour&lt;/a&gt;&lt;/p&gt;       &lt;/td&gt;        &lt;td valign="top" width="118"&gt;         &lt;p align="center"&gt;Nov 7 2012&lt;/p&gt;       &lt;/td&gt;        &lt;td valign="top" width="285"&gt;         &lt;p align="left"&gt;Game – How many moves you can make with your Knight on a board&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="108"&gt;         &lt;p align="center"&gt;&lt;a href="http://apps.microsoft.com/webpdp/app/alternativesto/3741992b-a2d7-445f-b003-e82030e00936"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="StoreLogo" border="0" alt="StoreLogo" src="https://aspblogs.blob.core.windows.net/media/nmarun/Media/StoreLogo_2E730F57.png" width="54" height="54" /&gt;&lt;/a&gt;&lt;/p&gt;       &lt;/td&gt;        &lt;td valign="top" width="92"&gt;         &lt;p align="center"&gt;&lt;a href="http://apps.microsoft.com/webpdp/app/alternativesto/3741992b-a2d7-445f-b003-e82030e00936"&gt;alternatives To&lt;/a&gt;&lt;/p&gt;       &lt;/td&gt;        &lt;td valign="top" width="118"&gt;         &lt;p align="center"&gt;Oct 9 2012&lt;/p&gt;       &lt;/td&gt;        &lt;td valign="top" width="285"&gt;         &lt;p align="left"&gt;App – Alternatives to a specified software on various platforms with different licenses&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="108"&gt;&lt;a href="http://apps.microsoft.com/webpdp/app/cows-n-bulls/ddb86abf-e4e7-4190-b2d9-f243d106771a"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px; padding-top: 0px" title="cows-n-bulls-50x50" border="0" alt="cows-n-bulls-50x50" src="https://aspblogs.blob.core.windows.net/media/nmarun/Media/cows-n-bulls-50x50_0D1369BB.png" width="54" height="54" /&gt;&lt;/a&gt;&lt;/td&gt;        &lt;td valign="top" width="92"&gt;         &lt;p align="center"&gt;&lt;a href="http://apps.microsoft.com/webpdp/app/cows-n-bulls/ddb86abf-e4e7-4190-b2d9-f243d106771a"&gt;Cows N Bulls&lt;/a&gt;&lt;/p&gt;       &lt;/td&gt;        &lt;td valign="top" width="118"&gt;         &lt;p align="center"&gt;Sept 7 2012&lt;/p&gt;       &lt;/td&gt;        &lt;td valign="top" width="285"&gt;         &lt;p align="left"&gt;Game – Guess the four-letter word chosen by the computer&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="108"&gt;&lt;a href="http://apps.microsoft.com/webpdp/app/howzzat-book/d8afb194-c5de-41b7-a7f0-fee85d4436b3"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px; padding-top: 0px" title="HowzzatBook50x50" border="0" alt="HowzzatBook50x50" src="https://aspblogs.blob.core.windows.net/media/nmarun/Media/HowzzatBook50x50_3230B427.png" width="54" height="54" /&gt;&lt;/a&gt;&lt;/td&gt;        &lt;td valign="top" width="96"&gt;         &lt;p align="center"&gt;&lt;a href="http://apps.microsoft.com/webpdp/app/howzzat-book/d8afb194-c5de-41b7-a7f0-fee85d4436b3"&gt;Howzzat Book&lt;/a&gt;&lt;/p&gt;       &lt;/td&gt;        &lt;td valign="top" width="123"&gt;         &lt;p align="center"&gt;Aug 27 2012&lt;/p&gt;       &lt;/td&gt;        &lt;td valign="top" width="285"&gt;         &lt;p align="left"&gt;App – Get ratings for a book from various sites all in one place&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;</description><pubDate>Fri, 16 Nov 2012 01:54:13 GMT</pubDate><guid isPermaLink="true">https://weblogs.asp.net:443/nmarun/my-apps-in-the-windows-8-store</guid><category>.net</category><category>C#</category><category>Metro Style Apps</category><category>XAML</category></item><item><title>Team Foundation Service–now for everyone</title><link>https://weblogs.asp.net:443/nmarun/team-foundation-service-now-for-everyone</link><description>&lt;P&gt;I heard an &lt;A href="http://tfs.visualstudio.com/en-us/home/news/2012/oct-31/" mce_href="http://tfs.visualstudio.com/en-us/home/news/2012/oct-31/"&gt;announcement&lt;/A&gt; regarding TFS being opened for all. I’ve been wanting to have a source control for my personal projects.&lt;/P&gt;
&lt;P&gt;The set up was an unbelievably simple 3 step process.&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Signup at &lt;A href="http://tfs.visualstudio.com/en-us/" mce_href="http://tfs.visualstudio.com/en-us/"&gt;http://tfs.visualstudio.com/en-us/&lt;/A&gt; using an account name of your preference&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;&lt;A href="http://weblogs.asp.net/blogs/nmarun/image_5E91D130.png" mce_href="https://aspblogs.blob.core.windows.net/media/nmarun/Media/image_5E91D130.png"&gt;&lt;IMG style="BACKGROUND-IMAGE: none; BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: inline; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 0px" title=image border=0 alt=image src="http://weblogs.asp.net/blogs/nmarun/image_thumb_7ADF1350.png" width=536 height=334 mce_src="https://aspblogs.blob.core.windows.net/media/nmarun/Media/image_thumb_7ADF1350.png"&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;Your source control server is something like https://[account name].visualstudio.com.&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Create your team project choosing a process template of your preference&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;&lt;A href="http://weblogs.asp.net/blogs/nmarun/image_672203EF.png" mce_href="https://aspblogs.blob.core.windows.net/media/nmarun/Media/image_672203EF.png"&gt;&lt;IMG style="BACKGROUND-IMAGE: none; BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: inline; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 0px" title=image border=0 alt=image src="http://weblogs.asp.net/blogs/nmarun/image_thumb_0AFAB57D.png" width=530 height=381 mce_src="https://aspblogs.blob.core.windows.net/media/nmarun/Media/image_thumb_0AFAB57D.png"&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;You now have a source control for all your projects. You can connect to this server from VS as well.&lt;/P&gt;
&lt;P&gt;&lt;A href="http://weblogs.asp.net/blogs/nmarun/image_6DC4E7A5.png" mce_href="https://aspblogs.blob.core.windows.net/media/nmarun/Media/image_6DC4E7A5.png"&gt;&lt;IMG style="BACKGROUND-IMAGE: none; BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: inline; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 0px" title=image border=0 alt=image src="http://weblogs.asp.net/blogs/nmarun/image_thumb_7520A752.png" width=539 height=358 mce_src="https://aspblogs.blob.core.windows.net/media/nmarun/Media/image_thumb_7520A752.png"&gt;&lt;/A&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Check-in your projects&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;&lt;A href="http://weblogs.asp.net/blogs/nmarun/image_45A212B9.png" mce_href="https://aspblogs.blob.core.windows.net/media/nmarun/Media/image_45A212B9.png"&gt;&lt;IMG style="BACKGROUND-IMAGE: none; BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: inline; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 0px" title=image border=0 alt=image src="http://weblogs.asp.net/blogs/nmarun/image_thumb_61EF54D9.png" width=543 height=446 mce_src="https://aspblogs.blob.core.windows.net/media/nmarun/Media/image_thumb_61EF54D9.png"&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;Best of all, it’s &lt;A href="http://tfs.visualstudio.com/en-us/pricing/information/" mce_href="http://tfs.visualstudio.com/en-us/pricing/information/"&gt;FREE&lt;/A&gt;!&lt;/P&gt;
&lt;P&gt;PS: I know &lt;A href="http://git-scm.com/" mce_href="http://git-scm.com/"&gt;GIT&lt;/A&gt; is an alternative for this purpose, but as a MS developer, TFS is like home-ground for me.&lt;/P&gt;
&lt;P&gt;Resources:&lt;/P&gt;
&lt;P&gt;&lt;A href="http://tfs.visualstudio.com/en-us/" mce_href="http://tfs.visualstudio.com/en-us/"&gt;http://tfs.visualstudio.com/en-us/&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;A href="http://tfs.visualstudio.com/en-us/learn/code/connect-vs/" mce_href="http://tfs.visualstudio.com/en-us/learn/code/connect-vs/"&gt;http://tfs.visualstudio.com/en-us/learn/code/connect-vs/&lt;/A&gt;&lt;/P&gt;</description><pubDate>Thu, 01 Nov 2012 04:52:00 GMT</pubDate><guid isPermaLink="true">https://weblogs.asp.net:443/nmarun/team-foundation-service-now-for-everyone</guid><category>.net</category><category>C#</category><category>Team Foundation Service</category></item><item><title>Reusing elements in StandardStyles.xaml</title><link>https://weblogs.asp.net:443/nmarun/reusing-elements-in-standardstyles-xaml</link><description>&lt;p&gt;In one of my &lt;a href="http://weblogs.asp.net/nmarun/archive/2012/10/07/8-tips-for-your-windows-store-apps.aspx"&gt;previous blogs (second point)&lt;/a&gt;, I mentioned not to modify the StandardStyles.xaml, but instead to create your own resource dictionary. I also mentioned how to declare your custom styles dictionary in the App.xaml file.&lt;/p&gt;  &lt;p&gt;If you want to reference or build upon from an existing style in the StandardStyles.xaml file, do the following:&lt;/p&gt;  &lt;p&gt;1. Remove the entry for StandardStyles.xaml in the App.xaml file&lt;/p&gt;  &lt;p&gt;2. Add your custom resource dictionary in the App.xaml file&lt;/p&gt;  &lt;div class="csharpcode"&gt;   &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   1:  &lt;/span&gt;&lt;span class="rem"&gt;&amp;lt;!-- App.xaml --&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   2:  &lt;/span&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Application.Resources&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   3:  &lt;/span&gt;  &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;ResourceDictionary&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   4:  &lt;/span&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;ResourceDictionary.MergedDictionaries&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   5:  &lt;/span&gt;      &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;ResourceDictionary&lt;/span&gt; &lt;span class="attr"&gt;Source&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Common/CustomStyles.xaml&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   6:  &lt;/span&gt;    &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;ResourceDictionary.MergedDictionaries&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   7:  &lt;/span&gt;  &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;ResourceDictionary&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   8:  &lt;/span&gt;&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;Application.Resources&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;style type="text/css"&gt;
.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/style&gt;



&lt;div class="csharpcode"&gt;3. List the StandardStyles.xaml as a merged dictionary in your custom resource file.&lt;/div&gt;

&lt;div class="csharpcode"&gt;&amp;#160;&lt;/div&gt;

&lt;div class="csharpcode"&gt;
  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   1:  &lt;/span&gt;&lt;span class="rem"&gt;&amp;lt;!-- Common/CustomStyles.xaml --&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   2:  &lt;/span&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;ResourceDictionary&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   3:  &lt;/span&gt;  &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;ResourceDictionary.MergedDictionaries&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   4:  &lt;/span&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;ResourceDictionary&lt;/span&gt; &lt;span class="attr"&gt;Source&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;StandardStyles.xaml&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   5:  &lt;/span&gt;  &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;ResourceDictionary.MergedDictionaries&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   6:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   7:  &lt;/span&gt;  &lt;span class="rem"&gt;&amp;lt;!-- TitleTextStyle is declared in StandardStyles.xaml --&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   8:  &lt;/span&gt;  &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Style&lt;/span&gt; &lt;span class="attr"&gt;x:Key&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;MaxMoveCountStyle&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;TargetType&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;TextBlock&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;BasedOn&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;{StaticResource TitleTextStyle}&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   9:  &lt;/span&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Setter&lt;/span&gt; &lt;span class="attr"&gt;Property&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;FontSize&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;Value&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;15&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  10:  &lt;/span&gt;  &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;Style&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  11:  &lt;/span&gt;&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;ResourceDictionary&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;style type="text/css"&gt;
.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/style&gt;</description><pubDate>Tue, 23 Oct 2012 14:26:12 GMT</pubDate><guid isPermaLink="true">https://weblogs.asp.net:443/nmarun/reusing-elements-in-standardstyles-xaml</guid><category>.net</category><category>Windows 8</category><category>XAML</category></item></channel></rss>