<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Developing Dane</title><link>https://developingdane.com/</link><description>Recent content on Developing Dane</description><generator>Hugo</generator><language>en-us</language><lastBuildDate>Sat, 24 Feb 2024 03:55:13 +0000</lastBuildDate><atom:link href="https://developingdane.com/index.xml" rel="self" type="application/rss+xml"/><item><title>"Proof" for the period of a simple pendulum using only dimensional analysis</title><link>https://developingdane.com/proof-for-the-period-of-a-simple-pendulum/</link><pubDate>Sat, 24 Feb 2024 03:55:13 +0000</pubDate><guid>https://developingdane.com/proof-for-the-period-of-a-simple-pendulum/</guid><description>&lt;p&gt;This is not a mathematical proof for the period of a simple pendulum. For that you can find the basics in any first year physics book. This is just a thought experiment which I think illustrates the power of simple dimensional analysis.&lt;/p&gt;&#10;&lt;p&gt;Take the following Simple Pendulum. Its Period (&lt;strong&gt;t&lt;/strong&gt;) is the time it takes for the bob to sweep through one complete cycle. Let us make the assumption that the value of &lt;strong&gt;t&lt;/strong&gt; has a deterministic relation with some arrangement of measurable factors. Under this assumption we list the measurable factors.&lt;/p&gt;</description></item><item><title>Exploring Stowage</title><link>https://developingdane.com/exploring-stowage/</link><pubDate>Sun, 27 Mar 2022 03:45:18 +0000</pubDate><guid>https://developingdane.com/exploring-stowage/</guid><description>&lt;p&gt;I originally came across &lt;a href="https://github.com/aloneguid/stowage"&gt;Stowage&lt;/a&gt; on the blog aggregator &lt;a href="https://dotnet.libhunt.com/"&gt;Awesome .NET&lt;/a&gt;. Its github repo has a description which reads &amp;ldquo;Stowage is a bloat-free .NET cloud storage kit that supports at minimum THE major cloud providers.&amp;rdquo; That caught my attention because I&amp;rsquo;d been contemplating how best to modernize and standardize file storage operations in an older .NET application for some time.&lt;/p&gt;&#10;&lt;h4 id="onward"&gt;&#10; Onward&#10; &lt;a href="#onward" class="anchor"&gt;#&lt;/a&gt;&#10;&lt;/h4&gt;&#10;&lt;p&gt;I created the &lt;a href="https://github.com/DaneVinson/StowageExplorer"&gt;StowageExplorer&lt;/a&gt; project to take Stowage for a spin. While adding the &lt;a href="https://www.nuget.org/packages/Stowage/"&gt;NuGet package&lt;/a&gt; I discovered Stowage is .NET 6 only. That ruled it out for my original intent but then I found it had ZERO dependencies. I absolutely loved that so I continued.&lt;/p&gt;</description></item><item><title>JsonEnvelopes .NET Standard Library</title><link>https://developingdane.com/jsonenvelopes/</link><pubDate>Mon, 25 Jan 2021 02:13:36 +0000</pubDate><guid>https://developingdane.com/jsonenvelopes/</guid><description>&lt;h3 id="description"&gt;&#10; Description&#10; &lt;a href="#description" class="anchor"&gt;#&lt;/a&gt;&#10;&lt;/h3&gt;&#10;&lt;p&gt;JsonEnvelopes is a simple .NET Standard library which utilizes a concrete implementation of &lt;a href="https://docs.microsoft.com/en-us/dotnet/api/system.text.json.serialization.jsonconverter-1?view=net-5.0"&gt;&lt;code&gt;JsonCovnverter&amp;lt;T&amp;gt;&lt;/code&gt;&lt;/a&gt; (&lt;a href="https://www.nuget.org/packages/System.Text.Json/"&gt;System.Text.Json&lt;/a&gt;) to serialize and deserialize objects in a way that allows message receivers to be agnostic with respect to message type.&lt;/p&gt;&#10;&lt;h3 id="messaging-in-net"&gt;&#10; Messaging in .NET&#10; &lt;a href="#messaging-in-net" class="anchor"&gt;#&lt;/a&gt;&#10;&lt;/h3&gt;&#10;&lt;p&gt;Any software developer working in the Enterprise space is likely acquainted with messaging. Modern Enterprise applications typically rely heavily on sending and receiving serialized messages. In .NET the serialization and sending of messages is often trivialized by packages such as &lt;a href="https://www.nuget.org/packages/System.Text.Json/"&gt;System.Text.Json&lt;/a&gt; and &lt;a href="https://www.nuget.org/packages/Microsoft.Azure.ServiceBus/"&gt;Microsoft.Azure.ServiceBus&lt;/a&gt; respectively. The more interesting decisions come in designing a receiving strategy for those messages.&lt;/p&gt;</description></item><item><title>Comparing Performance of gRPC, Web API and WCF Services</title><link>https://developingdane.com/service-compare/</link><pubDate>Wed, 13 May 2020 00:13:46 +0000</pubDate><guid>https://developingdane.com/service-compare/</guid><description>&lt;p&gt;I started paying attention to gRPC about a year ago. Almost every gRPC advocate and evangelist I came across touted its performance capabilities as a significant value-add over other available service technologies.&lt;/p&gt;&#10;&lt;p&gt;The release of .NET Core 3.0 came with a new gRPC project template so I dove right in. During my explorations I found myself continually wondering how its performance stacked up against other service types available in .NET. A couple months ago I decided to circle back and satisfy this curiosity.&lt;/p&gt;</description></item><item><title>Configuration in Blazor Client (WASM)</title><link>https://developingdane.com/configuration-in-blazor-client/</link><pubDate>Wed, 04 Mar 2020 15:28:00 +0000</pubDate><guid>https://developingdane.com/configuration-in-blazor-client/</guid><description>&lt;p&gt;I&amp;rsquo;ve been working with Blazor Client (WASM) a fair amount recently and a couple of days ago someone asked me about how to load configuration from a file. I&amp;rsquo;d never had the need for that type of configuration before but it got me curious about what was possible.&lt;/p&gt;&#10;&lt;p&gt;After a little searching I discovered that configuration for Blazor WASM is typically being loaded through an HTTP GET request to a remote resource. That&amp;rsquo;s a completely valid and viable solution but I was specifically curious about loading configuration directly from a file in the Blazor client project, e.g. &lt;code&gt;appsettings.json&lt;/code&gt;.&lt;/p&gt;</description></item><item><title>Exploring LiteDB</title><link>https://developingdane.com/exploring-litedb/</link><pubDate>Sat, 05 Oct 2019 04:11:46 +0000</pubDate><guid>https://developingdane.com/exploring-litedb/</guid><description>&lt;p&gt;Last year I saw a reference to &lt;a href="https://www.litedb.org/"&gt;LiteDB&lt;/a&gt; on &lt;a href="https://dotnet.libhunt.com/"&gt;Awesome .NET&lt;/a&gt;. It described itself as &amp;ldquo;An embedded NoSQL database for .NET&amp;rdquo;. That drew my attention. A short examination of their documents further peaked my interest.&lt;/p&gt;&#10;&lt;p&gt;LiteDB describes its target scenarios in the &lt;a href="https://github.com/mbdavid/LiteDB#where-to-use"&gt;Where to use&lt;/a&gt; section of the GitHub repo&amp;rsquo;s readme.&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Desktop/local small applications&lt;/li&gt;&#10;&lt;li&gt;Application file format&lt;/li&gt;&#10;&lt;li&gt;Small web applications&lt;/li&gt;&#10;&lt;li&gt;One database per account/user data store&lt;/li&gt;&#10;&lt;li&gt;Few concurrent write operations&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;LiteDB will almost always be an inappropriate choice for persistence needs outside of these targets but within them it can be a simple to implement and effective solution.&lt;/p&gt;</description></item><item><title>.NET Core configuration, a deeper dive</title><link>https://developingdane.com/net-core-configuration-deeper-dive/</link><pubDate>Fri, 11 Jan 2019 02:50:33 +0000</pubDate><guid>https://developingdane.com/net-core-configuration-deeper-dive/</guid><description>&lt;p&gt;In my previous post &lt;a href="../net-core-configuration-files/"&gt;.NET Core Configuration Files&lt;/a&gt; I discussed a simple and resilient method of accessing configuration data with .NET Core. In this post I&amp;rsquo;ll explore .NET Core configuration options in greater depth.&lt;/p&gt;&#10;&lt;p&gt;For this discussion let&amp;rsquo;s start with the following &lt;code&gt;appsettings.json&lt;/code&gt; configuration file.&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-json" data-lang="json"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;{&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;favoriteBeerStyle&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;IPA&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;beerOfTheNow&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;name&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;Blacksheep CDA&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;abv&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;6.7&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;fnord&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;nothing to see here&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;brewery&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;name&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;Lucky Labrador Brewing Company&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;location&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;Portland, OR&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;rating&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;9.5&amp;#34;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;}&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;br&gt;&#10;&lt;p&gt;I previously discussed several ways to get information from such configuration. For example, consider the following where &lt;code&gt;configuration&lt;/code&gt; is and instance of &lt;code&gt;Microsoft.Extensions.Configuration.IConfiguration&lt;/code&gt;.&lt;/p&gt;</description></item><item><title>An Early Exploration of Blazor</title><link>https://developingdane.com/blazor/</link><pubDate>Thu, 08 Nov 2018 06:24:59 +0000</pubDate><guid>https://developingdane.com/blazor/</guid><description>&lt;p&gt;My first exposure to Blazor was prior to it having a name. In late 2017 I watched a recording of Steve Sanderson&amp;rsquo;s NDC Oslo 2017 presentation &lt;a href="https://www.youtube.com/watch?v=MiLAE6HMr10"&gt;Web Apps can’t really do that, can they?&lt;/a&gt; He discussed four emerging web technologies being supported by the major browser manufacturers. One of those technologies was Web Assembly (WASM). In Steve&amp;rsquo;s WASM demo he explored using ASP.NET Razor technology directly in the browser by compiling C# to Web Assembly using and open-source C# to C++ compiler. It was quite impressive and people&amp;rsquo;s head&amp;rsquo;s exploded, mine included. Shortly afterwards I discovered that Microsoft had initiated the experimental project &amp;ldquo;Blazor&amp;rdquo;. Since then there&amp;rsquo;s been a dearth of excitement. I finally decided to pull down bits and give Blazor as spin. For me that excitement became infectious.&lt;/p&gt;</description></item><item><title>Vue.js</title><link>https://developingdane.com/vue-js/</link><pubDate>Sun, 09 Sep 2018 04:34:50 +0000</pubDate><guid>https://developingdane.com/vue-js/</guid><description>&lt;p&gt;Several months ago I found myself contemplating the creation of yet another HTML client, this time to help in prototyping a larger application concept I was working on. I wanted the client to be responsive and I didn&amp;rsquo;t want to put a lot of work into it.&lt;/p&gt;&#10;&lt;p&gt;There&amp;rsquo;s a wide variety of excellent frameworks to choose from when building HTML clients. Frameworks such as &lt;a href="https://angular.io/"&gt;Angular&lt;/a&gt;, &lt;a href="https://reactjs.org/"&gt;React&lt;/a&gt; and &lt;a href="https://aurelia.io/"&gt;Aruelia&lt;/a&gt; offer rich feature sets for building amazing web applications but all of them come at a cost, e.g. npm, web pack, development web servers, etc. I wanted something simpler.&lt;/p&gt;</description></item><item><title>My year with a MacBook</title><link>https://developingdane.com/my-year-with-a-macbook/</link><pubDate>Fri, 20 Jul 2018 04:10:23 +0000</pubDate><guid>https://developingdane.com/my-year-with-a-macbook/</guid><description>&lt;p&gt;I&amp;rsquo;m primarily a .NET developer but for a year I worked exclusively on a MacBook using Boot Camp to run Windows 10.&lt;/p&gt;&#10;&lt;p&gt;Like many software companies the one I work for provides its development staff with options for their working computers. My options were a MacBook Pro or a Dell. I&amp;rsquo;d used three different Dell laptops in my career and I disliked every one of them so I went with the MacBook. I&amp;rsquo;ve used OSX in the past and I despised it. I had no interest in using it as my primary OS so I ran Windows 10 on the MacBook hardware using Apple&amp;rsquo;s excellent Boot Camp. Here&amp;rsquo;s the pros and cons I encountered after a year of dedicated use with a MacBook running Windows.&lt;/p&gt;</description></item><item><title>F# / C# Project Comparison</title><link>https://developingdane.com/fsharp-csharp-compare/</link><pubDate>Sun, 18 Mar 2018 00:30:43 +0000</pubDate><guid>https://developingdane.com/fsharp-csharp-compare/</guid><description>&lt;p&gt;My first look into F# was in 2011 when I read &lt;a href="http://shop.oreilly.com/product/9780596153656.do"&gt;Programming F#&lt;/a&gt;. I enjoyed working through that book and I realized that F# had opened the door to functional programming in .NET but at the time C# was vastly superior in both available information and developer experience. I set F# aside.&lt;/p&gt;&#10;&lt;p&gt;Recently I helped interview candidates applying for a principal software engineering position. One candidate (now employee) was very enthusiastic about functional programming in general and F# in particular. His enthusiasm rekindled my interest.&lt;/p&gt;</description></item><item><title>My Latest Exploratory Application, TrackIt</title><link>https://developingdane.com/my-latest-exploratory-application-trackit/</link><pubDate>Sun, 05 Nov 2017 06:05:16 +0000</pubDate><guid>https://developingdane.com/my-latest-exploratory-application-trackit/</guid><description>&lt;p&gt;Every couple of years I settle on the general design for a full-stack application which I then use to explore various technologies and architectural patterns. I refer to these as my exploratory applications. In my 2014 post &lt;a href="https://developingdane.com/recipe_box_is_live/"&gt;RecipeBox is Live&lt;/a&gt; I discuss the public release of one such application.&lt;/p&gt;&#10;&lt;p&gt;A short time ago I made public my latest exploratory application, &lt;a href="https://github.com/DaneVinson/TrackIt"&gt;TrackIt&lt;/a&gt;. In conjunction with the code release I created an &lt;a href="https://www.youtube.com/watch?v=2fLqZI1M-fY"&gt;8 minute walk-through video&lt;/a&gt;. This is the first such video I&amp;rsquo;ve ever made. It&amp;rsquo;s not perfect but I&amp;rsquo;m fairly satisfied with the results.&lt;/p&gt;</description></item><item><title>Getting Squirrelly...again</title><link>https://developingdane.com/squirrel-and-nuts-the-clickonce-free-sequel-2/</link><pubDate>Sat, 05 Aug 2017 02:18:57 +0000</pubDate><guid>https://developingdane.com/squirrel-and-nuts-the-clickonce-free-sequel-2/</guid><description>&lt;h2 id="previously"&gt;&#10; Previously&#10; &lt;a href="#previously" class="anchor"&gt;#&lt;/a&gt;&#10;&lt;/h2&gt;&#10;&lt;p&gt;I first investigated &lt;a href="https://github.com/Squirrel/Squirrel.Windows"&gt;Squirrel.Windows&lt;/a&gt; as a technology for Windows application deployment two years ago during a search for an alternative to &lt;a href="https://msdn.microsoft.com/en-us/library/142dbbz4(v=vs.90).aspx"&gt;ClickOnce&lt;/a&gt; (&lt;a href="https://developingdane.com/click_once_for_my_2_cents/"&gt;my 2 cents&lt;/a&gt;). I documented some of those efforts in my post &lt;a href="https://developingdane.com/click_once_squirrel_and_nuts/"&gt;ClickOnce, Squirrel and Nuts&lt;/a&gt;. In that post I expressed a very favorable opinion of Squirrel but I also I noted some areas of dissatisfaction in the discussion and conclusions.&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Latest version of the deployed application was not always run&lt;/li&gt;&#10;&lt;li&gt;Cleanup of previous application versions wasn&amp;rsquo;t working&lt;/li&gt;&#10;&lt;li&gt;Instability with &lt;code&gt;releasify&lt;/code&gt; command&lt;/li&gt;&#10;&lt;li&gt;Reliance on historical &lt;code&gt;.nupkg&lt;/code&gt; files from the &lt;code&gt;Releases&lt;/code&gt; folder&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="lately"&gt;&#10; Lately&#10; &lt;a href="#lately" class="anchor"&gt;#&lt;/a&gt;&#10;&lt;/h2&gt;&#10;&lt;p&gt;Recently I again went in search of ClickOnce replacement options. It became quickly apparent not much had changed. Squirrel still looked to me to be the best available alternative so I took another dive. I examined the state of the issues previously discussed then developed a basic strategy for controlling Squirrel deployed releases.&lt;/p&gt;</description></item><item><title>Comparing Data Stores</title><link>https://developingdane.com/comparing-data-stores/</link><pubDate>Sun, 09 Apr 2017 05:20:19 +0000</pubDate><guid>https://developingdane.com/comparing-data-stores/</guid><description>&lt;h3 id="background"&gt;&#10; Background&#10; &lt;a href="#background" class="anchor"&gt;#&lt;/a&gt;&#10;&lt;/h3&gt;&#10;&lt;p&gt;I&amp;rsquo;ve found myself trying to quantify differences between available data store options in .NET many times over the last decade. Historically I&amp;rsquo;ve performed such comparisons using a simple Console Application project in Visual Studio. I&amp;rsquo;d write test methods to provide comparable data for the data stores under evaluation, analyze the data, select for implementation and move forward. I&amp;rsquo;ve experienced success with this pattern for many years.&lt;/p&gt;&#10;&lt;p&gt;Recently, I found myself about to write code for yet another such comparison, once again I was re-inventing some testing methodologies. This time I decided to create (and document) an abstraction layer around the concept of a data store. My thinking was to provide a single testable abstraction that could be implemented in any .NET data storage technology. Not only would future tests be easier to write but the empirical data they generated would be standardized and thus comparable.&lt;/p&gt;</description></item><item><title>Scheduling Azure WebJobs</title><link>https://developingdane.com/scheduled-azure-web-jobs/</link><pubDate>Mon, 20 Mar 2017 04:23:29 +0000</pubDate><guid>https://developingdane.com/scheduled-azure-web-jobs/</guid><description>&lt;h3 id="scheduled-azure-webjob-options"&gt;&#10; Scheduled Azure WebJob Options&#10; &lt;a href="#scheduled-azure-webjob-options" class="anchor"&gt;#&lt;/a&gt;&#10;&lt;/h3&gt;&#10;&lt;p&gt;I had a need to understand the options for scheduling Azure WebJobs. I quickly found the Azure documentation article &lt;a href="https://docs.microsoft.com/en-us/azure/app-service-web/web-sites-create-web-jobs"&gt;Run background tasks with WebJobs&lt;/a&gt; which provides two possible methods for scheduling the execution of a WebJob, CRON expression and the use of Azure Scheduler. Those options were a good start and I&amp;rsquo;d like to discuss my thoughts on them and present additional possibilities.&lt;/p&gt;&#10;&lt;h6 id="option-1"&gt;&#10; Option 1&#10; &lt;a href="#option-1" class="anchor"&gt;#&lt;/a&gt;&#10;&lt;/h6&gt;&#10;&lt;p&gt;For CRON expressions the article describes the use of a &lt;code&gt;settings.job&lt;/code&gt; file. What&amp;rsquo;s not clear in that article is where this file originates. It turns out its added to your WebJob when you create a Triggered, Scheduled WebJob through the Azure Portal.&lt;/p&gt;</description></item><item><title>Azure App Service deploy from VS with Fiddler running</title><link>https://developingdane.com/azure-app-service-deploy-from-vs-with-fiddler-running/</link><pubDate>Mon, 20 Feb 2017 05:53:55 +0000</pubDate><guid>https://developingdane.com/azure-app-service-deploy-from-vs-with-fiddler-running/</guid><description>&lt;p&gt;Yes I did. I attempted to deploy to an Azure Web App from VS2015 while Fiddler was running.&lt;/p&gt;&#10;&lt;p&gt;Of course it failed. More importantly I received a very generic connection error. This is exactly what you&amp;rsquo;d expect from such a simple &amp;ldquo;attack&amp;rdquo;.&lt;/p&gt;&#10;&lt;p&gt;Azure App Service +1&lt;/p&gt;</description></item><item><title>.NET Core Configuration Files</title><link>https://developingdane.com/net-core-configuration-files/</link><pubDate>Sun, 11 Dec 2016 05:32:40 +0000</pubDate><guid>https://developingdane.com/net-core-configuration-files/</guid><description>&lt;p&gt;For this discussion let us assume we wish to store configuration in the file &lt;code&gt;config.json&lt;/code&gt;.&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-json" data-lang="json"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;{&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;epicswords&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;{&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;stormbringer&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;elric&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;excalibur&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;arthur&amp;#34;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;}&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;If you start investigating configuration for .NET Core you&amp;rsquo;ll discover reading from &lt;code&gt;.json&lt;/code&gt; files is extremely easy. Simply chain-in a call to the &lt;code&gt;AddJsonFile&lt;/code&gt; method when you&amp;rsquo;re initializing your &lt;code&gt;ConfigurationBuilder&lt;/code&gt; at app start-up.&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-csharp" data-lang="csharp"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;Configuration&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="n"&gt;ConfigurationBuilder&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;AddJsonFile&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;config.json&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Build&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Access to the data read from &lt;code&gt;config.json&lt;/code&gt; is again a simple matter.&lt;/p&gt;</description></item><item><title>Azure App Service Editor</title><link>https://developingdane.com/azure-app-service-editor/</link><pubDate>Sat, 08 Oct 2016 06:32:00 +0000</pubDate><guid>https://developingdane.com/azure-app-service-editor/</guid><description>&lt;p&gt;I recently stumbled across an item under Azure App Service&amp;rsquo;s Development properties called &amp;ldquo;App Service Editor (preview)&amp;rdquo;. It can be found in the &lt;code&gt;Development Tools&lt;/code&gt; section of any Azure App Service application&amp;rsquo;s properties.&lt;/p&gt;&#10;&lt;p&gt;&lt;figure&gt;&#10; &lt;img src="https://developingdane.com/content/images/2016/10/app_service_editor_selection.jpg" alt="" /&gt;&#10; &#10;&lt;/figure&gt;&#10;&lt;/p&gt;&#10;&lt;p&gt;Of course I clicked it. I found this.&lt;/p&gt;&#10;&lt;p&gt;&lt;figure&gt;&#10; &lt;img src="https://developingdane.com/content/images/2016/10/app_service_editor.jpg" alt="" /&gt;&#10; &#10;&lt;/figure&gt;&#10;&lt;/p&gt;&#10;&lt;p&gt;I&amp;rsquo;ve been using Visual Studio Code for various tasks since its initial release and my first thought was that this looked like Code in a browser with the open directory set to &lt;code&gt;wwwroot&lt;/code&gt; on my Azure Web App. However, I shortly realized I was looking at Visual Studio Monaco.&lt;/p&gt;</description></item><item><title>My First Ghosting</title><link>https://developingdane.com/my-first-ghosting/</link><pubDate>Wed, 10 Aug 2016 05:24:37 +0000</pubDate><guid>https://developingdane.com/my-first-ghosting/</guid><description>&lt;p&gt;I&amp;rsquo;m trying out &lt;a href="https://ghost.org/"&gt;Ghost&lt;/a&gt; for the first time. I&amp;rsquo;ve wanted to find an alternative to &lt;a href="https://www.blogger.com"&gt;Blogger&lt;/a&gt; for a while now but just hadn&amp;rsquo;t put the effort into it. Blogger is tremendously easy to blog with but the presentation of the blog itself really shows its age. I wanted to find something with the ease of Blogger&amp;rsquo;s editing and at its price point (free) but with modern aesthetics and behaviors. I researched my choices and consistently found Ghost at or near the top of most lists. On a &lt;a href="http://www.hanselman.com/blog/UPDATEDFor2015HowToInstallTheNodejsGhostBlogSoftwareOnAzureWebAppsAndTheDeployToAzureButton.aspx"&gt;tip from Scott Hanselman&lt;/a&gt; I used the Deploy to Azure button at the &lt;a href="https://github.com/AzureWebApps/Ghost-Azure"&gt;Ghost-Azure&lt;/a&gt; GitHub repo. It worked beautifully and I had an instance up at &lt;a href="http://developingdane.azurewebsites.net"&gt;http://developingdane.azurewebsites.net&lt;/a&gt; within minutes.&lt;/p&gt;</description></item><item><title>A Walk Through Azure Functions</title><link>https://developingdane.com/a_walk_through_azure_functions/</link><pubDate>Wed, 06 Jul 2016 17:57:00 +0000</pubDate><guid>https://developingdane.com/a_walk_through_azure_functions/</guid><description>&lt;h3 id="a-rocky-start"&gt;&#10; A Rocky Start&#10; &lt;a href="#a-rocky-start" class="anchor"&gt;#&lt;/a&gt;&#10;&lt;/h3&gt;&#10;&lt;p&gt;I saw the initial announcement for Azure Functions in one of the Azure newsletters. I watched two channel9 videos and read what documentation I could find. I even emailed a friend about it. I was pretty excited.&lt;/p&gt;&#10;&lt;p&gt;My first experience with Azure Functions was a couple months back. It did not go well. I selected a C# HTTP Trigger template as my first function type and the pain began. Nothing worked as expected and I was met with frustration at literally every level. By the end of the night I&amp;rsquo;d decided the Azure Portal&amp;rsquo;s Blade for Azure Functions had some significant usability and stability issues. I ended the night extremely frustrated.&lt;/p&gt;</description></item><item><title>Node Development on Windows</title><link>https://developingdane.com/node_development_on_windows/</link><pubDate>Sat, 09 Apr 2016 04:32:00 +0000</pubDate><guid>https://developingdane.com/node_development_on_windows/</guid><description>&lt;p&gt;Until the long file name issue is fixed node.js development on a Windows machine is going to continue to suck.&lt;/p&gt;&#10;&lt;p&gt;That is all.&lt;/p&gt;</description></item><item><title>Azure Resource Naming</title><link>https://developingdane.com/azure_resource_naming/</link><pubDate>Fri, 01 Jan 2016 04:37:00 +0000</pubDate><guid>https://developingdane.com/azure_resource_naming/</guid><description>&lt;p&gt;On several occasions I’ve had issues with the naming of my Azure resources. The most annoying of these issues was when I’d created a resource for prototyping in one subscription, deleted it and then attempted to recreate it with the same name under a different subscription only to discover that the name had been “reserved” for some period of time under the initial subscription. After I was bitten by this issue a couple times I went in search of documentation for the timings for such name reservations but came up wanting. A post to the MSDN forums confirmed that no such documentation exists so I decided to create it myself.&lt;/p&gt;</description></item><item><title>ClickOnce, Squirrel and Nuts</title><link>https://developingdane.com/click_once_squirrel_and_nuts/</link><pubDate>Sat, 24 Oct 2015 00:14:00 +0000</pubDate><guid>https://developingdane.com/click_once_squirrel_and_nuts/</guid><description>&lt;h3 id="background"&gt;&#10; Background&#10; &lt;a href="#background" class="anchor"&gt;#&lt;/a&gt;&#10;&lt;/h3&gt;&#10;&lt;p&gt;In a &lt;a href="https://developingdane.com/click_once_for_my_2_cents/"&gt;post two years ago&lt;/a&gt; I expressed my admiration of ClickOnce. At the time we&amp;rsquo;d experienced years of tremendous success using it as our client application&amp;rsquo;s primary deployment mechanism and since that time it has not faltered.&lt;/p&gt;&#10;&lt;p&gt;I now regret to say that over the last year I&amp;rsquo;ve seen evidence that makes me question continued reliance on ClickOnce. I think its life-cycle may be coming to end. Though that saddens me I understand that in the tech world all technology is transient and the best ideas don&amp;rsquo;t always last as long as they should (see Silverlight). Data, however, must continue flowing.&lt;/p&gt;</description></item><item><title>Inital thoughts on Visual Studio 2015 RTM: Not Ready for Prime Time</title><link>https://developingdane.com/inital_thoughts_on_visual_studio_2015_rtm_not_ready_for_prime_time/</link><pubDate>Thu, 03 Sep 2015 03:45:00 +0000</pubDate><guid>https://developingdane.com/inital_thoughts_on_visual_studio_2015_rtm_not_ready_for_prime_time/</guid><description>&lt;p&gt;I&amp;rsquo;m a HUGE fan of Visual Studio. In my opinion it is the best IDE available by a wide margin. I&amp;rsquo;ve been a heavy user of every version since VS2003 and I dabbled in several previous to that. I&amp;rsquo;ve anxiously awaited each new release and then migrated immediately and I&amp;rsquo;d always been impressed, until now. Put bluntly Visual Studio 2015 wasn&amp;rsquo;t ready for release. I should have realized this when I was watching a video a couple weeks ago in which the presenter was using the fresh-off-the-presses VS2015 RTM. Over the course of the twenty minute video he encountered three different VS bugs he had to work around. I didn&amp;rsquo;t learn from that and went ahead to install it as my primary (only) version of Visual Studio on a newly formatted Windows 8.1 machine. I&amp;rsquo;ve been using that machine daily now for just over two weeks and I routinely encounter issues in VS2015 Enterprise. Here are some of my concerns so far.&lt;/p&gt;</description></item><item><title>Microsoft Build 2015</title><link>https://developingdane.com/microsoft_build_2015/</link><pubDate>Tue, 19 May 2015 03:24:00 +0000</pubDate><guid>https://developingdane.com/microsoft_build_2015/</guid><description>&lt;h3 id="pre-build"&gt;&#10; Pre-Build&#10; &lt;a href="#pre-build" class="anchor"&gt;#&lt;/a&gt;&#10;&lt;/h3&gt;&#10;&lt;p&gt;Just as last year my flight from Portland to San Francisco was delayed due to foggy conditions in the bay area (note to self: no further morning flights to SFO). This year my wife Lynda accompanied me and we finally landed in SFO around 1:00 PM only an hour late. The flight was smooth and easy except the landing where the pilot gave us the hardest landing I&amp;rsquo;ve personally experience in a flight. Just as last year the weather in San Francisco was identical to the weather left behind in Portland. In stark contrast to last year that weather was sunny skies and temperatures in the mid 70&amp;rsquo;s.&lt;/p&gt;</description></item><item><title>Handy Windows Shortcut</title><link>https://developingdane.com/handy_windows_shortcut/</link><pubDate>Sun, 10 May 2015 06:11:00 +0000</pubDate><guid>https://developingdane.com/handy_windows_shortcut/</guid><description>&lt;p&gt;In File Explorer hold Shift+Right-Click on any selected item or group of items and you&amp;rsquo;ll find the context menu item &amp;ldquo;Copy as path&amp;rdquo;. Selecting this will add the path strings for the selected items to your clipboard. For example the image below shows a folder and two files selected inside the folder C:\temp\Test.&lt;/p&gt;&#10;&lt;p&gt;&lt;a href="http://4.bp.blogspot.com/-y8YFetZ7irs/VU71cTmQHPI/AAAAAAAAEPY/mzWzD7vxbPc/w411-h447-no/copy_as_path_shortcut.jpg"&gt;&lt;figure&gt;&#10; &lt;img src="https://4.bp.blogspot.com/-y8YFetZ7irs/VU71cTmQHPI/AAAAAAAAEPY/mzWzD7vxbPc/w411-h447-no/copy_as_path_shortcut.jpg" alt="" /&gt;&#10; &#10;&lt;/figure&gt;&#10;&lt;/a&gt;&#10;Selecting &amp;ldquo;Copy as path&amp;rdquo; adds the following to the clipboard:&lt;/p&gt;&#10;&lt;p&gt;&amp;ldquo;C:\temp\Test\Data&amp;rdquo;&lt;br/&gt;&#10;&amp;ldquo;C:\temp\Test\AnImage.bmp&amp;rdquo;&lt;br/&gt;&#10;&amp;ldquo;C:\temp\Test\Archive.zip&amp;rdquo;&lt;/p&gt;</description></item><item><title>Comparison of Empty Versus Web API ASP.NET Web Application Templates (VS 2013)</title><link>https://developingdane.com/comparison_of_empty_versus_web_api_asp_net_web_application_templates_vs_2013/</link><pubDate>Sat, 11 Apr 2015 05:49:00 +0000</pubDate><guid>https://developingdane.com/comparison_of_empty_versus_web_api_asp_net_web_application_templates_vs_2013/</guid><description>&lt;p&gt;A quick comparison of the complexity of Web API versus Empty templates in ASP.NET Web Application creation. Values were recorded through inspection of the projects and the project folders after a successful debug compile.&lt;/p&gt;&#10;&lt;p&gt;Empty template, Web API core references&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;NuGet Packages: 5&lt;/li&gt;&#10;&lt;li&gt;References: 22&lt;/li&gt;&#10;&lt;li&gt;Files: 61&lt;/li&gt;&#10;&lt;li&gt;Folders: 33&lt;/li&gt;&#10;&lt;li&gt;Size: 12.3 MB&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;Web API template, MVC and Web API core references&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;NuGetPackages: 34&lt;/li&gt;&#10;&lt;li&gt;References: 48&lt;/li&gt;&#10;&lt;li&gt;Files: 374&lt;/li&gt;&#10;&lt;li&gt;Folders: 157&lt;/li&gt;&#10;&lt;li&gt;Size: 62.3 MB&lt;/li&gt;&#10;&lt;/ul&gt;</description></item><item><title>Azure SQL Performance Level Comparison</title><link>https://developingdane.com/azure_sql_performance_level_comparison/</link><pubDate>Thu, 26 Mar 2015 19:48:00 +0000</pubDate><guid>https://developingdane.com/azure_sql_performance_level_comparison/</guid><description>&lt;p&gt;&lt;strong&gt;Abstract&lt;/strong&gt;&lt;br/&gt;&#10;Currently Azure SQL allows you to configure your database in one of three service tiers, i.e. Basic, Standard and Premium. The service tiers each allow you to select one of several performance levels. In all you have eight possible performance levels; Basic, S0, S1, S2, S3, P1, P2, P3. The goal of this exercise was to provide some quantification of these performance levels.&lt;/p&gt;&#10;&lt;p&gt;&lt;strong&gt;Setup&lt;/strong&gt;&lt;br/&gt;&#10;Test System: Azure VM with Windows Server 2012 R2 and SQL Server 2014.&#10;Database: SQL database with a complex history table (many columns) which held ~250K records.&#10;Client: SQL Server Mangment Studio (SSMS) hosted on the Test System.&lt;/p&gt;</description></item><item><title>Boeing's Big Data</title><link>https://developingdane.com/boeing_s_big_data/</link><pubDate>Sat, 21 Feb 2015 07:40:00 +0000</pubDate><guid>https://developingdane.com/boeing_s_big_data/</guid><description>&lt;p&gt;I recently attended the seminar CloudFest Azure Workshop at the Microsoft offices in downtown Portland, OR. The event was hosted by &lt;a href="http://www.nwcadence.com/"&gt;Northwest Cadence&lt;/a&gt; and the &lt;a href="http://www.marquamgroup.com/"&gt;Marquam Group&lt;/a&gt; and had two tracts, Dev/Ops and Azure Active Directory. I attended AAD and ended up leaving half way through the day very disappointed.&lt;/p&gt;&#10;&lt;p&gt;Despite my disappointment with the event as a whole, the opening presentation by Northwest Cadence&amp;rsquo;s &lt;a href="http://blog.nwcadence.com/author/stevenborg/"&gt;Steven Borg&lt;/a&gt; was good and he gave a story that blew my mind. He described an Azure seminar he&amp;rsquo;d recently attended where the subject of big data was discussed. In that seminar he met an engineer form Boeing who told him they have engines with IoT devices collecting 1 TB of data per hour of operation. That&amp;rsquo;s 1 TB per engine, per plane, per hour in flight. That&amp;rsquo;s quite simply a crazy amount of data.&lt;/p&gt;</description></item><item><title>RecipeBox is Live</title><link>https://developingdane.com/recipe_box_is_live/</link><pubDate>Sun, 21 Sep 2014 06:55:00 +0000</pubDate><guid>https://developingdane.com/recipe_box_is_live/</guid><description>&lt;p&gt;I spend time most weekends programming, typically in the evenings over a craft beer at my &lt;a href="https://luckylab.com/quimby-beer-hall/"&gt;favorite pub&lt;/a&gt;. During these sessions I occasionally perform pressing tasks for my job but most often I use the time to explore and further my craft. Sometimes I watch videos, others I read but mostly I write code.&lt;/p&gt;&#10;&lt;p&gt;During these exploratory development sessions I like to work with or towards a fully functional application. Hello world style apps are useful for demonstrating components and features but you never truly understand such components until you integrate them into a more full-featured application. A year ago I started the latest of of my exploratory development applications, the fourth in ten years. The new project I named RecipeBox.&lt;/p&gt;</description></item><item><title>First Azure Database</title><link>https://developingdane.com/first_azure_database/</link><pubDate>Mon, 28 Jul 2014 05:33:00 +0000</pubDate><guid>https://developingdane.com/first_azure_database/</guid><description>&lt;p&gt;Getting my feet wet with Azure SQL tonight and I just created my first ever database on the platform. The first step was to create a new server instance since I did not yet have a hosting server. The second page of the creation prompts you to provide credentials for the new server. With no instructions about what to use as a &amp;ldquo;log in name&amp;rdquo; I used my gmail account as I would for almost any account name. The database created successfully but I quickly found I couldn&amp;rsquo;t access it at all. I just kept getting authentication errors. I noticed in one of the errors that the user name reported in the failure was the login name I&amp;rsquo;d initially entered with the &amp;ldquo;@gmail.com&amp;rdquo; truncated. This made me wonder if Azure was understanding the &amp;ldquo;@&amp;rdquo; character as a domain indicator.&lt;/p&gt;</description></item><item><title>Travels on the Source Control Highway</title><link>https://developingdane.com/travels_on_the_source_control_highway/</link><pubDate>Sat, 12 Apr 2014 06:33:00 +0000</pubDate><guid>https://developingdane.com/travels_on_the_source_control_highway/</guid><description>&lt;p&gt;Whether you love your source control system or it drives you completely mad there&amp;rsquo;s no denying it&amp;rsquo;s one of the most important tools you have as a software developer. Over the years I&amp;rsquo;ve used several source control software packages, even going so far as to dabble with writing one of my own. They&amp;rsquo;ve all had their pluses and minus but I&amp;rsquo;ve finally arrived at one I&amp;rsquo;m satisfied with.&lt;/p&gt;&#10;&lt;p&gt;My source control software experience began when I took my first job as a software developer in 1999. That system was PVCS Version Manager. I don&amp;rsquo;t remember exactly what version of PVCS we used then but my first impressions were not positive. It was written in Java and the UI was horrific. Every task was painful and files would sporadically appear locked forcing the need to contact the administrator (which eventually became me). In short, I hated it. Our company eventually moved to a newer version of PVCS which improve the situation but still it wasn&amp;rsquo;t close to even a &amp;ldquo;good&amp;rdquo; rating.&lt;/p&gt;</description></item><item><title>Microsoft Build 2014 (#bldwin)</title><link>https://developingdane.com/microsoft_build_2014_bldwin/</link><pubDate>Thu, 10 Apr 2014 20:11:00 +0000</pubDate><guid>https://developingdane.com/microsoft_build_2014_bldwin/</guid><description>&lt;h3 id="pre-build"&gt;&#10; Pre-Build&#10; &lt;a href="#pre-build" class="anchor"&gt;#&lt;/a&gt;&#10;&lt;/h3&gt;&#10;&lt;p&gt;I left home for Build 2014 on the morning of April Fool&amp;rsquo;s Day after only a couple hours of sleep. I arrived at PDX around 09:00 with my flight to San Francisco scheduled to leave at 11:40. I got through security and settled in at the gate ready to read wile away the remaining time. Around 10:30 they announced my flight was delayed until 12:50. About an hour later they announced the flight had been delayed until 14:10. We finally stared boarding at around 14:30. I kept waiting for someone to say &amp;ldquo;April Fools&amp;rdquo; but no such luck. Not a great start to my trip.&lt;/p&gt;</description></item><item><title>Visual Studio 2013 HTML Editor...AAARRRRRGGG!</title><link>https://developingdane.com/visual_studio_2013_html_editor_aaarrrrrggg/</link><pubDate>Thu, 27 Mar 2014 23:11:00 +0000</pubDate><guid>https://developingdane.com/visual_studio_2013_html_editor_aaarrrrrggg/</guid><description>&lt;p&gt;The first version of Visual Studio I used heavily was VS 2003 and since then I&amp;rsquo;ve used every version typically installing them immediately upon RTM, sometimes even before. I&amp;rsquo;ve loved every version and each one has become progressively better IMO. Historically I&amp;rsquo;ve spent very little time working directly with HTML files focusing instead on SOA, desktop, and/or Silverlight applications and components. However, over the last year I&amp;rsquo;ve been doing quite a bit of work with HTML and I have to say I&amp;rsquo;m a bit disappointed in the out of the box experience Visual Studio provides with its HTML editor (at least in VS 2013). The primary cause of my disappointment stems from the implementation of auto-completion features. Auto-completion is a feature I love when working with C# code but with HTML it gets in the way FAR too often. Let&amp;rsquo;s look at a couple examples that make me gnash my teeth almost every time.&lt;/p&gt;</description></item><item><title>Lenovo Thinkpad X1 Carbon follow-up</title><link>https://developingdane.com/lenovo_thinkpad_x1_carbon_follow_up/</link><pubDate>Tue, 18 Mar 2014 22:55:00 +0000</pubDate><guid>https://developingdane.com/lenovo_thinkpad_x1_carbon_follow_up/</guid><description>&lt;p&gt;I&amp;rsquo;ve had my Lenovo Thinkpad X1 Carbon for almost exactly a year now so I thought I post a quick follow-up to the &lt;a href="https://developingdane.com/lenovo_thinkpad_x1_carbon/"&gt;original entry&lt;/a&gt; I posted last year.&lt;/p&gt;&#10;&lt;p&gt;First, the keyboard. Within a matter of hours using the original keyboard the enter key started sticking. A new keyboard was ordered and installed and I&amp;rsquo;ve had zero issues with it since. I didn&amp;rsquo;t originally think I would like the X1&amp;rsquo;s keyboard due to the separated key layout but I have to admit I love it. I find it very easy to use with just the right amount of tactile feedback for my tastes. It appears my original keyboard troubles were due to a single defective device and not something endemic in the design. Whew!&lt;/p&gt;</description></item><item><title>Early Impressions of TypeScript</title><link>https://developingdane.com/early_impressions_of_type_script/</link><pubDate>Sat, 01 Mar 2014 00:07:00 +0000</pubDate><guid>https://developingdane.com/early_impressions_of_type_script/</guid><description>&lt;p&gt;I&amp;rsquo;ve been playing around with TypeScript for several weeks now and, overall, my early impressions are quite favorable. The typing system and its integration with Visual Studio are very nice and seem quite natural to me after working with C# for the last several years. I also like that it produces plain JavaScript as output. I believe this makes more sense than something like Google&amp;rsquo;s Dart because I simply don&amp;rsquo;t believe anything is going to dethrone JavaScript as the top language for web development even if that language provides a superior programming model (see Silverlight). That said I do have a couple of issues with TypeScript.&lt;/p&gt;</description></item><item><title>ng-conf 2014</title><link>https://developingdane.com/ng_conf_2014/</link><pubDate>Fri, 24 Jan 2014 00:14:00 +0000</pubDate><guid>https://developingdane.com/ng_conf_2014/</guid><description>&lt;p&gt;I spent two days last week sitting in on the online stream of ng-conf 2014 the first ever AngularJS conference. There was a ton of presentations and, as is always the case at these things, some were great and some were lacking. Overall I continue to be impressed with Angular and what it brings to the table.&lt;/p&gt;&#10;&lt;p&gt;A few notes I had.&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Firebase! Wow that looks incredible. If you haven&amp;rsquo;t seen it and what they called &amp;ldquo;three-way binding&amp;rdquo; you should go check it out. Very impressive.&lt;/li&gt;&#10;&lt;li&gt;Almost every person presenting at the conference was on a Mac. It&amp;rsquo;s seems quite odd to me that most videos I&amp;rsquo;ve seen on Angular have been done by a developer using a Mac. I&amp;rsquo;m not a Microsoft &amp;ldquo;fan boy&amp;rdquo; by any means but I am an Apple hater and I simply can&amp;rsquo;t understand how anyone could use Visual Studio then go back to developing with some other IDE. My suspicion is that a majority of Angular programmers are Microsoft haters and Apple fan boys. Que sera, sera I guess.&lt;/li&gt;&#10;&lt;li&gt;I was not a fan of the twenty minute session format. Twenty minutes is simply too little time to do any kind of a deep dive into code and most of the presentations reflected that fact. There was very little in the way of actual code shown during the presentations. The vast majority were simply Power Point style slide shows.&lt;/li&gt;&#10;&lt;/ul&gt;</description></item><item><title>Early Impressions of AngularJS</title><link>https://developingdane.com/early_impressions_of_angular_js/</link><pubDate>Sat, 07 Dec 2013 08:52:00 +0000</pubDate><guid>https://developingdane.com/early_impressions_of_angular_js/</guid><description>&lt;p&gt;Understand first, I&amp;rsquo;ve only been working with &lt;a href="http://angularjs.org/"&gt;Angular&lt;/a&gt; in my free time over the last couple weeks.&lt;/p&gt;&#10;&lt;p&gt;With that said I must admit I&amp;rsquo;m REALLY impressed! Very exciting framework. I dove into &lt;a href="http://knockoutjs.com/"&gt;Knockout&lt;/a&gt; quite extensively a while back and I have high regard for that framework. However, I&amp;rsquo;m finding Angular seems to be a much better solution for the problem spaces I typically find myself working in. Simply put Angular addresses not only data binding (which originally lead me to Knockout) but also a host of issues which arise when trying to create an &amp;ldquo;application&amp;rdquo;.&lt;/p&gt;</description></item><item><title>ASP.NET Web API doesn't play nice with Entity Framework's dynamic proxy classes.</title><link>https://developingdane.com/asp_net_web_api_doesn_t_play_nice_with_entity_framework_s_dynamic_proxy_classes/</link><pubDate>Mon, 14 Oct 2013 03:49:00 +0000</pubDate><guid>https://developingdane.com/asp_net_web_api_doesn_t_play_nice_with_entity_framework_s_dynamic_proxy_classes/</guid><description>&lt;p&gt;I have a Web API project which leverages an SQL database through Entity Framework. Pretty standard Microsoft technology stacks I&amp;rsquo;ve been using for years. When using EF I&amp;rsquo;ve historically disabled lazy loading and proxy generation due to lack of need for those features. This project I left them enabled. I quickly started getting serialization exceptions from my controller. A little googling and I found this is a known issue with the use of EF dynamic proxies and serialization (specifically JSON). Infinite reference loops can and often do appear in EF entities. Take the following example.&lt;/p&gt;</description></item><item><title>The Death of FitTrack</title><link>https://developingdane.com/the_death_of_fit_track/</link><pubDate>Sat, 28 Sep 2013 06:19:00 +0000</pubDate><guid>https://developingdane.com/the_death_of_fit_track/</guid><description>&lt;p&gt;While working on the MVC implementation for my FitTrack application I googled &amp;ldquo;cottage cheese&amp;rdquo; to cross reference a menu item entry. This is what I got.&lt;/p&gt;&#10;&lt;p&gt;&lt;a href="http://2.bp.blogspot.com/-iT527Goh1b4/Ug8Ydf4OFkI/AAAAAAAACFI/XjndGqBAMbk/s1600/google.cottage+cheese.jpg"&gt;&lt;figure&gt;&#10; &lt;img src="http://2.bp.blogspot.com/-iT527Goh1b4/Ug8Ydf4OFkI/AAAAAAAACFI/XjndGqBAMbk/s640/google.cottage&amp;#43;cheese.jpg" alt="" /&gt;&#10; &#10;&lt;/figure&gt;&#10;&lt;/a&gt;&#10;That search was essentially the death of my FitTrack application.&#10;Notice the variants of cottage cheese you get if you select the drop down arrow.&#10;&lt;a href="http://1.bp.blogspot.com/-4PRvZFiBBvQ/Ug8YsZ_CnoI/AAAAAAAACFM/eM7yc2wgcww/s1600/google.cottage+cheese.variants.jpg"&gt;&lt;figure&gt;&#10; &lt;img src="http://1.bp.blogspot.com/-4PRvZFiBBvQ/Ug8YsZ_CnoI/AAAAAAAACFM/eM7yc2wgcww/s320/google.cottage&amp;#43;cheese.variants.jpg" alt="" /&gt;&#10; &#10;&lt;/figure&gt;&#10;&lt;/a&gt;&#10;Then notice the measurements you get on next line, beautifully data bound to the variants drop down above.&#10;&lt;a href="http://3.bp.blogspot.com/-x-2Ldf8xqyk/Ug8ZzqpamqI/AAAAAAAACFY/R3pb5WE0o_c/s1600/google.cottage+cheese.variants.measures.jpg"&gt;&lt;figure&gt;&#10; &lt;img src="http://3.bp.blogspot.com/-x-2Ldf8xqyk/Ug8ZzqpamqI/AAAAAAAACFY/R3pb5WE0o_c/s320/google.cottage&amp;#43;cheese.variants.measures.jpg" alt="" /&gt;&#10; &#10;&lt;/figure&gt;&#10;&lt;/a&gt;&#10;Awesome!&lt;/p&gt;</description></item><item><title>How HTML5 destroyed my CSLA dream</title><link>https://developingdane.com/how_html5_destroyed_my_csla_dream/</link><pubDate>Tue, 30 Jul 2013 23:29:00 +0000</pubDate><guid>https://developingdane.com/how_html5_destroyed_my_csla_dream/</guid><description>&lt;p&gt;Let me start by stating, emphatically, I love &lt;a href="http://cslanet.com/"&gt;CSLA.NET&lt;/a&gt;!&lt;/p&gt;&#10;&lt;p&gt;I first became aware of this excellent framework in 2008 when my boss dropped Rocky&amp;rsquo;s book &lt;a href="http://www.apress.com/9781430210191/"&gt;Expert C# 2008 Business Objects&lt;/a&gt; on my desk. In very short order I recognized the enormous benefits CSLA could provide to developers like myself who where trying to to produce great enterprise applications. The idea that I could create completely self-contained classes which would flow naturally between the various application layers and physical tiers made me fairly giddy with excitement. This excitement was reinforced by my efforts as I implemented user presentation layers for WinForms, WPF and Silverlight all based on the same business core with little impedance between the architectural layers or the physical tiers. Concerns such as validation and n-level undo were mostly handled by the CSLA framework with very little additional effort from the developer (me).&lt;/p&gt;</description></item><item><title>Developing one step forward and two steps back.</title><link>https://developingdane.com/developing_one_step_forward_and_two_steps_back/</link><pubDate>Fri, 19 Jul 2013 21:21:00 +0000</pubDate><guid>https://developingdane.com/developing_one_step_forward_and_two_steps_back/</guid><description>&lt;p&gt;I think most developers will probably relate with this frustration.&lt;/p&gt;&#10;&lt;p&gt;I don&amp;rsquo;t know how many times I&amp;rsquo;ve gone to add some cool new feature to an application only to find that it requires an update to some dependent project or another. Almost without fail such an update requires further updates and somewhere in the chain is one or more breaking changes. The result always seems to be that my &amp;ldquo;quick&amp;rdquo; add of the cool feature spirals out of control and ends up costing me hours of frustration as I try to get my project back to the state I started in.&lt;/p&gt;</description></item><item><title>Windows Application Menus Left or Right?</title><link>https://developingdane.com/windows_application_menus_left_or_right/</link><pubDate>Wed, 22 May 2013 23:11:00 +0000</pubDate><guid>https://developingdane.com/windows_application_menus_left_or_right/</guid><description>&lt;p&gt;Until recently I didn&amp;rsquo;t know that menus in Windows applications (File, Tools, Help, etc.) could be presented in more than one way. I discovered this little feature because my new Lenovo X1 Carbon came with the setting set to right-handed which is the opposite of my previous dozen plus Windows installs. It drove me a little nuts so I went looking for a way to change it. I pretty quickly discovered that the option to change this is only enabled if you have a touch monitor, which my X1 does not. For touch monitors the default is right-handed and for non-touch default is the left-handed that most of us are accustom to. The problem was that since my X1 has no touch screen there was no available setting to change this back to the non-touch default. It appears that Lenovo imaged their Windows 8 install from a touch enabled device then installed in on my non-touch enabled X1 locking in the touch-enabled default.&lt;/p&gt;</description></item><item><title>Lenovo Thinkpad X1 Carbon</title><link>https://developingdane.com/lenovo_thinkpad_x1_carbon/</link><pubDate>Tue, 09 Apr 2013 22:36:00 +0000</pubDate><guid>https://developingdane.com/lenovo_thinkpad_x1_carbon/</guid><description>&lt;p&gt;After almost five years with my previous laptop I was finally given a new one at work. My old HP has been an absolute work horse and I&amp;rsquo;ve been very happy with it but it was showing its age in a big way. The battery (my third) was quickly dying, the original hard drive died a couple months back and one of the keyboard&amp;rsquo;s shift keys was failing to register key press about half the time. When I replaced the hard drive a couple months ago I installed Windows 8 only to find out that several hardware components do not have drivers specifically for Windows 8, most notably the ATI Radeon 2600 HD mobile GPU. This had the effect of causing my laptop fan to run at full speed continuously. A little annoying for both myself and my cube mates to put it mildly.&lt;/p&gt;</description></item><item><title>Microsoft Patterns &amp; Practices Symposium 2013</title><link>https://developingdane.com/microsoft_patterns_practices_symposium_2013/</link><pubDate>Sun, 20 Jan 2013 08:16:00 +0000</pubDate><guid>https://developingdane.com/microsoft_patterns_practices_symposium_2013/</guid><description>&lt;p&gt;I spent three days last week at the 2013 P&amp;amp;P Symposium on the Microsoft campus in Redmond WA. I had high hopes going in that I&amp;rsquo;d take home a lot of new and interesting knowledge. I ended up being pretty disappointed. This is a list of the sessions along with the immediate impressions note I made for each one as it finished.&lt;/p&gt;&#10;&lt;p&gt;&lt;u&gt;Day 1&lt;/u&gt;&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Keynote: Cloud Unplugged, Scott Guthrie: Scott was good but this was unscripted.&lt;/li&gt;&#10;&lt;li&gt;Resilient Cloud Apps, Mark Simms: Good info. Check out the Transient Fault Application Block.&lt;/li&gt;&#10;&lt;li&gt;CQRS, Greg Young: Separating data CRUD operations into commands and reads. Meh.&lt;/li&gt;&#10;&lt;li&gt;Autoscaling in Windows Azure, Grigori Melnik: Nice info poorly given. Check out the Autoscaling Application Block (Wasabi).&lt;/li&gt;&#10;&lt;li&gt;Windows Azure Active Directory, Vittorio Bertocci: Bingo! SSO!&lt;/li&gt;&#10;&lt;li&gt;Closing Keynote: Felicity Aston, British Explorer: 60 days alone on the South Pole.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;&lt;u&gt;Day 2&lt;/u&gt;&lt;/p&gt;</description></item><item><title>JavaScript I Can Live With</title><link>https://developingdane.com/java_script_i_can_live_with/</link><pubDate>Fri, 19 Oct 2012 22:36:00 +0000</pubDate><guid>https://developingdane.com/java_script_i_can_live_with/</guid><description>&lt;p&gt;I&amp;rsquo;ve never been a fan of JavaScript. Not because of the language itself. Syntactically it&amp;rsquo;s a lot like C# (which I love) and functionally it provides a wealth of features for web programming. My issue has always been with actually writing the code. Due to the fact that JavaScript isn&amp;rsquo;t statically typed it&amp;rsquo;s difficult to create truly good tooling and it&amp;rsquo;s always felt to me like programming JavaScript in notepad is almost as good as with the best IDE. In my book that makes it a very cumbersome language to work with for all but the simplest applications. After working with C# for the last eight years and experiencing the power that a statically typed language and a good IDE provide I find it very painful to go back to a language that doesn&amp;rsquo;t. Maybe I&amp;rsquo;m just spoiled but going back to a language like JavaScript makes me feel like I&amp;rsquo;ve moved back in time a decade. Enter TypeScript.&lt;/p&gt;</description></item><item><title>Implicit Type Conversion and Arrays</title><link>https://developingdane.com/implicit_type_conversion_and_arrays/</link><pubDate>Wed, 10 Oct 2012 18:49:00 +0000</pubDate><guid>https://developingdane.com/implicit_type_conversion_and_arrays/</guid><description>&lt;p&gt;I came across something I found sort of interesting a week or two ago. I had an array of integers that I wanted to use in populating a ComboBox for a tool I was working on. I started to call the ComboBox.Items.AddRange method which simply takes an array of objects. To my surprise I received the wonderful &amp;ldquo;The best overloaded method match for &amp;lsquo;System.Windows.Forms.ComboBox.ObjectCollection.AddRange(object[])&amp;rsquo; has some invalid arguments. Hmm, strange. Doesn&amp;rsquo;t everything in .NET derive from object? I quickly opened my favorite playground console application (where I do most of my quick coding tests) and starting poking around with objects, object arrays and how type conversions between them works.&lt;/p&gt;</description></item><item><title>Visual Studio 2012</title><link>https://developingdane.com/visual_studio_2012/</link><pubDate>Mon, 10 Sep 2012 22:47:00 +0000</pubDate><guid>https://developingdane.com/visual_studio_2012/</guid><description>&lt;p&gt;I installed Visual Studio 2012 about two weeks ago and I&amp;rsquo;ve been spending time experimenting with it whenever possible. I have to admit I had more than a few doubts about VS2012 going in. I disliked how Microsoft removed all colors from everything in the UI and the accents like the ALL CAP menus and the use of strings of colon characters for emphasis. I have no idea who made some of these design decisions but they were NOT made with input from the current user base regardless of Microsoft&amp;rsquo;s protests to the contrary. When the beta debuted a couple months back the overwhelming top request from developers was to fix the monochrome color scheme. Microsoft went a little way towards resolving that issue by adding just a splash of color to some of the glyphs (aka icons) but the UI is still terribly bland. The first thing I did after installing was to switch to the Dark color theme. It took me a little while to get use to it but I&amp;rsquo;m liking it quite a lot now. It&amp;rsquo;s very easy on the eyes and the small color additions made to the glyphs really pop well in that theme.&lt;/p&gt;</description></item><item><title>ClickOnce For My 2 Cents</title><link>https://developingdane.com/click_once_for_my_2_cents/</link><pubDate>Fri, 27 Jul 2012 21:09:00 +0000</pubDate><guid>https://developingdane.com/click_once_for_my_2_cents/</guid><description>&lt;p&gt;Let me be clear; I love Microsoft&amp;rsquo;s ClickOnce. I&amp;rsquo;ve found it to be an absolutely fantastic deployment methodology for many scenarios. It allows developers to create full featured applications and deploy them to end users with little or no pain. Essentially ClickOnce allows for a thick client application to be deployed as easily as any thin client.&lt;/p&gt;&#10;&lt;p&gt;The core product of the company I work for is an enterprise finance and billing suite for local governments. In 2004 we began migrating our application to .NET developing under version 1.1. We implemented the primary client layer as a WinForms applications and its initial release consisted of roughly 150 assemblies. Historically Windows client installations had always been a significant paint point for our customer&amp;rsquo;s internal IT staffs and therefore for us.&lt;/p&gt;</description></item><item><title>I have a dream.</title><link>https://developingdane.com/i_have_a_dream/</link><pubDate>Tue, 19 Jun 2012 23:11:00 +0000</pubDate><guid>https://developingdane.com/i_have_a_dream/</guid><description>&lt;p&gt;No not &amp;ldquo;that&amp;rdquo; dream. The dream I&amp;rsquo;ve had for several years concerns the future of my personal computer. I envision a time when my &amp;ldquo;PC&amp;rdquo; is really just my smart-phone except that it&amp;rsquo;d have a fully functional desktop OS and everything digital that I need. I want to do away with simultaneously maintaining a mini-computer phone, a desktop computer at home and a laptop for work. I want an all-in-one device with docking stations at various locations that provide additional horse power as needed. For example, I use my home computer largely as a gaming device, so at home I might have a powerhouse graphics card, better sound, more RAM, additional CPU power, an HD monitor and peripherals (mouse/keyboard). I&amp;rsquo;d still need to maintain hardware at each location but my OS would remain constant along with my installed applications and all my files. Anywhere I went I&amp;rsquo;d have ALL of my data on my personal OS installation. No more installing the same application on several PCs or saving documents to the web so that I can get them from any location. Everything would be in my pocket at all times.&lt;/p&gt;</description></item><item><title>Browser Wars</title><link>https://developingdane.com/browser_wars/</link><pubDate>Sun, 20 May 2012 06:25:00 +0000</pubDate><guid>https://developingdane.com/browser_wars/</guid><description>&lt;p&gt;My first experience with a &amp;ldquo;browser&amp;rdquo; was Mosaic around 1994 in the Washington State University computer labs. I viewed it as a novel and somewhat intriguing toy but I wasn&amp;rsquo;t overly impressed.&lt;/p&gt;&#10;&lt;p&gt;Within a year I was sitting in a physics lab on the WSU campus browsing early web sites with Netscape and my head was fairly spinning with the implications of what I was finding openly available to anyone with a connection. Little did I know reality would soon far exceed my wildest imaginations.&#10;By 1997 I was attending graduate school at Oregon State University and the web was starting to become what it is today. I used the WWW every day and Netscape was the browser of choice for myself and almost everyone I knew. At that time Microsoft was in all kinds of trouble over Internet Explorer&amp;rsquo;s OS integration and I thought of them as something just short Satan incarnate. Despite that stance I was using IE exclusively within a year. Over that year the feature gap between IE and Netscape closed drastically and it finally reached the point for me that it wasn&amp;rsquo;t worth fighting Microsoft and IE. From then until last month I&amp;rsquo;ve used IE exclusively as my internet browser.&#10;Last month I switched to Chrome. More than anything I switched because I&amp;rsquo;m a neophile. I like &amp;ldquo;new&amp;rdquo; and every so often I just have to change things up. I honestly didn&amp;rsquo;t feel there was any practical purpose for making the switch I just wanted to play with something new. I was pleasantly surprised  to find I was wrong. Chrome is, in almost every way, superior to IE. It&amp;rsquo;s faster, it offers much better customization and it feels more modern. Granted, none of the differences are earth shattering but as a whole Chrome is clearly superior to IE.&lt;/p&gt;</description></item><item><title>Documentation? Oh my.</title><link>https://developingdane.com/documentation_oh_my/</link><pubDate>Thu, 17 May 2012 23:29:00 +0000</pubDate><guid>https://developingdane.com/documentation_oh_my/</guid><description>&lt;p&gt;I&amp;rsquo;m at work near the end of a long day. I spent almost the entire day writing documentation. As a developer I understand the absolute necessity of good documentation but good lord it&amp;rsquo;s boring to write. I do derive a certain satisfaction out of a job well done when it&amp;rsquo;s complete but it&amp;rsquo;s so very painful during the process.&lt;/p&gt;</description></item><item><title>Silverlight, oh how I'll miss thee.</title><link>https://developingdane.com/silverlight_oh_how_i_ll_miss_thee/</link><pubDate>Sat, 05 May 2012 06:08:00 +0000</pubDate><guid>https://developingdane.com/silverlight_oh_how_i_ll_miss_thee/</guid><description>&lt;p&gt;I&amp;rsquo;ve fought it. I&amp;rsquo;ve kicked and screamed. I&amp;rsquo;ve ranted and raved. But all to no avail. It&amp;rsquo;s over. Silverlight is dead. More&amp;rsquo;s the pity.&lt;/p&gt;&#10;&lt;p&gt;If only it could have gained more traction. If only Apple, Google and the other unknown forces would have adopted change more readily.&lt;/p&gt;&#10;&lt;p&gt;But no, it&amp;rsquo;s to be HTML/JS/CSS when it could have ALL been XAML backed by C#. You win anonymous forces. You&amp;rsquo;ve forced standardization of an inferior model. Thanks a lot.&lt;/p&gt;</description></item><item><title>That pesky enum (part 2)</title><link>https://developingdane.com/that_pesky_enum_part_2/</link><pubDate>Wed, 18 Apr 2012 21:54:00 +0000</pubDate><guid>https://developingdane.com/that_pesky_enum_part_2/</guid><description>&lt;p&gt;This is part 2 of my previous &lt;a href="https://developingdane.com/that_pesky_enum/"&gt;That pesky enum&lt;/a&gt; post.  You should read part 1 first.  In part 1 I defined the enum Beers and a static class BeersMockEnum and illustrated their use.&lt;/p&gt;&#10;&lt;p&gt;Now, I make modifications to these types by inserting a new item (Bitter) in the Beers enum and the BeersMockEnum class as follows.&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-csharp" data-lang="csharp"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kd"&gt;public&lt;/span&gt; &lt;span class="kd"&gt;enum&lt;/span&gt; &lt;span class="n"&gt;Beers&lt;/span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;{&lt;/span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;IPA&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;Bitter&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;Lager&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;Porter&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;Stout&lt;/span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;}&lt;/span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kd"&gt;public&lt;/span&gt; &lt;span class="kd"&gt;static&lt;/span&gt; &lt;span class="k"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;BeersMockEnum&lt;/span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;{&lt;/span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="kd"&gt;public&lt;/span&gt; &lt;span class="kd"&gt;static&lt;/span&gt; &lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;IPA&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="k"&gt;get&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="kd"&gt;public&lt;/span&gt; &lt;span class="kd"&gt;static&lt;/span&gt; &lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;Bitter&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="k"&gt;get&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="kd"&gt;public&lt;/span&gt; &lt;span class="kd"&gt;static&lt;/span&gt; &lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;Lager&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="k"&gt;get&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="m"&gt;2&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="kd"&gt;public&lt;/span&gt; &lt;span class="kd"&gt;static&lt;/span&gt; &lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;Porter&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="k"&gt;get&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="m"&gt;3&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="kd"&gt;public&lt;/span&gt; &lt;span class="kd"&gt;static&lt;/span&gt; &lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;Stout&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="k"&gt;get&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="m"&gt;4&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;}&lt;/span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;I then recompile &lt;strong&gt;only&lt;/strong&gt; the ClassLibrary project (which holds these definitions) and deploy the newly compiled assembly to the run directory replacing the existing ClassLibrary.dll but not the existing ConsoleApplication.exe.  If I then run the .exe I will get the following result.&lt;/p&gt;</description></item><item><title>That pesky enum</title><link>https://developingdane.com/that_pesky_enum/</link><pubDate>Wed, 18 Apr 2012 21:49:00 +0000</pubDate><guid>https://developingdane.com/that_pesky_enum/</guid><description>&lt;p&gt;The .NET enum, such a simple concept.  At the most basic level an enum is a collection of key/value pairs with a restricted string key and an integer value. However, the enum can trick you.  It would seem logical that when you define a new enum it&amp;rsquo;d obey the same rules as would any class you define.  That assumption can lead to subtle and sometimes difficult to identify issues.&lt;/p&gt;&#10;&lt;p&gt;To illustrate the point I&amp;rsquo;d like to make I&amp;rsquo;m going to define a new enum called Beers and then define a new class called BeersMockEnum who&amp;rsquo;s purpose will be to mock the behavior of the Beers enum.  Utilizing these I&amp;rsquo;ll illustrate how they differ in a way that can present significant problems in real life implementation and deployment scenarios.&lt;/p&gt;</description></item><item><title>The woes of Silverlight binding to a decimal type.</title><link>https://developingdane.com/the_woes_of_silverlight_binding_to_a_decimal_type/</link><pubDate>Mon, 22 Aug 2011 23:03:00 +0000</pubDate><guid>https://developingdane.com/the_woes_of_silverlight_binding_to_a_decimal_type/</guid><description>&lt;p&gt;I came across something that grabbed my attention the other day.  I was working with a Silverlight application and had bound TextBox controls to two separate decimal properties of a ViewModel class.  I was using the default formatting for display and was quite perplexed when I found that even though both properties had the same value, i.e. 100, one TextBox displayed 100.00 and the other 100.0000.  After doing a little digging I found that the root cause of this behavior is that decimal types in .NET carry not only a value but that value&amp;rsquo;s precision as well (apparently since .NET 1.1).  To see this in action take this case:&lt;/p&gt;</description></item><item><title>So much code so little time.</title><link>https://developingdane.com/so_much_code_so_little_time/</link><pubDate>Sat, 30 Apr 2011 06:18:00 +0000</pubDate><guid>https://developingdane.com/so_much_code_so_little_time/</guid><description>&lt;p&gt;EOM&lt;/p&gt;</description></item><item><title>Good UI Designers Rock!</title><link>https://developingdane.com/good_ui_designers_rock/</link><pubDate>Sun, 27 Mar 2011 06:43:00 +0000</pubDate><guid>https://developingdane.com/good_ui_designers_rock/</guid><description>&lt;p&gt;I&amp;rsquo;ve been playing around with xaml technologies for several  years now and it&amp;rsquo;s given me the utmost respect for truly good UI designers.&lt;/p&gt;&#10;&lt;p&gt;In the era up to and including Win Forms I&amp;rsquo;d always thought of myself as a competent UI designer but xaml has change all that.  Quite simply there are so many options available in xaml UI design that I&amp;rsquo;ve realized I just don&amp;rsquo;t have the aesthetic sensibility to create top tier UI any longer.  My hat goes of to the many many designers that do.&lt;/p&gt;</description></item><item><title>A legacy of legacy.</title><link>https://developingdane.com/a_legacy_of_legacy/</link><pubDate>Sun, 06 Feb 2011 07:15:00 +0000</pubDate><guid>https://developingdane.com/a_legacy_of_legacy/</guid><description>&lt;p&gt;When I first started developing software professionally I remember occasionally finding older code and thinking &amp;ldquo;how could someone design something so poorly?&amp;rdquo;&lt;/p&gt;&#10;&lt;p&gt;I&amp;rsquo;ve been writing software for the same company now for more than a decade.  A few years back I first came across a piece of code I&amp;rsquo;d personally written years before and realized that someone looking at that code right then would probably think the same thing.  I knew the code in question was not badly designed.  At the time of its writing it was well thought out and fully met all requirements.  The &amp;ldquo;problems&amp;rdquo; arose over the following years as the landscape in which that code lived changed dramatically.  In those years the company grew several times larger, the application increased in complexity by orders of magnitude, multiple new technologies had to be integrated and industry trends and requirements changed continually.&lt;/p&gt;</description></item><item><title>Quandary</title><link>https://developingdane.com/quandary/</link><pubDate>Fri, 10 Dec 2010 00:22:00 +0000</pubDate><guid>https://developingdane.com/quandary/</guid><description>&lt;p&gt;This week my job duties shifted significantly.  I&amp;rsquo;ve gone from doing primarily hands on development to researching development issues for upcoming projects or current problem processes and then presenting possible solutions to the project&amp;rsquo;s shareholders.  In practical terms this means I&amp;rsquo;m spending a lot less time actually coding and a lot more time in meetings.  I see this as a positive move for our company because, at this point, I believe I&amp;rsquo;m more valuable acting as a resource &lt;em&gt;for&lt;/em&gt; our development department than as one of the resources &lt;em&gt;of&lt;/em&gt; our development department.  My quandary is that I already see I&amp;rsquo;m going to miss actually developing.  I enjoy the intellectual challenge of designing and then implementing software solutions and I can see now there&amp;rsquo;s going to be a lot less of that in the days to come.&lt;/p&gt;</description></item><item><title>The holy trinity?</title><link>https://developingdane.com/the_holy_trinity/</link><pubDate>Sun, 05 Dec 2010 07:34:00 +0000</pubDate><guid>https://developingdane.com/the_holy_trinity/</guid><description>&lt;p&gt;Programming, a good craft beer and some down-tempo music.&lt;/p&gt;</description></item><item><title>My first blog post ever</title><link>https://developingdane.com/my_first_blog_post_ever/</link><pubDate>Sat, 04 Dec 2010 07:34:00 +0000</pubDate><guid>https://developingdane.com/my_first_blog_post_ever/</guid><description>&lt;p&gt;I read an article a while back written by an senior developer at Microsoft in which he advocated that EVERY serious developer should blog.  It was some time back so I don&amp;rsquo;t remember the details but I remember being convinced the idea was not entirely without merit.  So here I am.&lt;/p&gt;&#10;&lt;p&gt;Tonight I&amp;rsquo;m watching Scott Guthrie&amp;rsquo;s keynote presentation from the Silverlight Firestarter event that was held this week.  He lead off with a demo of SAP&amp;rsquo;s new Silverlight application (which blew my doors off) and now he&amp;rsquo;s into the future for Silverlight, i.e. version 5.  If you&amp;rsquo;re a developer working with LOB applications and you haven&amp;rsquo;t generated an interest in Silverlight you should definitely look at some of the media from this event.&lt;/p&gt;</description></item></channel></rss>