Browse our archives by topic…
Blog
Browse our blogs activity over the years…
Building API Reference Documentation From Code, Part 2: Under the Hood
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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 7.0 is now available, with the potential to reduce deployable application size by up to 90MB.
OpenAPI Code Generation with Corvus: Authentication
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
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.
OpenAPI Code Generation with Corvus: End-to-End
Wire a Corvus-generated OpenAPI client to a generated server over real HTTP - both sides validated against the same spec, with generated OAuth2 scope constants for type-safe authentication.
OpenAPI Code Generation with Corvus: Server Stubs
Generate ASP.NET Core server stubs from OpenAPI specs with Corvus - handler interfaces with pre-validated parameters, typed result factories, and automatic Problem Details responses for invalid requests.
OpenAPI Code Generation with Corvus: Typed HTTP Clients
Generate strongly-typed HTTP clients from OpenAPI 3.x specs using the Corvus CLI - zero-allocation models, exhaustive response matching, and built-in schema validation with a single dotnet tool command.
Optimising DAX: Model Design Comparisons and Testing Tips
Star schema vs flat table vs header/detail - which Power BI model design gives you the best performance? This post compares all three and covers practical testing tips.
Microsoft Fabric Workspace Topology Patterns
Workspace topology is one of the first decisions you'll make in Microsoft Fabric, and one of the hardest to undo once you're underway. This post will help you start with the right foundations in place.