56,966 blogs · [ { "id": "01a0872b-cf7d-70b9-9693-908f621f9d15", "title": "How we enforce .NET coding standards at Workleap to improve productivity, quality and performance", "url": "https://anthonysimmon.com/workleap-dotnet-coding-standards/", "published_at": "2025-08-04T11:00:00+00:00" }, { "id": "01a0872b-cf7d-70b9-9693-908f627d5086", "title": "How we enforce web API standards and guidelines at Workleap", "url": "https://anthonysimmon.com/web-api-standards-at-workleap/", "published_at": "2025-07-29T11:00:00+00:00" }, { "id": "01a0872b-cf7d-70b9-9693-908f63228e0c", "title": "Embed Python in .NET applications to run models with transformers", "url": "https://anthonysimmon.com/embed-python-dotnet-apps-transformer-models/", "published_at": "2025-06-16T11:00:00+00:00" }, { "id": "01a0872b-cf7d-70b9-9693-908f641cfe5c", "title": "How Workleap uses .NET Aspire to transform local development", "url": "https://anthonysimmon.com/dotnet-aspire-at-workleap/", "published_at": "2025-05-12T11:00:00+00:00" }, { "id": "01a0872b-cf7d-70b9-9693-908f6498a657", "title": "Handle cancellation in tests with xUnit.net v3", "url": "https://anthonysimmon.com/xunit-cancellationtoken-support/", "published_at": "2025-04-14T11:00:00+00:00" }, { "id": "01a0872b-cf7d-70b9-9693-908f64f6cf99", "title": "Generating architecture diagrams from .NET Aspire resources at publish time", "url": "https://anthonysimmon.com/generating-architecture-diagrams-dotnet-aspire/", "published_at": "2025-03-10T11:00:00+00:00" }, { "id": "01a0872b-cf7d-70b9-9693-908f6595e933", "title": ".NET Aspire improves developer onboarding while reducing costs", "url": "https://anthonysimmon.com/dotnet-aspire-improves-developer-onboarding-while-reducing-costs/", "published_at": "2025-03-03T11:00:00+00:00" }, { "id": "01a0872b-cf7d-70b9-9693-908f668fcbd9", "title": "Authenticating HTTP requests with cookies from an embedded WebView2 browser in WPF", "url": "https://anthonysimmon.com/authenticating-http-requests-cookies-webview2-wpf/", "published_at": "2025-02-17T11:00:00+00:00" }, { "id": "01a0872b-cf7d-70b9-9693-908f672c0323", "title": "Numeric sorting in .NET", "url": "https://anthonysimmon.com/numeric-sorting-dotnet/", "published_at": "2025-02-03T11:00:00+00:00" }, { "id": "01a0872b-cf7d-70b9-9693-908f67e626c8", "title": "Local inter-process communication over named pipes with ASP.NET Core or StreamJsonRpc in .NET", "url": "https://anthonysimmon.com/local-ipc-over-named-pipes-aspnet-core-streamjsonrpc-dotnet/", "published_at": "2025-01-13T11:00:00+00:00" }, { "id": "01a0872b-cf7d-70b9-9693-908f68789d2a", "title": "Polymorphic deserialization with YamlDotNet", "url": "https://anthonysimmon.com/polymorphic-deserialization-yamldotnet/", "published_at": "2024-12-02T11:00:00+00:00" }, { "id": "01a0872b-cf7d-70b9-9693-908f688a131f", "title": "Better Azure Identity authentication support and performance during local development with .NET Aspire", "url": "https://anthonysimmon.com/dotnet-aspire-better-azure-identity-support/", "published_at": "2024-11-26T11:00:00+00:00" }, { "id": "01a0872b-cf7d-70b9-9693-908f68cc2def", "title": "Visualize and test your regular expressions with debuggex.com", "url": "https://anthonysimmon.com/visualize-and-test-your-regular-expressions-with-debuggex/", "published_at": "2024-11-18T11:00:00+00:00" }, { "id": "01a0872b-cf7d-70b9-9693-908f69125839", "title": "Use non-localhost endpoints for .NET Aspire resources", "url": "https://anthonysimmon.com/dotnet-aspire-non-localhost-endpoints/", "published_at": "2024-11-11T11:00:00+00:00" }, { "id": "01a0872b-cf7d-70b9-9693-908f69cb35f6", "title": "Make containers aware of custom local domains on the host machine using .NET Aspire", "url": "https://anthonysimmon.com/dotnet-aspire-containers-share-custom-hosts/", "published_at": "2024-11-04T11:00:00+00:00" }, { "id": "01a0872b-cf7d-70b9-9693-908f69ead792", "title": "Enabling automatic trust for self-signed certificates in containers during local development with .NET Aspire", "url": "https://anthonysimmon.com/dotnet-aspire-containers-trust-self-signed-certificates/", "published_at": "2024-10-28T11:00:00+00:00" }, { "id": "01a0872b-cf7d-70b9-9693-908f6a5534c6", "title": "Benchmarking .NET libraries for image resizing: which performs best?", "url": "https://anthonysimmon.com/benchmarking-dotnet-libraries-for-image-resizing/", "published_at": "2024-09-19T11:00:00+00:00" }, { "id": "01a0872b-cf7d-70b9-9693-908f6a72fa07", "title": "Replacing IdentityModel with MSAL's support for generic OIDC-compliant authorities", "url": "https://anthonysimmon.com/replacing-identitymodel-with-msal-oidc-support/", "published_at": "2024-07-29T11:00:00+00:00" }, { "id": "01a0872b-cf7d-70b9-9693-908f6aa95d0f", "title": "Overriding MSAL's HttpClient with IHttpClientFactory", "url": "https://anthonysimmon.com/overriding-msal-httpclient-with-ihttpclientfactory/", "published_at": "2024-07-22T11:00:00+00:00" }, { "id": "01a0872b-cf7d-70b9-9693-908f6ba6b892", "title": "Secure cross-platform and file-based token cache for MSAL.NET", "url": "https://anthonysimmon.com/secure-cross-platform-file-based-token-cache-for-msal-net/", "published_at": "2024-07-09T11:00:00+00:00" }, { "id": "01a0872b-cf7d-70b9-9693-908f6bf658eb", "title": "Programmatically monitoring and reacting to resource logs in .NET Aspire", "url": "https://anthonysimmon.com/programmatically-monitoring-reacting-resource-logs-dotnet-aspire/", "published_at": "2024-06-24T11:00:00+00:00" }, { "id": "01a0872b-cf7d-70b9-9693-908f6c76ea91", "title": "Automate your .NET SDK updates for consistent and reproducible builds with global.json and Renovate", "url": "https://anthonysimmon.com/automate-dotnet-sdk-updates-global-json-renovate/", "published_at": "2024-06-04T11:00:00+00:00" }, { "id": "01a0872b-cf7d-70b9-9693-908f6cad3bc0", "title": "Must-have resources for new .NET Aspire developers", "url": "https://anthonysimmon.com/must-have-resources-for-new-dotnet-aspire-developers/", "published_at": "2024-05-22T11:00:00+00:00" }, { "id": "01a0872b-cf7d-70b9-9693-908f6ce29333", "title": "Disabling .NET Aspire authentication to skip the login page", "url": "https://anthonysimmon.com/disabling-dotnet-aspire-authentication-skip-login-page/", "published_at": "2024-05-06T11:00:00+00:00" }, { "id": "01a0872b-cf7d-70b9-9693-908f6dd3f262", "title": ".NET Aspire is the best way to experiment with Dapr during local development", "url": "https://anthonysimmon.com/dotnet-aspire-best-way-to-experiment-dapr-local-dev/", "published_at": "2024-04-29T11:00:00+00:00" }, { "id": "01a0872b-cf7d-70b9-9693-908f6eaffe88", "title": "Configure Renovate to handle nuspec files", "url": "https://anthonysimmon.com/configure-renovate-handle-nuspec-files/", "published_at": "2024-04-22T11:00:00+00:00" }, { "id": "01a0872b-cf7d-70b9-9693-908f6f418266", "title": "Configure Renovate to update preview versions of NuGet packages", "url": "https://anthonysimmon.com/configure-renovate-update-preview-nuget-packages/", "published_at": "2024-04-15T11:00:00+00:00" }, { "id": "01a0872b-cf7d-70b9-9693-908f6f92716b", "title": "Automated NuGet package version range updates in .NET projects using Renovate", "url": "https://anthonysimmon.com/nuget-version-range-updates-dotnet-renovate/", "published_at": "2024-04-12T11:00:00+00:00" }, { "id": "01a0872b-cf7d-70b9-9693-908f706abd3a", "title": "Referencing external Docker containers in .NET Aspire using the new custom resources API", "url": "https://anthonysimmon.com/referencing-external-docker-containers-dotnet-aspire-custom-resources/", "published_at": "2024-04-11T11:00:00+00:00" }, { "id": "01a0872b-cf7d-70b9-9693-908f70f014ab", "title": "TreatWarningsAsErrors and warnaserror are not the same", "url": "https://anthonysimmon.com/treatwarningsaserrors-and-warnaserror-are-not-the-same/", "published_at": "2024-04-10T11:00:00+00:00" }, { "id": "01a0872b-cf7d-70b9-9693-908f710111b7", "title": "Locally test and validate your Renovate configuration files", "url": "https://anthonysimmon.com/locally-test-validate-renovate-config-files/", "published_at": "2024-04-09T11:00:00+00:00" }, { "id": "01a0872b-cf7d-70b9-9693-908f71ae232e", "title": "Remove git hash from assembly informational version in .NET 8", "url": "https://anthonysimmon.com/remove-git-hash-from-assembly-informational-version-dotnet-8/", "published_at": "2024-04-08T11:00:00+00:00" }, { "id": "01a0872b-cf7d-70b9-9693-908f72114a67", "title": "Your custom HttpClient delegating handlers should be transient", "url": "https://anthonysimmon.com/custom-httpclient-delegating-handlers-should-be-transient/", "published_at": "2024-04-05T11:00:00+00:00" }, { "id": "01a0872b-cf7d-70b9-9693-908f7299a95f", "title": "How to securely reverse-proxy ASP.NET Core web apps", "url": "https://anthonysimmon.com/securely-reverse-proxy-aspnet-core-web-apps/", "published_at": "2024-04-04T11:00:00+00:00" }, { "id": "01a0872b-cf7d-70b9-9693-908f734e0336", "title": "Enable tab completion for the .NET CLI in your terminal", "url": "https://anthonysimmon.com/enable-dotnet-cli-tab-completion-terminal/", "published_at": "2024-04-01T11:00:00+00:00" }, { "id": "01a0872b-cf7e-7252-bddf-fdd34d2f6550", "title": ".NET Aspire dashboard is the best tool to visualize your OpenTelemetry data during local development", "url": "https://anthonysimmon.com/dotnet-aspire-dashboard-best-tool-visualize-opentelemetry-local-dev/", "published_at": "2024-03-25T11:00:00+00:00" }, { "id": "01a0872b-cf7e-7252-bddf-fdd34d4ec1e4", "title": "Running Ruby on Rails web apps with .NET Aspire", "url": "https://anthonysimmon.com/running-ruby-on-rails-with-dotnet-aspire/", "published_at": "2024-03-18T11:00:00+00:00" }, { "id": "01a0872b-cf7e-7252-bddf-fdd34da5ef3a", "title": "Key derivation in .NET using HKDF", "url": "https://anthonysimmon.com/key-derivation-dotnet-using-hkdf/", "published_at": "2024-03-04T11:00:00+00:00" }, { "id": "01a0872b-cf7e-7252-bddf-fdd34dd51785", "title": "Implementing fine-grained access control with ASP.NET Core custom endpoint metadata", "url": "https://anthonysimmon.com/implementing-fine-grained-access-control-aspnet-core-endpoint-metadata/", "published_at": "2024-02-26T11:00:00+00:00" }, { "id": "01a0872b-cf7e-7252-bddf-fdd34e9691f5", "title": "Programmatically elevate a .NET application on any platform", "url": "https://anthonysimmon.com/programmatically-elevate-dotnet-app-on-any-platform/", "published_at": "2024-02-06T11:00:00+00:00" }, { "id": "01a0872b-cf7e-7252-bddf-fdd34ec89f84", "title": "Best practices for integrating the Azure Storage SDK into your .NET applications", "url": "https://anthonysimmon.com/best-practices-azure-storage-sdk-integration-in-dotnet-apps/", "published_at": "2024-01-23T11:00:00+00:00" }, { "id": "01a0872b-cf7e-7252-bddf-fdd34f521844", "title": "Evolutive and robust password hashing using PBKDF2 in .NET", "url": "https://anthonysimmon.com/evolutive-and-robust-password-hashing-using-pbkdf2-in-dotnet/", "published_at": "2023-12-26T11:00:00+00:00" }, { "id": "01a0872b-cf7e-7252-bddf-fdd35019053d", "title": "Optimizing .NET solution architecture for faster compilation through project decoupling", "url": "https://anthonysimmon.com/optimizing-dotnet-solution-architecture-for-faster-compilation-through-project-decoupling/", "published_at": "2023-12-05T11:00:00+00:00" }, { "id": "01a0872b-cf7e-7252-bddf-fdd3502974c7", "title": "Exploring the Microsoft Developer Control Plane at the heart of the new .NET Aspire", "url": "https://anthonysimmon.com/exploring-microsoft-developer-control-plane-core-dotnet-aspire-dotnet-8/", "published_at": "2023-11-21T11:00:00+00:00" }, { "id": "01a0872b-cf7e-7252-bddf-fdd350f18bd2", "title": "Optimizing C# code analysis for quicker .NET compilation", "url": "https://anthonysimmon.com/optimizing-csharp-code-analysis-for-quicker-dotnet-compilation/", "published_at": "2023-11-14T11:00:00+00:00" }, { "id": "01a0872b-cf7e-7252-bddf-fdd351675443", "title": "The only local MongoDB replica set with Docker Compose guide you'll ever need!", "url": "https://anthonysimmon.com/the-only-local-mongodb-replica-set-with-docker-compose-guide-youll-ever-need/", "published_at": "2023-10-24T11:00:00+00:00" }, { "id": "01a0872b-cf7e-7252-bddf-fdd351dd8527", "title": "Your own private ChatGPT in hours? Azure Chat makes it possible!", "url": "https://anthonysimmon.com/your-own-private-chatgpt-with-azure-chat-and-openai-api/", "published_at": "2023-10-10T11:00:00+00:00" }, { "id": "01a0872b-cf7e-7252-bddf-fdd352af43c5", "title": "Preventing breaking changes in .NET class libraries", "url": "https://anthonysimmon.com/preventing-breaking-changes-in-dotnet-class-libraries/", "published_at": "2023-09-26T11:00:00+00:00" }, { "id": "01a0872b-cf7e-7252-bddf-fdd352e5e904", "title": "The best C# REPL is in your terminal", "url": "https://anthonysimmon.com/the-best-csharp-repl-is-in-your-terminal/", "published_at": "2023-09-12T11:00:00+00:00" }, { "id": "01a0872b-cf7e-7252-bddf-fdd35377a2ba", "title": "Convert complex YAML to .NET types with custom YamlDotNet type converters", "url": "https://anthonysimmon.com/yamldotnet-custom-type-converters/", "published_at": "2023-09-06T11:00:00+00:00" }, { "id": "01a0872b-cf7e-7252-bddf-fdd35454cc34", "title": "Instrumenting System.CommandLine-based .NET applications", "url": "https://anthonysimmon.com/system-commandline-instrumentation/", "published_at": "2023-07-31T11:00:00+00:00" }, { "id": "01a0872b-cf7e-7252-bddf-fdd35470dfc9", "title": "Crafting beautiful interactive console apps with System.CommandLine and Spectre.Console", "url": "https://anthonysimmon.com/beautiful-interactive-console-apps-with-system-commandline-and-spectre-console/", "published_at": "2023-07-03T11:00:00+00:00" }, { "id": "01a0872b-cf7e-7252-bddf-fdd3556a2a1c", "title": "How to configure true dependency injection in System.CommandLine", "url": "https://anthonysimmon.com/true-dependency-injection-with-system-commandline/", "published_at": "2023-06-20T11:00:00+00:00" }, { "id": "01a0872b-cf7e-7252-bddf-fdd356257782", "title": "Even more .NET validation attributes with GSoft.ComponentModel.DataAnnotations", "url": "https://anthonysimmon.com/even-more-dotnet-validation-attributes/", "published_at": "2023-06-07T11:00:00+00:00" }, { "id": "01a0872b-cf7e-7252-bddf-fdd35720dd01", "title": "Prevent .NET Application Insights telemetry loss", "url": "https://anthonysimmon.com/prevent-dotnet-application-insights-telemetry-loss/", "published_at": "2023-05-16T11:00:00+00:00" }, { "id": "01a0872b-cf7e-7252-bddf-fdd357c36169", "title": "Modern minimal workers in .NET", "url": "https://anthonysimmon.com/dotnet-minimal-workers/", "published_at": "2023-05-03T11:00:00+00:00" }, { "id": "01a0872b-cf7e-7252-bddf-fdd358064b7d", "title": "Generate a custom C# ChatGPT API client in minutes with Kiota", "url": "https://anthonysimmon.com/custom-csharp-chatgpt-client-with-kiota/", "published_at": "2023-04-27T11:00:00+00:00" }, { "id": "01a0872b-cf7e-7252-bddf-fdd358677f21", "title": "Speeding up DefaultAzureCredential authentication in local development with Azure CLI", "url": "https://anthonysimmon.com/defaultazurecredential-local-development-optimization/", "published_at": "2023-04-09T11:00:00+00:00" }, { "id": "01a0872b-cf7e-7252-bddf-fdd358c60bba", "title": "Take your .NET configuration to the next level with value substitution", "url": "https://anthonysimmon.com/enhance-dotnet-configuration-with-value-substitution/", "published_at": "2023-03-30T11:00:00+00:00" }, { "id": "01a0872b-cf7e-7252-bddf-fdd3593abe44", "title": "Universal UI testing based on image and text recognition", "url": "https://anthonysimmon.com/universal-ui-testing-with-askaiser-marionette/", "published_at": "2022-07-04T11:00:00+00:00" }, { "id": "01a0872b-cf7e-7252-bddf-fdd35a32269f", "title": "Archives", "url": "https://anthonysimmon.com/archives/", "published_at": "2022-03-06T00:00:00+00:00" }, { "id": "01a0872b-cf7e-7252-bddf-fdd35a7891ca", "title": "SOLID principles: the Single Responsibility Principle", "url": "https://anthonysimmon.com/solid-principles-single-responsibility/", "published_at": "2017-11-18T11:00:00+00:00" }, { "id": "01a0872b-cf7e-7252-bddf-fdd35b41a699", "title": "ServerPilot for your PHP development environment", "url": "https://anthonysimmon.com/serverpilot-php-development-environment/", "published_at": "2016-06-25T11:00:00+00:00" }, { "id": "01a0872b-cf7e-7252-bddf-fdd35b6bec5e", "title": "Pillar, a MVVM framework for Xamarin Forms", "url": "https://anthonysimmon.com/pillar-mvvm-framework-xamarin-forms/", "published_at": "2016-03-03T11:00:00+00:00" }, { "id": "01a0872b-cf7e-7252-bddf-fdd35c58a3e8", "title": "ASP.NET Core with Nginx as reverse proxy on Linux", "url": "https://anthonysimmon.com/asp-net-5-nginx-reverse-proxy-linux/", "published_at": "2016-02-08T11:00:00+00:00" }, { "id": "01a0872b-cf7e-7252-bddf-fdd35ce84661", "title": "Google PageSpeed Insights, how to get 100/100", "url": "https://anthonysimmon.com/google-pagespeed-insights-100-100/", "published_at": "2015-12-21T11:00:00+00:00" }, { "id": "01a0872b-cf7e-7252-bddf-fdd35d8c41e5", "title": "MuPDF Xamarin Android binding on Nuget", "url": "https://anthonysimmon.com/mupdf-xamarin-android-binding-on-nuget/", "published_at": "2015-11-03T11:00:00+00:00" }, { "id": "01a0872b-cf7e-7252-bddf-fdd35e4f83a4", "title": "Centered login form with Ionic Framework", "url": "https://anthonysimmon.com/centered-login-form-ionic-framework/", "published_at": "2015-10-10T11:00:00+00:00" }, { "id": "01a0872b-cf7e-7252-bddf-fdd35f140e01", "title": "SQL query results to CSV with PL/SQL", "url": "https://anthonysimmon.com/sql-query-results-to-csv-with-plsql/", "published_at": "2015-09-26T11:00:00+00:00" }, { "id": "01a0872b-cf7e-7252-bddf-fdd35fa33b09", "title": "Caching method results easily with AOP", "url": "https://anthonysimmon.com/caching-method-results-easily-with-aop/", "published_at": "2015-09-21T11:00:00+00:00" }, { "id": "01a0872b-cf7e-7252-bddf-fdd35fe22feb", "title": "EventToCommand in Xamarin Forms Apps", "url": "https://anthonysimmon.com/eventtocommand-in-xamarin-forms-apps/", "published_at": "2015-09-20T11:00:00+00:00" }, { "id": "01a0872b-cf7e-7252-bddf-fdd3609a51fc", "title": "Search", "url": "https://anthonysimmon.com/search/", "published_at": null }, { "id": "01a0872b-cf7e-7252-bddf-fdd360fdbd25", "title": "Talks", "url": "https://anthonysimmon.com/talks/", "published_at": null } ] posts Claim your blog
Back to anthonysimmon.com
Blog · corpus.blog/blogs/anthonysimmon.com/posts

anthonysimmon.com

anthonysimmon.com

2025

2024

2023

2022

2017

2016

2015

Undated