Gourd Alert (fictionalized while my actual app is still building up a tester base) is a .NET MAUI app that checks nearby farms for gourd availability and yells at you when the good pumpkins come in. Testing it needed a UAT backend, so testers could break things without touching production data. Apple and Google do not make that simple. App Store Connect and Google Play both expect you to promote the exact binary you tested, through TestFlight or an internal track, all the way to production. Build a separate app just to point it at a different backend, and you stop testing the artifact you are actually about to ship. What I needed was one MAUI binary, two backends, switchable without a rebuild.
Application Logs Are Your Friend (and How to Write Them)
A while back I wrote about why application logs are your friend: when something breaks in production, read your logs before you panic and roll back. That post assumed the logs were already good. It never asked the harder question: who wrote them, and did they write them well? Good application logging is a skill, not an afterthought, and most of us pick it up the hard way, one 2 AM incident at a time.
Building One Publish Script for Two App Stores (and Debugging the One That Almost Worked)
I wanted one command that builds a release, stamps the right version into it, and hands me an artifact ready for the App Store or Google Play. No manual archive steps, no hunting through Visual Studio menus, no “wait, which signing profile did I use last time.” Just a publish script for two app stores.
MAUI iOS Archive Fails on Windows: The Real Cause
A MAUI iOS archive fails on Windows with a cryptic Unzip error. I burned an afternoon blaming two real, documented bugs before finding the actual cause: a plain JSON file. Have you hit “The filename, directory name, or volume label syntax is incorrect” or “The given path’s format is not supported” while archiving a .NET MAUI iOS app through Visual Studio’s Pair-to-Mac? Save yourself the detour. Here’s the whole mess, dead ends included.
MAUI iOS Provisioning: Why Old Certs Return
I spent an evening trying to convince Visual Studio and my Mac that I no longer work for a defunct company — and that my MAUI iOS provisioning setup has nothing to do with it.
How to Alienate Your Users: An Asshole’s Guide For Responding to Help Requests in Open Source
Open-source projects thrive on community participation and collaboration. As a maintainer, how you respond to help requests can make or break the user experience. Here are some key points to implement if you want to ensure you alienate your users.
Skip Authentication Schemes in ASP.NET Core
Authentication in ASP.NET Core is both powerful and dynamic. It provides you the power to incorporate many different schemes and augment the logged-in security principal. Authentication schemes are how we apply authentication in ASP.NET Core. What if you want to skip authentication schemes in favor of another?
ASP.NET Core Request Timeout IIS In-Process Mode
Over the years we’ve seen .NET mature and change since v1. We’ve seen server technologies mature in many ways. Things we did yesterday don’t necessarily work the same way today. One of those things that recently struck me was how request timeouts work in IIS. If like me, you just assumed they worked the same in .NET Core then I invite you to join me on this journey. Let’s explore how to make ASP.NET Core request timeouts work properly with IIS in-process hosting mode.
Windows Authentication in NET Core: Expanding Role-Based Security
I recently wrote about implementing Windows Authentication with React and .NET Core. Given the length of that post, I found it necessary to keep it bare bones. Today we’re going to talk about expanding our Windows Authentication in NET Core by adding role-based security.
.NET Core JSON Serialization Changes – Newtonsoft vs System.Text.Json
I’ve been using Microsoft .NET for a long time. I started my programming journey learning C# on .NET 1.0 right after it’s initial release. In that time I have only experienced a breaking change twice. Once with WCF configuration in my app.config, and recently with the JSON serialization (or deserialization, as it were). For those upgrading a .NET Core 2.x application to .NET Core 3.x, you’ll want to be aware of some changes in the defaults. Today let’s talk about .NET Core and how it handles JSON serialization (and deserialization).











