logo garethbrown.net
AboutPostsTags

Posts

  • Jul 2, 2022

    Maintaining a Blog with Jekyll, GitHub Pages and GitHub Codespaces

  • Jul 1, 2022

    Managing Code Snippets Using Logseq

  • Jan 18, 2022

    API Versioning and Basic UI Authentication with OpenAPI (Swagger / Swashbuckle) in .NET Core 6

  • Jan 9, 2022

    A Rough Guide to Building a Retro Pie Bartop Arcade Game Machine

  • Jan 6, 2022

    Uploading Directly to AWS S3 from the Client (JavaScript / .NET Core / C#)

  • Jan 6, 2022

    Using GitHub to Host Images

  • Jan 6, 2022

    A Custom Workflow to Publish from Obsidian to Blot.im

  • Jul 1, 2021

    Converting Between Enum Types By Value in C#

  • Feb 25, 2021

    Sanitizing HTML in .NET Core

  • Feb 25, 2021

    Implementing Microsoft.Extensions.Logging.ILogger with NLog

  • Feb 25, 2021

    How to wrap a TypeScript / JS callback with async / await

  • Feb 25, 2021

    How to create a deep copy of an object in JavaScript/TypeScript

  • Feb 23, 2021

    A Utility Class for Finding Database Deadlocks in .NET / C# Applications

  • Jul 23, 2020

    Robust Error Handling in ASP.NET Core

  • Dec 24, 2019

    How to inject Google Adsense In-Article script into your HTML (ASP.NET Core Razor)

  • Aug 7, 2018

    Fail Early, Fail Fast and why you should throw exceptions

  • Jan 8, 2013

    ASP.NET File Uploader with SignalR Progress Bar and Extended Input Stream Processing

subscribe via RSS

garethbrown.net

  • garethbrown.net
  • gareth.brown@appsoftware.com
  • garethrbrown
  • gbro3n

Gareth Brown on software engineering, personal projects and anything I'm learning along the way.