<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html  lang="en-US">
<head id="Head">
<!--************************************************************************************-->
<!-- DNN Platform - http://www.dnnsoftware.com                                        -->
<!-- Copyright (c) 2002-2014                                                          -->
<!-- by DNN Corporation                                                               -->
<!--**********************************************************************************-->
<title>
	Thoughts from the Wet Coast > Blog
</title><meta content="text/html; charset=UTF-8" http-equiv="Content-Type" /><meta content="text/javascript" http-equiv="Content-Script-Type" /><meta content="text/css" http-equiv="Content-Style-Type" /><meta id="MetaKeywords" name="KEYWORDS" content=",DotNetNuke,DNN" /><meta id="MetaCopyright" name="COPYRIGHT" content="Copyright (c) 2017 by Thoughts from the Wet Coast" /><meta id="MetaGenerator" name="GENERATOR" content="DotNetNuke " /><meta id="MetaAuthor" name="AUTHOR" content="Thoughts from the Wet Coast" /><meta name="RESOURCE-TYPE" content="DOCUMENT" /><meta name="DISTRIBUTION" content="GLOBAL" /><meta id="MetaRobots" name="ROBOTS" content="INDEX, FOLLOW" /><meta name="REVISIT-AFTER" content="1 DAYS" /><meta name="RATING" content="GENERAL" /><meta http-equiv="PAGE-ENTER" content="RevealTrans(Duration=0,Transition=1)" /><style id="StylePlaceholder" type="text/css"></style><link href="/portals/_default/default.css?cdv=66" type="text/css" rel="stylesheet"/><link href="/desktopmodules/willstrohldisqus/module.css?cdv=66" type="text/css" rel="stylesheet"/><link href="/desktopmodules/blog/module.css?cdv=66" type="text/css" rel="stylesheet"/><link href="/Portals/6/Skins/WetCoast_Bootstrap/Bootstrap/css/bootstrap.css?cdv=66" type="text/css" rel="stylesheet"/><link href="/Portals/6/Skins/WetCoast_Bootstrap/Bootstrap/css/bootstrap-theme.css?cdv=66" type="text/css" rel="stylesheet"/><link href="/portals/6/skins/wetcoast_bootstrap/skin.css?cdv=66" type="text/css" rel="stylesheet"/><link href="/portals/6/containers/wetcoast_bootstrap/container.css?cdv=66" type="text/css" rel="stylesheet"/><link href="/portals/6/portal.css?cdv=66" type="text/css" rel="stylesheet"/><link href="/portals/6//blog/templates/wetcoast_categories/template.css?cdv=66" type="text/css" rel="stylesheet"/><link href="/portals/6//blog/templates/wetcoast_blog/css/shcoredefault.css?cdv=66" type="text/css" rel="stylesheet"/><link href="/portals/6//blog/templates/wetcoast_tags/css/jqcloud.css?cdv=66" type="text/css" rel="stylesheet"/><link href="/portals/6//blog/templates/wetcoast_tags/template.css?cdv=66" type="text/css" rel="stylesheet"/><link href="/portals/6//blog/templates/wetcoast_blog/template.css?cdv=66" type="text/css" rel="stylesheet"/><link href="/resources/search/searchskinobjectpreview.css?cdv=66" type="text/css" rel="stylesheet"/><link href="/portals/6//blog/templates/wetcoast_blog/css/shcore.css?cdv=66" type="text/css" rel="stylesheet"/><link href="/portals/6//blog/templates/wetcoast_blog/css/jquery.fancybox-1.3.4.css?cdv=66" type="text/css" rel="stylesheet"/><script src="/resources/libraries/jquery/1.9.1/jquery.js?cdv=66" type="text/javascript"></script><script src="/resources/libraries/jquery-migrate/1.2.1/jquery-migrate.js?cdv=66" type="text/javascript"></script><script src="/resources/libraries/jquery-ui/1.10.3/jquery-ui.js?cdv=66" type="text/javascript"></script>     
        
			    <script type="text/javascript">
			      var _gaq = _gaq || [];
			      _gaq.push(['_setAccount', 'UA-5260073-1']);
			      _gaq.push(['_trackPageview']);
			 
			      (function() {
				    var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
				    ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
				    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
			      })();
			    </script>
        
		  <link rel="wlwmanifest" type="application/wlwmanifest+xml" href="/DesktopModules/Blog/API/Modules/Manifest?TabId=226&amp;ModuleId=691"></link></head>
<body id="Body">
    
    <form method="post" action="/Blog/rssid/1" id="Form" enctype="multipart/form-data">
<div class="aspNetHidden">
<input type="hidden" name="StylesheetManager_TSSM" id="StylesheetManager_TSSM" value="" />
<input type="hidden" name="ScriptManager_TSM" id="ScriptManager_TSM" value="" />
<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="om79V/fS3R2vIA2nN8EXKyGETY39AR0hiIIwkNEY7xNvUmQRp9CuXFjASJH2fEvcyF4LUbb/HI4T7Gh8WBl7CJ6XuSkbBdlh1VSA+raX/BMQLEgg4FFjdPLdDE4zEpRGogAliOKQq8Spr9VW/yBWkSXox9W8a8vJw8GcbAM7eBZgW7wr3WoANS2QK6wklTrilQikEBpkFtuc0m/4ykMclwPAEMa6tB61c1MkR/n9iuTEhKZIs2cy4sI338GkjycnX/CU7OOIXKMrVDynZLcdMgcqYSuMlRmqN6ygB2u1arMQIQx57dbGXD5J8CwX/rHUZTf75JdtLRz8x9eVknJ8t1qnjLQcfwcJ/ei4JVFzVolBR49knozR6V0e6tFtqiJMJB44mDZDiFdpoy5OWRjKv0fvQ6lHQ1JS+l7Aa/Q2RdeuEV190ciSZNzN/LFYxQePOlVI9ruEmUX+TGghLR7Wb0GxVLjej6ssj5V45UWxRKu6PQW9ZOO4cWE2woBXYFZOuHOyAwNCn8wPK013qrPG6sBeOOU5RQ+4S8QP4/tbluk+QtH/4yugpUwk5XsIgTvTv9alag4XDWksNMff6saCCqh+Jt6xy5mzovs62j/JGejuNU0NuxzeRecNE4jNyFEBUCbR0+jDnhcr/xX4dPNDzHGAfHX8HhHbIJlALXAcpee6aHhFwHgAixcAQ6sR8Z4KWTtEk6bt3u8n5a8DUHpX3huGrteXka+xP2YTawjTNrg2YczxwDGtOHK38AQcDDusciYRxgG5eg6qISx+58Qpkv7D5yzAlenuTAyDTTLjl85nbiRB0CXma1a0gmNiRlNMoCnl+/zkOa+c7ixCtx6FSt6uMxeKBVdoufs5W1I9D2ughVW2GBQLckyur7EHHRomBGThpStw3O23iiXTKL2USW+I4fp8rWFqQRD9oCkTRfqlSJSpZtYokd2IU8inHkzCLQbzTF/MVCBIPueBhGwhsj6JZom4q+HepuMiXFIwijsRQ/X5xuJGyLMDcVKEMmGbwIWNfNhK4yHWzjr8SklMCTo+QVPXvQfBYZx3x7XRX9hC3bi24j3hPSrKT4dvE56F/6a9oYtg9Ka63W48dEEMLnPi6I6Mweb4qkrHy4k+DVXHasmg3epfrIxDXycdjiKqFfWB+cXlXoO6nn3lodkd+Phoz/PokKdygN8c7w8zegUzMFozoDmfJ3dPM+cA85tUwyOyjBOB3R1qrT2QyUk/yBEkQUfduhkwbsoEdAmN/kXdSQmv4eDvqwksZqagb4OD+WPWUosWcg3HZ6ngePN/3g3seX5v4nF5zhB8Ig6FsmgxTNKiX8LQhr9EY4THWShzAqBmguU4D7uBUd8pEHqytBCkZjaJAuUR3TLEcFNm7d98i+vglzAJpsN0UXDbSyniaayyMxVDoT+59/G4y7ve5duIk7w6ac3wl9swHPqv7fusZEpanEAWhknvyyF3UolvgmyZXnpT1LOxYnrRqp9E3XfRWOO1aMsIjOS6dh6W9EslA4UmTRZQnNoTKX8JtPAnAV2Q+IvBpmYySEgJOry0cZkxZtqOBzddPe5XLM19VymYHHLPCgGfjSVkh8LcbEevGSUsZu0oBYjOct3cTQVw5jyfwHmpqoZS5x/2VTj+DQAjT0uwHv2zGik54tFQ6Cg4n70mNUO46PtWPKKjbRV+bI2oazsca7+wbWY3DEAfzfPZTXyrmAKn+f1lmLmbqGpRqcBZF8HkFCq7foraYqc0O9IGulCDvQlY8gq9GXwTgsA0C/yEf/YUf5OhGdmPoR63emhuKqmFNrMR1I4ZQFqpXPHzpcNY0IJE5pG9dCN+b2U5oLrvrNXhs6cb9EKeS2VE3wAPacKtxoueALbRy4lgfnDRTucYo6aVbdPhs8qQao9rmcsycwppNm3F/mPzrTMKm5rZVw==" />
</div>

<script type="text/javascript">
//<![CDATA[
var appPath=''
//]]>
</script>
<script type="text/javascript">
//<![CDATA[
var blogService
jQuery(function ($) {
 blogService = new BlogService($, {
   serverErrorText: 'An error occurred while processing the request. Please try again later.',
   serverErrorWithDescriptionText: 'An error occurred while processing the request: ',
   errorBoxId: '#blogServiceErrorBox691'
  },
  691);
});

//]]>
</script>
<script src="/Telerik.Web.UI.WebResource.axd?_TSM_HiddenField_=ScriptManager_TSM&amp;compress=1&amp;_TSM_CombinedScripts_=%3b%3bSystem.Web.Extensions%2c+Version%3d4.0.0.0%2c+Culture%3dneutral%2c+PublicKeyToken%3d31bf3856ad364e35%3aen-US%3a0f2ae90c-87fb-4f74-9210-4b167170d85e%3aea597d4b%3ab25378d2" type="text/javascript"></script>
<div class="aspNetHidden">

	<input type="hidden" name="__VIEWSTATEGENERATOR" id="__VIEWSTATEGENERATOR" value="CA0B0334" />
	<input type="hidden" name="__VIEWSTATEENCRYPTED" id="__VIEWSTATEENCRYPTED" value="" />
	<input type="hidden" name="__EVENTVALIDATION" id="__EVENTVALIDATION" value="VRo/Zdaq8wiacgnuWwOsWXJORZl2GMu74mVtR4uV7TtWMBulXbgXHUq5Qgk9kuXi5kQr33wJ3SbYA3gs5xvn8VXfXbYIpZGjgzYleAJ77SJHQ1tqR0rJ1h2XW63IEL17zO0L96j/rcoguKZmfV8k6UDa5nv7Hf+nsugBlvJJUQl06ssYRRkCHdlTA1I=" />
</div><script src="/js/dnn.js?cdv=66" type="text/javascript"></script><script src="/js/dnn.modalpopup.js?cdv=66" type="text/javascript"></script><script src="/resources/shared/scripts/jquery/jquery.hoverintent.min.js?cdv=66" type="text/javascript"></script><script src="/desktopmodules/blog/js/jquery.timeago.js?cdv=66" type="text/javascript"></script><script src="/desktopmodules/blog/js/en/jquery.timeago.en.js?cdv=66" type="text/javascript"></script><script src="/desktopmodules/blog/js/dotnetnuke.blog.js?cdv=66" type="text/javascript"></script><script src="/portals/6//blog/templates/wetcoast_blog/js/jquery.fancybox-1.3.4.pack.js?cdv=66" type="text/javascript"></script><script src="/portals/6//blog/templates/wetcoast_blog/template.js?cdv=66" type="text/javascript"></script><script src="/portals/6//blog/templates/wetcoast_tags/js/jqcloud-1.0.4.min.js?cdv=66" type="text/javascript"></script><script src="/portals/6//blog/templates/wetcoast_blog/js/shcore.js?cdv=66" type="text/javascript"></script><script src="/portals/6//blog/templates/wetcoast_blog/js/jquery.sharrre.min.js?cdv=66" type="text/javascript"></script><script src="/resources/search/searchskinobjectpreview.js?cdv=66" type="text/javascript"></script><script src="/js/dnncore.js?cdv=66" type="text/javascript"></script><script src="/Portals/6/Skins/WetCoast_Bootstrap/Bootstrap/js/bootstrap.js?cdv=66" type="text/javascript"></script><script src="/js/dnn.servicesframework.js?cdv=66" type="text/javascript"></script><script src="/resources/shared/scripts/dnn.jquery.js?cdv=66" type="text/javascript"></script><script type="text/javascript">
//<![CDATA[
Sys.WebForms.PageRequestManager._initialize('ScriptManager', 'Form', [], [], [], 90, '');
//]]>
</script>

        
        
        <!--CDF(Javascript|/Portals/6/Skins/WetCoast_Bootstrap/Bootstrap/js/bootstrap.js?cdv=66)-->
<!--CDF(Css|/Portals/6/Skins/WetCoast_Bootstrap/Bootstrap/css/bootstrap.css?cdv=66)-->
<!--CDF(Css|/Portals/6/Skins/WetCoast_Bootstrap/Bootstrap/css/bootstrap-theme.css?cdv=66)-->

<div id="WetCoast">
    
        <nav class="navbar navbar-default navbar-inverse navbar-fixed-top" role="navigation">
    
      <!-- Brand and toggle get grouped for better mobile display -->
      <div class="navbar-header">
        <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-ex1-collapse">
          <span class="sr-only">Toggle navigation</span>
          <span class="icon-bar"></span>
          <span class="icon-bar"></span>
          <span class="icon-bar"></span>
        </button>
        <a class="navbar-brand" href="/Blog.aspx">Thoughts from the Wet Coast</a>
      </div>

      <!-- Collect the nav links, forms, and other content for toggling -->
    <div class="collapse navbar-collapse navbar-ex1-collapse">
        <!-- DDRmenu v02.00.01 - Simple template --><ul class="nav navbar-nav">
	
            <li class=" active">
	    		<a href="http://www.charlesnurse.com/">Blog</a>
	        </li>
    	
            <li class="">
	    		<a href="http://www.charlesnurse.com/About-Me">About Me</a>
	        </li>
    	
</ul>


           <div class="navbar-form navbar-right" role="search">
                <span id="dnn_dnnSearch_ClassicSearch">
    
    
    <span class="searchInputContainer" data-moreresults="See More Results" data-noresult="No Results Found">
        <input name="dnn$dnnSearch$txtSearch" type="text" maxlength="255" size="20" id="dnn_dnnSearch_txtSearch" class="NormalTextBox" autocomplete="off" placeholder="Search..." />
        <a class="dnnSearchBoxClearText"></a>
    </span>
    <a id="dnn_dnnSearch_cmdSearch" class="btn btn-default" href="javascript:__doPostBack(&#39;dnn$dnnSearch$cmdSearch&#39;,&#39;&#39;)">Search</a>
</span>


<script type="text/javascript">
    $(function() {
        if (typeof dnn != "undefined" && typeof dnn.searchSkinObject != "undefined") {
            var searchSkinObject = new dnn.searchSkinObject({
                delayTriggerAutoSearch : 400,
                minCharRequiredTriggerAutoSearch : 2,
                searchType: 'S',
                enableWildSearch: true,
                cultureCode: 'en-US',
                portalId: -1
                }
            );
            searchSkinObject.init();
            
            
            // attach classic search
            var siteBtn = $('#dnn_dnnSearch_SiteRadioButton');
            var webBtn = $('#dnn_dnnSearch_WebRadioButton');
            var clickHandler = function() {
                if (siteBtn.is(':checked')) searchSkinObject.settings.searchType = 'S';
                else searchSkinObject.settings.searchType = 'W';
            };
            siteBtn.on('change', clickHandler);
            webBtn.on('change', clickHandler);
            
            
        }
    });
</script>

            </div>
      </div><!-- /.navbar-collapse -->
    </nav>

    <div class="container">
        <div class="row">
            <div id="BannerContainer" class="col-md-6">
                <h1>Thoughts from the Wet Coast<br/><br/>
                    <small>The musings of an ASP.NET Developer from Canada's We(s)t Coast</small>
                </h1>
            </div>
            <div id="BannerContainer" class="col-md-6"><img class="img-responsive" src="/Portals/6/Skins/WetCoast_Bootstrap/Images/Banner.png" /></div>
        </div>

        <div class="row">
            <div id="dnn_ContentPane" class="col-md-12"><div class="DnnModule DnnModule-WillStrohlDisqus DnnModule-717"><a name="717"></a>
<div class="Standard">
    <h1 class="Title"><span id="dnn_ctr717_dnnTITLE_titleLabel" class="Head">Comments</span>


</h1>
    <div id="dnn_ctr717_ContentPane"><!-- Start_Module_717 --><div id="dnn_ctr717_ModuleContent" class="DNNModuleContent ModWillStrohlDisqusC">
	<div id="disqus_thread"></div> <script type="text/javascript" language="javascript"> var disqus_developer = 0; var disqus_shortname = 'wetcoast'; var disqus_identifier = 'wnsdisqus-226::490::8738dee9-1aa9-48b6-a0da-5cb8117af9c5::/Blog/rssid/1'; var disqus_url = document.URL; (function() { var dsq = document.createElement('script'); dsq.type = 'text/javascript'; dsq.async = true; dsq.src = 'http://' + disqus_shortname + '.disqus.com/embed.js'; (document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(dsq); })();</script><noscript>Please enable JavaScript to view the <a href="http://disqus.com/?ref_noscript">comments powered by Disqus.</a></noscript><!--<a href="http://disqus.com" class="dsq-brlink">blog comments powered by <span class="logo-disqus">Disqus</span></a>-->

<script type="text/javascript" language="javascript">(function ($, Sys) { function setupDnnSiteSettings() { var newModule = jQuery('.DnnModule-691'); if (newModule.hasClass('DnnModule-Blog')) { jQuery('div.BlogFooterRight a[id$=\'_lnkComments\']').remove();jQuery('div[id$=\'_MainView_ViewEntry_pnlComments\']').remove();jQuery('div[id$=\'_MainView_ViewEntry_pnlAddComment\']').remove();}jQuery('.DnnModule-717').insertAfter('.DnnModule-691'); } jQuery(document).ready(function (){ setupDnnSiteSettings(); Sys.WebForms.PageRequestManager.getInstance().add_endRequest(function () { setupDnnSiteSettings(); }); }); } (jQuery, window.Sys)); </script>
</div><!-- End_Module_717 --></div>
</div></div></div>
        </div>
        <div class="row">
            <div id="dnn_LeftPane" class="col-md-8"><div class="DnnModule DnnModule-Blog DnnModule-691"><a name="691"></a>
<div class="Standard">
    <h1 class="Title"><span id="dnn_ctr691_dnnTITLE_titleLabel" class="Head">Articles</span>


</h1>
    <div id="dnn_ctr691_ContentPane"><!-- Start_Module_691 --><div id="dnn_ctr691_ModuleContent" class="DNNModuleContent ModBlogC">
	

<div id="dnn_ctr691_Blog_ctlManagement_pnlManagement" style="height:40px">
 
 
 
 
 &nbsp;
 <div style="float:right">
  
  <a href="http://www.charlesnurse.com/" id="homelink" class="blogicon-home icon16" title="Home">&nbsp;</a>
  
  <a href="/DesktopModules/Blog/API/RSS/Get?tabid=226&moduleid=691" id="rsslink691" title="RSS" class="blogicon-rss icon16">&nbsp;</a>
  <a href="#" id="searchlink691" title="Search" class="blogicon-search icon16">&nbsp;</a>
 </div>
</div>

<script>
(function ($, Sys) {
 $(document).ready(function () {

  var $dialogSearch = $('<div class="dnnDialog"></div>')
		.html('<input type="text" id="txtSearch" style="width:95%"></input><br/>Search In: &nbsp;<input type="checkbox" id="scopeAll691" value="1" checked="1" />In all content<input type="checkbox" id="scopeTitle691" value="1" checked="1" />Title<input type="checkbox" id="scopeContents691" value="1" />Contents')
		.dialog({
		 autoOpen: false,
		 resizable: false,
		 dialogClass: 'dnnFormPopup dnnClear',
		 title: 'Search',
		 height: 210,
		 width: 500,
		 open: function (e) {
		  $('.ui-dialog-buttonpane').find('button:contains("Search")').addClass('dnnPrimaryAction');
		  $('.ui-dialog-buttonpane').find('button:contains("Cancel")').addClass('dnnSecondaryAction');
		 },
		 buttons: [
    {
     text: 'Cancel',
     click: function () {
      $(this).dialog("close");
     }
    },
    {
     text: 'Search',
     click: function () {
      $(this).dialog("close");
      var url
      if ($('#scopeAll691').is(':checked')) {
       url = 'http://www.charlesnurse.com/?';
      } else {
       url = 'http://www.charlesnurse.com/?';
      }
      url += 'search=' + $('#txtSearch').val();
      if ($('#scopeTitle691').is(':checked')) {
       url += '&t=1'
      }
      if ($('#scopeContents691').is(':checked')) {
       url += '&c=1'
      }
      if ($('#chkUnpublished691').is(':checked')) {
       url += '&u=1'
      }
      window.location.href = encodeURI(url);
     }
    }
    ]
		});
  $('#searchlink691').click(function () {
   $dialogSearch.dialog('open');
   return false;
  });

 });
} (jQuery, window.Sys));
</script>


<div id="blogServiceErrorBox691"></div>


<div class="blog-main-content">
<article class="is-post is-post-excerpt">
 <header>
  <h2><a href="http://www.charlesnurse.com/Blog/Post/1595/Naif-Blog-6-Using-Middleware-to-Implement-Multi-tenancy">Naif.Blog: 6. Using Middleware to Implement Multi-tenancy</a></h2>
  <span class="byline">Thoughts from the Wet Coast - Charles Nurse</span>
 </header>
 <div class="info">
  <span class="date">
   <span class="month">Aug</span>
   <span class="day">01</span>
   <span class="year">2016</span>

  </span>
  <div style="clear:both"></div>
 </div>

 <div class="summary">
<p>Last weekend was another long weekend in Canada - at least in the part of Canada where I live, British Columbia, so I had some time to return to working on my bog application - Naif.Blog.&nbsp; The final piece of the puzzle - how can we make our simple blog application support multiple different blogs from the same code-base.&nbsp; This feature can save hosting dollars as it allows a single hosted site to support many different blogs, and is usually termed - multi-tenancy.</p>
 </div>
 <div><a href="http://www.charlesnurse.com/Blog/Post/1595/Naif-Blog-6-Using-Middleware-to-Implement-Multi-tenancy"></a></div>
</article>

<article class="is-post is-post-excerpt">
 <header>
  <h2><a href="http://www.charlesnurse.com/Blog/Post/1592/Naif-Blog-5-ASP-NET-Core-1-0-RTM">Naif.Blog: 5. ASP.NET Core 1.0 RTM</a></h2>
  <span class="byline">Thoughts from the Wet Coast - Charles Nurse</span>
 </header>
 <div class="info">
  <span class="date">
   <span class="month">Jul</span>
   <span class="day">02</span>
   <span class="year">2016</span>

  </span>
  <div style="clear:both"></div>
 </div>

 <div class="summary">
<p>ASP.NET Core 1.0 RTM is finally here.&nbsp; Congratulations to the ASP.NET team for reaching this important milestone earlier this week.&nbsp; I remember seeing the first prototype of this code at an MVP Summit 3 years ago.&nbsp; I love the vision of a cross-platform modern server platform for developing web applications.</p>
 </div>
 <div><a href="http://www.charlesnurse.com/Blog/Post/1592/Naif-Blog-5-ASP-NET-Core-1-0-RTM"></a></div>
</article>

<article class="is-post is-post-excerpt">
 <header>
  <h2><a href="http://www.charlesnurse.com/Blog/Post/1591/Naif-Blog-4-View-Components">Naif.Blog: 4. View Components</a></h2>
  <span class="byline">Thoughts from the Wet Coast - Charles Nurse</span>
 </header>
 <div class="info">
  <span class="date">
   <span class="month">Jul</span>
   <span class="day">01</span>
   <span class="year">2016</span>

  </span>
  <div style="clear:both"></div>
 </div>

 <div class="summary">
<p>On this Canada Day 2016 weekend I have time to get back to building my own Blog Application.&nbsp; In this post I look at a new feature in ASP.NET Core &ndash; View Components.&nbsp; View Components are similar to partial Views but they are much more powerful.&nbsp; </p>
 </div>
 <div><a href="http://www.charlesnurse.com/Blog/Post/1591/Naif-Blog-4-View-Components"></a></div>
</article>

<article class="is-post is-post-excerpt">
 <header>
  <h2><a href="http://www.charlesnurse.com/Blog/Post/1590/Naif-Blog-3-Adding-Theming">Naif.Blog: 3. Adding Theming</a></h2>
  <span class="byline">Thoughts from the Wet Coast - Charles Nurse</span>
 </header>
 <div class="info">
  <span class="date">
   <span class="month">May</span>
   <span class="day">23</span>
   <span class="year">2016</span>

  </span>
  <div style="clear:both"></div>
 </div>

 <div class="summary">
<p>In my continuing series on building my own Blog Application I next turn to theming.&#160; Any self-respecting Blog Application needs to be able to be themed and this is actually fairly straightforward in ASP.NET Core.&#160; In addition to introducing the theming engine this blog will also introduce the new Configuration and Options frameworks available in ASP.NET Core.</p>
 </div>
 <div><a href="http://www.charlesnurse.com/Blog/Post/1590/Naif-Blog-3-Adding-Theming"></a></div>
</article>

<article class="is-post is-post-excerpt">
 <header>
  <h2><a href="http://www.charlesnurse.com/Blog/Post/1589/Naif-Blog-2-Creating-a-WebAPI-service-to-support-the-MetaWeblogAPI">Naif.Blog: 2. Creating a WebAPI service to support the MetaWeblogAPI</a></h2>
  <span class="byline">Thoughts from the Wet Coast - Charles Nurse</span>
 </header>
 <div class="info">
  <span class="date">
   <span class="month">Apr</span>
   <span class="day">22</span>
   <span class="year">2016</span>

  </span>
  <div style="clear:both"></div>
 </div>

 <div class="summary">
<p>In my continuing series on building my own Blog Application, I next turn to Windows Live Writer (WLW) support.&nbsp;&nbsp; </p>
<p>I have decided to implement WLW support before I even create a web-based editing experience.&nbsp; Primarily, this is because building the web-based editing experience is really just a matter of creating a standard MVC Form based UI, while building the WLW support will introduce new concepts.&nbsp; However, the other reason is that I want Naif.Blog to take WLW support seriously as a first class citizen, so the best way to do that is to do it first &ndash; I can have a completely working blog once this is complete.</p>
 </div>
 <div><a href="http://www.charlesnurse.com/Blog/Post/1589/Naif-Blog-2-Creating-a-WebAPI-service-to-support-the-MetaWeblogAPI"></a></div>
</article>

<article class="is-post is-post-excerpt">
 <header>
  <h2><a href="http://www.charlesnurse.com/Blog/Post/1588/Naif-Blog-1-In-ASP-NET-Core-Everything-is-Injected">Naif.Blog: 1. In ASP.NET Core Everything is Injected</a></h2>
  <span class="byline">Thoughts from the Wet Coast - Charles Nurse</span>
 </header>
 <div class="info">
  <span class="date">
   <span class="month">Apr</span>
   <span class="day">12</span>
   <span class="year">2016</span>

  </span>
  <div style="clear:both"></div>
 </div>

 <div class="summary">
<p>In my continuing project to build my own Blog Application using the new ASP.NET Core, I previously set the stage by reviewing the development environment, I will be starting with.&nbsp; In this post I move on to displaying a simple list of Blogs.</p>
 </div>
 <div><a href="http://www.charlesnurse.com/Blog/Post/1588/Naif-Blog-1-In-ASP-NET-Core-Everything-is-Injected"></a></div>
</article>

<article class="is-post is-post-excerpt">
 <header>
  <h2><a href="http://www.charlesnurse.com/Blog/Post/1587/Naif-Blog-0-Setting-the-Stage">Naif.Blog: 0. Setting the Stage</a></h2>
  <span class="byline">Thoughts from the Wet Coast - Charles Nurse</span>
 </header>
 <div class="info">
  <span class="date">
   <span class="month">Apr</span>
   <span class="day">08</span>
   <span class="year">2016</span>

  </span>
  <div style="clear:both"></div>
 </div>

 <div class="summary">
<p>I am building my own Blog application using ASP.NET Core, as a means of diving into some of the key new features of the ASP.NET Core Platform.&nbsp; In this first post I am going to describe the initial state of my application.&nbsp; This initial state (version 0) is somewhat modified from the basic ASP.NET template, so this first post describes the starting point for my development.</p>
 </div>
 <div><a href="http://www.charlesnurse.com/Blog/Post/1587/Naif-Blog-0-Setting-the-Stage"></a></div>
</article>

<article class="is-post is-post-excerpt">
 <header>
  <h2><a href="http://www.charlesnurse.com/Blog/Post/1586/Naif-Blog-A-new-ASP-NET-Core-Blog">Naif.Blog - A new ASP.NET Core Blog</a></h2>
  <span class="byline">Thoughts from the Wet Coast - Charles Nurse</span>
 </header>
 <div class="info">
  <span class="date">
   <span class="month">Apr</span>
   <span class="day">08</span>
   <span class="year">2016</span>

  </span>
  <div style="clear:both"></div>
 </div>

 <div class="summary">
<p>Someone, I think it was Scott Hanselman, once said a few years ago, that if you are a web developer and you blog, then you should create and use your own blog application, so I have decided to do just that.&nbsp; While I have been using ASP.NET Core for a few months now, I have decided that this will be a good exercise in learning some of the new features of ASP.NET Core, and because I like to blog I will describe what I am doing here in my own blog.</p>
 </div>
 <div><a href="http://www.charlesnurse.com/Blog/Post/1586/Naif-Blog-A-new-ASP-NET-Core-Blog"></a></div>
</article>

<article class="is-post is-post-excerpt">
 <header>
  <h2><a href="http://www.charlesnurse.com/Blog/Post/1585/Module-Development-in-DNN-8-7-Using-the-Client-Resource-Manager-in-MVC-modules">Module Development in DNN 8: 7 - Using the Client Resource Manager in MVC modules</a></h2>
  <span class="byline">Thoughts from the Wet Coast - Charles Nurse</span>
 </header>
 <div class="info">
  <span class="date">
   <span class="month">Nov</span>
   <span class="day">16</span>
   <span class="year">2015</span>

  </span>
  <div style="clear:both"></div>
 </div>

 <div class="summary">
<p>Peter Donker raised the question in the DNN Connect Facebook Group &ndash; &ldquo;How can you access the Client Resource Manager in an MVC View?&rdquo;.&nbsp; I gave him the answer as a reply but I thought it would be good to provide a more accessible source for the information.</p>
 </div>
 <div><a href="http://www.charlesnurse.com/Blog/Post/1585/Module-Development-in-DNN-8-7-Using-the-Client-Resource-Manager-in-MVC-modules"></a></div>
</article>

<article class="is-post is-post-excerpt">
 <header>
  <h2><a href="http://www.charlesnurse.com/Blog/Post/1584/ToDo-DNN-2-Classic-WebForms">ToDo DNN - 2 Classic WebForms</a></h2>
  <span class="byline">Thoughts from the Wet Coast - Charles Nurse</span>
 </header>
 <div class="info">
  <span class="date">
   <span class="month">Nov</span>
   <span class="day">10</span>
   <span class="year">2015</span>

  </span>
  <div style="clear:both"></div>
 </div>

 <div class="summary">
<p><img alt="" align="right" style="border-width: 0px; background-image: none; padding-top: 0px; padding-left: 0px; margin: 0px 0px 15px 15px; display: inline; padding-right: 0px; float: right;" src="http://tse1.mm.bing.net/th?&amp;id=OIP.Mc92fdd115aa3eff33388ca2378fe1ca9H0&amp;w=300&amp;h=300&amp;c=0&amp;pid=1.9&amp;rs=0&amp;p=0&amp;r=0" />A few days ago I blogged that I would be creating a number of different &ldquo;ToDo&rdquo; modules to showcase &ldquo;Best Practices&rdquo; for building DNN modules.&nbsp; This project is hosted on Github and is inspired by the ToDo MVC project which shows how different JavaScript MV* frameworks and libraries can be used to build a common &ldquo;ToDo&rdquo; application.&nbsp; My first project is a &ldquo;Classic WebForms&rdquo; approach to building a DNN ToDo module.</p>
<p>I have called it &ldquo;Classic Webforms&rdquo; as it primarily uses features of DNN that were available prior to version 5, when we began to add additional ways to develop modules.&nbsp; However,&nbsp; as with most of my example modules this module is developed using a number of modern &ldquo;Best Practices&rdquo; &ndash; these Best Practices are highlighted in italic.</p>
 </div>
 <div><a href="http://www.charlesnurse.com/Blog/Post/1584/ToDo-DNN-2-Classic-WebForms"></a></div>
</article>


<div class="pager">

<a href="http://www.charlesnurse.com/?Page=1" class="pagebtn active">
 1
</a>




<a href="http://www.charlesnurse.com/?Page=2" class="pagebtn ">
 2
</a>




<a href="http://www.charlesnurse.com/?Page=3" class="pagebtn ">
 3
</a>






<span>...</span>
<a href="http://www.charlesnurse.com/?Page=11" class="pagebtn">
 11
</a>


</div>
</div>





</div><!-- End_Module_691 --></div>
</div></div></div>
		    <div id="dnn_RightPane" class="col-md-4">
                <div id="Copyright">
                    The opinions expressed herein are my own personal opinions and do not represent my employer's view in anyway.<br/>
                    <span id="dnn_dnnCopyright_lblCopyright" class="SkinObject">Copyright (c) 2017 Thoughts from the Wet Coast</span>

                </div>
		    <div class="DnnModule DnnModule-Blog DnnModule-698"><a name="698"></a>
<div class="Standard">
    <h1 class="Title"><span id="dnn_ctr698_dnnTITLE_titleLabel" class="Head">Categories</span>


</h1>
    <div id="dnn_ctr698_ContentPane"><!-- Start_Module_698 --><div id="dnn_ctr698_ModuleContent" class="DNNModuleContent ModBlogC">
	



<div id="blogServiceErrorBox698"></div>

<div id="categoryList698" class="categoryList_list">
</div>
<script type="text/javascript">
 var catList = [
 {id: 76, text: "ASP.NET", nrposts: 12, link: "http://www.charlesnurse.com/Blog/Term/76/ASP-NET", parentId: 0},{id: 96, text: "Current Affairs", nrposts: 2, link: "http://www.charlesnurse.com/Blog/Term/96/Current-Affairs", parentId: 0},{id: 77, text: "Data", nrposts: 17, link: "http://www.charlesnurse.com/Blog/Term/77/Data", parentId: 0},{id: 78, text: "Development", nrposts: 21, link: "http://www.charlesnurse.com/Blog/Term/78/Development", parentId: 0},{id: 79, text: "DotNetNuke", nrposts: 38, link: "http://www.charlesnurse.com/Blog/Term/79/DotNetNuke", parentId: 0},{id: 80, text: "Genealogy", nrposts: 2, link: "http://www.charlesnurse.com/Blog/Term/80/Genealogy", parentId: 0},{id: 81, text: "JavaScript", nrposts: 17, link: "http://www.charlesnurse.com/Blog/Term/81/JavaScript", parentId: 0},{id: 87, text: "Mobile", nrposts: 2, link: "http://www.charlesnurse.com/Blog/Term/87/Mobile", parentId: 0},{id: 82, text: "Patterns", nrposts: 1, link: "http://www.charlesnurse.com/Blog/Term/82/Patterns", parentId: 0},{id: 83, text: "Personal", nrposts: 5, link: "http://www.charlesnurse.com/Blog/Term/83/Personal", parentId: 0},{id: 84, text: "Sport", nrposts: 1, link: "http://www.charlesnurse.com/Blog/Term/84/Sport", parentId: 0},{id: 85, text: "Windows Phone", nrposts: 3, link: "http://www.charlesnurse.com/Blog/Term/85/Windows-Phone", parentId: 0},{id: 171, text: "ASP.NET Core", nrposts: 8, link: "http://www.charlesnurse.com/Blog/Term/171/ASP-NET-Core", parentId: 0},
 {}
 ]

  function addCategories(listItem, id) {
   var first = true;
   var ul = null;
   $.each($.grep(catList, function(c, i) {
   return (c.parentId==id);}), function(i, v){
    if (first) {
     ul = $('<ul></ul>');
     listItem.append(ul);
     first=false;
    }
    addCategories(ul.append('<li><h4><a href="' + v.link + '">' + v.text + ' (' + v.nrposts + ')</a></h4></li>'), v.id);
   });
  }

 $(document).ready(function () {
  addCategories($('#categoryList698'), 0)
 });
</script>




</div><!-- End_Module_698 --></div>
</div></div><div class="DnnModule DnnModule-Blog DnnModule-699"><a name="699"></a>
<div class="Standard">
    <h1 class="Title"><span id="dnn_ctr699_dnnTITLE_titleLabel" class="Head">Tags</span>


</h1>
    <div id="dnn_ctr699_ContentPane"><!-- Start_Module_699 --><div id="dnn_ctr699_ModuleContent" class="DNNModuleContent ModBlogC">
	



<div id="blogServiceErrorBox699"></div>

<div id="blog_tagCloud699" style="height:350px;"></div>
<script type="text/javascript">
var blog_tags = [
 {text: ".net", weight: 1, link: "http://www.charlesnurse.com/Blog/Term/117/net"},
{text: "act", weight: 1, link: "http://www.charlesnurse.com/Blog/Term/124/act"},
{text: "action filter", weight: 1, link: "http://www.charlesnurse.com/Blog/Term/135/action-filter"},
{text: "ajax", weight: 1, link: "http://www.charlesnurse.com/Blog/Term/5/ajax"},
{text: "Android", weight: 1, link: "http://www.charlesnurse.com/Blog/Term/92/Android"},
{text: "angular", weight: 1, link: "http://www.charlesnurse.com/Blog/Term/142/angular"},
{text: "Apache", weight: 1, link: "http://www.charlesnurse.com/Blog/Term/6/Apache"},
{text: "Apache Cordova", weight: 2, link: "http://www.charlesnurse.com/Blog/Term/88/Apache-Cordova"},
{text: "api apps", weight: 1, link: "http://www.charlesnurse.com/Blog/Term/150/api-apps"},
{text: "app service", weight: 1, link: "http://www.charlesnurse.com/Blog/Term/145/app-service"},
{text: "arrange", weight: 1, link: "http://www.charlesnurse.com/Blog/Term/122/arrange"},
{text: "arrow", weight: 1, link: "http://www.charlesnurse.com/Blog/Term/165/arrow"},
{text: "asp.net", weight: 1, link: "http://www.charlesnurse.com/Blog/Term/7/asp-net"},
{text: "asp.net mvc", weight: 2, link: "http://www.charlesnurse.com/Blog/Term/8/asp-net-mvc"},
{text: "asser", weight: 1, link: "http://www.charlesnurse.com/Blog/Term/123/asser"},
{text: "availability", weight: 1, link: "http://www.charlesnurse.com/Blog/Term/9/availability"},
{text: "azure", weight: 3, link: "http://www.charlesnurse.com/Blog/Term/116/azure"},
{text: "azure websites", weight: 1, link: "http://www.charlesnurse.com/Blog/Term/146/azure-websites"},
{text: "best practices", weight: 1, link: "http://www.charlesnurse.com/Blog/Term/160/best-practices"},
{text: "BigData", weight: 2, link: "http://www.charlesnurse.com/Blog/Term/105/BigData"},
{text: "block", weight: 1, link: "http://www.charlesnurse.com/Blog/Term/104/block"},
{text: "blog", weight: 1, link: "http://www.charlesnurse.com/Blog/Term/10/blog"},
{text: "bootstrap", weight: 1, link: "http://www.charlesnurse.com/Blog/Term/174/bootstrap"},
{text: "browser", weight: 1, link: "http://www.charlesnurse.com/Blog/Term/137/browser"},
{text: "c#", weight: 1, link: "http://www.charlesnurse.com/Blog/Term/11/c"},
{text: "caching", weight: 2, link: "http://www.charlesnurse.com/Blog/Term/12/caching"},
{text: "cap", weight: 1, link: "http://www.charlesnurse.com/Blog/Term/13/cap"},
{text: "client resource manager", weight: 1, link: "http://www.charlesnurse.com/Blog/Term/169/client-resource-manager"},
{text: "closure", weight: 1, link: "http://www.charlesnurse.com/Blog/Term/164/closure"},
{text: "code comments", weight: 1, link: "http://www.charlesnurse.com/Blog/Term/133/code-comments"},
{text: "component", weight: 2, link: "http://www.charlesnurse.com/Blog/Term/144/component"},
{text: "computed observable", weight: 1, link: "http://www.charlesnurse.com/Blog/Term/14/computed-observable"},
{text: "configuration", weight: 1, link: "http://www.charlesnurse.com/Blog/Term/179/configuration"},
{text: "consistency", weight: 1, link: "http://www.charlesnurse.com/Blog/Term/15/consistency"},
{text: "constructor", weight: 1, link: "http://www.charlesnurse.com/Blog/Term/16/constructor"},
{text: "craft", weight: 1, link: "http://www.charlesnurse.com/Blog/Term/108/craft"},
{text: "curly braces", weight: 1, link: "http://www.charlesnurse.com/Blog/Term/159/curly-braces"},
{text: "custom routing", weight: 1, link: "http://www.charlesnurse.com/Blog/Term/178/custom-routing"},
{text: "dal", weight: 4, link: "http://www.charlesnurse.com/Blog/Term/17/dal"},
{text: "dal+", weight: 1, link: "http://www.charlesnurse.com/Blog/Term/168/dal"},
{text: "dal2", weight: 3, link: "http://www.charlesnurse.com/Blog/Term/86/dal2"},
{text: "Database", weight: 1, link: "http://www.charlesnurse.com/Blog/Term/18/Database"},
{text: "data-binding", weight: 5, link: "http://www.charlesnurse.com/Blog/Term/19/data-binding"},
{text: "dependency injection", weight: 1, link: "http://www.charlesnurse.com/Blog/Term/175/dependency-injection"},
{text: "design", weight: 1, link: "http://www.charlesnurse.com/Blog/Term/112/design"},
{text: "devreach", weight: 2, link: "http://www.charlesnurse.com/Blog/Term/20/devreach"},
{text: "dnn", weight: 4, link: "http://www.charlesnurse.com/Blog/Term/21/dnn"},
{text: "dnn world", weight: 1, link: "http://www.charlesnurse.com/Blog/Term/22/dnn-world"},
{text: "DNN7", weight: 4, link: "http://www.charlesnurse.com/Blog/Term/23/DNN7"},
{text: "DnnExceptionAttribute", weight: 1, link: "http://www.charlesnurse.com/Blog/Term/126/DnnExceptionAttribute"},
{text: "dnx", weight: 1, link: "http://www.charlesnurse.com/Blog/Term/161/dnx"},
{text: "Document Databases", weight: 2, link: "http://www.charlesnurse.com/Blog/Term/24/Document-Databases"},
{text: "dot notation", weight: 1, link: "http://www.charlesnurse.com/Blog/Term/94/dot-notation"},
{text: "dummies", weight: 1, link: "http://www.charlesnurse.com/Blog/Term/132/dummies"},
{text: "epl", weight: 1, link: "http://www.charlesnurse.com/Blog/Term/25/epl"},
{text: "fakes", weight: 1, link: "http://www.charlesnurse.com/Blog/Term/131/fakes"},
{text: "family tree project", weight: 3, link: "http://www.charlesnurse.com/Blog/Term/26/family-tree-project"},
{text: "focus", weight: 1, link: "http://www.charlesnurse.com/Blog/Term/27/focus"},
{text: "football", weight: 1, link: "http://www.charlesnurse.com/Blog/Term/28/football"},
{text: "framework", weight: 1, link: "http://www.charlesnurse.com/Blog/Term/152/framework"},
{text: "function", weight: 1, link: "http://www.charlesnurse.com/Blog/Term/103/function"},
{text: "graph", weight: 3, link: "http://www.charlesnurse.com/Blog/Term/115/graph"},
{text: "Graph Databases", weight: 1, link: "http://www.charlesnurse.com/Blog/Term/107/Graph-Databases"},
{text: "guard", weight: 1, link: "http://www.charlesnurse.com/Blog/Term/120/guard"},
{text: "gulp", weight: 1, link: "http://www.charlesnurse.com/Blog/Term/172/gulp"},
{text: "gun control", weight: 1, link: "http://www.charlesnurse.com/Blog/Term/98/gun-control"},
{text: "hackathon", weight: 3, link: "http://www.charlesnurse.com/Blog/Term/29/hackathon"},
{text: "hadoop", weight: 1, link: "http://www.charlesnurse.com/Blog/Term/106/hadoop"},
{text: "Icenium", weight: 1, link: "http://www.charlesnurse.com/Blog/Term/90/Icenium"},
{text: "IDataContext", weight: 2, link: "http://www.charlesnurse.com/Blog/Term/30/IDataContext"},
{text: "IModuleControl", weight: 1, link: "http://www.charlesnurse.com/Blog/Term/31/IModuleControl"},
{text: "implict semicolon", weight: 1, link: "http://www.charlesnurse.com/Blog/Term/158/implict-semicolon"},
{text: "IoC", weight: 1, link: "http://www.charlesnurse.com/Blog/Term/163/IoC"},
{text: "iOS", weight: 1, link: "http://www.charlesnurse.com/Blog/Term/91/iOS"},
{text: "irepository", weight: 2, link: "http://www.charlesnurse.com/Blog/Term/100/irepository"},
{text: "It", weight: 1, link: "http://www.charlesnurse.com/Blog/Term/134/It"},
{text: "javascript", weight: 2, link: "http://www.charlesnurse.com/Blog/Term/32/javascript"},
{text: "jsx", weight: 2, link: "http://www.charlesnurse.com/Blog/Term/143/jsx"},
{text: "knockout", weight: 12, link: "http://www.charlesnurse.com/Blog/Term/33/knockout"},
{text: "literal", weight: 1, link: "http://www.charlesnurse.com/Blog/Term/34/literal"},
{text: "localization", weight: 1, link: "http://www.charlesnurse.com/Blog/Term/154/localization"},
{text: "logic apps", weight: 1, link: "http://www.charlesnurse.com/Blog/Term/149/logic-apps"},
{text: "map/reduce", weight: 1, link: "http://www.charlesnurse.com/Blog/Term/35/map-reduce"},
{text: "mappings", weight: 2, link: "http://www.charlesnurse.com/Blog/Term/36/mappings"},
{text: "metaweblog API", weight: 1, link: "http://www.charlesnurse.com/Blog/Term/176/metaweblog-API"},
{text: "middleware", weight: 2, link: "http://www.charlesnurse.com/Blog/Term/162/middleware"},
{text: "mobile apps", weight: 1, link: "http://www.charlesnurse.com/Blog/Term/148/mobile-apps"},
{text: "module", weight: 4, link: "http://www.charlesnurse.com/Blog/Term/37/module"},
{text: "module actions", weight: 1, link: "http://www.charlesnurse.com/Blog/Term/156/module-actions"},
{text: "module development", weight: 9, link: "http://www.charlesnurse.com/Blog/Term/38/module-development"},
{text: "modulecontrol", weight: 1, link: "http://www.charlesnurse.com/Blog/Term/39/modulecontrol"},
{text: "moq", weight: 4, link: "http://www.charlesnurse.com/Blog/Term/129/moq"},
{text: "mult-tenancy", weight: 1, link: "http://www.charlesnurse.com/Blog/Term/184/mult-tenancy"},
{text: "mvc", weight: 9, link: "http://www.charlesnurse.com/Blog/Term/40/mvc"},
{text: "MVC modules", weight: 1, link: "http://www.charlesnurse.com/Blog/Term/151/MVC-modules"},
{text: "mvvm", weight: 2, link: "http://www.charlesnurse.com/Blog/Term/41/mvvm"},
{text: "naif", weight: 1, link: "http://www.charlesnurse.com/Blog/Term/42/naif"},
{text: "naif.blog", weight: 7, link: "http://www.charlesnurse.com/Blog/Term/170/naif-blog"},
{text: "neo4j", weight: 4, link: "http://www.charlesnurse.com/Blog/Term/114/neo4j"},
{text: "new look", weight: 1, link: "http://www.charlesnurse.com/Blog/Term/113/new-look"},
{text: "newtown", weight: 1, link: "http://www.charlesnurse.com/Blog/Term/101/newtown"},
{text: "nosql", weight: 14, link: "http://www.charlesnurse.com/Blog/Term/43/nosql"},
{text: "npm", weight: 1, link: "http://www.charlesnurse.com/Blog/Term/173/npm"},
{text: "object", weight: 1, link: "http://www.charlesnurse.com/Blog/Term/44/object"},
{text: "observable", weight: 2, link: "http://www.charlesnurse.com/Blog/Term/45/observable"},
{text: "observable array", weight: 2, link: "http://www.charlesnurse.com/Blog/Term/46/observable-array"},
{text: "Open Source", weight: 2, link: "http://www.charlesnurse.com/Blog/Term/47/Open-Source"},
{text: "options", weight: 1, link: "http://www.charlesnurse.com/Blog/Term/180/options"},
{text: "ORM", weight: 1, link: "http://www.charlesnurse.com/Blog/Term/48/ORM"},
{text: "partition tolerance", weight: 1, link: "http://www.charlesnurse.com/Blog/Term/49/partition-tolerance"},
{text: "patterns", weight: 2, link: "http://www.charlesnurse.com/Blog/Term/50/patterns"},
{text: "petapoco", weight: 6, link: "http://www.charlesnurse.com/Blog/Term/51/petapoco"},
{text: "PhoneGap", weight: 2, link: "http://www.charlesnurse.com/Blog/Term/89/PhoneGap"},
{text: "PortalModuleBase", weight: 1, link: "http://www.charlesnurse.com/Blog/Term/52/PortalModuleBase"},
{text: "practices", weight: 2, link: "http://www.charlesnurse.com/Blog/Term/109/practices"},
{text: "preview", weight: 1, link: "http://www.charlesnurse.com/Blog/Term/53/preview"},
{text: "project.json", weight: 1, link: "http://www.charlesnurse.com/Blog/Term/139/project-json"},
{text: "property bag", weight: 1, link: "http://www.charlesnurse.com/Blog/Term/95/property-bag"},
{text: "quota", weight: 1, link: "http://www.charlesnurse.com/Blog/Term/157/quota"},
{text: "ravendb", weight: 6, link: "http://www.charlesnurse.com/Blog/Term/54/ravendb"},
{text: "Razor", weight: 4, link: "http://www.charlesnurse.com/Blog/Term/55/Razor"},
{text: "RDBMS", weight: 1, link: "http://www.charlesnurse.com/Blog/Term/56/RDBMS"},
{text: "react", weight: 3, link: "http://www.charlesnurse.com/Blog/Term/141/react"},
{text: "Relational Databases", weight: 1, link: "http://www.charlesnurse.com/Blog/Term/57/Relational-Databases"},
{text: "requires", weight: 1, link: "http://www.charlesnurse.com/Blog/Term/119/requires"},
{text: "samsung", weight: 1, link: "http://www.charlesnurse.com/Blog/Term/58/samsung"},
{text: "sandy hook", weight: 1, link: "http://www.charlesnurse.com/Blog/Term/97/sandy-hook"},
{text: "service locator", weight: 1, link: "http://www.charlesnurse.com/Blog/Term/136/service-locator"},
{text: "silverlight", weight: 1, link: "http://www.charlesnurse.com/Blog/Term/59/silverlight"},
{text: "simplicity", weight: 1, link: "http://www.charlesnurse.com/Blog/Term/60/simplicity"},
{text: "skin", weight: 1, link: "http://www.charlesnurse.com/Blog/Term/111/skin"},
{text: "spa", weight: 3, link: "http://www.charlesnurse.com/Blog/Term/153/spa"},
{text: "speaking", weight: 1, link: "http://www.charlesnurse.com/Blog/Term/61/speaking"},
{text: "stubs", weight: 1, link: "http://www.charlesnurse.com/Blog/Term/130/stubs"},
{text: "testing", weight: 3, link: "http://www.charlesnurse.com/Blog/Term/121/testing"},
{text: "tests", weight: 1, link: "http://www.charlesnurse.com/Blog/Term/128/tests"},
{text: "Theming", weight: 1, link: "http://www.charlesnurse.com/Blog/Term/183/Theming"},
{text: "tips", weight: 1, link: "http://www.charlesnurse.com/Blog/Term/118/tips"},
{text: "todo dnn", weight: 2, link: "http://www.charlesnurse.com/Blog/Term/166/todo-dnn"},
{text: "token replace", weight: 1, link: "http://www.charlesnurse.com/Blog/Term/155/token-replace"},
{text: "unit testing", weight: 3, link: "http://www.charlesnurse.com/Blog/Term/127/unit-testing"},
{text: "variable scope", weight: 1, link: "http://www.charlesnurse.com/Blog/Term/102/variable-scope"},
{text: "view locations", weight: 1, link: "http://www.charlesnurse.com/Blog/Term/181/view-locations"},
{text: "ViewComponents", weight: 1, link: "http://www.charlesnurse.com/Blog/Term/182/ViewComponents"},
{text: "visual studio", weight: 1, link: "http://www.charlesnurse.com/Blog/Term/63/visual-studio"},
{text: "Visual Studio 2015", weight: 1, link: "http://www.charlesnurse.com/Blog/Term/140/Visual-Studio-2015"},
{text: "vNext", weight: 1, link: "http://www.charlesnurse.com/Blog/Term/138/vNext"},
{text: "Web API", weight: 2, link: "http://www.charlesnurse.com/Blog/Term/125/Web-API"},
{text: "web apps", weight: 1, link: "http://www.charlesnurse.com/Blog/Term/147/web-apps"},
{text: "webforms", weight: 1, link: "http://www.charlesnurse.com/Blog/Term/167/webforms"},
{text: "webmatrix", weight: 4, link: "http://www.charlesnurse.com/Blog/Term/64/webmatrix"},
{text: "WebPages", weight: 1, link: "http://www.charlesnurse.com/Blog/Term/65/WebPages"},
{text: "Windows Phone", weight: 1, link: "http://www.charlesnurse.com/Blog/Term/93/Windows-Phone"},
{text: "xml-rpc", weight: 1, link: "http://www.charlesnurse.com/Blog/Term/177/xml-rpc"},

 {text: "", weight: 1}
];
$(function () {
 $("#blog_tagCloud699").width($("#blog_tagCloud699").parent().width());
 $("#blog_tagCloud699").jQCloud(blog_tags);
});
</script>




</div><!-- End_Module_699 --></div>
</div></div></div>
        </div>
        <hr/>
    </div>
</div>

        <input name="ScrollTop" type="hidden" id="ScrollTop" />
        <input name="__dnnVariable" type="hidden" id="__dnnVariable" autocomplete="off" value="`{`__scdoff`:`1`,`sf_siteRoot`:`/`,`sf_tabId`:`226`}" />
        <input name="__RequestVerificationToken" type="hidden" value="e1hQtPiZfYPrbIuR08akYEVDZixU-bA89eueyy3wdCVSkEQ1FFtX7ZwzeZVgP0i0KE9JZAOo1PKhJtPgqvnhHL0oic2qLdMtCK9NlF4YejdVmLW0vnkeiVpULQY1" />
    
<script type="text/javascript" src="/Resources/Shared/scripts/initWidgets.js" ></script></form>
    
    
</body>
</html>