41554 blogs · [ { "id": "01a0bdfb-7002-72f3-8f18-5b3eba5a44f1", "title": "How to find LM Studio plugins and MCP servers", "url": "https://sahansera.dev/finding-lm-studio-plugins/", "published_at": "2026-09-13T00:00:00+00:00" }, { "id": "01a087da-50fa-7382-913e-8d31fb497464", "title": "When Cached State Isn't Enough: Adding PostgreSQL with .NET Aspire", "url": "https://sahansera.dev/when-cached-state-isnt-enough-postgresql-aspire/", "published_at": "2026-09-05T00:00:00+00:00" }, { "id": "01a087da-50fa-7382-913e-8d31fb9541f9", "title": "When IMemoryCache Stops Scaling: Moving to Redis with .NET Aspire", "url": "https://sahansera.dev/when-imemorycache-stops-scaling-redis-aspire/", "published_at": "2026-08-25T00:00:00+00:00" }, { "id": "01a087da-50fa-7382-913e-8d31fbd374f1", "title": "Replacing Sharp with WASM: How a Hidden SVG Dependency Broke Our Rendering Pipeline", "url": "https://sahansera.dev/replacing-sharp-with-wasm-hidden-svg-dependency/", "published_at": "2026-08-20T00:00:00+00:00" }, { "id": "01a087da-50fa-7382-913e-8d31fc521891", "title": "When Three Kubernetes Pods Try to Run One Database Migration", "url": "https://sahansera.dev/when-three-kubernetes-pods-try-to-run-one-database-migration/", "published_at": "2026-08-14T00:00:00+00:00" }, { "id": "01a087da-50fa-7382-913e-8d31fcce50a4", "title": "Scaling an Agentic Coding SDK: What Concurrency Actually Costs", "url": "https://sahansera.dev/scaling-an-agentic-coding-sdk-what-concurrency-actually-costs/", "published_at": "2026-08-13T00:00:00+00:00" }, { "id": "01a087da-50fa-7382-913e-8d31fd2befbf", "title": "Build a Safe Repository Maintenance Agent with GitHub Copilot and Microsoft Agent Framework in .NET", "url": "https://sahansera.dev/safe-repository-maintenance-agent-dotnet/", "published_at": "2026-08-10T00:00:00+00:00" }, { "id": "01a087da-50fa-7382-913e-8d31fdb2318a", "title": "Build a Safe Repository Maintenance Agent with GitHub Copilot and Microsoft Agent Framework in Python", "url": "https://sahansera.dev/safe-repository-maintenance-agent-python/", "published_at": "2026-08-10T00:00:00+00:00" }, { "id": "01a087da-50fa-7382-913e-8d31fe0b7a3b", "title": "What I Learned Growing an Engineering Blog from 0 to 463,000 Pageviews", "url": "https://sahansera.dev/what-i-learned-growing-engineering-blog-463000-pageviews/", "published_at": "2026-08-03T00:00:00+00:00" }, { "id": "01a087da-50fa-7382-913e-8d31feb59361", "title": "Replacing a Critical Data Path Without a Flag Day", "url": "https://sahansera.dev/replacing-critical-data-path-without-flag-day/", "published_at": "2026-08-02T00:00:00+00:00" }, { "id": "01a087da-50fa-7382-913e-8d31ff9656a2", "title": "When \"no healthy upstream\" isn't about the upstream you think", "url": "https://sahansera.dev/no-healthy-upstream/", "published_at": "2026-07-22T00:00:00+00:00" }, { "id": "01a087da-50fa-7382-913e-8d32001212ac", "title": "The Acknowledgment Gap - How Event-Driven Systems Lose Messages Without Errors", "url": "https://sahansera.dev/the-acknowledgment-gap/", "published_at": "2026-07-12T00:00:00+00:00" }, { "id": "01a087da-50fa-7382-913e-8d32007a913d", "title": "How I Built an AI-Assisted Dependency Vulnerability Fixer", "url": "https://sahansera.dev/most-dependency-vulnerability-remediation-is-a-packaging-problem/", "published_at": "2026-02-23T00:00:00+00:00" }, { "id": "01a087da-50fa-7382-913e-8d320124fda6", "title": "Introducing gh-weekly-updates - Automate Your Weekly GitHub Impact Summaries", "url": "https://sahansera.dev/introducing-gh-weekly-updates/", "published_at": "2026-02-22T00:00:00+00:00" }, { "id": "01a087da-50fa-7382-913e-8d3201337e5e", "title": "Deploying GitHub Self-Hosted Runners on Your Home Kubernetes Cluster with ARC", "url": "https://sahansera.dev/github-self-hosted-runners-on-kubernetes-home-lab/", "published_at": "2025-07-27T00:00:00+00:00" }, { "id": "01a087da-50fa-7382-913e-8d3201719ef5", "title": "Building a Home Lab Kubernetes Cluster with Old Hardware and k3s", "url": "https://sahansera.dev/building-home-lab-kubernetes-cluster-old-hardware-k3s/", "published_at": "2025-07-26T00:00:00+00:00" }, { "id": "01a087da-50fa-7382-913e-8d32021824c3", "title": "How Does the Python Virtual Environment Work?", "url": "https://sahansera.dev/how-does-python-venv-work/", "published_at": "2025-07-06T00:00:00+00:00" }, { "id": "01a087da-50fa-7382-913e-8d320309d4a0", "title": "HTTP Chunked Transfer Encoding Explained with curl", "url": "https://sahansera.dev/understanding-chunked-transfer-encoding/", "published_at": "2025-04-02T00:00:00+00:00" }, { "id": "01a087da-50fa-7382-913e-8d320380126c", "title": "Upgrading sahansera.dev to Gatsby 5", "url": "https://sahansera.dev/upgrading-gatsby-5/", "published_at": "2025-03-30T00:00:00+00:00" }, { "id": "01a087da-50fa-7382-913e-8d3203b4f857", "title": "Streaming APIs with FastAPI and Next.js - Part 2", "url": "https://sahansera.dev/streaming-apis-python-nextjs-part2/", "published_at": "2025-03-29T00:00:00+00:00" }, { "id": "01a087da-50fa-7382-913e-8d3203beedaf", "title": "Streaming APIs with FastAPI and Next.js - Part 1", "url": "https://sahansera.dev/streaming-apis-python-nextjs-part1/", "published_at": "2025-03-23T00:00:00+00:00" }, { "id": "01a087da-50fa-7382-913e-8d320460d502", "title": "My plans for sahansera.dev in 2024", "url": "https://sahansera.dev/my-plans-for-sahanseradev-2024/", "published_at": "2023-12-31T00:00:00+00:00" }, { "id": "01a087da-50fa-7382-913e-8d32050ada16", "title": "Basics of Apache Kafka - An Overview", "url": "https://sahansera.dev/introduction-to-apache-kafka/", "published_at": "2023-01-03T00:00:00+00:00" }, { "id": "01a087da-50fa-7382-913e-8d3206033256", "title": "Serverless Go with Azure Functions and GitHub Actions", "url": "https://sahansera.dev/serverless-go-with-azure-functions-github-actions/", "published_at": "2022-09-12T00:00:00+00:00" }, { "id": "01a087da-50fa-7382-913e-8d320654930e", "title": "Deploying a .NET gRPC Server on Azure App Service", "url": "https://sahansera.dev/deploying-dotnet-grpc-service-azure-app-services/", "published_at": "2022-09-05T00:00:00+00:00" }, { "id": "01a087da-50fa-7382-913e-8d320694f353", "title": "Setting up a local Apache Kafka instance for testing", "url": "https://sahansera.dev/setting-up-kafka-locally-for-testing/", "published_at": "2022-09-01T00:00:00+00:00" }, { "id": "01a087da-50fa-7382-913e-8d3207256bb6", "title": "Adding intelligence to React Apps with Azure Cognitive Services", "url": "https://sahansera.dev/adding-intelligence-react-azure-cognitive/", "published_at": "2022-08-21T00:00:00+00:00" }, { "id": "01a087da-50fa-7382-913e-8d320782d3ac", "title": "Tips for Junior Developers", "url": "https://sahansera.dev/tips-and-advices-for-jnr-devs/", "published_at": "2022-05-31T00:00:00+00:00" }, { "id": "01a087da-50fa-7382-913e-8d320854003e", "title": "Building a gRPC Client in .NET", "url": "https://sahansera.dev/building-grpc-client-dotnet/", "published_at": "2022-03-18T00:00:00+00:00" }, { "id": "01a087da-50fa-7382-913e-8d3208e1d04d", "title": "Building a gRPC Client in Go", "url": "https://sahansera.dev/building-grpc-client-go/", "published_at": "2022-03-12T00:00:00+00:00" }, { "id": "01a087da-50fa-7382-913e-8d3208e57440", "title": "Building a gRPC Server in .NET", "url": "https://sahansera.dev/building-grpc-server-dotnet/", "published_at": "2022-03-05T00:00:00+00:00" }, { "id": "01a087da-50fa-7382-913e-8d320965b749", "title": "Building a gRPC Server in Go", "url": "https://sahansera.dev/building-grpc-server-go/", "published_at": "2022-02-25T00:00:00+00:00" }, { "id": "01a087da-50fa-7382-913e-8d3209b40a7f", "title": "Introduction to gRPC", "url": "https://sahansera.dev/introduction-to-grpc/", "published_at": "2022-02-18T00:00:00+00:00" }, { "id": "01a087da-50fa-7382-913e-8d320a4cb420", "title": "Automating Raspberry Pi K3s provisioning with Ansible", "url": "https://sahansera.dev/k3s-rapsberrypi-ansible-automation/", "published_at": "2021-12-15T00:00:00+00:00" }, { "id": "01a087da-50fa-7382-913e-8d320aaf8680", "title": "Go for .NET Developers", "url": "https://sahansera.dev/go-for-dotnet-developers/", "published_at": "2021-12-10T00:00:00+00:00" }, { "id": "01a087da-50fa-7382-913e-8d320b18ae5c", "title": "A closer look at commands and args in Kubernetes Pods", "url": "https://sahansera.dev/closer-look-at-kubernetes-pod-commands-args/", "published_at": "2021-09-13T00:00:00+00:00" }, { "id": "01a087da-50fa-7382-913e-8d320bf49881", "title": "Building your own private Kubernetes cluster on a Raspberry PI 4 with K3S", "url": "https://sahansera.dev/building-your-own-private-kubernetes-cluster-on-a-raspberry-pi-4-with-k3s/", "published_at": "2021-08-14T00:00:00+00:00" }, { "id": "01a087da-50fa-7382-913e-8d320c25c4ee", "title": "Tips and Tricks to Ace the Certified Kubernetes Application Developer", "url": "https://sahansera.dev/tips-and-tricks-for-acing-ckad/", "published_at": "2021-08-02T00:00:00+00:00" }, { "id": "01a087da-50fa-7382-913e-8d320c65d795", "title": "Setting up Elastic Workplace Search with Docker", "url": "https://sahansera.dev/setting-up-elastic-workplace-search-docker/", "published_at": "2021-07-23T00:00:00+00:00" }, { "id": "01a087da-50fa-7382-913e-8d320c67787a", "title": "A closer look at commands and args in Docker containers", "url": "https://sahansera.dev/closer-look-at-docker-commands-args/", "published_at": "2021-06-22T00:00:00+00:00" }, { "id": "01a087da-50fa-7382-913e-8d320d445f6a", "title": "ASP.NET Core Health Checks", "url": "https://sahansera.dev/aspdotnet-core-health-checks/", "published_at": "2021-03-25T00:00:00+00:00" }, { "id": "01a087da-50fa-7382-913e-8d320dd6c489", "title": "Distributed Caching in ASP.NET Core with Redis", "url": "https://sahansera.dev/distributed-caching-aspnet-core-redis/", "published_at": "2021-02-28T00:00:00+00:00" }, { "id": "01a087da-50fa-7382-913e-8d320ebdb541", "title": "Publishing Android Apps to Microsoft App Center from Azure DevOps", "url": "https://sahansera.dev/publishing-android-apps-to-microsoft-appcenter/", "published_at": "2021-02-16T00:00:00+00:00" }, { "id": "01a087da-50fa-7382-913e-8d320ef8b676", "title": "Multi-stage builds for Ionic Apps with Azure Pipeline Templates", "url": "https://sahansera.dev/multi-stage-builds-with-azure-pipelines-ionic/", "published_at": "2021-01-26T00:00:00+00:00" }, { "id": "01a087da-50fa-7382-913e-8d320fa38bfb", "title": "Understanding the WebSocket Protocol with ASP.NET Core", "url": "https://sahansera.dev/understanding-websockets-with-aspnetcore-5/", "published_at": "2021-01-01T00:00:00+00:00" }, { "id": "01a087da-50fa-7382-913e-8d320fa7327b", "title": "How to ramp up in a new codebase with NDepend", "url": "https://sahansera.dev/ramping-up-in-new-codebase-with-ndepend/", "published_at": "2020-10-21T00:00:00+00:00" }, { "id": "01a087da-50fa-7382-913e-8d32105719e9", "title": "Having Fun with Microsoft IoC Container for .NET Core", "url": "https://sahansera.dev/dotnet-core-ioc-container/", "published_at": "2020-08-21T00:00:00+00:00" }, { "id": "01a087da-50fa-7382-913e-8d3210710a53", "title": "Understanding .NET Generic Host Model", "url": "https://sahansera.dev/dotnet-core-generic-host/", "published_at": "2020-08-13T00:00:00+00:00" }, { "id": "01a087da-50fa-7382-913e-8d321127ef5a", "title": "D3.js Creating a Bar Chart from Ground Up", "url": "https://sahansera.dev/d3-creating-bar-chart-ground-up/", "published_at": "2020-07-05T00:00:00+00:00" }, { "id": "01a087da-50fa-7382-913e-8d32120312cc", "title": "D3.js Join Semantics - A Conceptual Look", "url": "https://sahansera.dev/d3-js-join-semantics/", "published_at": "2020-06-30T00:00:00+00:00" }, { "id": "01a087da-50fa-7382-913e-8d3212747a66", "title": "Securing Hangfire Dashboard in ASP.NET Core with a Custom Auth Policy", "url": "https://sahansera.dev/securing-hangfire-dashboard-with-endpoint-routing-auth-policy-aspnetcore/", "published_at": "2020-05-15T00:00:00+00:00" }, { "id": "01a087da-50fa-7382-913e-8d32133e85c6", "title": "Multi-stage Image Builds with Docker", "url": "https://sahansera.dev/multi-stage-image-builds-with-docker/", "published_at": "2020-04-19T00:00:00+00:00" }, { "id": "01a087da-50fa-7382-913e-8d3213a1e8f4", "title": "Deploying Multi-Container Services on Azure Service Fabric", "url": "https://sahansera.dev/deploying-multi-container-services-on-azure-service-fabric/", "published_at": "2020-04-13T00:00:00+00:00" }, { "id": "01a087da-50fa-7382-913e-8d32141a18d0", "title": "Setting up your Raspberry PI 4 - Headless mode", "url": "https://sahansera.dev/setting-up-raspberry-pi-4-headless-mode/", "published_at": "2020-03-31T00:00:00+00:00" }, { "id": "01a087da-50fa-7382-913e-8d32149c2eb1", "title": "Getting Started with Azure Service Fabric", "url": "https://sahansera.dev/getting-started-with-azure-service-fabric/", "published_at": "2020-03-23T00:00:00+00:00" }, { "id": "01a087da-50fa-7382-913e-8d3214e594d0", "title": "Simple In-Memory Caching in .NET 10 with IMemoryCache", "url": "https://sahansera.dev/in-memory-caching-aspcore-dotnet/", "published_at": "2020-01-15T00:00:00+00:00" }, { "id": "01a087da-50fa-7382-913e-8d32156a451a", "title": "Understanding Nullable Value Types in C#", "url": "https://sahansera.dev/nullable-value-types-in-csharp/", "published_at": "2019-12-28T00:00:00+00:00" }, { "id": "01a087da-50fa-7382-913e-8d32163c29e5", "title": "Deploying an ASP.NET Core App on Google Kubernetes Engine", "url": "https://sahansera.dev/deploying-aspcore-gcp/", "published_at": "2019-12-25T00:00:00+00:00" }, { "id": "01a087da-50fa-7382-913e-8d321733cf90", "title": "Demystifying Async & Await in C#", "url": "https://sahansera.dev/demystifying-csharp-tasks/", "published_at": "2019-12-02T00:00:00+00:00" }, { "id": "01a087da-50fa-7382-913e-8d321735db02", "title": "How to Pre-Configure Services Before Registering with ASP.NET Core's Built-in Service Container", "url": "https://sahansera.dev/preconfiguring-aspcore-services/", "published_at": "2019-12-01T00:00:00+00:00" } ] posts Claim your blog
Back to sahansera.dev
Blog · corpus.blog/blogs/sahansera.dev/posts

sahansera.dev

sahansera.dev

2026

2025

2023

2022

2021

2020

2019