<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0">
  <channel><title>have code will travel</title>
<description>My personal blog about life, the universe, and code.</description>
<generator>Miniblog.Core</generator>
<link>http://www.billforney.com/</link>
<item>
  <title>Update to ASP.NET Core</title>
  <link>http://www.billforney.com/blog/update-to-aspnet-core/</link>
  <description>&lt;p&gt;Recently I updated the blog to MiniBlog.Core on ASP.NET Core. So far it seems pretty fast. I&amp;rsquo;m working on a new engine for it in my spare time using Azure Functions and blob storage. More to come when I find some time to update this.&lt;/p&gt;
&lt;div id="scid:77ECF5F8-D252-44F5-B4EB-D463C5396A79:b57fd777-52af-4070-8ef9-8f84e99df43f" class="wlWriterEditableSmartContent" style="margin: 0px; padding: 0px; float: none; display: inline;"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/ASP.NET+Core" rel="tag"&gt;ASP.NET Core&lt;/a&gt;,&lt;a href="http://technorati.com/tags/MiniBlog.Core" rel="tag"&gt;MiniBlog.Core&lt;/a&gt;,&lt;a href="http://technorati.com/tags/update" rel="tag"&gt;update&lt;/a&gt;&lt;/div&gt;</description>
  <author>Bill Forney</author>
  <category>asp.net core</category>
  <guid isPermaLink="false">http://www.billforney.com/blog/update-to-aspnet-core/</guid>
  <pubDate>Sun, 19 Aug 2018 07:46:15 GMT</pubDate>
</item>
<item>
  <title>Getting Started with Aurelia on ASP.NET Core</title>
  <link>http://www.billforney.com/blog/getting-started-with-aurelia-on-asp.net-core/</link>
  <description>&lt;p&gt;&lt;a href="http://www.aurelia.io/" target="_blank"&gt;Aurelia&lt;/a&gt;, one of the leading JavaScript client frameworks for single page applications (SPAs), has been around for a while now and there are a number of resources for getting started with it. Rather than try to make yet another demo, I thought it might be fun to create a site repository that could be used as a template with a few more bells and whistles already setup. It is my hope that this will be useful not just to me, but to anyone else who wants to start a project. We’re going to use the command line tools to do this, but you can use &lt;a href="http://www.visualstudio.com/" target="_blank"&gt;Visual Studio 2017&lt;/a&gt; if you want as well.&lt;/p&gt;&lt;h2&gt;Setting up the ASP.NET Core Project&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;Prerequisites&lt;/strong&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="https://nodejs.org/en/" target="_blank"&gt;Node.js&lt;/a&gt; (preferably current)&lt;/li&gt;&lt;li&gt;&lt;a href="https://www.microsoft.com/net/core#windowscmd" target="_blank"&gt;ASP.NET Core SDK&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;strong&gt;Steps&lt;/strong&gt;&lt;/p&gt;&lt;ol&gt;&lt;li&gt;Create a folder for your project.&lt;/li&gt;&lt;li&gt;Open a command prompt (cmd) in that folder.&lt;/li&gt;&lt;li&gt;Install the SPA templates with the following command:&amp;nbsp; &lt;br /&gt;&lt;div class="wlWriterEditableSmartContent" id="scid:C89E2BDB-ADD3-4f7a-9810-1B7EACF446C1:1a780838-bcda-4a38-b986-7e506fcc42fb" style="float:none;padding-bottom:0;padding-top:0;padding-left:0;margin:0;display:inline;padding-right:0"&gt;&lt;pre style="white-space:normal"&gt;dotnet new --install Microsoft.AspNetCore.SpaTemplates::*&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;&lt;a href="https://www.billforney.com/posts/files/154a197a-19ee-4157-a105-2f2d112fee1e.png"&gt;&lt;img width="644" height="374" title="aurelia-step3" style="border-left-width:0;border-right-width:0;background-image:none;border-bottom-width:0;padding-top:0;padding-left:0;display:inline;padding-right:0;border-top-width:0" alt="aurelia-step3" src="https://cdn.billforney.com/posts/files/8b3319ec-e312-4eeb-9563-6c3346824f4a.png" border="0" /&gt;&lt;/a&gt; &lt;br /&gt;&lt;/li&gt;&lt;li&gt;Create the Aurelia project like this:&amp;nbsp; &lt;br /&gt;&lt;div class="wlWriterEditableSmartContent" id="scid:C89E2BDB-ADD3-4f7a-9810-1B7EACF446C1:f3662d61-13fd-4287-8517-df56048083b0" style="float:none;padding-bottom:0;padding-top:0;padding-left:0;margin:0;display:inline;padding-right:0"&gt;&lt;pre style="white-space:normal"&gt;dotnet new Aurelia&amp;nbsp;&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;&lt;a href="https://www.billforney.com/posts/files/980c3012-e173-4f36-98eb-ffb66fe7a49e.png"&gt;&lt;img width="644" height="87" title="aurelia-step4" style="border-left-width:0;border-right-width:0;background-image:none;border-bottom-width:0;padding-top:0;padding-left:0;display:inline;padding-right:0;border-top-width:0" alt="aurelia-step4" src="https://cdn.billforney.com/posts/files/b82a15d9-1c79-4f0f-a9ad-50198bcf6ded.png" border="0" data-pin-nopin="true" /&gt;&lt;/a&gt; &lt;br /&gt;&lt;/li&gt;&lt;li&gt;Prepare the environment to run using these commands, ignoring any warnings from npm as they are expected… &lt;br /&gt;&lt;div class="wlWriterEditableSmartContent" id="scid:C89E2BDB-ADD3-4f7a-9810-1B7EACF446C1:77b224a6-78c3-4208-9a61-cc0b4ab72c24" style="float:none;padding-bottom:0;padding-top:0;padding-left:0;margin:0;display:inline;padding-right:0"&gt;&lt;pre style="white-space:normal"&gt;dotnet restore
npm install
setx ASPNETCORE_ENVIRONMENT "Development"&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;&lt;a href="https://www.billforney.com/posts/files/72c213e6-3bb9-4a0b-8b1b-f2d62d6c8f50.png"&gt;&lt;img width="644" height="195" title="aurelia-step5a" style="border-left-width:0;border-right-width:0;background-image:none;border-bottom-width:0;padding-top:0;padding-left:0;display:inline;padding-right:0;border-top-width:0" alt="aurelia-step5a" src="https://cdn.billforney.com/posts/files/364730d1-299c-4d28-9882-4755d0bc193b.png" border="0" /&gt;&lt;/a&gt; &lt;br /&gt;&lt;a href="https://www.billforney.com/posts/files/360c2c5f-4d3a-4e7b-84ef-ebd3004d017c.png"&gt;&lt;img width="644" height="95" title="aurelia-step5b" style="border-left-width:0;border-right-width:0;background-image:none;border-bottom-width:0;padding-top:0;padding-left:0;display:inline;padding-right:0;border-top-width:0" alt="aurelia-step5b" src="https://cdn.billforney.com/posts/files/95490758-98b2-4472-b73c-b2b712228082.png" border="0" data-pin-nopin="true" /&gt;&lt;/a&gt; &lt;br /&gt;&lt;a href="https://www.billforney.com/posts/files/334108f7-3756-47fa-8726-dbaaf71520af.png"&gt;&lt;img width="644" height="95" title="aurelia-step5c" style="border-left-width:0;border-right-width:0;background-image:none;border-bottom-width:0;padding-top:0;padding-left:0;display:inline;padding-right:0;border-top-width:0" alt="aurelia-step5c" src="https://cdn.billforney.com/posts/files/681fd176-2a30-42c3-8e9f-62377d9cfe4a.png" border="0" data-pin-nopin="true" /&gt;&lt;/a&gt; &lt;br /&gt;&lt;/li&gt;&lt;li&gt;Restart your command prompt to ensure that the environment change takes effect.&lt;/li&gt;&lt;li&gt;Run your new app with the command line &lt;br /&gt;&lt;div class="wlWriterEditableSmartContent" id="scid:C89E2BDB-ADD3-4f7a-9810-1B7EACF446C1:977e2504-a9e6-484b-9135-6c753a3d3548" style="float:none;padding-bottom:0;padding-top:0;padding-left:0;margin:0;display:inline;padding-right:0"&gt;&lt;pre style="white-space:normal"&gt;dotnet run&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;&amp;nbsp;&lt;a href="https://www.billforney.com/posts/files/5066c1b8-af88-4800-8ce9-ff500566c0c6.png" target="_blank"&gt;&lt;img width="644" height="437" title="Step 7" style="border-left-width:0;border-right-width:0;background-image:none;border-bottom-width:0;padding-top:0;padding-left:0;display:inline;padding-right:0;border-top-width:0" alt="Step 7" src="https://cdn.billforney.com/posts/files/fff4a40b-422f-476f-b5d7-01fe75a26160.png" border="0" /&gt;&lt;/a&gt;&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;These steps should give you a bare bones ASP.NET Core site with a basic Aurelia setup that looks like this…&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;a href="https://www.billforney.com/posts/files/955d3a59-a706-42f3-95f7-379f8e15c720.png" target="_blank"&gt;&lt;img width="644" height="351" title="Working Demo" style="border-left-width:0;border-right-width:0;background-image:none;border-bottom-width:0;padding-top:0;padding-left:0;display:inline;padding-right:0;border-top-width:0" alt="Working Demo" src="https://cdn.billforney.com/posts/files/9ffcad10-0c8a-448d-baed-92dc878ef2cf.png" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;h2&gt;&lt;/h2&gt;&lt;h2&gt;&lt;/h2&gt;&lt;h2&gt;Publishing to a Host&lt;/h2&gt;&lt;p&gt;Now that you have a working site you’ll want to publish it to an actual server somewhere. To do that you’ll perform a publish. You can do this by running this command:&lt;/p&gt;&lt;div class="wlWriterEditableSmartContent" id="scid:C89E2BDB-ADD3-4f7a-9810-1B7EACF446C1:5d44528a-8266-4094-b8c2-43b792452bbe" style="float:none;padding-bottom:0;padding-top:0;padding-left:0;margin:0;display:inline;padding-right:0"&gt;&lt;pre style="white-space:normal"&gt;dotnet publish -c Release&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;This command compiles the server side C# code and runs a &lt;a href="https://webpack.js.org/" target="_blank"&gt;webpack&lt;/a&gt; production build on the TypeScript and client assets. You can then find the files to upload to your host in the &lt;strong&gt;&lt;em&gt;bin\Release\netcoreapp1.1\publish&lt;/em&gt;&lt;/strong&gt; folder.&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;h2&gt;Exploring the Template&lt;/h2&gt;&lt;p&gt;This template takes care of a lot of things that you would have to setup manually and makes a good starting point for adding more functionality, such as logging with Application Insights or another logging provider, fleshing out an administration interface for user management and authentication/authorization using &lt;a href="https://identityserver.io/" target="_blank"&gt;Identity Server&lt;/a&gt;, or any number of other useful additions that are widely available.&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;To get started understanding what we’ve got here, you’ll want to take a look into the files in your new project. You’ll notice that in Startup.cs we have setup a fallback route that allows anything not dealt with by a static file or MVC route to be sent to the Home Index view. This is the secret sauce that lets all your links work even though they aren’t configured individually.&lt;/p&gt;&lt;div class="wlWriterEditableSmartContent" id="scid:C89E2BDB-ADD3-4f7a-9810-1B7EACF446C1:de86c43f-4d1b-414b-b413-5c34e7733d12" style="float:none;padding-bottom:0;padding-top:0;padding-left:0;margin:0;display:inline;padding-right:0"&gt;&lt;pre style="white-space:normal"&gt;routes.MapSpaFallbackRoute(
                    name: "spa-fallback",
                    defaults: new { controller = "Home", action = "Index" });&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;To be continued…&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div class="wlWriterEditableSmartContent" id="scid:77ECF5F8-D252-44F5-B4EB-D463C5396A79:71048aab-0e77-49ed-9876-14f83eeafe5c" style="float:none;padding-bottom:0;padding-top:0;padding-left:0;margin:0;display:inline;padding-right:0"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/ASP.NET+Core" rel="tag"&gt;ASP.NET Core&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Aurelia" rel="tag"&gt;Aurelia&lt;/a&gt;,&lt;a href="http://technorati.com/tags/TypeScript" rel="tag"&gt;TypeScript&lt;/a&gt;,&lt;a href="http://technorati.com/tags/SPA" rel="tag"&gt;SPA&lt;/a&gt;&lt;/div&gt;</description>
  <author>Bill Forney</author>
  <category>TypeScript</category>
  <category>JavaScript</category>
  <category>ASP.NET Core</category>
  <category>Aurelia</category>
  <category>Webpack</category>
  <category>SPA</category>
  <category>Single Page Application</category>
  <guid isPermaLink="false">http://www.billforney.com/blog/getting-started-with-aurelia-on-asp.net-core/</guid>
  <pubDate>Mon, 22 May 2017 12:33:51 GMT</pubDate>
</item>
<item>
  <title>Aurelia with TypeScript on ASP.NET Core</title>
  <link>http://www.billforney.com/blog/aurelia-with-typescript-on-asp.net-core/</link>
  <description>&lt;p&gt;I&amp;rsquo;ve been tracking the &lt;a title="ASP.NET documentation" href="https://docs.asp.net/en/latest/" target="_blank" rel="nofollow noopener"&gt;ASP.NET&lt;/a&gt; betas and release candidates over the past year or more and it&amp;rsquo;s coming along nicely. I like the separation of client side and server side in the new folder structure and the unification of the &lt;a title="ASP.NET MVC" href="https://docs.asp.net/en/latest/mvc/index.html" target="_blank" rel="nofollow noopener"&gt;MVC&lt;/a&gt; and WebAPI controllers. For the past few years I&amp;rsquo;ve used &lt;a title="jsViews" href="http://www.jsviews.com/" target="_blank" rel="nofollow noopener"&gt;jsViews&lt;/a&gt;, &lt;a title="Kendo UI" href="http://www.telerik.com/kendo-ui" target="_blank" rel="nofollow noopener"&gt;Kendo UI&lt;/a&gt;, &lt;a title="Angular" href="https://angular.io/" target="_blank" rel="nofollow noopener"&gt;Angular&lt;/a&gt;, &lt;a title="Durandal" href="http://durandaljs.com/" target="_blank" rel="nofollow noopener"&gt;Durandal&lt;/a&gt;, &lt;a title="Knockout" href="http://knockoutjs.com/" target="_blank" rel="nofollow noopener"&gt;Knockout&lt;/a&gt;, and &lt;a title="Aurelia" href="http://aurelia.io/" target="_blank" rel="nofollow noopener"&gt;Aurelia&lt;/a&gt; for front end JavaScript development.&lt;/p&gt;
&lt;p&gt;A while ago I was using TypeScript with these to help with intellisense and typing issues across the libraries and sites I worked on. I often find myself introducing whatever team I&amp;rsquo;m on to these technologies in one way or another. I&amp;rsquo;ve been working with the combination of ASP.NET Core, formerly ASP.NET 5, and Aurelia with TypeScript and Web Components.&lt;/p&gt;
&lt;p&gt;I start with the yoeman generator for ASP.NET and add the pieces as I go. I use ASP.NET MVC for the API and plain old HTML and TypeScript for the UI. The client tool chain consists of the usual npm, jspm, and gulp. When the new ASP.NET bits are done I&amp;rsquo;ll make a template for all this and post it to github. In the meantime I&amp;rsquo;m considering doing a short video or slide deck walking through the setup if anyone is interested.&lt;/p&gt;</description>
  <author>Bill Forney</author>
  <category>javascript</category>
  <category>software development</category>
  <category>typescript</category>
  <guid isPermaLink="false">http://www.billforney.com/blog/aurelia-with-typescript-on-asp.net-core/</guid>
  <pubDate>Tue, 08 Mar 2016 11:24:11 GMT</pubDate>
</item>
<item>
  <title>Something different, something new, something blue</title>
  <link>http://www.billforney.com/blog/something-different,-something-new,-something-blue/</link>
  <description>&lt;p&gt;Amusingly today I’m looking at new cars, hence the blue and new, but that’s not all that’s going on. Today I am starting something new that will change hopefully not just my perception of the world, but others as well. It’s time for change. Let’s do this.&lt;/p&gt; &lt;div id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:ae109daa-da1d-4689-b364-c8a013f9b103" class="wlWriterEditableSmartContent" style="float: none; padding-bottom: 0px; padding-top: 0px; padding-left: 0px; margin: 0px; display: inline; padding-right: 0px"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/different" rel="tag"&gt;different&lt;/a&gt;,&lt;a href="http://technorati.com/tags/new+window" rel="tag"&gt;new window&lt;/a&gt;,&lt;a href="http://technorati.com/tags/blue" rel="tag"&gt;blue&lt;/a&gt;,&lt;a href="http://technorati.com/tags/change" rel="tag"&gt;change&lt;/a&gt;,&lt;a href="http://technorati.com/tags/winds+of+change" rel="tag"&gt;winds of change&lt;/a&gt;,&lt;a href="http://technorati.com/tags/world" rel="tag"&gt;world&lt;/a&gt;,&lt;a href="http://technorati.com/tags/perception" rel="tag"&gt;perception&lt;/a&gt;&lt;/div&gt;</description>
  <author>Bill Forney</author>
  <category>Blog</category>
  <category>Content Creation</category>
  <category>Family &amp; Friends</category>
  <guid isPermaLink="false">http://www.billforney.com/blog/something-different,-something-new,-something-blue/</guid>
  <pubDate>Mon, 09 Nov 2015 04:36:19 GMT</pubDate>
</item>
<item>
  <title>How to open a “new window” in a Windows 10 Universal App</title>
  <link>http://www.billforney.com/blog/how-to-open-a-“new-window”-in-a-windows-10-universal-app/</link>
  <description>&lt;p&gt;I had to dig a little bit to find this. Since not all form factors support multiple windows and tablet mode generally discourages floating windows this is probably buried for a reason, but I wanted to do it anyway so here it is:&lt;/p&gt;&lt;pre class="code"&gt;&lt;p&gt;&lt;span style="background: white; color: black"&gt;            var viewId = 0;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="background: white; color: black"&gt;            &lt;/span&gt;&lt;span style="background: white; color: blue"&gt;var &lt;/span&gt;&lt;span style="background: white; color: black"&gt;newView = &lt;/span&gt;&lt;span style="background: white; color: #2b91af"&gt;CoreApplication&lt;/span&gt;&lt;span style="background: white; color: black"&gt;.CreateNewView();
            &lt;/span&gt;&lt;span style="background: white; color: blue"&gt;await &lt;/span&gt;&lt;span style="background: white; color: black"&gt;newView.Dispatcher.RunAsync(
                &lt;/span&gt;&lt;span style="background: white; color: #2b91af"&gt;CoreDispatcherPriority&lt;/span&gt;&lt;span style="background: white; color: black"&gt;.Normal,
                () =&amp;gt;
                    {
                        &lt;/span&gt;&lt;span style="background: white; color: blue"&gt;var &lt;/span&gt;&lt;span style="background: white; color: black"&gt;frame = &lt;/span&gt;&lt;span style="background: white; color: blue"&gt;new &lt;/span&gt;&lt;span style="background: white; color: #2b91af"&gt;Frame&lt;/span&gt;&lt;span style="background: white; color: black"&gt;();
                        frame.Navigate(&lt;/span&gt;&lt;span style="background: white; color: blue"&gt;typeof&lt;/span&gt;&lt;span style="background: white; color: black"&gt;(&lt;/span&gt;&lt;span style="background: white; color: #2b91af"&gt;YourViewPageType&lt;/span&gt;&lt;span style="background: white; color: black"&gt;), &lt;/span&gt;&lt;span style="background: white; color: blue"&gt;ViewModelDataOrNull&lt;/span&gt;&lt;span style="background: white; color: black"&gt;);
                        &lt;/span&gt;&lt;span style="background: white; color: #2b91af"&gt;Window&lt;/span&gt;&lt;span style="background: white; color: black"&gt;.Current.Content = frame;

                        viewId = &lt;/span&gt;&lt;span style="background: white; color: #2b91af"&gt;ApplicationView&lt;/span&gt;&lt;span style="background: white; color: black"&gt;.GetForCurrentView().Id;

                        &lt;/span&gt;&lt;span style="background: white; color: #2b91af"&gt;ApplicationView&lt;/span&gt;&lt;span style="background: white; color: black"&gt;.GetForCurrentView().Consolidated += &lt;/span&gt;&lt;span style="background: white; color: #2b91af"&gt;App&lt;/span&gt;&lt;span style="background: white; color: black"&gt;.ViewConsolidated;

                        &lt;/span&gt;&lt;span style="background: white; color: #2b91af"&gt;Window&lt;/span&gt;&lt;span style="background: white; color: black"&gt;.Current.Activate();
                    });

            &lt;/span&gt;&lt;span style="background: white; color: blue"&gt;var &lt;/span&gt;&lt;span style="background: white; color: black"&gt;viewShown = &lt;/span&gt;&lt;span style="background: white; color: blue"&gt;await &lt;/span&gt;&lt;span style="background: white; color: #2b91af"&gt;ApplicationViewSwitcher&lt;/span&gt;&lt;span style="background: white; color: black"&gt;.TryShowAsStandaloneAsync(viewId);&lt;/span&gt;&lt;/p&gt;&lt;/pre&gt;
&lt;p&gt;Hopefully that will save someone some digging. &lt;img class="wlEmoticon wlEmoticon-smile" style="border-top-style: none; border-left-style: none; border-bottom-style: none; border-right-style: none" alt="Smile" src="https://www.billforney.com/posts/files/036808d6-86a0-4dde-bf48-7542c71f5856.png"&gt;&lt;/p&gt;
&lt;div id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:45e5b219-8270-4188-8e03-58a588343726" class="wlWriterEditableSmartContent" style="float: none; padding-bottom: 0px; padding-top: 0px; padding-left: 0px; margin: 0px; display: inline; padding-right: 0px"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/Windows+10" rel="tag"&gt;Windows 10&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Universal+Apps" rel="tag"&gt;Universal Apps&lt;/a&gt;,&lt;a href="http://technorati.com/tags/new+window" rel="tag"&gt;new window&lt;/a&gt;&lt;/div&gt;</description>
  <author>Bill Forney</author>
  <category>C#</category>
  <category>Windows 10</category>
  <category>Universal Apps</category>
  <guid isPermaLink="false">http://www.billforney.com/blog/how-to-open-a-“new-window”-in-a-windows-10-universal-app/</guid>
  <pubDate>Thu, 13 Aug 2015 14:59:52 GMT</pubDate>
</item>
<item>
  <title>Handy Developer Tools &amp; Links</title>
  <link>http://www.billforney.com/blog/handy-developer-tools--links/</link>
  <description>&lt;p&gt;There are a lot of tools out there and others have posted lists that are handy. I’m going to put my list of common tools here and try to keep it updated every now and then for my own use as well as anyone else who may like to reference it. Feel free to send me more to add to the list.&lt;/p&gt;&lt;h5&gt;Helpful Blogs&lt;/h5&gt;&lt;ul&gt;&lt;li&gt;&lt;a title="The Morning Brew (Chris Alcock)" href="http://blog.cwa.me.uk/" target="_blank" rel="nofollow"&gt;The Morning Brew (Chris Alcock)&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;h5&gt;Code &amp;amp; Text Editors&lt;/h5&gt;&lt;ul&gt;&lt;li&gt;&lt;a title="Visual Studio" href="http://www.visualstudio.com/" target="_blank" rel="nofollow"&gt;Visual Studio&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a title="Sublime" href="http://www.sublimetext.com/" target="_blank" rel="nofollow"&gt;Sublime&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;h5&gt;Visual Studio Extensions&lt;/h5&gt;&lt;ul&gt;&lt;li&gt;&lt;a title="Visual Studio Web Essentials" href="http://vswebessentials.com/" target="_blank" rel="nofollow"&gt;Web Essentials&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a title="Sidewaffle" href="http://sidewaffle.com/" target="_blank" rel="nofollow"&gt;SideWaffle&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a title="StyleCop" href="http://stylecop.codeplex.com/" target="_blank" rel="nofollow"&gt;StyleCop&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a title="ReSharper" href="http://www.jetbrains.com/resharper/" target="_blank" rel="nofollow"&gt;ReSharper&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;h5&gt;General Utilities&lt;/h5&gt;&lt;ul&gt;&lt;li&gt;&lt;a title="Beyond Compare" href="http://www.scootersoftware.com/index.php" target="_blank" rel="nofollow"&gt;Beyond Compare&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a title="7-Zip" href="http://7-zip.org/" target="_blank" rel="nofollow"&gt;7-Zip&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;h5&gt;Updaters&lt;/h5&gt;&lt;ul&gt;&lt;li&gt;&lt;a title="Microsoft(r) Web Platform Installer" href="http://www.microsoft.com/web/downloads/platform.aspx" target="_blank" rel="nofollow"&gt;Microsoft(r) Web Platform Installer&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a title="Chocolatey" href="http://chocolatey.org/" target="_blank" rel="nofollow"&gt;Chocolatey&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;h5&gt;Web Sites&lt;/h5&gt;&lt;ul&gt;&lt;li&gt;&lt;a title="Epoch Converter" href="http://www.epochconverter.com/" target="_blank" rel="nofollow"&gt;Epoch Converter&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a title="JSON, or JavaScript Object Notation, is an open standard format that uses human-readable text to transmit data objects consisting of attribute–value pairs. It is used primarily to transmit data between a server and web application, as an alternative to XML." href="http://jsonlint.com/" target="_blank" rel="nofollow"&gt;JSON Lint&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a title="Base64Decode" href="http://www.base64decode.org/" target="_blank" rel="nofollow"&gt;Base64Decode&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;</description>
  <author>Bill Forney</author>
  <category>Technology</category>
  <category>Software Development</category>
  <guid isPermaLink="false">http://www.billforney.com/blog/handy-developer-tools--links/</guid>
  <pubDate>Sat, 23 Aug 2014 03:24:29 GMT</pubDate>
</item>
<item>
  <title>MiniBlog</title>
  <link>http://www.billforney.com/blog/miniblog/</link>
  <description>&lt;p&gt;Yes, I went and did it. I converted my blog to &lt;a href="https://github.com/madskristensen/MiniBlog"&gt;MiniBlog&lt;/a&gt;. It is much lighter than BlogEngine.NET. I'm liking the HTML5 and it should be fun to tweak it out a bit more too.&lt;/p&gt; &lt;p&gt;I've nixed some things, my old resume, the VS Achievements that only worked in VS 2012, a few other things. I might bring some back later. Still poking around with this. Stay tuned.&lt;/p&gt; &lt;div id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:d4e6d76c-d28f-4247-bdb3-dab5dbf10572" class="wlWriterEditableSmartContent" style="float: none; padding-bottom: 0px; padding-top: 0px; padding-left: 0px; margin: 0px; display: inline; padding-right: 0px"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/Blog" rel="tag"&gt;Blog&lt;/a&gt;&lt;/div&gt;</description>
  <author>Bill Forney</author>
  <category>Blog</category>
  <guid isPermaLink="false">http://www.billforney.com/blog/miniblog/</guid>
  <pubDate>Thu, 21 Aug 2014 15:43:22 GMT</pubDate>
</item>
<item>
  <title>single page application architecture</title>
  <link>http://www.billforney.com/blog/single-page-application-architecture/</link>
  <description>&lt;p&gt;I've been poking around at a lot of JavaScript over the last year or two and have been refining this layered architecture for setting up applications. The main idea behind it is to cover all the old bases in a way that also reduces the number of requests and performs very well. The layers I am using are setup like so:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Web front end (static HTML)
&lt;ul&gt;
&lt;li&gt;UI views, scripts, and related image files&lt;/li&gt;
&lt;li&gt;Localized strings as JSON files&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Middle tier (WebAPI/SignalR)&lt;/li&gt;
&lt;li&gt;Back end (database/web services)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;So, to explain a little about this layout&amp;hellip; The front end is all static. The files may be generated by a compiler or parser but upon publish they are static and require no server processing. This allows one to put these files into a &lt;a title="The Windows Azure Content Delivery Network (CDN) offers developers a global solution for delivering high-bandwidth content by caching blobs and static content of compute instances at physical nodes in the United States, Europe, Asia, Australia and South America." href="http://www.windowsazure.com/en-us/develop/net/common-tasks/cdn/" rel="nofollow" target="_blank"&gt;CDN&lt;/a&gt; whether it is Azure or Amazon for massive scale and economy. Having the localization files as static &lt;a title="JSON, or JavaScript Object Notation, is an open standard format that uses human-readable text to transmit data objects consisting of attribute&amp;ndash;value pairs. It is used primarily to transmit data between a server and web application, as an alternative to XML." href="http://en.wikipedia.org/wiki/Json" rel="nofollow" target="_blank"&gt;JSON&lt;/a&gt; allows them to be packaged up with the front end and sent along with it. Depending on the configuration and build process these files could even be combined and minified further.&lt;/p&gt;
&lt;p&gt;The middle tier is your standard &lt;a title="ASP.NET Web API is a framework that makes it easy to build HTTP services that reach a broad range of clients, including browsers and mobile devices. ASP.NET Web API is an ideal platform for building RESTful applications on the .NET Framework." href="http://www.asp.net/web-api" rel="nofollow" target="_blank"&gt;WebAPI&lt;/a&gt; and/or &lt;a title="ASP.NET SignalR - Incredibly simple real-time web for .NET" href="http://signalr.net/" rel="nofollow" target="_blank"&gt;SignalR&lt;/a&gt; server side code layer hosted on a standard ASP.NET server, usually Azure Web Sites in my case. This tier is basically an API that provides the site with any dynamic actions and information it needs.&lt;/p&gt;
&lt;p&gt;Finally, the back end consists of a database used by the middle tier, usually a &lt;a title="Windows Azure SQL Database, formerly SQL Azure, is a fully managed relational database service that delivers flexible manageability, includes built-in high availability, offers predictable performance, and supports massive scale-out." href="http://www.windowsazure.com/en-us/services/sql-database/" rel="nofollow" target="_blank"&gt;SQL server&lt;/a&gt; of some kind, and any external web services needed by the middle tier. You could lump the external web services into the middle tier but I prefer to think of them as something separate for the sake of organization.&lt;/p&gt;
&lt;p&gt;There are some interesting issues you run into when implementing this pattern, including how to handle authorization and security trimming. I generally move the navigation page list into a JSON object that can be generated by the API. In this manner you avoid exposing all your pages to the client even though the templates for those pages may exist in your CDN as public files. All of the security should be enforced on the middle tier so that users cannot perform actions they are not supposed to be allowed to do.&lt;/p&gt;
&lt;p&gt;I've found that this model is fast and performs well under load when done properly. The trick is keeping it simple while utilizing all the tooling available to generate the published result. If anyone is interested I could go into more detail about that.&lt;/p&gt;
&lt;div id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:675e7723-9bdb-4105-bf85-ea8555274b94" class="wlWriterEditableSmartContent" style="float: none; margin: 0px; display: inline; padding: 0px;"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/JavaScript" rel="tag"&gt;JavaScript&lt;/a&gt;,&lt;a href="http://technorati.com/tags/single+page+application" rel="tag"&gt;single page application&lt;/a&gt;,&lt;a href="http://technorati.com/tags/SPA" rel="tag"&gt;SPA&lt;/a&gt;,&lt;a href="http://technorati.com/tags/architecture" rel="tag"&gt;architecture&lt;/a&gt;,&lt;a href="http://technorati.com/tags/layers" rel="tag"&gt;layers&lt;/a&gt;,&lt;a href="http://technorati.com/tags/pattern" rel="tag"&gt;pattern&lt;/a&gt;&lt;/div&gt;</description>
  <author>Bill Forney</author>
  <category>JavaScript</category>
  <category>Software Development</category>
  <category>Technology</category>
  <guid isPermaLink="false">http://www.billforney.com/blog/single-page-application-architecture/</guid>
  <pubDate>Tue, 17 Dec 2013 03:22:00 GMT</pubDate>
</item>
<item>
  <title>How to fix green video screen in Windows 8 Consumer Preview and Release Preview</title>
  <link>http://www.billforney.com/blog/how-to-fix-green-video-screen-in-windows-8-consumer-preview-and-release-preview/</link>
  <description>&lt;p&gt;Flash has this problem where it will show up blank or green when using hardware acceleration to display video. You used to be able to turn that off in Flash options from the right click menu, but in IE10 you have to go to the Internet Explorer options’ advanced tab. There’s a checkbox there that you need to check to fix it at the top.&lt;/p&gt;  &lt;p&gt;&lt;a href="/posts/files/image.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="/posts/files/image_thumb.png" width="191" height="244" /&gt;&lt;/a&gt;&lt;/p&gt;</description>
  <author>Bill Forney</author>
  <category>Technology</category>
  <category>Quick Fixes</category>
  <guid isPermaLink="false">http://www.billforney.com/blog/how-to-fix-green-video-screen-in-windows-8-consumer-preview-and-release-preview/</guid>
  <pubDate>Fri, 06 Jul 2012 21:09:33 GMT</pubDate>
</item>
<item>
  <title>The computer furniture rant</title>
  <link>http://www.billforney.com/blog/the-computer-furniture-rant/</link>
  <description>&lt;p&gt;Have you ever noticed that furniture makers always make computer desks with those closed off little cubby holes for the tower? It’s about time someone told them computers need ventilation to work properly. I’ve seen countless computers overheat and die an untimely death due to this lack of understanding of simple common sense.&lt;/p&gt;  &lt;p&gt;Computers have fans in them for a reason: air flow. They take cool air in and expel hot air, all the while keeping the internal case at a constant temperature, in theory. Most of the time though they run hot if they’re more than the little Wally-world special.&lt;/p&gt;  &lt;p&gt;So, furniture companies, please remember to leave plenty of breathing room and exhaust ports for computers in your desks and nooks.&lt;/p&gt;</description>
  <author>Bill Forney</author>
  <category>Technology</category>
  <category>Furniture</category>
  <guid isPermaLink="false">http://www.billforney.com/blog/the-computer-furniture-rant/</guid>
  <pubDate>Fri, 08 Jun 2012 04:36:37 GMT</pubDate>
</item></channel>
</rss>