<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Jon Sagara</title>
    <link>https://www.sagara.dev/</link>
    <description>Recent content on Jon Sagara</description>
    <generator>Hugo</generator>
    <language>en-us</language>
    <managingEditor>noreply@sagara.dev (Jon Sagara)</managingEditor>
    <webMaster>noreply@sagara.dev (Jon Sagara)</webMaster>
    <lastBuildDate>Fri, 13 Mar 2026 16:08:09 +0000</lastBuildDate><atom:link href="https://www.sagara.dev/feed.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Re-validating Apex Domains in Azure Front Door</title>
      <link>https://www.sagara.dev/blog/2026/03/re-validating-apex-domains-in-azure-front-door/</link>
      <pubDate>Fri, 13 Mar 2026 07:41:15 -0700</pubDate><author>noreply@sagara.dev (Jon Sagara)</author>
      <guid>https://www.sagara.dev/blog/2026/03/re-validating-apex-domains-in-azure-front-door/</guid>
      <description>&lt;p&gt;One of the sites I manage uses Azure Front Door and Azure DNS. About every 6 months, the certificate
associated with the Apex domain enters the state of &amp;ldquo;Domain validation needed&amp;rdquo;, and the domain validation
state becomes &amp;ldquo;Pending revalidation&amp;rdquo;. Here are the steps to re-validate your Apex domain.&lt;/p&gt;&lt;p&gt;&lt;a href=&#34;https://www.sagara.dev/blog/2026/03/re-validating-apex-domains-in-azure-front-door/&#34;&gt;Continue reading...&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>Homemade Robots Shopping List</title>
      <link>https://www.sagara.dev/blog/2026/01/homemade-robots-shopping-list/</link>
      <pubDate>Sat, 10 Jan 2026 09:40:51 -0800</pubDate><author>noreply@sagara.dev (Jon Sagara)</author>
      <guid>https://www.sagara.dev/blog/2026/01/homemade-robots-shopping-list/</guid>
      <description>&lt;p&gt;I just started reading the book &lt;a href=&#34;https://www.amazon.com/dp/1718500238&#34;&gt;Homemade Robots&lt;/a&gt; by Randy Sarafan. On page 165, there is a table of the bare minimum parts needed to complete any project in the book, but AFAICT he has no website with clickable links to those parts. Here are links to the products on Amazon, DigiKey, and Mouser.&lt;/p&gt;&lt;p&gt;&lt;a href=&#34;https://www.sagara.dev/blog/2026/01/homemade-robots-shopping-list/&#34;&gt;Continue reading...&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>Creating a Personal Access Token for Azure Artifacts</title>
      <link>https://www.sagara.dev/blog/2025/05/creating-a-personal-access-token-for-azure-artifacts/</link>
      <pubDate>Sat, 24 May 2025 11:07:35 -0700</pubDate><author>noreply@sagara.dev (Jon Sagara)</author>
      <guid>https://www.sagara.dev/blog/2025/05/creating-a-personal-access-token-for-azure-artifacts/</guid>
      <description>&lt;p&gt;If your .NET solution uses a private Azure Artifacts feed, and you work with &lt;code&gt;dotnet&lt;/code&gt; on the command line, you may
occasionally need to refresh your Azure DevOps Personal Access Token.&lt;/p&gt;&lt;p&gt;&lt;a href=&#34;https://www.sagara.dev/blog/2025/05/creating-a-personal-access-token-for-azure-artifacts/&#34;&gt;Continue reading...&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>Double-clicking .sql Files Opens New Instance of SSMS 20</title>
      <link>https://www.sagara.dev/blog/2024/03/double-clicking-.sql-files-opens-new-instance-of-ssms-20/</link>
      <pubDate>Mon, 25 Mar 2024 21:06:37 -0700</pubDate><author>noreply@sagara.dev (Jon Sagara)</author>
      <guid>https://www.sagara.dev/blog/2024/03/double-clicking-.sql-files-opens-new-instance-of-ssms-20/</guid>
      <description>&lt;p&gt;I recently upgraded to SQL Server Management Studio 20.0. After doing so, any time I double-clicked on
a &lt;code&gt;.sql&lt;/code&gt; file, it opened a new instance of SSMS instead of opening the file in my existing, open intance. After
digging around for a bit, I finally found a registry hack that restores the appropriate behavior.&lt;/p&gt;&lt;p&gt;&lt;a href=&#34;https://www.sagara.dev/blog/2024/03/double-clicking-.sql-files-opens-new-instance-of-ssms-20/&#34;&gt;Continue reading...&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>Setting Up a Service Principal to Deploy to Azure App Service With GitHub Actions</title>
      <link>https://www.sagara.dev/blog/2023/12/setting-up-a-service-principal-to-deploy-to-azure-app-service-with-github-actions/</link>
      <pubDate>Sat, 30 Dec 2023 11:29:23 -0800</pubDate><author>noreply@sagara.dev (Jon Sagara)</author>
      <guid>https://www.sagara.dev/blog/2023/12/setting-up-a-service-principal-to-deploy-to-azure-app-service-with-github-actions/</guid>
      <description>&lt;p&gt;I started moving my personal applications out of Azure DevOps and into GitHub. As part of that, I needed to convert my
DevOps Pipelines into GitHub Actions.&lt;/p&gt;
&lt;p&gt;Figuring out how to get GitHub Actions to authenticate with Azure App Service and do deployment tasks was not completely
straightforward, but after a ton of googling and experimenting, I figured out just enough to make it work. Read on to see
the steps.&lt;/p&gt;&lt;p&gt;&lt;a href=&#34;https://www.sagara.dev/blog/2023/12/setting-up-a-service-principal-to-deploy-to-azure-app-service-with-github-actions/&#34;&gt;Continue reading...&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>IHttpContextAccessor Performance</title>
      <link>https://www.sagara.dev/blog/2023/09/ihttpcontextaccessor-performance/</link>
      <pubDate>Tue, 05 Sep 2023 11:28:21 -0700</pubDate><author>noreply@sagara.dev (Jon Sagara)</author>
      <guid>https://www.sagara.dev/blog/2023/09/ihttpcontextaccessor-performance/</guid>
      <description>&lt;p&gt;In my ASP.NET Core applications, I have a few scoped services that require an &lt;code&gt;HttpContext&lt;/code&gt;, but that don&amp;rsquo;t
have a way to directly pass the context as a method parameter. In these cases, the &lt;a href=&#34;https://learn.microsoft.com/en-us/aspnet/core/fundamentals/http-context?view=aspnetcore-7.0#access-httpcontext-from-custom-components&#34;&gt;docs&lt;/a&gt;
say to inject &lt;code&gt;IHttpContextAccessor&lt;/code&gt; into your classes. However, if you read the &lt;a href=&#34;https://learn.microsoft.com/en-us/dotnet/api/microsoft.aspnetcore.http.ihttpcontextaccessor?view=aspnetcore-7.0&#34;&gt;API docs for &lt;code&gt;IHttpContextAccessor&lt;/code&gt;&lt;/a&gt;, you see a big warning in the Remarks:&lt;/p&gt;





&lt;blockquote class=&#34;blockquote blockquote-blog&#34;&gt;
  &lt;p class=&#34;mb-0&#34;&gt;This interface should be used with caution. It relies on &lt;code&gt;AsyncLocal&amp;lt;T&amp;gt;&lt;/code&gt; which can have a negative performance impact on async calls.&lt;/p&gt;
  
&lt;/blockquote&gt;
&lt;p&gt;That sounds bad. Should I avoid using &lt;code&gt;IHttpContextAccessor&lt;/code&gt;?&lt;/p&gt;&lt;p&gt;&lt;a href=&#34;https://www.sagara.dev/blog/2023/09/ihttpcontextaccessor-performance/&#34;&gt;Continue reading...&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>Now, with search!</title>
      <link>https://www.sagara.dev/blog/2023/07/now-with-search/</link>
      <pubDate>Sat, 15 Jul 2023 16:18:22 -0700</pubDate><author>noreply@sagara.dev (Jon Sagara)</author>
      <guid>https://www.sagara.dev/blog/2023/07/now-with-search/</guid>
      <description>&lt;p&gt;I have wanted to add search to this blog for quite a while now, but since its contents are statically
generated by &lt;a href=&#34;https://gohugo.io&#34;&gt;hugo&lt;/a&gt;, I couldn&amp;rsquo;t use any of my familiar &lt;a href=&#34;https://dot.net&#34;&gt;.NET&lt;/a&gt; server-side tricks.&lt;/p&gt;
&lt;p&gt;Fortunately, a lot of smart people are churning out interesting new tools and technologies, and still other
smart people have solved my particular problem and documented their solutions.&lt;/p&gt;&lt;p&gt;&lt;a href=&#34;https://www.sagara.dev/blog/2023/07/now-with-search/&#34;&gt;Continue reading...&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>Hugo Site.RSSLink Is Deprecated</title>
      <link>https://www.sagara.dev/blog/2023/07/hugo-site.rsslink-is-deprecated/</link>
      <pubDate>Thu, 06 Jul 2023 15:43:38 -0700</pubDate><author>noreply@sagara.dev (Jon Sagara)</author>
      <guid>https://www.sagara.dev/blog/2023/07/hugo-site.rsslink-is-deprecated/</guid>
      <description>&lt;p&gt;I haven&amp;rsquo;t posted here in quite some time. When I fired up &lt;code&gt;hugo&lt;/code&gt; today to make a small tweak, I got this warning:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;WARN  Site.RSSLink is deprecated and will be removed in a future release. Use the Output Format&amp;#39;s Permalink method instead, e.g. .OutputFormats.Get &amp;#34;RSS&amp;#34;.Permalink
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;I need the top-level RSS URL in my blog pages because I only want to have one top-level RSS feed, not one per hierarchy level as &lt;code&gt;hugo&lt;/code&gt; likes to spit out.&lt;/p&gt;
&lt;p&gt;Fortunately, after a little digging, I found a simple fix on the support forums.&lt;/p&gt;&lt;p&gt;&lt;a href=&#34;https://www.sagara.dev/blog/2023/07/hugo-site.rsslink-is-deprecated/&#34;&gt;Continue reading...&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>Azure DevOps Expired Service Principal</title>
      <link>https://www.sagara.dev/blog/2021/09/azure-devops-expired-service-principal/</link>
      <pubDate>Wed, 15 Sep 2021 09:22:40 -0700</pubDate><author>noreply@sagara.dev (Jon Sagara)</author>
      <guid>https://www.sagara.dev/blog/2021/09/azure-devops-expired-service-principal/</guid>
      <description>&lt;p&gt;Fix your failed Azure DevOps Release Pipeline if you get this error:&lt;/p&gt;





&lt;blockquote class=&#34;blockquote blockquote-blog&#34;&gt;
  &lt;p class=&#34;mb-0&#34;&gt;Error: Could not fetch access token for Azure. Verify if the Service Principal used is valid and not expired.&lt;/p&gt;
  
&lt;/blockquote&gt;&lt;p&gt;&lt;a href=&#34;https://www.sagara.dev/blog/2021/09/azure-devops-expired-service-principal/&#34;&gt;Continue reading...&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>Locally Debugging an Event Grid event in an Azure Function</title>
      <link>https://www.sagara.dev/blog/2020/12/locally-debugging-an-event-grid-event-in-an-azure-function/</link>
      <pubDate>Sun, 06 Dec 2020 10:57:44 -0800</pubDate><author>noreply@sagara.dev (Jon Sagara)</author>
      <guid>https://www.sagara.dev/blog/2020/12/locally-debugging-an-event-grid-event-in-an-azure-function/</guid>
      <description>&lt;p&gt;I have a requirement to add a JSON file to Azure Blob Storage and have an Azure Function automatically process
it via a &lt;code&gt;BlobTrigger&lt;/code&gt;. Simple enough, but when reading the docs for &lt;code&gt;BlobTrigger&lt;/code&gt;, I came across this
&lt;a href=&#34;https://docs.microsoft.com/en-us/azure/azure-functions/functions-bindings-storage-blob-trigger?tabs=csharp#polling&#34;&gt;section on Polling&lt;/a&gt;
(emphasis mine):&lt;/p&gt;





&lt;blockquote class=&#34;blockquote blockquote-blog&#34;&gt;
  &lt;p class=&#34;mb-0&#34;&gt;&lt;p&gt;In addition, storage logs are created on a &amp;ldquo;best effort&amp;rdquo; basis. There&amp;rsquo;s no guarantee that all events are captured.
&lt;strong&gt;Under some conditions, logs may be missed.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;If you require faster or more reliable blob processing&lt;/strong&gt;, consider creating a queue message when you create the blob.
Then use a queue trigger instead of a blob trigger to process the blob. &lt;strong&gt;Another option is to use Event Grid&lt;/strong&gt;; see
the tutorial Automate resizing uploaded images using Event Grid.&lt;/p&gt;&lt;p&gt;&lt;a href=&#34;https://www.sagara.dev/blog/2020/12/locally-debugging-an-event-grid-event-in-an-azure-function/&#34;&gt;Continue reading...&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>Migrated to Hugo</title>
      <link>https://www.sagara.dev/blog/2020/08/migrated-to-hugo/</link>
      <pubDate>Sun, 30 Aug 2020 10:34:43 -0700</pubDate><author>noreply@sagara.dev (Jon Sagara)</author>
      <guid>https://www.sagara.dev/blog/2020/08/migrated-to-hugo/</guid>
      <description>&lt;p&gt;I have successfully migrated my blog from &lt;code&gt;Jekyll&lt;/code&gt; to &lt;a href=&#34;https://gohugo.io/&#34;&gt;Hugo&lt;/a&gt;. The ability to generate the entire site from
a single executable is very appealing. What pushed me to finally make the move was a security notification from GitHub: apparently
one of the ruby gems Jekyll relies on had a vulnerability. I&amp;rsquo;m not a ruby developer, and I blog so infrequently that it&amp;rsquo;s a pain to try
to remember how to update my local ruby environment and keep everything working, so&amp;hellip; Hugo it is!&lt;/p&gt;&lt;p&gt;&lt;a href=&#34;https://www.sagara.dev/blog/2020/08/migrated-to-hugo/&#34;&gt;Continue reading...&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>How to use .NET Standard 2.0 NuGet packages with F# Interactive</title>
      <link>https://www.sagara.dev/2018/06/26/how-to-use-netstandard20-nuget-packages-with-f-interactive/</link>
      <pubDate>Tue, 26 Jun 2018 18:29:00 -0700</pubDate><author>noreply@sagara.dev (Jon Sagara)</author>
      <guid>https://www.sagara.dev/2018/06/26/how-to-use-netstandard20-nuget-packages-with-f-interactive/</guid>
      <description>&lt;p&gt;I have been learning F# recently, and one of the great things about it is the REPL, called
&lt;a href=&#34;https://docs.microsoft.com/en-us/dotnet/fsharp/tutorials/fsharp-interactive/&#34;&gt;F# Interactive&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I ran into a problem when I tried to reference the &lt;code&gt;Newtonsoft.Json&lt;/code&gt; &lt;code&gt;NuGet&lt;/code&gt; package in an &lt;code&gt;.fsx&lt;/code&gt; file, like so:&lt;/p&gt;&lt;p&gt;&lt;a href=&#34;https://www.sagara.dev/2018/06/26/how-to-use-netstandard20-nuget-packages-with-f-interactive/&#34;&gt;Continue reading...&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>Project file is incomplete. Expected imports are missing.</title>
      <link>https://www.sagara.dev/2018/06/12/project-file-is-incomplete-expected-imports-are-missing/</link>
      <pubDate>Tue, 12 Jun 2018 07:22:00 -0700</pubDate><author>noreply@sagara.dev (Jon Sagara)</author>
      <guid>https://www.sagara.dev/2018/06/12/project-file-is-incomplete-expected-imports-are-missing/</guid>
      <description>&lt;p&gt;After many months of doing other things, one of our devs tried to open our solution in the latest version of Visual Studio 2017 (15.7.3), only to be greeted with the following error message:&lt;/p&gt;





&lt;blockquote class=&#34;blockquote blockquote-blog&#34;&gt;
  &lt;p class=&#34;mb-0&#34;&gt;Project file is incomplete. Expected imports are missing.&lt;/p&gt;
  
&lt;/blockquote&gt;
&lt;p&gt;Huh?&lt;/p&gt;&lt;p&gt;&lt;a href=&#34;https://www.sagara.dev/2018/06/12/project-file-is-incomplete-expected-imports-are-missing/&#34;&gt;Continue reading...&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>Azure Web App deployment fails to build class library project that uses C# 6 features</title>
      <link>https://www.sagara.dev/2015/08/18/azure-web-app-deployment-fails-to-build-class-library-project-that-uses-c-6-features/</link>
      <pubDate>Tue, 18 Aug 2015 09:07:00 -0700</pubDate><author>noreply@sagara.dev (Jon Sagara)</author>
      <guid>https://www.sagara.dev/2015/08/18/azure-web-app-deployment-fails-to-build-class-library-project-that-uses-c-6-features/</guid>
      <description>&lt;div class=&#34;alert alert-danger&#34;&gt;
  &lt;strong&gt;Update 2015-10-12:&lt;/strong&gt; The Azure team resolved this issue last month, and you no longer need to perform the steps that follow.
&lt;/div&gt;&lt;p&gt;&lt;a href=&#34;https://www.sagara.dev/2015/08/18/azure-web-app-deployment-fails-to-build-class-library-project-that-uses-c-6-features/&#34;&gt;Continue reading...&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>Upgrading RDLC schema from 2008 to 2010 in Visual Studio 2013</title>
      <link>https://www.sagara.dev/2015/06/20/upgrading-rdlc-schema-from-2008-to-2010-in-visual-studio-2013/</link>
      <pubDate>Sat, 20 Jun 2015 12:26:00 -0700</pubDate><author>noreply@sagara.dev (Jon Sagara)</author>
      <guid>https://www.sagara.dev/2015/06/20/upgrading-rdlc-schema-from-2008-to-2010-in-visual-studio-2013/</guid>
      <description>&lt;blockquote class=&#34;blockquote blockquote-blog&#34;&gt;
  &lt;p class=&#34;mb-0&#34;&gt;&lt;p&gt;&lt;strong&gt;Disclaimer:&lt;/strong&gt; This worked for me, but as with all undocumented hacks, proceed at your own risk.&lt;/p&gt;
&lt;p&gt;There may be a better way to do this, but I couldn&amp;rsquo;t find it. I trust that your &lt;code&gt;.rdlc&lt;/code&gt; files are in source control, and that you can rollback to a previously working version if this causes problems.&lt;/p&gt;
&lt;/p&gt;
  
&lt;/blockquote&gt;
&lt;p&gt;For various reasons, I needed to upgrade my &lt;code&gt;RDLC&lt;/code&gt; report&amp;rsquo;s schema version from the default 2008 version to the 2010 version.&lt;/p&gt;&lt;p&gt;&lt;a href=&#34;https://www.sagara.dev/2015/06/20/upgrading-rdlc-schema-from-2008-to-2010-in-visual-studio-2013/&#34;&gt;Continue reading...&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>Azure WebJob with status &#34;Never Finished&#34;</title>
      <link>https://www.sagara.dev/2015/03/18/azure-webjob-with-status-never-finished/</link>
      <pubDate>Wed, 18 Mar 2015 08:41:00 -0700</pubDate><author>noreply@sagara.dev (Jon Sagara)</author>
      <guid>https://www.sagara.dev/2015/03/18/azure-webjob-with-status-never-finished/</guid>
      <description>&lt;p&gt;I was a little confused as to why one of my &lt;code&gt;Azure WebJobs&lt;/code&gt; had a status of &amp;ldquo;Never Finished&amp;rdquo;:&lt;/p&gt;&lt;p&gt;&lt;a href=&#34;https://www.sagara.dev/2015/03/18/azure-webjob-with-status-never-finished/&#34;&gt;Continue reading...&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>Ensuring a SQL Server column copies as text to an Excel column</title>
      <link>https://www.sagara.dev/2015/02/01/ensuring-a-sql-server-column-copies-as-text-to-an-excel-column/</link>
      <pubDate>Sun, 01 Feb 2015 16:01:00 -0800</pubDate><author>noreply@sagara.dev (Jon Sagara)</author>
      <guid>https://www.sagara.dev/2015/02/01/ensuring-a-sql-server-column-copies-as-text-to-an-excel-column/</guid>
      <description>&lt;p&gt;The problem arises when you have a column with character strings that look like numbers. Looking like a number isn&amp;rsquo;t a problem in and of itself, unless the value starts with the character &amp;ldquo;0&amp;rdquo;. Excel will try to treat the column&amp;rsquo;s values as a number, and therefore eliminate any leading 0s.&lt;/p&gt;&lt;p&gt;&lt;a href=&#34;https://www.sagara.dev/2015/02/01/ensuring-a-sql-server-column-copies-as-text-to-an-excel-column/&#34;&gt;Continue reading...&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>Authentication fails with access_denied error while using Microsoft.Owin.Security.Google 3.0.0</title>
      <link>https://www.sagara.dev/2014/08/30/authentication-fails-with-access_denied-error-while-using-microsoft-owin-security-google-3-0-0/</link>
      <pubDate>Sat, 30 Aug 2014 12:49:00 -0700</pubDate><author>noreply@sagara.dev (Jon Sagara)</author>
      <guid>https://www.sagara.dev/2014/08/30/authentication-fails-with-access_denied-error-while-using-microsoft-owin-security-google-3-0-0/</guid>
      <description>&lt;p&gt;Just a quick tip:&lt;/p&gt;
&lt;p&gt;If you&amp;rsquo;re trying to use Google Oauth 2.0 to authenticate users in your MVC 5 application, start with this tutorial:&lt;/p&gt;&lt;p&gt;&lt;a href=&#34;https://www.sagara.dev/2014/08/30/authentication-fails-with-access_denied-error-while-using-microsoft-owin-security-google-3-0-0/&#34;&gt;Continue reading...&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>Enumerating HttpModules: MVC Edition</title>
      <link>https://www.sagara.dev/2014/08/13/enumerating-httpmodules-mvc-edition/</link>
      <pubDate>Wed, 13 Aug 2014 15:25:00 -0700</pubDate><author>noreply@sagara.dev (Jon Sagara)</author>
      <guid>https://www.sagara.dev/2014/08/13/enumerating-httpmodules-mvc-edition/</guid>
      <description>&lt;p&gt;About 6 years ago, I wrote a post about &lt;a href=&#34;http://sagara.net/2008/08/24/enumerating-httpmodules/&#34;&gt;Enumerating HttpModules in ASP.NET&lt;/a&gt;. On my current project, I once again needed to view the loaded &lt;code&gt;HttpModule&lt;/code&gt;s, but this time in &lt;code&gt;ASP.NET MVC&lt;/code&gt;. The code is very similar; it just has some MVC-isms and has been &lt;code&gt;LINQ&lt;/code&gt;-ified now.&lt;/p&gt;
&lt;p&gt;Here is the relevant code:&lt;/p&gt;&lt;p&gt;&lt;a href=&#34;https://www.sagara.dev/2014/08/13/enumerating-httpmodules-mvc-edition/&#34;&gt;Continue reading...&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>CSC : warning CS1685: The predefined type ‘System.Runtime.CompilerServices.ExtensionAttribute’ is defined in multiple assemblies in the global alias</title>
      <link>https://www.sagara.dev/2014/05/09/csc-warning-cs1685-the-predefined-type-system-runtime-compilerservices-extensionattribute-is-defined-in-multiple-assemblies-in-the-global-alias/</link>
      <pubDate>Fri, 09 May 2014 16:10:00 -0700</pubDate><author>noreply@sagara.dev (Jon Sagara)</author>
      <guid>https://www.sagara.dev/2014/05/09/csc-warning-cs1685-the-predefined-type-system-runtime-compilerservices-extensionattribute-is-defined-in-multiple-assemblies-in-the-global-alias/</guid>
      <description>&lt;p&gt;In one of my ASP.NET MVC 5 projects that targets &lt;code&gt;.NET 4.5.1&lt;/code&gt;, I noticed that I was getting a new compiler warning at build time:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-plaintext&#34; data-lang=&#34;plaintext&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;CSC : warning CS1685: The predefined type &amp;#39;System.Runtime.CompilerServices.ExtensionAttribute&amp;#39; is defined in multiple assemblies in the global alias
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;&lt;a href=&#34;https://www.sagara.dev/2014/05/09/csc-warning-cs1685-the-predefined-type-system-runtime-compilerservices-extensionattribute-is-defined-in-multiple-assemblies-in-the-global-alias/&#34;&gt;Continue reading...&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>Using EFProf and MiniProfiler simultaneously in an ASP.NET MVC 5.1, Entity Framework 5 Code-First Project</title>
      <link>https://www.sagara.dev/2014/01/23/using-efprof-and-miniprofiler-simultaneously-in-an-asp-net-mvc-5-1-entity-framework-5-code-first-project/</link>
      <pubDate>Thu, 23 Jan 2014 16:06:00 -0800</pubDate><author>noreply@sagara.dev (Jon Sagara)</author>
      <guid>https://www.sagara.dev/2014/01/23/using-efprof-and-miniprofiler-simultaneously-in-an-asp-net-mvc-5-1-entity-framework-5-code-first-project/</guid>
      <description>&lt;p&gt;We&amp;rsquo;re already using the excellent &lt;a href=&#34;http://www.hibernatingrhinos.com/products/EFProf&#34;&gt;Entity Framework Profiler (EFProf)&lt;/a&gt; to gauge EF performance in our application. However, we wanted more information about the overall application performance, and thus turned to &lt;a href=&#34;http://miniprofiler.com/&#34;&gt;MiniProfiler&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;&lt;a href=&#34;https://www.sagara.dev/2014/01/23/using-efprof-and-miniprofiler-simultaneously-in-an-asp-net-mvc-5-1-entity-framework-5-code-first-project/&#34;&gt;Continue reading...&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>On worrying</title>
      <link>https://www.sagara.dev/2013/09/25/on-worrying/</link>
      <pubDate>Wed, 25 Sep 2013 12:33:00 -0700</pubDate><author>noreply@sagara.dev (Jon Sagara)</author>
      <guid>https://www.sagara.dev/2013/09/25/on-worrying/</guid>
      <description>&lt;p&gt;Rob Ashton, with &lt;a href=&#34;http://codeofrob.com/entries/i-worry-too.html&#34;&gt;a fine philosophy on worrying&lt;/a&gt;:&lt;/p&gt;&lt;p&gt;&lt;a href=&#34;https://www.sagara.dev/2013/09/25/on-worrying/&#34;&gt;Continue reading...&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>Unable to start debugging on the web server</title>
      <link>https://www.sagara.dev/2010/09/18/unable-to-start-debugging-on-the-web-server/</link>
      <pubDate>Sat, 18 Sep 2010 16:28:00 -0700</pubDate><author>noreply@sagara.dev (Jon Sagara)</author>
      <guid>https://www.sagara.dev/2010/09/18/unable-to-start-debugging-on-the-web-server/</guid>
      <description>&lt;p&gt;If you&amp;rsquo;re getting this error when trying to debug an &lt;code&gt;ASP.NET&lt;/code&gt; Web application on &lt;code&gt;IIS7&lt;/code&gt; or greater, check the &lt;code&gt;system.webServer&lt;/code&gt; element in your &lt;code&gt;Web.config&lt;/code&gt;.  If you have the &lt;code&gt;httpErrors&lt;/code&gt; element configured, you won&amp;rsquo;t be able to debug.  For your local dev environment, remove or comment out the &lt;code&gt;httpErrors&lt;/code&gt; element, and you should be good to go.&lt;/p&gt;&lt;p&gt;&lt;a href=&#34;https://www.sagara.dev/2010/09/18/unable-to-start-debugging-on-the-web-server/&#34;&gt;Continue reading...&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>ImageCodecInfo: Encoder and Decoder information</title>
      <link>https://www.sagara.dev/2010/01/25/imagecodecinfo-encoder-and-decoder-information/</link>
      <pubDate>Mon, 25 Jan 2010 22:24:00 -0800</pubDate><author>noreply@sagara.dev (Jon Sagara)</author>
      <guid>https://www.sagara.dev/2010/01/25/imagecodecinfo-encoder-and-decoder-information/</guid>
      <description>&lt;p&gt;If you&amp;rsquo;ve ever been curious about the &lt;code&gt;GDI+&lt;/code&gt; encoders and decoders available on your system, you can call &lt;code&gt;ImageCodecInfo.GetImageEncoders()&lt;/code&gt; and &lt;code&gt;ImageCodecInfo.GetImageDecoders()&lt;/code&gt;, respectively, to find out more:&lt;/p&gt;&lt;p&gt;&lt;a href=&#34;https://www.sagara.dev/2010/01/25/imagecodecinfo-encoder-and-decoder-information/&#34;&gt;Continue reading...&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>Free ZIP Code Database (data provided by PopularData.com)</title>
      <link>https://www.sagara.dev/2009/11/21/free-zip-code-database-data-provided-by-populardata-com/</link>
      <pubDate>Sat, 21 Nov 2009 22:25:00 -0700</pubDate><author>noreply@sagara.dev (Jon Sagara)</author>
      <guid>https://www.sagara.dev/2009/11/21/free-zip-code-database-data-provided-by-populardata-com/</guid>
      <description>&lt;p&gt;PopularData.com provides a &lt;a href=&#34;http://www.populardata.com/&#34;&gt;free list of U.S. ZIP codes&lt;/a&gt; in CSV format on their Web site.  I have taken the liberty of using that data to generate a SQL script that will create a &lt;code&gt;[ZipCode]&lt;/code&gt; table in your &lt;code&gt;SQL Server 2005&lt;/code&gt; database and populate it with over 42k unique U.S. ZIP codes.  Schema details can be found on &lt;a href=&#34;http://www.populardata.com/zipcode_database.html&#34;&gt;this page&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;&lt;a href=&#34;https://www.sagara.dev/2009/11/21/free-zip-code-database-data-provided-by-populardata-com/&#34;&gt;Continue reading...&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>&#34;HTTP Error 401.1 - Unauthorized&#34; when using Windows Authentication on IIS7.5</title>
      <link>https://www.sagara.dev/2009/09/21/http-error-401-1-unauthorized-when-using-windows-authentication-on-iis7-5/</link>
      <pubDate>Mon, 21 Sep 2009 15:37:00 -0700</pubDate><author>noreply@sagara.dev (Jon Sagara)</author>
      <guid>https://www.sagara.dev/2009/09/21/http-error-401-1-unauthorized-when-using-windows-authentication-on-iis7-5/</guid>
      <description>&lt;p&gt;You may have run into this error while trying to develop a site that uses &lt;code&gt;Integrated Windows Authentication&lt;/code&gt; on &lt;code&gt;Windows Server 2008 R2&lt;/code&gt; with &lt;code&gt;IIS7.5&lt;/code&gt;.  I sure did, and I beat my head against the wall for a couple of hours trying to figure it out.&lt;/p&gt;&lt;p&gt;&lt;a href=&#34;https://www.sagara.dev/2009/09/21/http-error-401-1-unauthorized-when-using-windows-authentication-on-iis7-5/&#34;&gt;Continue reading...&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>GraffitiCMS 1.2 export utility</title>
      <link>https://www.sagara.dev/2009/08/29/graffiticms-1-2-export-utility/</link>
      <pubDate>Sat, 29 Aug 2009 00:24:00 -0700</pubDate><author>noreply@sagara.dev (Jon Sagara)</author>
      <guid>https://www.sagara.dev/2009/08/29/graffiticms-1-2-export-utility/</guid>
      <description>&lt;div class=&#34;alert alert-danger&#34;&gt;
  Update 2010-09-29: This code has been moved to BitBucket: &lt;a href=&#34;http://bitbucket.org/jonsagara/graffititoblogml&#34;&gt;http://bitbucket.org/jonsagara/graffititoblogml&lt;/a&gt;
&lt;/div&gt;&lt;p&gt;&lt;a href=&#34;https://www.sagara.dev/2009/08/29/graffiticms-1-2-export-utility/&#34;&gt;Continue reading...&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>Ordered a new computer</title>
      <link>https://www.sagara.dev/2008/11/19/ordered-a-new-computer/</link>
      <pubDate>Wed, 19 Nov 2008 00:24:00 -0800</pubDate><author>noreply@sagara.dev (Jon Sagara)</author>
      <guid>https://www.sagara.dev/2008/11/19/ordered-a-new-computer/</guid>
      <description>&lt;p&gt;But it can&amp;rsquo;t get here soon enough.&lt;/p&gt;&lt;p&gt;&lt;a href=&#34;https://www.sagara.dev/2008/11/19/ordered-a-new-computer/&#34;&gt;Continue reading...&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>Enumerating HttpModules</title>
      <link>https://www.sagara.dev/2008/08/24/enumerating-httpmodules/</link>
      <pubDate>Sun, 24 Aug 2008 12:33:00 -0700</pubDate><author>noreply@sagara.dev (Jon Sagara)</author>
      <guid>https://www.sagara.dev/2008/08/24/enumerating-httpmodules/</guid>
      <description>&lt;p&gt;One common &lt;a href=&#34;http://weblogs.asp.net/haroonwaheed/archive/2008/06/30/ASP.NET-Performance-Tips.aspx&#34;&gt;ASP.NET performance tip&lt;/a&gt; is to remove any &lt;code&gt;HttpModule&lt;/code&gt;s that your application does not use.  You can take a peek at which modules are loaded by the framework on your behalf by examining the framework&amp;rsquo;s &lt;code&gt;Web.config&lt;/code&gt; file, but how do you find out which modules are actually loaded in the current context?&lt;/p&gt;&lt;p&gt;&lt;a href=&#34;https://www.sagara.dev/2008/08/24/enumerating-httpmodules/&#34;&gt;Continue reading...&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>try/swallow</title>
      <link>https://www.sagara.dev/2008/08/21/tryswallow/</link>
      <pubDate>Thu, 21 Aug 2008 10:33:00 -0700</pubDate><author>noreply@sagara.dev (Jon Sagara)</author>
      <guid>https://www.sagara.dev/2008/08/21/tryswallow/</guid>
      <description>&lt;p&gt;Dear fellow coders,&lt;/p&gt;
&lt;p&gt;Please don&amp;rsquo;t ever do this:&lt;/p&gt;&lt;p&gt;&lt;a href=&#34;https://www.sagara.dev/2008/08/21/tryswallow/&#34;&gt;Continue reading...&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>HttpValueCollection.ToString() generates your nice query strings</title>
      <link>https://www.sagara.dev/2008/05/24/httpvaluecollection-tostring-generates-your-nice-query-strings/</link>
      <pubDate>Sat, 24 May 2008 18:43:00 -0700</pubDate><author>noreply@sagara.dev (Jon Sagara)</author>
      <guid>https://www.sagara.dev/2008/05/24/httpvaluecollection-tostring-generates-your-nice-query-strings/</guid>
      <description>&lt;p&gt;In an ASP.NET page, if you call &lt;code&gt;Request.QueryString.ToString()&lt;/code&gt;, you&amp;rsquo;ll get a nicely formatted query string back, like this:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-plaintext&#34; data-lang=&#34;plaintext&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;my=query&amp;amp;string=value&amp;amp;foo=bar
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;&amp;ldquo;That&amp;rsquo;s nice,&amp;rdquo; I thought.  &amp;ldquo;I wonder how they implemented it.  I&amp;rsquo;ll fire up Reflector and take a look.&amp;rdquo;&lt;/p&gt;&lt;p&gt;&lt;a href=&#34;https://www.sagara.dev/2008/05/24/httpvaluecollection-tostring-generates-your-nice-query-strings/&#34;&gt;Continue reading...&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>Response.Redirect and the ThreadAbortException, and why it’s a good thing</title>
      <link>https://www.sagara.dev/2008/04/05/response-redirect-and-the-threadabortexception-and-why-its-a-good-thing/</link>
      <pubDate>Sat, 05 Apr 2008 18:28:00 -0700</pubDate><author>noreply@sagara.dev (Jon Sagara)</author>
      <guid>https://www.sagara.dev/2008/04/05/response-redirect-and-the-threadabortexception-and-why-its-a-good-thing/</guid>
      <description>&lt;p&gt;A couple of months ago, I ran into a problem where I was seeing a bunch of &lt;code&gt;ThreadAbortExceptions&lt;/code&gt; showing up in my logs.  It didn’t take long to track down why – I was calling &lt;code&gt;Response.Redirect&lt;/code&gt; from within a &lt;code&gt;try/catch&lt;/code&gt; block in my ASP.NET code-behind page, and the catch block was catching the &lt;code&gt;ThreadAbortException&lt;/code&gt; and writing it out to the log.  But why was the &lt;code&gt;ThreadAbortException&lt;/code&gt; being generated?&lt;/p&gt;&lt;p&gt;&lt;a href=&#34;https://www.sagara.dev/2008/04/05/response-redirect-and-the-threadabortexception-and-why-its-a-good-thing/&#34;&gt;Continue reading...&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    
  </channel>
</rss>