Skip to content

Browse our blogs activity over the years…

  • Jan
  • Feb
  • Mar
  • Apr
  • May
  • Jun
  • Jul
  • Aug
  • Sep
  • Oct
  • Nov
  • Dec
  • Sun
  • Mon
  • Tue
  • Wed
  • Thu
  • Fri
  • Sat
2026
How to Implement Augmentation in RAG

How to Implement Augmentation in RAG

Carmel Eve

Understand the augmentation step of RAG: how retrieved documents are structured into prompts, how metadata and citations improve response quality, and how to avoid common pitfalls like prompt injection.
How to Implement Retrieval in RAG

How to Implement Retrieval in RAG

Carmel Eve

Understand the retrieval step of RAG: Learn how database queries, keyword search, vector search, and hybrid approaches find the right information to ground your LLM responses.
TypeDeclaration: An Abstraction for Understanding JSON Schema

TypeDeclaration: An Abstraction for Understanding JSON Schema

Matthew Adams

The Corvus.Json.CodeGeneration library analyses JSON Schema and builds a TypeDeclaration tree that maps schema patterns to code patterns. The code generator, CLI tool, source generator, and Blazor playground all consume the same abstraction - and you can too.
Optimising DAX: Practical Examples

Optimising DAX: Practical Examples

Carmel Eve

The final post in the Optimising DAX series: the CALCULATE trap, variables and IF.EAGER, slicer costs, and a practical approach to isolating slow queries.
Optimising DAX: Data Materialisation

Optimising DAX: Data Materialisation

Carmel Eve

Data materialisation is when the storage engine gives up on efficient processing and rebuilds the entire table. This post explains what triggers it, why it's expensive, and how to delay it.
Building API Reference Documentation From Code, Part 2: Under the Hood

Building API Reference Documentation From Code, Part 2: Under the Hood

Matthew Adams

A deep dive into the cross-assembly linking, PDB-based source links, TFM scanning, enrichment merging, and search indexing that power our API reference documentation pipeline.
Building API Reference Documentation From Code, Part 1: The Pipeline

Building API Reference Documentation From Code, Part 1: The Pipeline

Matthew Adams

We generate about 8,800 API reference pages from 16 libraries across two engine versions, with source links, TFM availability badges, and hand-authored enrichments - all from a single PowerShell pipeline. Here's how.
Writing Effective Copilot Instructions for Complex Codebases

Writing Effective Copilot Instructions for Complex Codebases

Matthew Adams

A flat copilot-instructions.md works for small projects. When your codebase hits 500k lines, 19 projects, and multiple code generators, you need something more structured. Here's how we built a modular skills library for Corvus.Text.Json - and the design principles that make it work.
Optimising DAX: The Formula Engine and Storage Engine

Optimising DAX: The Formula Engine and Storage Engine

Carmel Eve

When you execute a DAX query, two engines divide up the work. Understanding the split between the formula engine and the storage engine is key to writing performant DAX.
Your Cloud AI SLA Tells You Less Than You Think

Your Cloud AI SLA Tells You Less Than You Think

James Dawson

Traditional cloud SLAs measure API uptime, not behavioural stability. This post talks about how silent AI model drift can quietly break your agents and the questions you might want to ask vendors.
Trying Out WSL Containers: Microsoft's Built-In Alternative to Docker Desktop

Trying Out WSL Containers: Microsoft's Built-In Alternative to Docker Desktop

Mike Evans-Larah

Microsoft's new WSL Containers (wslc) promises container management on Windows without Docker Desktop. I tried it with dev containers, Aspire, and Docker Compose - here's what works, what doesn't, and whether you should switch yet.
AsyncAPI Code Generation with Corvus: Custom Transports

AsyncAPI Code Generation with Corvus: Custom Transports

Matthew Adams

Implement a custom IMessageTransport for brokers not covered by the built-in packages - PublishAsync, SubscribeAsync, RequestAsync, dead-letter routing, and optional health check support.
AsyncAPI Code Generation with Corvus: Testing

AsyncAPI Code Generation with Corvus: Testing

Matthew Adams

Test Corvus-generated AsyncAPI producers and consumers without a running broker - unit test handler logic with typed payloads, verify producer output with message capture, and integration test the full publish-consume round-trip using InMemoryMessageTransport.
AsyncAPI Code Generation with Corvus: Filtering

AsyncAPI Code Generation with Corvus: Filtering

Matthew Adams

Generate producers and consumers for only the channels you need - use channel filtering, tag selection, and the asyncapi-show preview command to carve focused messaging code from large AsyncAPI specifications.
AsyncAPI Code Generation with Corvus: Durability and Resumption

AsyncAPI Code Generation with Corvus: Durability and Resumption

Matthew Adams

Configure durable message delivery for Corvus-generated AsyncAPI consumers - Kafka consumer groups, AMQP acknowledgement, NATS JetStream, MQTT persistent sessions, and Azure Service Bus PeekLock settlement.
AsyncAPI Code Generation with Corvus: Health and Telemetry

AsyncAPI Code Generation with Corvus: Health and Telemetry

Matthew Adams

Add observability to Corvus-generated AsyncAPI producers and consumers - OpenTelemetry distributed tracing, message throughput metrics, processing loop heartbeats, and ASP.NET Core health checks for transport connectivity.
AsyncAPI Code Generation with Corvus: Request/Reply

AsyncAPI Code Generation with Corvus: Request/Reply

Matthew Adams

Generate typed request/reply methods from AsyncAPI specs with Corvus - correlated messaging with zero-allocation correlation IDs, typed response payloads, timeout management, and support for both AsyncAPI 3.0 reply objects and 2.6 x-corvus-reply extensions.
AsyncAPI Code Generation with Corvus: Typed Consumers

AsyncAPI Code Generation with Corvus: Typed Consumers

Matthew Adams

Generate typed message consumers from AsyncAPI specs with Corvus - handler interfaces with pre-validated payloads, configurable error policies, dead-letter routing, and Polly resilience middleware.
AsyncAPI Code Generation with Corvus: Typed Producers

AsyncAPI Code Generation with Corvus: Typed Producers

Matthew Adams

Generate strongly-typed message producers from AsyncAPI specs using the Corvus CLI - validated payloads, channel address templates, and pluggable transports for NATS, Kafka, AMQP, MQTT, and Azure Service Bus.
OpenAPI Code Generation with Corvus: Testing

OpenAPI Code Generation with Corvus: Testing

Matthew Adams

Test Corvus-generated OpenAPI code at every level - unit test handler logic in isolation with typed params, integration test the full round-trip with WebApplicationFactory, and verify client behaviour with in-memory transports.
OpenAPI Code Generation with Corvus: Filtering

OpenAPI Code Generation with Corvus: Filtering

Matthew Adams

Generate code for only the endpoints you need - use path filtering and the openapi-show preview command to carve focused, domain-specific clients and server stubs from large OpenAPI specifications.
OpenAPI Code Generation with Corvus: Callbacks, Webhooks and Links

OpenAPI Code Generation with Corvus: Callbacks, Webhooks and Links

Matthew Adams

Generate typed webhook receivers and senders from OpenAPI specs with Corvus - callback server stubs for receiving notifications, callback clients for sending them, runtime expression resolution, and linked operations for hypermedia-style API navigation.
Rx.NET v7.0 Now Available

Rx.NET v7.0 Now Available

Ian Griffiths

Rx.NET 7.0 is now available, with the potential to reduce deployable application size by up to 90MB.
OpenAPI Code Generation with Corvus: Authentication

OpenAPI Code Generation with Corvus: Authentication

Matthew Adams

Corvus generates per-operation OAuth2 scope constants from your OpenAPI spec - use them with standard .NET DelegatingHandler middleware and Azure.Identity for type-safe authentication without proprietary frameworks.
OpenAPI Code Generation with Corvus: Streaming

OpenAPI Code Generation with Corvus: Streaming

Matthew Adams

Generate typed streaming responses from OpenAPI specs with Corvus - SSE and NDJSON on the server with writer callbacks, IAsyncEnumerable on the client with pooled typed documents and automatic frame parsing.