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 The AI Code Review Crisis & How to Survive Software Fundamentals Matter More in the AI Era DateTime Mistakes Breaking Your C# App How to Debug Production Errors in Node.js How We Protected and Operate Our AI Chatbot at Low Cost Securing an AI Chatbot with Layered Guardrails 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 with a TurboVec Sidecar TurboQuant, TurboVec, and the Real RAM Math for Local Vector Search 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 Message Broker Guarantees and Idempotency Pure TypeScript DDD: Practical Persistence Ignorance with MikroORM TypeScript 7 Native Go Port: What to Do Enforce Clean Architecture in TypeScript Stop Hitting Claude's Usage Limits: Practical Ways to Stretch Your Plan Testcontainers Best Practices for NestJS Integration Testing TypeScript DI Without a Framework CQRS in .NET Without MediatR Clinejection: GitHub Release Pipeline 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 Engine in WSL 2 Without Docker Desktop Pragmatic Clean Architecture in ASP.NET Core Nx + NestJS Monorepo Boilerplate Angular 5 to 19 Migration Guide