<feed xmlns="http://www.w3.org/2005/Atom">
    <title>Michael McKenna</title>
  
    <link rel="self" href="https://michael-mckenna.com/blog/atom.xml"/>
  
    <link href="https://michael-mckenna.com/blog/" rel="alternate"></link>
  
    <updated>2025-05-18T13:12:11Z</updated>
  
    <id>https://michael-mckenna.com/blog/</id>
  
    <entry>
        <title>Authentication failed when copying files to Azure Blob Storage in DevOps with auto-provisioned service connection</title>
        <author>
            <name>Michael McKenna</name>
        </author>
        <link rel="alternate" href="https://michael-mckenna.com/azureblob-file-devops-copy-info-authentication-failed/"/>
        <id>https://michael-mckenna.com/azureblob-file-devops-copy-info-authentication-failed/</id>
        <published>2025-05-18T13:12:11Z</published>
        <updated>2026-02-15T02:30:13Z</updated>
        <summary type="html">I needed to configure a pipeline to copy some build artefacts to Azure Blob storage, however after setting up the AzureBlob File Copy task I kept getting an Authentication Failed error.</summary>
    </entry>
  
    <entry>
        <title>Debouncing input change event in Vue 3; wait until user stops typing</title>
        <author>
            <name>Michael McKenna</name>
        </author>
        <link rel="alternate" href="https://michael-mckenna.com/debouncing-input-change-event-wait-until-user-stops-typing/"/>
        <id>https://michael-mckenna.com/debouncing-input-change-event-wait-until-user-stops-typing/</id>
        <published>2024-06-23T13:12:11Z</published>
        <updated>2026-02-15T02:30:13Z</updated>
        <summary type="html">Ever needed to create an auto-complete that&amp;rsquo;s powered by an auto-complete API, or have a search field you want to automatically run without forcing the user to hit enter? Use this technique to avoid excessive traffic to your endpoints.</summary>
    </entry>
  
    <entry>
        <title>Multi-tenancy in ASP.NET Core 8 - Tenant Specific Options</title>
        <author>
            <name>Michael McKenna</name>
        </author>
        <link rel="alternate" href="https://michael-mckenna.com/multi-tenant-asp-dot-net-8-tenant-options/"/>
        <id>https://michael-mckenna.com/multi-tenant-asp-dot-net-8-tenant-options/</id>
        <published>2024-04-21T23:29:12Z</published>
        <updated>2026-02-15T02:30:13Z</updated>
        <summary type="html">In this post we will configure options on a per-tenant basis using the Options Pattern.</summary>
    </entry>
  
    <entry>
        <title>Multi-tenancy in ASP.NET Core 8 - Dependency Injection &amp; Tenant Specific Services</title>
        <author>
            <name>Michael McKenna</name>
        </author>
        <link rel="alternate" href="https://michael-mckenna.com/multi-tenant-asp-dot-net-8-tenant-services/"/>
        <id>https://michael-mckenna.com/multi-tenant-asp-dot-net-8-tenant-services/</id>
        <published>2024-04-13T23:29:12Z</published>
        <updated>2026-02-15T02:30:13Z</updated>
        <summary type="html">In this post we look at how to have tenant specific services in a multi-tenant application in ASP.NET Core 8.</summary>
    </entry>
  
    <entry>
        <title>The One Billion Row Challenge in .NET</title>
        <author>
            <name>Michael McKenna</name>
        </author>
        <link rel="alternate" href="https://michael-mckenna.com/csharp-dot-net-1brc/"/>
        <id>https://michael-mckenna.com/csharp-dot-net-1brc/</id>
        <published>2024-03-04T23:29:12Z</published>
        <updated>2026-02-15T02:30:13Z</updated>
        <summary type="html">I just saw the one billion row challenge. I&amp;rsquo;m a bit late as the challenge was back in January but I thought it would be a fun exercise to try and solve it in .NET.</summary>
    </entry>
  
    <entry>
        <title>Multi-tenancy in ASP.NET Core 8 - Tenant Resolution</title>
        <author>
            <name>Michael McKenna</name>
        </author>
        <link rel="alternate" href="https://michael-mckenna.com/multi-tenant-asp-dot-net-8-tenant-resolution/"/>
        <id>https://michael-mckenna.com/multi-tenant-asp-dot-net-8-tenant-resolution/</id>
        <published>2024-03-03T23:29:12Z</published>
        <updated>2026-02-15T02:30:13Z</updated>
        <summary type="html">Can you believe it, just like that it&amp;rsquo;s been 4 and a half years since I wrote my initial series on multi-tenancy in ASP.NET and now ASP.NET Core 8 is out. In this post I revisit multi-tenancy in ASP.NET Core and take a fresh look at how I&amp;rsquo;d implement multi-tenancy today.</summary>
    </entry>
  
    <entry>
        <title>IndieAuth in ASP.NET</title>
        <author>
            <name>Michael McKenna</name>
        </author>
        <link rel="alternate" href="https://michael-mckenna.com/indieauth-in-asp-dot-net/"/>
        <id>https://michael-mckenna.com/indieauth-in-asp-dot-net/</id>
        <published>2023-09-27T20:13:11Z</published>
        <updated>2026-02-15T02:30:13Z</updated>
        <summary type="html">This is a long form blog post about how I added support for IndieAuth as an authentication method for a .NET 6 application.</summary>
    </entry>
  
    <entry>
        <title>Adding snake_case support to System.Text.Json</title>
        <author>
            <name>Michael McKenna</name>
        </author>
        <link rel="alternate" href="https://michael-mckenna.com/add-snake-case-to-system-text-json/"/>
        <id>https://michael-mckenna.com/add-snake-case-to-system-text-json/</id>
        <published>2023-07-19T10:00:00Z</published>
        <updated>2026-02-15T02:30:13Z</updated>
        <summary type="html">It&amp;rsquo;s not supported out of the box (yet) despite being quite popular (e.g. GitHub API) but it&amp;rsquo;s super simple to add if you need it.</summary>
    </entry>
  
    <entry>
        <title>How to upload a file to a GitHub release in a workflow</title>
        <author>
            <name>Michael McKenna</name>
        </author>
        <link rel="alternate" href="https://michael-mckenna.com/how-to-upload-file-to-github-release-in-a-workflow/"/>
        <id>https://michael-mckenna.com/how-to-upload-file-to-github-release-in-a-workflow/</id>
        <published>2023-07-05T10:00:00Z</published>
        <updated>2026-02-15T02:30:13Z</updated>
        <summary type="html">Spoiler alert: you don&amp;rsquo;t need an Action contributed by a third party.</summary>
    </entry>
  
    <entry>
        <title>Automated versioning and publishing of a SDK-style NuGet packages using GitHub Actions</title>
        <author>
            <name>Michael McKenna</name>
        </author>
        <link rel="alternate" href="https://michael-mckenna.com/automated-versioning-and-publishing-sdk-style-nuget-packages-using-github-actions/"/>
        <id>https://michael-mckenna.com/automated-versioning-and-publishing-sdk-style-nuget-packages-using-github-actions/</id>
        <published>2023-06-26T10:00:00Z</published>
        <updated>2026-02-15T02:30:13Z</updated>
        <summary type="html">In this article we look at the method of automating the NuGet packaging process using GitHub Actions that we used for GuidOne.</summary>
    </entry>
  
    <entry>
        <title>Upgrading to .NET 6 and Entity Framework table data annotation schema not working</title>
        <author>
            <name>Michael McKenna</name>
        </author>
        <link rel="alternate" href="https://michael-mckenna.com/upgrading-to-net-6-and-entity-framework-table-data-annotation-schema-not-working/"/>
        <id>https://michael-mckenna.com/upgrading-to-net-6-and-entity-framework-table-data-annotation-schema-not-working/</id>
        <published>2023-06-23T10:00:00Z</published>
        <updated>2026-02-15T02:30:13Z</updated>
        <summary type="html">After upgrading a .NET 3.1 ASP.NET Web Application to .NET 6 and Entity Framework from 3.1.1 to 7.0.8 the schema applied using the table data annotation was no longer respected</summary>
    </entry>
  
    <entry>
        <title>Automated versioning and publishing of a Non-SDK-style NuGet packages using GitHub Actions</title>
        <author>
            <name>Michael McKenna</name>
        </author>
        <link rel="alternate" href="https://michael-mckenna.com/automated-versioning-and-publishing-nuget-packages-using-github-actions/"/>
        <id>https://michael-mckenna.com/automated-versioning-and-publishing-nuget-packages-using-github-actions/</id>
        <published>2023-06-18T10:00:00Z</published>
        <updated>2026-02-15T02:30:13Z</updated>
        <summary type="html">In this article we look at the method of automating the NuGet packaging process using GitHub Actions that we used for JsonPatch.</summary>
    </entry>
  
    <entry>
        <title>Peripheral: The great blog refresh of 2023</title>
        <author>
            <name>Michael McKenna</name>
        </author>
        <link rel="alternate" href="https://michael-mckenna.com/introducing-peripheral/"/>
        <id>https://michael-mckenna.com/introducing-peripheral/</id>
        <published>2023-06-14T10:00:00Z</published>
        <updated>2026-02-15T02:30:13Z</updated>
        <summary type="html">This blog just turned 10! It&amp;rsquo;s a strange milestone; so inconsequnetial for everyone in the world bar me. Instead of going down a rabbit hole of irrelevance a better use of my time is to give this blog yet another refresh.</summary>
    </entry>
  
    <entry>
        <title>Linking to the latest commit in the header of your Hugo site on GitHub</title>
        <author>
            <name>Michael McKenna</name>
        </author>
        <link rel="alternate" href="https://michael-mckenna.com/linking-to-the-latest-commit-in-the-footer-of-your-hugo-static-site-on-github/"/>
        <id>https://michael-mckenna.com/linking-to-the-latest-commit-in-the-footer-of-your-hugo-static-site-on-github/</id>
        <published>2023-05-07T10:00:00Z</published>
        <updated>2026-02-15T02:30:13Z</updated>
        <summary type="html">.GitInfo is linked to the current page, this is how we accessed the lastest commit information at build</summary>
    </entry>
  
    <entry>
        <title>Host your Hugo Generated site on GitHub</title>
        <author>
            <name>Michael McKenna</name>
        </author>
        <link rel="alternate" href="https://michael-mckenna.com/host-your-hugo-generated-site-on-github/"/>
        <id>https://michael-mckenna.com/host-your-hugo-generated-site-on-github/</id>
        <published>2023-05-01T10:00:00Z</published>
        <updated>2026-02-15T02:30:13Z</updated>
        <summary type="html">GitHub Pages are are a great way to host a blog, share your résumé, or even host a website about one of your projects.</summary>
    </entry>
  
</feed>