Elvin Jamalov
Notes on building software with LLMs
Agents, retrieval, evals and inference, written for engineers who ship software.
-
Strategies for Dynamic Blazor UI Updates without Full Page Reloads
Consider a Blazor Server dashboard that pulls data from several microservices, renders a set of charts, and has a complex filtering panel. When a user applies new filters, the whole dashboard should refresh with new d...
-
Effective Caching and Instant Cache Invalidation
You know the drill. You’re building a sleek .NET API, and everything’s humming along, fast and responsive. Then, naturally, you hit the database or an external service one too many times. “Ah-ha!” you exclaim, “Cachin...
-
Applying SOLID Principles and Design Patterns in Modern C# Development
You start a new project, everything’s clean, pristine. You’re thinking, “This time, it’ll be different!” Then, slowly but surely, entropy kicks in. Requirements shift, new features get bolted on, and before you know i...
-
Async/Await Best Practices in .NET: Demystifying ConfigureAwait
async and await made non-blocking code look almost like synchronous code: UIs stopped freezing, and I/O-bound work stopped tying up threads. The part that still trips people up is ConfigureAwait(false): when you need ...
-
Containerizing .NET Applications: Best Practices for Docker and Deployment
You’ve just finished a killer new feature in your latest .NET 8 (or maybe even .NET 9 preview!) project. It’s fast, it’s lean, and it’s ready for the world. You hit dotnet run, and it sings. “Time to put this thing in...
-
Real-time Data Streaming with .NET SignalR and Reverse Proxies
When you’re building modern web applications, the demand for immediate, live feedback isn’t just a nice-to-have anymore; it’s practically a requirement. Think about it: a trading dashboard showing real-time price fluc...