41554 blogs · [ { "id": "01a087a3-aacf-72a3-932b-0dcb5419897c", "title": "Building an AI Gateway with AgentGateway: LLM, MCP, and A2A Behind One Door", "url": "https://mehdihadeli.com/blog/agentgateway-ai-gateway", "published_at": "2026-08-15T00:00:00+00:00" }, { "id": "01a087a3-aacf-72a3-932b-0dcb54791d7a", "title": "Running MCP Servers in Production: agentgateway + ToolHive, from stdio to a Multiplexed HTTP Endpoint", "url": "https://mehdihadeli.com/blog/mcp-gateway-authentication-agentgateway", "published_at": "2026-08-12T00:00:00+00:00" }, { "id": "01a087a3-aacf-72a3-932b-0dcb54aa2244", "title": "Beyond kubectl: Managing .NET Workloads Across Kubernetes Clusters with Rancher", "url": "https://mehdihadeli.com/blog/beyond-kubectl-managing-dotnet-workloads-across-kubernetes-clusters-with-rancher", "published_at": "2026-08-01T00:00:00+00:00" }, { "id": "01a087a3-aacf-72a3-932b-0dcb5574fcc4", "title": "Hosting a .NET 10 API on Kubernetes with k3d: MetalLB for On-Prem, and Ingress vs Gateway API", "url": "https://mehdihadeli.com/blog/hosting-dotnet-10-api-on-kubernetes-k3d-metallb-ingress-gateway-api", "published_at": "2026-07-31T00:00:00+00:00" }, { "id": "01a087a3-aacf-72a3-932b-0dcb55b63126", "title": "Distributed Transactions with Wolverine: Saga Orchestration vs Choreography with RabbitMQ, Compensating Actions, and Timeout Handling", "url": "https://mehdihadeli.com/blog/distributed-transaction-with-wolverine", "published_at": "2026-07-25T00:00:00+00:00" }, { "id": "01a087a3-aacf-72a3-932b-0dcb562a2a72", "title": "Concurrency Control in .NET: From Local Locks to Distributed Systems", "url": "https://mehdihadeli.com/blog/concurrency-control-dotnet-from-local-locks-to-distributed-systems", "published_at": "2026-07-24T00:00:00+00:00" }, { "id": "01a087a3-aacf-72a3-932b-0dcb56911bf3", "title": "End-to-End Observability in .NET with Aspire, OpenTelemetry, and the LGTM Stack", "url": "https://mehdihadeli.com/blog/observability-aspire-opentelemetry-dotnet", "published_at": "2026-07-17T00:00:00+00:00" }, { "id": "01a087a3-aacf-72a3-932b-0dcb56b898b5", "title": "MassTransit Transactional Messaging with .NET Aspire, RabbitMQ, Kafka, PostgreSQL, MongoDB, Outbox, Inbox, Retry, Error Queues, and Dead-Letter Handling", "url": "https://mehdihadeli.com/blog/masstransit-transactional-messaging-aspire", "published_at": "2026-07-13T00:00:00+00:00" }, { "id": "01a087a3-aacf-72a3-932b-0dcb57b7fa37", "title": "Wolverine Transactional Messaging with .NET Aspire, RabbitMQ, PostgreSQL, MongoDB, Inbox, Outbox, and Durable Local Processing", "url": "https://mehdihadeli.com/blog/wolverine-transactional-messaging-aspire", "published_at": "2026-07-04T00:00:00+00:00" }, { "id": "01a087a3-aacf-72a3-932b-0dcb5883160d", "title": "Designing a DevSecOps GitHub Actions Pipeline for .NET: Quality, SAST, SCA, Signing, and DAST", "url": "https://mehdihadeli.com/blog/devsecops-dotnet-github-actions-pipeline", "published_at": "2026-06-25T00:00:00+00:00" }, { "id": "01a087a3-aacf-72a3-932b-0dcb58d17842", "title": "Make vs Just vs Mise vs go-task for .NET Apps in 2026", "url": "https://mehdihadeli.com/blog/task-runners-comparison-2026", "published_at": "2026-05-29T00:00:00+00:00" }, { "id": "01a087a3-aacf-72a3-932b-0dcb592bebf0", "title": "The Complete Guide to Secret Rotation in .NET Microservices with HashiCorp Vault Agent: From VaultSharp to Zero-Downtime Sidecar", "url": "https://mehdihadeli.com/blog/secret-rotation-vault-agent-dotnet", "published_at": "2026-05-20T00:00:00+00:00" }, { "id": "01a087a3-aacf-72a3-932b-0dcb5a239ab8", "title": "Designing a Practical Versioning Strategy for Development, Staging, and Production with SemVer and Nerdbank.GitVersioning", "url": "https://mehdihadeli.com/blog/versioning-strategy-blog", "published_at": "2026-05-10T00:00:00+00:00" }, { "id": "01a087a3-aacf-72a3-932b-0dcb5a36c6dc", "title": "Repo Registry for GitHub Copilot CLI: A Dedicated MCP Server for Multi-Repo .NET Work", "url": "https://mehdihadeli.com/blog/repo-registry-github-copilot-cli", "published_at": "2026-04-10T00:00:00+00:00" }, { "id": "01a087a3-aacf-72a3-932b-0dcb5a68740b", "title": "Per-Service Copilot Instructions for GitHub Copilot CLI: Keep Service Rules Close to the Repo", "url": "https://mehdihadeli.com/blog/per-service-copilot-instructions-github-copilot-cli", "published_at": "2026-04-05T00:00:00+00:00" }, { "id": "01a087a3-aacf-72a3-932b-0dcb5a6a3ba8", "title": "Multi-Repo Workspace Setup for GitHub Copilot CLI: Context Across .NET Service Boundaries", "url": "https://mehdihadeli.com/blog/multi-repo-workspace-github-copilot-cli", "published_at": "2026-04-01T00:00:00+00:00" }, { "id": "01a087a3-aacf-72a3-932b-0dcb5b025916", "title": "Build a Research Agent with Web Search in .NET: Structured Briefs Before Writing", "url": "https://mehdihadeli.com/blog/research-agent-web-search-dotnet", "published_at": "2026-02-20T00:00:00+00:00" }, { "id": "01a087a3-aacf-72a3-932b-0dcb5b1db516", "title": "Shared Features in Claude Code and GitHub Copilot: What You Can Reuse and What Still Needs Separate Settings", "url": "https://mehdihadeli.com/blog/shared-features-claude-code-github-copilot", "published_at": "2026-02-10T00:00:00+00:00" }, { "id": "01a087a3-aacf-72a3-932b-0dcb5be4f39e", "title": "Choosing the Right Caching Strategy in .NET 9", "url": "https://mehdihadeli.com/blog/caching-strategies", "published_at": "2025-05-15T00:00:00+00:00" }, { "id": "01a087a3-aacf-72a3-932b-0dcb5c36f0d4", "title": "Optimistic vs. Pessimistic Concurrency In .NET: Complete Guide with Examples", "url": "https://mehdihadeli.com/blog/optimistic-vs-pessimistic-concurrency", "published_at": "2025-05-05T00:00:00+00:00" }, { "id": "01a087a3-aacf-72a3-932b-0dcb5c6d0ac4", "title": "Concurrency vs. Parallelism in .NET: A Practical Guide", "url": "https://mehdihadeli.com/blog/concurrency-parallelism", "published_at": "2025-04-15T00:00:00+00:00" }, { "id": "01a087a3-aacf-72a3-932b-0dcb5ce1c62c", "title": "How to Choose the Right C# Collection", "url": "https://mehdihadeli.com/blog/choose-right-collection", "published_at": "2025-04-01T00:00:00+00:00" }, { "id": "01a087a3-aacf-72a3-932b-0dcb5d366c78", "title": "Solid Principles In Depth", "url": "https://mehdihadeli.com/blog/solid-principles", "published_at": "2025-03-15T00:00:00+00:00" }, { "id": "01a087a3-aacf-72a3-932b-0dcb5e28c09b", "title": "Evolution of ProblemDetails: From .NET Core 2.2 to .NET 9", "url": "https://mehdihadeli.com/blog/problem-detail", "published_at": "2025-02-25T00:00:00+00:00" }, { "id": "01a087a3-aacf-72a3-932b-0dcb5eb46a64", "title": "Horizontal Scaling In MongoDB With Replication", "url": "https://mehdihadeli.com/blog/replication-in-mongodb", "published_at": "2024-09-07T00:00:00+00:00" }, { "id": "01a087a3-aacf-72a3-932b-0dcb5f56cf6c", "title": "Implementing Publisher Confirms in .Net Core with RabbitMQ", "url": "https://mehdihadeli.com/blog/messaging-publisher-confirm", "published_at": "2023-04-29T00:00:00+00:00" }, { "id": "01a087a3-aacf-72a3-932b-0dcb5f5a25a3", "title": "How to Implement Dependency Injection for .Net Core Console Applications", "url": "https://mehdihadeli.com/blog/console-dependency-injection", "published_at": "2023-04-21T00:00:00+00:00" } ] posts Claim your blog
Back to mehdihadeli.com
Blog · corpus.blog/blogs/mehdihadeli.com/posts

mehdihadeli.com

mehdihadeli.com

2026

2025

2024

2023