Creating Valid Testing Data in .NET
Part of any good software development strategy includes making sure that your tests have a good set of data to test the code against.
Read more →Part of any good software development strategy includes making sure that your tests have a good set of data to test the code against.
Read more →It can be useful to have the ability to enable or disable certain functionality in your application. Feature flags give us the ability to do so.
Read more →If you are running your AI locally in something like Open WebUI or OpenCode, you can select from many models. In this post, we'll talk about considerations when choosing an AI model.
Read more →Migrating between static site generators can be a challenge. AI made it quick and easy.
Read more →There are many different approaches to software development. In the earliest days, there was the “Test Last” or “Code First” approach. A business analyst would work with the client to develop requirements. Once all the requirements were gathered, they would pass them to the developers, who would write the application from beginning to end. The “finished” product would be handed back to the client, or maybe to a QA team for testing (if there was a big enough budget). That testing was usually manual, and slow, and it depended on whomever was selected for testing understanding the product and what it was supposed to do, which they often really didn’t. Sometimes, the process worked. Often, it didn’t. Features and edge cases would often be missed. Critical business logic would be incorrect. The end product was often nothing like the client envisioned, or wanted. Sometimes, if there was a big enough budget available, there would be iterations to fix some of the more egregious issues. But often they would have to make do with the result.
Read more →Aspire has basic support for OpenTelemetry out of the box. But what about when we're ready to do more.
Read more →While reactive strategies respond to failures after they occur, proactive strategies prevent problems before they happen. In this post, we'll explore the two essential proactive strategies: Timeout and Rate Limiter. The Rate Limiter strategy is particularly versatile, offering both traditional rate limiting (controlling requests over time) and concurrency limiting (controlling simultaneous operations). Together, these strategies help you constrain resource usage and execution time to keep your applications stable and performant.
Read more →Explore the real limits of LLM context windows, why infinite growth is impractical, and how to build scalable AI solutions using retrieval, summarization, and memory systems.
Read more →Polly provides several reactive resilience strategies that respond to failures as they occur. In this post, we'll explore four essential reactive strategies: Retry, Circuit Breaker, Fallback, and Hedging. Each addresses different failure scenarios and can be combined to create robust resilience pipelines.
Read more →It's inevitable that production will fail. Your ability to respond quickly greatly depends on being able to determine what went wrong.
Read more →