Elvin Jamalov
Notes on building software with LLMs
Agents, retrieval, evals and inference, written for engineers who ship software.
-
Documenting Architectural Decisions (ADRs) in .NET Projects for Enhanced Maintainability
The call came late on a Friday afternoon. A production issue. A critical backend service, designed years ago, was intermittently failing under what seemed like moderate load. The stack traces were perplexing, pointing...
-
Advanced Diagnostics, Profiling, and Performance Tuning for .NET Applications
The application had been running flawlessly for months, churning through millions of requests daily. Then, subtly at first, the occasional timeout against our primary Redis cache. A few users noticed slower page loads...
-
Mastering .NET Performance: Deep Dive into Memory Optimization and Custom Hashing
We’ve all faced that frustrating moment when an otherwise well-designed application starts showing inexplicable latency spikes or memory bloat under load. Often, the culprit isn’t a single catastrophic bug, but rather...
-
Optimizing Database Pagination in .NET with Keyset Pagination
The performance characteristics of data retrieval operations often reveal themselves only after a system has been running in production for some time, accumulating significant data volumes. A classic scenario I’ve enc...
-
Architecting Cloud-Native .NET Applications on Azure: Patterns and Practices
Anyone who has run a distributed system knows the scene: a call graph on screen, debugging a cascading failure that started with a simple HTTP request timing out. The promise of microservices – independent deployments...
-
Implementing Robust Authentication and Authorization in ASP.NET Core
When architecting distributed systems, the perennial challenge of establishing a reliable security perimeter invariably resurfaces. A monolithic application might get by with an integrated user store and simple role c...
-
Building High-Performance Distributed Caching Solutions in .NET
Picture a typical bottleneck: a set of ASP.NET Core microservices hitting a SQL Server instance with a high volume of read queries for relatively static configuration data and product catalogs. The database isn’t fail...
-
Extending EF Core: Lifecycle Hooks, Named Filters, and Domain Events
Navigating the complexities of data persistence in modern applications demands more than just basic CRUD operations. While Entity Framework Core provides an excellent abstraction over the database, building robust, ma...
-
Securing Cloud-Native .NET Aspire Applications with Production-Grade Entra ID Authentication
Transitioning from a local dotnet run experience to a robust, secure cloud deployment is often where the real engineering challenges begin. While .NET Aspire beautifully orchestrates our distributed applications on lo...
-
Strategies for Managing LLM Token Growth and Performance in .NET
Integrating Large Language Models into .NET applications opens up vast possibilities, yet it quickly surfaces a critical architectural concern: managing token consumption. We’ve all seen it – an application that works...