Blog & Insights

Technical articles from the Arg Software team on architecture, TypeScript, .NET, DevOps, AI tooling, and the engineering decisions behind reliable software.

The Arg Software blog covers practical software engineering: architecture, TypeScript, .NET, DevOps, AI tooling, and the tradeoffs behind reliable production systems.

We write practical guides on topics like enforcing clean architecture in TypeScript, CQRS without MediatR in .NET, dependency injection patterns in ASP.NET Core, and functional error handling with the Result pattern.

Our DevOps blog posts cover running Docker natively on Windows with WSL2, local Kubernetes clusters with NestJS and PostgreSQL, and debugging microservices with Prometheus and OpenTelemetry.

We also write about software engineering culture, including the art of pull requests, building scalable monorepos with Nx and NestJS, and the real impact of AI on software development teams.

Home Services Our Work Blog Partners Use Cases Careers About Us Working with Us Contact Software Fundamentals Matter More in the AI Era DateTime Mistakes Breaking Your C# App How to Debug Production Errors in Node.js How We Secured and Scaled Our AI Chatbot With Minimum Cost Securing an AI Chatbot Without the Cost RAG Knowledge Design for Business Chatbots RAG Pipeline Design: 3 LLM Calls Per Question Explained How We Built Gaspar, Our AI Sales Assistant Why .NET Still Matters for Modern Software The JWT Logout Problem: Why Stateless Auth Breaks Behavior-Driven Domain Models in TypeScript Adding Vector Search to TypeScript Clean Architecture (Without a Cloud Bill or a RAM Crisis) The AI Big Lie: You Don’t Need 32 GB of RAM for Vector Search Anymore The Hidden Tax of “Clean” Code: Knowing Which Abstractions to Keep (and Which to Burn) Stop Using “any”: A Practical Migration Plan for Legacy TypeScript Apps The Most Important Decision in Web3 Isn’t What You Put On-Chain — It’s What You Don’t API Versioning in .NET 10 Minimal APIs: A Practical, Production-Ready Guide Stop Trusting Your Message Broker: Why Idempotency is the Only Real Guarantee Pure TypeScript DDD: Achieving True Persistence Ignorance with MikroORM TypeScript 7 Rewritten in Go: What to Do Enforce Clean Architecture in TypeScript Stop Hitting Claude's Usage Limits: How to Hack Your Tokens Testcontainers Best Practices for NestJS Integration Testing TypeScript DI Without a Framework CQRS in .NET Without MediatR Clinejection: GitHub Supply Chain Attack Stop Worrying, Embrace the Chaos Debug Microservices with Prometheus & OTel AI Architectural Changes Nobody Wants Running AI Locally: A Complete Guide API Architecture Styles for Developers Circuit Breaker Pattern in ASP.NET Core The Art of Pull Requests TypeScript Error Handling: Result Pattern DI Anti-Patterns in ASP.NET Core AI Does Not Replace Talent, It Exposes It Build a Chrome Extension with React & Vite The Word Sabotaging Your Engineering Team Local Kubernetes with NestJS & PostgreSQL Run Docker Natively on Windows with WSL2 Pragmatic Clean Architecture in ASP.NET Core Nx + NestJS Monorepo Boilerplate Angular 5 to 19 Migration Guide