Sitemap
MAIN PAGES
BLOG CONTENT
POPULAR TAGS
RECENT POSTS
CONNECT
LEGAL & INFO
Main pages
All blog posts by year
2026
- Stop Using nginx as Your Default Static File Server in Docker
- Containerizing .NET in 2026 Without a Dockerfile
- Problem Details in ASP.NET Core and .NET 11
- Resilience in .NET with Microsoft.Extensions.Resilience
- What Matters in ASP.NET Core 11
- Migrating Semantic Kernel Agents to Microsoft Agent Framework
- Building Production MCP Servers with ASP.NET Core
- Telemetry, Logging and Auditing in .NET: Designing the Right Data Path
- Automatic TTL in Azure Cosmos DB with .NET
- Custom Password Hashing in ASP.NET Core: A Versioned, Upgradeable Design
- MCP C# SDK 2.0: Stateless HTTP, Interactive Tools and a Practical Migration Path
- Handle time correctly in .NET: TimeProvider
- Run Hono on Azure Static Web Apps: managed Functions APIs for static frontends
- Problem Details in ASP.NET Core and .NET 10
- Using MeterListener with the new .NET 11 MemoryCache metrics
- Run Hono on Azure: Container Apps, Functions, App Service and AKS compared
- Top 10 recommendations for .NET developers working with Azure Cosmos DB
- How to migrate .NET versioning from x.x.x.x to SemVer
- Modern versioning for ASP.NET Core and web apps and how to produce idempotent artifacts
- Modern versioning for .NET desktop apps and how to produce idempotent artifacts
- Modern versioning for .NET apps and libraries and how to produce idempotent artifacts
- Local Aspire Development with Azure Cosmos DB and the Preview Emulator
- Using MiMo V2.5 with GitHub Copilot BYOK and OpenCode Zen (Promo)
- Using OpenAI Models in VS Code with GitHub Copilot BYOK
- Using Kimi K2.5 and DeepSeek V4 in VS Code with GitHub Copilot BYOK and OpenCode
- Zero-Code REST API Mocking with json-server for Angular and React
- Cloudflare Workers with wrangler.toml: Preview URLs, production routes and SEO-safe SPA handling
- Azure Static Web Apps with GitHub Actions: Pull Request Preview Environments, automatic teardown and stable production URLs
- Backing Up GitHub Repositories on Synology NAS with gickup
- The new Microsoft Testing Platform for .NET: An introduction with practical samples and migration guidance
- GitHub Copilot - Custom Agents for Full-Stack Teams: A Practical Operating Model for .NET, React and Azure
- .NET NuGet Trusted Publishing with GitHub Actions
- C# 15 Unions: Unions are finally in .NET
- Unio: High-Performance Discriminated Unions for C#
- Run Azure Cosmos DB locally with .NET Aspire and make emulator endpoints visible in the dashboard
- .NET 11 Preview 1 Is Here: What's New and What to Expect
- Agent Skills Standard: The Quality Contract Behind Reliable AI Agents
- Create a Local SQL Server Database File with .NET
- Building Custom AI Tooling with the GitHub Copilot SDK for .NET
- Ralph Loop: Autonomous Coding with GitHub Copilot CLI
- Serve SPAs correctly on Cloudflare Workers
- Automate Pull Request Comments with GitHub Actions
- Build a Custom FeatureGate Attribute in ASP.NET Core with C#
2025
- Home Assistant via Docker auf einer Synology NAS installieren
- Install Home Assistant on Synology NAS with Docker
- TOON Format: Token-Oriented Object Notation for LLM-Friendly Data Exchange
- IMemoryCache Entry Invalidation (Manual Cache Busting)
- Custom IFeatureDefinitionProvider: Feature Flags from Tests and Databases
- .NET 10 Release: What's New (LTS) and What to Upgrade First
- Self-Hosting Vaultwarden (Bitwarden) with Docker on Synology NAS
- Vaultwarden (Bitwarden) mit Docker auf Synology NAS selbst hosten
- Create Self-Signed HTTPS Certificates with a Custom Root CA
- Create a Custom Root Certificate Authority for Self-Signed Certificates
- Automatically discover tools for Azure OpenAI Realtime API
- Test ILogger in .NET the easy way (with an in-memory logger)
- Azure Document Intelligence – Fix: ContentSourceNotAccessible (Invalid data URL)
- Provision Microsoft Fabric with Azure Bicep
- Use SSH for Git Authentication in Azure DevOps
- Raspberry Pi OS: Set a Static IP Address
- Raspberry Pi WS2812B Lightstrip Unit Testing Strategies with .NET
- Raspberry Pi WS2812B Lightstrip Control with .NET
- Raspberry Build HAT: Unit Testing Strategies with .NET
- Raspberry Build HAT: Controlling LEGO Engines with .NET
- Azure DevOps Path Exclude Trigger: Comparing 'docs', 'docs/', 'docs/**' and 'docs/**/*'
- Scheduled Builds for Cloudflare Deployments with GitHub Actions
- Automatically deploy GPT-4.1 Mini in Azure OpenAI via Bicep
- From ASP.NET Core to Hugo: My Blog's Migration to Cloudflare
- Running a Local Docker Registry with PowerShell
- Task.Run vs. TaskFactory.StartNew
- Setting up GitHub Copilot for Better Commit Messages in VS Code
- Standardizing AI Context: the Model Context Protocol
- Read DNS entries with .NET
- Automate Cloudflare DNS management with PowerShell
- Create a custom captcha provider with ASP.NET Core
- New Format Options of System.Text.Json with .NET 9
- Compile your .NET projects with multiple SDKs on GitHub
- When to use records in C#
- Create an anti-idle App for Microsoft Teams with .NET
- Create QRCodes with .NET and ZXing
- Create an Entra Local User Account via Microsoft Graph with .NET
- Easy handling of optional Azure Web App settings in Bicep
- The power of Aggressive Inlining in .NET and C#
- Replace FluentAssertions with AI
- Advanced Usage of MSSQL Indexed Views in EF Core
- Use a hidden Google API to load favicons
- Increase Command Timeout for EF Core Migration Bundles
2024
- Create a custom proxy endpoint action with ASP.NET Core MVC
- Load Google Search Crawler IP Address Ranges with Refit
- Replace and remove whitespaces in strings - performant and sustainable
- Auto Format your Code on save with Visual Studio
- Sustainable Code with .NET 9
- Use ServiceCollection in Unit Tests with .NET
- How to process ZIP Files from a Stream in .NET
- Decompress a ZIP archive with .NET
- Compress a folder of files to a ZIP archive with .NET
- Read cpu load on Windows with .NET
- .NET: the cost of returning an empty collection
- .NET: use a preview version in your global.json
- Efficiently clean a string with .NET
- Refit .NET - my personal caller best practise
- Strong Name Sign .NET Assemblies via SNK
- Handle Yaml Files with .NET
- Welcome to the new Visual Studio SLNX Solution File
- Enable NuGet Audit for better DevSecOps in .NET
- ASP.NET Core Form protection with Cloudflare's Turnstile
- Use GitHub Copilot Chat in Visual Studio to solve the .NET Moq drama and migrate to NSubstitute
- .NET Event Counters
- Top 5 Git Commit Message Best Practises in 2024
- Custom Azure Application Insights Telemetry Metrics with .NET
- Azure Communication Service - .NET Client with ConnectionString
- Azure Communication Service - .NET Client with Managed Identity
- Header and Footer Layouts with Handlebars.NET
- .NET Naming Best Practises: API Models
- .NET Naming Best Practises: Services vs. Providers
- .NET Naming Best Practises: Database Entities
- .NET Naming Best Practises: DTOs
2023
- Text and EMail Templates with Handlebars.NET
- Create QR Codes with .NET
- Deploy ASP.NET Core via Zip Deployment to Azure Web App
- New Data Annotation attributes with .NET 8
- The well-structured Entity in EF Core
- When to use optional arguments and parameter defaults in c#
- .NET 8 makes you faster. Everyday.
- Convert UnixTime to DateTimeOffset with a custom System.Text.Json Converter
- Accelerate your .NET build with Visual Studio 2022
- Re-use EF Core Expressions to avoid redundant queries
- Easy InMemory Unit Tests with EFCore and Sqlite
- Better Code with custom Strong-Id Types
- Value Converters in EFCore
- Simplify string formatting with SmartFormat.NET
- Neuerungen in .NET 8
- Detect Windows 10 and Windows 11 with .NET
- Using Azure DevOps Pipeline Variables in PowerShell Script Files
- Efficient deserialization of Json files on Azure Blob Storage with .NET
- Use constants in Azure Bicep to simplify your IaC life.
- Microsoft has moved Teams backend service to .NET 6 - the performance results
- A struct with an interface is inefficient in .NET
- Difference of is null vs equals null and why is null is recommended
- Create Symbolic Links on Windows with .NET
- Benefits of using isolated mode of Azure Functions with .NET
- Web performance tests with k6
- Multi Query Selects with EF Core
- Disable Spell Checker in Visual Studio 2022
- MSSQL Query Statistics
- Statische Methoden in C# / .NET
- What is .NET and what is the difference to C#?
- Difference between Add and AddAsync in EF Core
2022
- ChatGPT answers are cut off - how to fix
- Test your .NET exceptions with FluentAssertions
- Get Process Id by Name or Path with .NET
- Avoid Caching with MemoryCache and GetOrCreate in .NET
- Validate Configuration Options with ASP.NET Core
- What is a NullReferenceException in .NET and how can it be avoided?
- Avoid hardcoded Microsoft URLs with Bicep environments
- Create a Fulltext Catalog with EF Core .NET Migrations for MSSQL
- My Top Microsoft Ignite 2022 News
- Compile Linq Expressions to increase performance
- DateTime vs. DateTimeOffset - UtcNow vs. Now
- Microsoft is moving backend services to .NET 6
- Health Check Ping with EF Core and MSSQL
- Why you should no longer use var in C#
- Embed Code into your blog - and also on Medium
- Requesting Microsoft Defender HTTP API with .NET and Refit
- Configure Azure Active Directory for UserName-Password Login
- Parse HTML with .NET and the HtmlAgilityPack
- Use ASP.NET Core Options with an instance
- Write Json Files asynchronously with .NET
- Write XML Files asynchronously with .NET
- ActivityPub Protocol
- List local Windows Administator names with .NET
- List local Windows Administator names with PowerShell
- Enrich Token Claims with ASP.NET Core
- Create Azure Active Directory App Registration with Azure CLI
- .NET Updates März 2022
- 20th Year! Happy Birthday .NET!
- Serve a SPA like Angular or React on Azure App Service for Linux
- ASP.NET Core 7 Roadmap veröffentlicht
- .NET Updates Februar 2022
- Die .NET UI Technologieübersicht 2022
- Validate Bicep config during CI/CD with Azure DevOps
2021
- .NET Updates Dezember 2021
- ThrowAwayLogger: easy log mocking in .NET
- What's Bicep on Azure and why you should use it?
- Check for .NET NuGet Updates via dotnet outdated cli tool
- DateTime vs DateTimeOffset - der richtige Umgang mit Zeiten in .NET
- .NET Updates November 2021
- Custom GitHub Pull Request Templates
- Better GitHub Readmes with Readme Generator
- .NET Updates Oktober 2021
- Copy text into the Windows Clipboard with .NET
- Bad Gateway error on App Service deployment
- Class vs. Struct performance in .NET
- .NET Updates September 2021
- AssemblyMetadata - Build Time with Source Code Generators
- .NET Updates August 2021
- .NET Updates Juli 2021
- Parse HTTP User Agents with ASP.NET Core
- .NET Updates Juni 2021
- Fast Parsing HTTP User Agents with .NET
- Plugin Mechanism with Parts in ASP.NET Core
- .NET Updates Mai 2021
- .NET Updates April 2021
- OpenTelemetry .NET 1.0 veröffentlicht!
- .NET 6 Preview released
- Die Roadmap für Azure Functions mit .NET 5 und .NET 6
- .NET Updates März 2021
- .NET Updates Februar 2021
- Loggen eigener Werte mit Azure Application Insights
- Loggen des User Agent mit Azure Application Insights
- Azure Active Directory nun auf .NET Core!
- .NET Updates Januar 2021
- Loggen des Referers mit Azure Application Insights
2020
- .NET Updates Dezember 2020
- .NET Updates kommen mit dem Windows Update!
- .NET Updates November 2020
- Versenden von E-Mails mit DKIM mit .NET und MailKit
- Flexibler und einfacher E-Mail Versand mit Mimekit in .NET
- .NET 5 erhält Performance-Boost auf Raspberry und der ARM64-Familie
- .NET Updates September 2020
- C# 9 - Was gibt's Neues?
- Was ist Azure Static Web Apps?
- Microsoft Build 2020 - Neues für .NET Entwickler
- Build and Test .NET Core with GitHub Actions
- Use hCaptcha with dotnet and ASP.NET Core
- Was erwartet uns mit ASP.NET Core 5?
- .NET 5 Preview 1 veröffentlicht
- Store Messages of Azure IoT Hub to Azure Blob Storage
- Device Twins vs Digital Twins in Azure IoT
- Azure Functions with MediatR and Dependency Injection
- Setup the local Azure IoT Edge development container
- Wie schütze ich das Ökosystem meines Projekts?
- Dependency Injection with Azure Functions and FunctionsStartup
- Warum IP-Adressen kein eindeutiges Merkmal sind
- Disable Windows Compatibility Telemetry in Windows 10
- Enforce english documentations on Microsoft Docs
- Format DateTime to ISO 8601
- Clone entity values with Entity Framework
- Expose OpenSearch Endpoint with an ASP.NET Core Controller Action
- Welcome 2020
2019
- Entity Framework 3 - Migrations
- Custom PasswordHasher in ASP.NET Core Identity
- Unit Testing with Entity Framework Core 3
- Custom Model Binders in ASP.NET Core
- Use SignalR in MediatR Notifications
- IoT Plattformen: Make or Buy
- Microsoft Elite Controller Series 2 Unboxing
- Use a MSSQL Server 2017 Docker Container with Full-Text Search Support
- Enable CodeLens in Visual Studio 2019
- Read System Properties like CPU Temperatures with .NET Core
- Using ASP.NET Core 3 in .NET libraries
- Windows 10: disable app auto start
- Outlook: failed to add Office 365 account
- Microsoft MVP 2019 - .NET and Azure
- Azure IoT: send messages with C#
- Setting up an Azure IoT Hub
- ASP.NET Core Serverless on AWS Lambda
- Resize Images with .NET Core
- Add custom claims to token in Auth0
- AWS Toolkit for Visual Studio 2019
- Upload to Azure Storage with PHP
- Update Azure Storage Blob Properties with PowerShell
- Run MSSQL on Docker for Windows
- Twitch MediatR with ASP.NET Core
- Fast SQL-Insert with C# and SqlBulkCopy
- Load an image into a byte-array with C#
- Download a file with .NET
- Use a GoPro Hero as Webcam
2018
- Model Binders in ASP.NET Core
- HTTP Status 500 on debugging ASP.NET Core with Visual Studio 2017
- Modern API-Development with ASP.NET Core
- Hide organizations in Azure DevOps aka VSTS
- Run ASP.NET Core with .NET Framework in a Docker Container
- Review: Corsair H100i v2 auf Intel 7820X mit NOCTUA NF-A12x25
- Run ActiveMQ in Docker on your Synology
- Run MongoDB in Docker on your Synology
- Synology DS718+ RAM Upgrade
- Fix Firefox crash on Ubuntu Mate
- Raspberry PI und Ubuntu Mate mit Unitymedia WifiSpot verbinden
- Delete network manager entries in Ubuntu Mate
- Microsoft MVP Award 2018-2019
- Setup VSTS YAML builds for your Angular app
- Setup VSTS YAML builds for your ASP.NET Core app
- Azure Saturday 2018: Keynote by Donovan Brown
- IoT im Maschinenbau: die Cloud ist nicht genug
- ASP.NET Core Exception Handling Middleware
- Microsoft Azure CosmosDB Unique Key Policy
- What's new in .NET Core, ASP.NET Core and EF Core 2.1
- ASP.NET Core ModelState Validation Filter
- Convert ext4 file system to the new btrfs on a Synology NAS
2017
- Easily update all git submodules
- Set up a really cheap build agent to support NPM 5 and Angular 5 in Visual Studio Team Services
- ASP.NET Core - Using TempData
- ASP.NET Core 2.0 Upgrade causes HTTP 502
- Verleihung Microsoft MVP 2017
- Aktualisierung meiner Entwicklermaschine
- Disable Windows 10 Game Mode
- Partnerschaft DWX 2017
- Better exception details with ASP.NET Core
- Aktivieren des impliziten OAuth2 Flow in Azure Active Directory
- Aktivieren der Code-Coverage-Überwachung in Visual Studio Team Services
- Git Flow mit Visual Studio Team Services
2016
- How to fix - Windows 10 Memory Leak
- MVP Global Summit 2016 - Mein zweiter Besuch
- ASP.NET Core - Teil 2: die Middleware
- ASP.NET Core - Teil 1: die Basics
- ASP.NET Core - hello world
- Unboxing Microsoft MVP Award 2016
- Pfad des aktuellen Desktop Hintergrundbilds in Windows 10
- Eine moderne WebAPI - die OData Basics
2015
- DELL XPS 13 Erfahrung - Mein 50-Tage-Fazit
- MVP GLOBAL SUMMIT 2015: TAG 3
- MVP GLOBAL SUMMIT 2015: TAG 2
- MVP GLOBAL SUMMIT 2015: TAG 1
- Ernennung zum Microsoft MVP 2015
- Mein Microsoft MVP Award 2015
- Renominierung zum Microsoft MVP 2016
- IIS und ASP.NET Header verstecken
- Aggressive Client Caching mit Hilfe von HTML 5 Manifesten
2014
- Einfaches WCF-Beispiel ohne komplizierte Config
- Unit-Testen von internen Klassen in C#
- Interview in der dotnetpro
2013
- ASP.NET MVC - Arbeiten mit View- und SubmitModels
- Auto-Vervollständigung von HTML-Eingabefeldern in Formularen deaktivieren
- C# - Eigene Events - Beispiel anhand einer E-Mail-Überwachung
- C# Warteschlangen – Die BlockingCollection