Jerrie Pelser's Blog
Add Google authentication to ASP.NET Core (without Identity)
Lossless JSON round-tripping in C# with JsonExtensionData
Switching to Omarchy: Replacing iCloud Drive for files
Switching to Omarchy: It's Neovim after all
Switching to Omarchy: The first day or two
Prevent plus-addressing account creation abuse (Part 2)
Prevent plus-addressing abuse with a primary email
Prevent plus-addressing account creation abuse (Part 1)
Prevent plus-addressing abuse with normalized emails
Prevent plus-addressing with ASP.NET Core Identity
Disallow application signups with emails containing a plus
Learning Thai with AI: Enriching my Thai vocab with AI
Learning Thai with AI: Cleaning up my Thai words
Learning Thai with AI: Cleaning up parts of speech
Learning Thai with AI: Exporting and Importing cards
Cleaning up my Anki deck with AI: Preparing the AI prompts
Learning Thai with AI: Preparing the AI prompts
How I publish scheduled content with Relay.app
End-to-end API testing with Flurl HTTP testing library
Automatically refresh access tokens for 3rd party services
Debug ASP.NET Core OAuth authorization flows with Proxyman
Return popup window response with the Broadcast Channel API
Using Pushed Authorization Requests (PAR) with OpenIddict
AdminUI for OpenIddict: A gentle introduction
Implement user-facing logs with ASP.NET Core and Serilog
Limiting API callers to specific IP Addresses
Squash EF Core migrations
Disable ASP.NET Core Status Code pages for FastEndpoints
My process for creating API clients
Serializing audit information with System.Text.Json