All Posts
Every post on the blog in one flat list, newest first, with its categories so you can jump straight to the topic you care about. For a year-by-year view use the Archives tab.
- AI SDLC: Rolling Out AI Code-Review Agents Across an Enterprise - Four Gates and the Eight-Week Numbers
Taking an AI code-review agent from one pilot repo to 40 services: a per-repo policy file, four rollout gates, and eight weeks of acceptance and defect numbers.
- AI SDLC: AGENTS.md Files Coding Agents Actually Follow - Five Rules and One Rework Metric· ai
We rewrote one AGENTS.md for coding agents and measured it: agent PR rework fell from 41% to 17%. The five rule types that worked, and the one that did not.
- AI SDLC: Cost per Merged PR - Token Budgets for Coding Agents and the Four Numbers We Track
How we cut coding-agent spend per merged PR from $31 to $9 with a per-task token budget, a retry cap and a context-size guard, without lowering merge rate.
- Enterprise AI: An Azure OpenAI On-Call Runbook - The Five Alerts That Page and the First Command for Each· ai, enterprise-ai
An Azure OpenAI on-call runbook: the five alerts allowed to page, the first KQL or APIM check for each, and how MTTR fell from 74 to 23 minutes.
- Trimming a D365 F&O $metadata File Down to the Entities You Call: A Screenshot Walkthrough of EDMX Tools· ai, lamplit-tools
Screenshots of edmx.lamplitlabs.com on a D365 F&O metadata file: upload, trim to three sales entities, explore one entity and convert to OpenAPI JSON.
- Before and After: A Screenshot Walkthrough of the Lamplit Labs Token Counter, Schema Builder and Validator· ai, lamplit-tools
Five real screenshots of tools.lamplitlabs.com: each tool empty, then after one concrete input, so you can see exactly what changes on screen.
- Rust Ownership for .NET Developers: C# vs Rust Memory Behaviour on the Same Pipeline
One 2M-record pipeline in C# 13 on .NET 9 and Rust 1.91: each ownership concept mapped from C#, with measured peak RSS, allocations, GC pauses and wall time.
- Auditing This Jekyll Blog's Performance: What 139 Posts, 317 Images and One Build Output Actually Weigh
Performance audit of this Jekyll blog from its own build output: 10.8 KB gzipped post HTML, 96% of images sized, 8 images over 300 KB, and what is still open.
- Embedding Call Throughput in .NET 9, Python and Go: Batch Sizes 1 to 256, Measured
Same embedding client in .NET 9, Python 3.12 and Go 1.23 against one text-embedding-3-small deployment: texts/s and p99 at batch sizes 1 to 256.
- Enterprise AI: surviving Azure OpenAI model retirements without a weekend of firefighting· ai, enterprise-ai
Azure OpenAI versions retire and auto-upgrade. How we inventory deployments, pin versions in Bicep, gate upgrades on a golden eval set and canary via APIM.
- Why This Jekyll Blog Took 8 Seconds to Build: 278 Git Subprocesses in One Plugin Hook
Profiling a 139-post Jekyll build: a last-modified plugin forks git twice per post and costs half of an 8 s build. One batched git log cuts it to 3.3 s.
- .NET 9 vs Node 22 as an LLM API Gateway: Requests per Second, p99 Latency and Memory, Measured
Same streaming LLM gateway in .NET 9 and Node 22 on 4 vCPU: .NET sustains 11,200 req/s vs 6,400, p99 6.8 vs 14.9 ms, RSS 212 vs 168 MB. Where Node still fits.
- TypeScript vs Go vs Rust for LLM Tooling: One MCP Server, Three Languages, Measured
The same MCP server and streaming CLI client in TypeScript 5.9, Go 1.25 and Rust 1.91: cold start, memory, tool-call latency and SDK maturity measured.
- AI SDLC with Copilot Agents: From Spec Issue to Agent PR to Review, End to End· ai
One .NET issue walked through the agent-driven SDLC: spec issue, Copilot coding-agent pull request, agent self-review and human merge, with screenshots.
- Enterprise AI: Multi-Region Failover for Azure OpenAI with APIM Backend Pools and Circuit Breakers· ai, enterprise-ai
Fail Azure OpenAI traffic over between two regions with an APIM backend pool, circuit breaker and retries: the trace, the policy and game-day numbers.
- One Workflow, Three Tools: Prompt to Schema to Validator with the Lamplit Labs Tools· ai, lamplit-tools
The Lamplit Labs Token Counter, Schema Builder and Structured Output Validator run end to end on one support-ticket task, with a screenshot per step.
- AI SDLC: Seven Practices That Held Up After a Year of Coding Agents in .NET Teams· ai
Twelve months of coding agents on nine .NET services: the seven AI SDLC practices we kept, the three we dropped, and the before-and-after numbers.
- AI SDLC: A Code-Review Agent Workflow That Reviewers Actually Trust· ai
The four-stage AI code-review agent workflow we run on .NET repos: triage, one review with blocking vs advisory comments, agent re-check, then human review.
- Tiktoken Playground: Seeing Where Your Prompt Actually Splits· ai, lamplit-tools
How the Lamplit Labs Tiktoken Playground shows approximate BPE token boundaries, per-token byte counts, cost and context-window usage in the browser.
- Model Context Window Chart: How Much Fits Before You Start Trimming· ai, lamplit-tools
How the Lamplit Labs Model Context Window Chart compares context window, max output and knowledge cutoff for 26 LLMs, and turns tokens into pages.
- Structured Output Validator: Catching Schema Drift Before It Reaches Your Code· ai, lamplit-tools
How the Lamplit Labs Structured Output Validator checks an LLM's JSON against a JSON Schema in the browser, naming the keyword and property for every violation.
- Embedding Visualizer: Checking Vector Similarity Before You Trust Retrieval· ai, lamplit-tools
How the Lamplit Labs Embedding Visualizer compares two vectors with cosine, dot product and Euclidean distance to debug RAG thresholds and mismatches.
- Text Chunker for RAG: Previewing Chunk Boundaries Before You Embed· ai, lamplit-tools
How the Lamplit Labs Text Chunker splits text by tokens, sentences, paragraphs or characters and how to use its overlap preview to pick a RAG chunking strategy.
- Function Call Schema Builder: Tool Definitions Without Hand-Written JSON· ai, lamplit-tools
How the Lamplit Labs Function Call Schema Builder turns a form into an OpenAI tool definition, what it validates, and where you still edit the JSON.
- AI API Format Converter: One Chat Request, Four Provider Payloads· ai, lamplit-tools
How the Lamplit Labs AI API Format Converter rewrites a chat request between OpenAI, Anthropic, Gemini and Ollama, and what it drops.
- Prompt Template Editor and Prompt Diff: Treating Prompts Like Code Before They Reach Production· ai, lamplit-tools
How the Lamplit Labs Prompt Template Editor renders {{variable}} templates into chat messages, and how Prompt Diff shows what changed between versions.
- Token Counter: Checking Prompt Size and Context-Window Fit Before You Call the Model· ai, lamplit-tools
How the Lamplit Labs Token Counter estimates tokens, words and context-window usage for GPT-4o, Claude, Gemini and Llama, and when an estimate is enough.
- OpenAPI to MCP Server Generator: Turning REST APIs into Agent Tools· ai, lamplit-tools
How the Lamplit Labs OpenAPI to MCP Server Generator turns an OpenAPI or Swagger spec into a ready-to-run TypeScript or Python MCP server.
- Enterprise AI: Data Residency and Compliance Checklist for Azure OpenAI Deployments· ai, enterprise-ai
A 12-point data residency and compliance checklist for Azure OpenAI: deployment types, abuse monitoring, stored data, CMK, logging, DPIA and a CI test.
- AI SDLC: Migrating a .NET Framework 4.8 Service to .NET 8 with a Coding Agent - What It Did, What We Did, and the Numbers· ai
Splitting a .NET Framework 4.8 to .NET 8 migration between a coding agent and two engineers: the plan, the gates, two closed agent PRs, 11 days vs 7-9 weeks.
- AI Pricing Calculator: Estimating LLM API Costs Before You Ship· ai, lamplit-tools
How the Lamplit Labs AI Pricing Calculator turns tokens per request and daily volume into a monthly LLM bill and compares models before you commit.
- Go vs Rust for a GC-Sensitive AI Inference Gateway: p99 Latency, Memory and GC Pauses, Measured
Same routing + micro-batching gateway in Go and Rust, 3,000 req/s on 4 vCPU. Added p99: Go 9.4 ms, Rust 2.7 ms; RSS 148 MB vs 34 MB; where Go still wins.
- Rust vs Go for a CPU-Bound Microservice: Throughput, Tail Latency, Memory and Deploy Friction, Measured
Same CPU-bound pHash scorer in Rust (axum) and Go (net/http) on 4 vCPU. Rust: 9,840 req/s, p99 6.8 ms, 38 MB RSS. Go: 7,410 req/s, p99 12.7 ms, 112 MB.
- Enterprise AI: The Automation Evolution Enterprises Skip - Manual Process to API Integration to AI-Assisted Automation· ai, enterprise-ai
Why AI-automates-everything pilots stall: they skip the scripted/API stage that fixes the data contract, baseline error rate and logging. 3 worked examples.
- Pulse and the Automation Evolution: Why We Did Not Skip Straight to 'AI Does Everything'· ai, lamplit-tools
How Pulse fits the manual to API to AI progression: what it automates for this blog today, where humans still approve, and how to pace AI adoption.
- Enterprise AI: Vendor Lock-In and Exit Cost - Azure OpenAI Managed Endpoints vs a Self-Hosted Open-Weights Model· ai, enterprise-ai
What it actually costs to leave: a lock-in audit and a priced exit plan for one 1.4 B token a month workload on Azure OpenAI vs self-hosted Llama 3.1 70B.
- AI SDLC: How We Evaluate and Gate AI Coding-Agent Pull Requests Before Merge· ai
The five merge gates we run on every AI coding-agent pull request for .NET services: provenance, scope diff, sandboxed tests, mutation score and human review.
- AI SDLC: Prompt Injection Defences for Coding Agents That Read Untrusted Repository Content· ai
How a coding agent gets hijacked by text in a README or PR comment, and the five layers that stop injected instructions from widening scope or leaking secrets.
- Rust vs Python for an AI Inference Microservice: 1.5x Throughput, 3x Less Memory, 3x Better p99
Rust 1.91 (axum + ort) vs Python 3.13 (FastAPI + onnxruntime) serving the same MiniLM embedding endpoint: req/s, p50/p99, memory and cold start measured.
- Java vs Kotlin for a Spring Boot Microservice: Same Runtime, 40% Less Code, 2x Longer Builds
Java 21 vs Kotlin 2.1 on the same Spring Boot 3.5 microservice: startup time, memory footprint, lines of code and build time measured on one machine.
- AI SDLC: Where Coding Agents Fit in the Development Lifecycle - Four Hand-off Points· ai
A practical model for putting AI coding agents into a .NET delivery pipeline: task contract, sandboxed run, deterministic gates and a human review gate.
- Enterprise AI: Self-Hosted Llama 3.1 70B on vLLM vs Azure OpenAI - Cost and Latency at 1.4 B Tokens a Month· ai, enterprise-ai
A 1.4 B token a month enterprise workload priced as Azure OpenAI gpt-4o-mini and as self-hosted Llama 3.1 70B on vLLM: cost, p95 per GPU load, break-even.
- vLLM vs TGI vs TensorRT-LLM: LLM Serving Latency and Throughput on One H100, Measured at p99· performance, ai
Same Llama 3.1 8B, same H100, 128 concurrent chat users. TTFT p99: TensorRT-LLM 286 ms, vLLM 412 ms, TGI 538 ms; throughput and setup cost decide it.
- Bulk Writes to D365 Over OData in .NET - Upserting 250,000 Rows Without Getting Throttled
Measured wall time for four ways to write 250,000 rows into Dynamics 365 over OData from .NET: per-row PATCH, parallel workers, $batch and return=minimal.
- Go vs Node.js for a Small JSON API: 4-6x Throughput, 6x Less Memory, and What Node Still Wins
Go 1.27 vs Node.js 24 serving the same 50-item JSON endpoint under 64 connections: req/s, p50/p99 latency, resident memory and build step measured on a laptop.
- Embeddings and Cosine Similarity: How a Program Tells That Two Sentences Mean the Same Thing
Beginner tutorial: call an embeddings API, turn two sentences into vectors, and compute cosine similarity by hand with a tiny numeric example you can run.
- Azure OpenAI Prompt Caching in .NET: Cut Latency and Input Cost by Ordering Your Prompt Right· ai
How Azure OpenAI prompt caching works, how to structure prompts so the static prefix hits the cache, and measured latency and cost savings from .NET.
- pgvector vs Qdrant: Vector Search Latency on 1M Embeddings, Measured at p99· performance, ai
Same 1M OpenAI embeddings, same recall floor. pgvector IVFFlat p99 61 ms, pgvector HNSW 18.4 ms, Qdrant 9.7 ms; the filter case decides it.
- Azure Cosmos DB .NET SDK v3: The Serialization Cost Hiding in Every ReadItemAsync, Measured with BenchmarkDotNet
Same 4 KB Cosmos DB item, five ways to read it on .NET 8. Default Newtonsoft 1.38 ms and 41 KB per call; stream + System.Text.Json 1.04 ms and 9 KB.
- OData Paging for Large Dynamics 365 Datasets in .NET - $skip vs $skiptoken vs Keyset (With Numbers)
Measured rows, round trips and wall time for $skip, @odata.nextLink and keyset paging over 250,000 D365 rows from .NET, and where each breaks down.
- Retries, Timeouts and Rate Limits: Making Your First Model Call Survive the Real World
Beginner tutorial: handle timeouts, 429 rate limits and 5xx errors from a model API with exponential backoff, a retry budget and a safe fallback.
- The Real Cost of AI Automation vs the Hype - Where the Money Goes After the Token Bill· ai, enterprise-ai
A worked monthly cost model for one AI automation: tokens are 13 percent, human review, failures, monitoring and governance are the rest. With numbers.
- How This Blog Is Built and Checked: Jekyll, tools/test.sh and AI Agents That Draft but Never Merge· ai, lamplit-tools
Behind the scenes of this blog: the Jekyll setup, the deterministic checks in tools/test.sh, and the AI agent workflow where agents draft and humans merge.
- Enterprise AI: Wiring Azure OpenAI into a Dynamics 365 Finance & Operations Workflow - Vendor Invoice Line Coding with Structured Outputs· ai, enterprise-ai
An Azure Function reads pending D365FO vendor invoices over OData, gets line coding from Azure OpenAI as JSON and drafts it for clerk approval. Measured.
- AI SDLC: What the Published Evidence Actually Says About Cycle Time, Delivery Stability and Defect Rate· ai
Six public studies on AI-assisted coding (2023-2025) compared: 21-56% faster lab tasks, a 19% slowdown for experts, worse stability and bug rates in the field.
- Enterprise AI: Azure OpenAI Provisioned Throughput (PTU) vs Pay-as-you-go - Cost and Latency Under Sustained Load· ai, enterprise-ai
One gpt-4o workload at 60 req/min 24x7 priced five ways: pay-as-you-go, hourly PTU, reserved PTU, PTU plus spillover and Batch. Monthly cost, p95 latency, 429s.
- pg vs Prisma vs Drizzle: PostgreSQL Driver Latency from Node.js 22, Measured with autocannon
Runtime choice barely matters once a database is in the path. pg, Drizzle and Prisma on the same Node.js 22 query: p99 from 4.8 ms to 9.7 ms.
- OData $batch in .NET - Replace 50 Round Trips With One Request (With Numbers)
Measured wall time for sequential, parallel and $batch OData calls from .NET, plus changesets for atomic writes and the failure modes that bite in production.
- Swift vs Rust for a Data-Crunching CLI: Where Idiomatic Swift Loses 5x and How Much You Get Back
Swift 6.1 vs Rust 1.90 aggregating a 5M-row, 247 MB CSV: wall time, peak RSS, build time and binary size measured, plus the one Swift habit that costs 5x.
- Grounding a Model with Your Own Documents and Getting a Reply Your Code Can Check
Beginner guide to grounding a language model in your own documents (simple RAG) and asking for a JSON reply your code can validate.
- AI SDLC: Human vs Agent PR Review - Measuring Test Coverage Quality With Defect Escape Rate and Mutation Score· ai
412 .NET PRs reviewed by humans, an agent, or both: defect escape rate, mutation score of agent-written tests and turnaround, with the numbers that decided it.
- AI SDLC: How to Measure an AI Code-Review Agent Before You Trust It· ai
Five metrics for an AI code-review agent on a .NET repo: precision, ignored comments, escaped defects, turnaround and cost per PR, plus the dashboard.
- gRPC Server-Streaming vs REST Long-Polling Under Load: p50, p99, Connections and CPU on .NET 8
gRPC server-streaming vs REST long-polling and short-polling measured on .NET 8 with 5,000 clients: p50/p99 latency, throughput, connection and CPU cost.
- Enterprise AI: Azure OpenAI Fine-tuning vs RAG for an Enterprise Knowledge Base - A Worked Example with Numbers· ai, enterprise-ai
Fine-tuned gpt-4o-mini, RAG and a hybrid run against one 400-question golden set on an 18,000-document knowledge base: accuracy, citations, staleness, cost.
- Enterprise AI: An Audit Trail for Every Azure OpenAI Call with APIM, Event Hubs and Immutable Storage· ai, enterprise-ai
How we made 99.6% of production Azure OpenAI calls traceable to user, app, prompt version and model with an APIM policy, no app code changed.
- Python vs Rust in a Hot Loop: What 10 Million Iterations Cost, Measured with hyperfine· performance, rust
Benchmark the same sum-of-squares hot loop in plain Python, NumPy, Rust and Rust with rayon. From 1,420 ms down to 0.9 ms, and when each step is worth it.
- Calling a Language Model from Code: Your Prompt Is Just an API Request
A beginner walkthrough of calling a language model from a program: the HTTP request, system and user roles, max tokens, temperature and reading the reply.
- gRPC vs REST JSON: What the Protocol Actually Buys You, Measured on .NET 8 and Go
gRPC vs REST JSON throughput, p99 latency and wire size measured on ASP.NET Core 8 and Go 1.23 with wrk and ghz.
- Python vs TypeScript for an Internal CLI Tool: Startup Time, Packaging and the 1,400 Lines Both Took
Python 3.12 vs TypeScript on Node 22 and Bun for the same internal deploy CLI: cold start measured with hyperfine, plus packaging.
- System.Text.Json Source Generators vs Newtonsoft.Json: A BenchmarkDotNet Comparison on .NET 8
Benchmark Newtonsoft.Json against System.Text.Json with reflection and source generators. Serialization drops from 2,140 ns to 588 ns with zero allocations.
- Python vs Go for a Batch Log-Processing Job: Wall Time, Memory, Lines of Code and the Day-Two Costs
Python 3.12 vs Go 1.23 on the same 10 GB JSON-lines aggregation job: wall time, peak memory, lines of code, deploy artifact, and when Polars changes the answer.
- How a Language Model Answers You: Tokens, Prediction and Repetition
A beginner-friendly explanation of what happens between typing a prompt and getting an AI answer: tokens, next-token prediction and why models make things up.
- Enterprise AI: Cost and Latency SLOs for LLM Workloads - Burn-Rate Alerts for Azure OpenAI in Production· ai, enterprise-ai
Define cost and p95 latency SLOs per team and model for Azure OpenAI, compute burn rates in KQL, and page only when both windows are on fire.
- EF Core Query Tuning: AsNoTracking, Split Queries and Compiled Queries Measured with BenchmarkDotNet
Tune EF Core read paths with AsNoTracking, AsSplitQuery, projections and compiled queries. Benchmark table shows a 42 ms query dropping to under 7 ms.
- OData Query Performance Pitfalls in .NET - $expand, Paging and Payload Size Explained
Five OData query mistakes that slow down .NET clients talking to D365 or ASP.NET Core OData APIs, with before/after queries and a request-flow diagram.
- Zig vs C for a Systems Tool: Throughput, Binary Size, Cross-Compiling and Where the Bugs Hide
Zig 0.13 vs C (clang 18) for the same TCP proxy: throughput, binary size, build time, cross-compiling and the memory-safety bugs each one lets through.
- Variables, Values and References: How a Name Finds Its Data
A beginner-friendly explanation of variables, values and references, and why copying a list behaves differently from copying a number across languages.
- Enterprise AI: Governance as Code for Azure OpenAI - Azure Policy Guardrails and Budget Alerts Before the First Deployment Exists· ai, enterprise-ai
Turn the Azure OpenAI governance checklist into Azure Policy and budget alerts in Bicep, so bad configurations are denied at creation, not found in an audit.
- Enterprise AI: Per-Team Token Quotas and Chargeback for Azure OpenAI with Azure API Management· ai, enterprise-ai
Put Azure API Management in front of Azure OpenAI to give every team its own token quota, a 429 instead of a starved deployment, and a chargeback report.
- AI SDLC: LLM-Assisted Dependency Upgrades for .NET - Major Version Bumps Without Losing the Weekend· ai
How an LLM turns a red Dependabot major-version PR into a reviewed .NET patch, gated by build, tests and API-compat, with a human still pressing merge.
- Node.js 22 vs Deno 2 vs Bun 1.1: HTTP JSON API Throughput, Measured with wrk
Benchmark the same JSON endpoint on Node.js 22, Fastify, Deno 2 and Bun 1.1 with wrk. From 54,800 to 162,300 req/s, and what actually moves the number.
- AI SDLC for Automation: Letting a Coding Agent Harden GitHub Actions Workflows, One PR at a Time
How an AI coding agent hardens GitHub Actions workflows: pinned actions, least-privilege tokens, timeouts and concurrency, delivered as reviewable PRs.
- Enterprise AI: RAG vs Fine-tuning for an Internal Copilot - Cost, Latency, Freshness and Governance· ai
RAG or fine-tuning for an enterprise internal copilot? A side-by-side on cost, latency, data freshness and governance, with a decision table.
- Enterprise AI: LLM Observability with OpenTelemetry in .NET - Tracing Tokens, Cost and Quality per Request· ai
How to instrument Azure OpenAI calls in .NET with OpenTelemetry so every request carries tokens, cost, latency and a quality score per tenant.
- Enterprise AI: Canary Deploys and Automatic Rollback for LLM Model Versions and Prompt Changes· ai, enterprise-ai
Ship a new Azure OpenAI model version or prompt safely: shadow traffic, weighted canary in APIM, golden-set quality scoring, automatic rollback on regression.
- AI SDLC: LLM-Assisted Production Debugging for .NET Services, With Guardrails· ai
How an LLM turns an Application Insights alert into ranked, query-verified root-cause hypotheses for .NET services with no write access.
- AI SDLC in Practice: Letting a Coding Agent Triage and Fix a GitHub Issue End-to-End· ai
Worked example of an AI coding agent on a real bug: triaging the GitHub issue, planning, writing the fix and test, running dotnet test and opening the PR.
- Cutting .NET Allocations with Span
and Memory : Before/After BenchmarkDotNet Numbers</a> Reduce GC pressure in .NET hot paths with Span
, stackalloc and Memory . Three realistic before/after examples with BenchmarkDotNet allocation tables.</p> </li> - Regex Engine Performance: Rust regex vs Go regexp vs .NET 8 Regex vs Node 22, Measured with hyperfine
· performance, rustScanning a 1 GB log for five patterns: Rust regex 1,480 MB/s, .NET 8 Regex 612-705 MB/s, Node 22 438 MB/s, Go regexp 96 MB/s - and why the gap exists.
- Rust vs Go for a CLI Tool: Startup, Binary Size, Build Time and the Day-Two Costs
Rust 1.81 vs Go 1.23 for the same log-grep CLI: cold start, binary size, build time, memory, cross-compiling and the maintenance costs that decide it.
- Enterprise AI: Six Governance Controls Before Azure OpenAI Goes to Production in a Regulated Org
· ai, enterprise-aiGovernance checklist for Azure OpenAI in regulated enterprises: data residency, Entra ID, private network, prompt logging, content safety, human review.
- AI SDLC: AI-Assisted Flaky Test Triage for .NET Pipelines
· aiHow we let an LLM cluster flaky .NET test failures by root cause, auto-quarantine with an expiry and route real bugs to humans, with one sprint of numbers.
- AI SDLC: Where AI Actually Helps a .NET Team, Phase by Phase
· aiPhase-by-phase AI-assisted SDLC for .NET teams: what to delegate to AI in plan, design, code, test, release and operate, and which gate stays human.
- TypeScript vs Kotlin for Backend Services: Type Safety, Tooling, Performance and Team Velocity
TypeScript (Node 22) vs Kotlin (JVM 21) for the same REST API: compile-time safety, build loops, wrk throughput and p99 latency, and which team ships faster.
- Testing LLM Prompts in .NET: Regression Tests for Azure OpenAI Outputs
· aiBuild an xUnit regression suite for Azure OpenAI prompts in .NET: golden cases, structural asserts, a recorded-response fake for CI and a nightly live run.
- Enterprise AI: Model Routing for Azure OpenAI - Cheap Model First, Escalate Only When Needed
· ai, enterprise-aiRoute Azure OpenAI traffic to gpt-4o-mini by default and escalate to gpt-4o or o1 only when quality checks fail: APIM policy, classifier, results.
- Enterprise AI: Semantic Caching for Azure OpenAI with Azure API Management
· ai, enterprise-aiCut Azure OpenAI latency and token spend with APIM semantic cache policies: setup, threshold tuning on real traffic, and the gotchas.
- Azure OpenAI Content Filters in .NET: Handling finish_reason content_filter Without Breaking Your App
· aiHandle Azure OpenAI content filters in .NET: catch the 400 content_filter error, detect truncated completions via FinishReason and show users an honest message.
- Java 21 Virtual Threads vs .NET 8 async/await: Blocking I/O Throughput, Measured with wrk
· performance, javaA 20 ms downstream wait behind 1,000 connections: Java platform threads 9,850 req/s, virtual threads 47,300, .NET 8 async/await 48,600, Go 49,400.
- LLM-Generated Unit Tests in .NET: Why Coverage Lies and How Mutation Testing Keeps Them Honest
· aiLLM-generated xUnit tests hit 94% coverage but killed only 41% of mutants. A review loop with Stryker.NET and five prompt rules fixed that.
- Enterprise AI: A Cost Observability Dashboard for Azure OpenAI with Log Analytics, KQL and Workbooks
· ai, enterprise-aiTurn Azure OpenAI diagnostic logs into a per-team, per-model daily cost dashboard with KQL and an Azure Monitor Workbook, plus a budget alert.
- Azure OpenAI Embeddings in .NET: Semantic Search Without a Vector Database
· aiGenerate text-embedding-3 vectors with the Azure OpenAI .NET SDK, store them in memory, and rank documents with cosine similarity for a small semantic search.
- Azure OpenAI Batch API in .NET: Process Thousands of Prompts at Half the Price
· aiUse the Azure OpenAI Global Batch deployment from .NET: build a JSONL file, upload it, create a batch, poll for completion and join results by custom_id.
- Go Goroutines vs .NET Tasks: HTTP Concurrency Throughput, Measured with wrk
Same JSON echo API in Go net/http and .NET 8 Minimal API under 256 connections with wrk: 186k vs 171k req/s, and what a 1 ms blocking call costs each runtime.
- In-Process Cache vs Redis in .NET 8: Where the Microseconds Go, Measured with BenchmarkDotNet
IMemoryCache, ConcurrentDictionary, HybridCache and StackExchange.Redis measured on one 10k-item set: 0.06 us to 241 us per Get, and what a 50-key page pays.
- Streaming Azure OpenAI Responses in .NET: First Token in Under a Second
· aiStream Azure OpenAI chat completions in C# with IAsyncEnumerable, forward them to browsers over Server-Sent Events, and handle cancellation and errors.
- Evaluating a RAG Retriever in .NET: Precision@k, Recall@k, MRR and a Golden Set You Can Run in CI
· aiStop eyeballing RAG answers. Build a golden set, compute Precision@k, Recall@k and MRR for your .NET retriever, and gate regressions in CI.
- Azure OpenAI Function Calling in .NET: Let the Model Call Your C# Methods Safely
· aiWire Azure OpenAI tool calls to real C# methods: define JSON schemas, run the tool loop, validate arguments, and keep the model from calling anything dangerous.
- Structured Outputs with Azure OpenAI in .NET: Stop Parsing Free Text
· aiHow to use Azure OpenAI structured outputs (JSON schema mode) from C# so responses always match a typed record, with schema rules, pitfalls and a sample.
- Counting Tokens and Controlling Azure OpenAI Cost in .NET
· aiCount Azure OpenAI tokens offline in .NET with Tiktoken, trim chat history, cap output tokens and cache repeats to keep the bill predictable.
- Handling 429 Rate Limits from Azure OpenAI in .NET: Backoff That Actually Works
· aiWhy Azure OpenAI returns 429 even under quota, how to honour Retry-After with exponential backoff and jitter in C#, and what the SDK already does for you.
- Cloud OCR Compared: Amazon Textract vs Google Cloud Vision vs Azure AI Document Intelligence
· aiAmazon Textract vs Google Cloud Vision vs Azure AI Document Intelligence: accuracy, layout extraction, prebuilt models and pricing compared for production OCR.
- Automate Draw.io Diagram Export with GitHub Actions
Learn how to automate exporting Draw.io diagrams into PNG images using GitHub Actions. Keep your visual documentation always in sync with your code.
- Automate Draw.io Diagram Export with Azure DevOps
Learn how to automate exporting Draw.io diagrams into PNG images using Azure DevOps pipelines. A complete step-by-step guide using deathstar-blueprint.drawio.
- Principal does not have access to API/Operation
· aiResolve the Azure OpenAI 'principal does not have access to API' error by assigning the correct RBAC role to your user or application identity.
- Key based authentication is disabled for this resource
· aiWhat the 'key based authentication is disabled for this resource' error means in Azure AI Services and how to switch to Entra ID authentication.
- Call to get Azure Search index failed - Server responded with status 403
· aiFix the Azure OpenAI 'call to get Azure Search index failed' 403 error by granting the service the right role on your Azure AI Search resource.
- Instagram Threads API - Part 2 - Creating Post using REST Apis
Part 2 of posting to Instagram Threads with the API: getting a long-lived token and publishing text, image and link posts with the Threads endpoints.
- Instagram Threads API - Part 1 - Obtaining Your API Access Token
Part 1 of posting to Instagram Threads with the API: creating a Meta app, configuring permissions and obtaining an access token for your account.
- Things to Consider Before Using Azure OpenAI in Your Organization
· aiKey things to consider before adopting Azure OpenAI: models, regions, quotas, pricing, security, responsible AI and integration with your existing stack.
- Instagram Threads API: A Big Step Towards Taking on Twitter?
What the Instagram Threads API (announced April 2024, released June 2024) means for developers and what it lets you automate.
- Maximizing Your Facebook Page: Part 2 - Creating Post using REST Apis
Part 2 of posting to a Facebook Page with the Graph REST API: exchanging tokens for a long-lived page token and publishing text, links and photos.
- Maximizing Your Facebook Page: Part 1 - Obtaining Your API Access Token
Part 1 of posting to a Facebook Page with the Graph REST API: creating a Meta developer app, adding permissions and generating a user access token.
- Unlocking LinkedIn's Posting Potential: Part 2 - Creating Post using REST Apis
Part 2 of automating LinkedIn posts with the REST API: finding your author URN and publishing text, article links and images with the Posts endpoint.
- Unlocking LinkedIn's Posting Potential: Part 1 - Obtaining Your API Access Token
Part 1 of automating LinkedIn posts with the REST API: creating a LinkedIn app, requesting the right scopes and completing the OAuth 2.0 flow for a token.
- Automating RSS Feed Posts to Social Media Using GitHub: Say Hello To Ferret
Automatically share new RSS feed items to Twitter, Mastodon and other social media using a scheduled GitHub Actions workflow instead of Logic Apps.
- Automating RSS Feed Posts to Twitter(X) and Mastodon Using Logic Apps
Automatically post new RSS feed items to Twitter and Mastodon with an Azure Logic App, using the RSS trigger and social media connectors.
- Navigating OData APIs with Dotnet 8 and C#: Exploring Options and Drawbacks
Compare ways to call OData REST APIs from .NET 8 and C#: Simple.OData.Client, the OData Connected Service and raw HttpClient, with the drawbacks of each.
- Simple OData Client - Dotnet 8 and C#
An overview of Simple.OData.Client for C# and .NET: setup, querying OData services with a fluent API, and its advantages and disadvantages.
- OData Client- Dotnet 8 and C#
An overview of Microsoft's OData Client library for C#: generating a typed client, querying services, and its pros and cons compared to other approaches.
- Custom HTTP Client - Dotnet 8 and C#
How to call OData services from C# with a custom HttpClient, with the trade-offs of full control versus the convenience of dedicated OData client libraries.
- Benchmarking OData Clients in Dotnet 8
Benchmark results comparing OData Client, Simple.OData.Client and a custom HttpClient in C# across three query scenarios, with numbers and takeaways.
- The Language Of Computers
A beginner-friendly look at how computers understand instructions, from binary and machine code up to the high-level languages programmers write.
- How to Become a Software Engineer (From Scratch)
A no-shortcuts beginner guide to becoming a software engineer from scratch: foundations, languages, and how to build a solid start.
- System.Text.Json Serialization Issue With Azure Cosmos DB SDK V3 For dotnet8
Fix System.Text.Json serialization issues with the Azure Cosmos DB .NET SDK v3 on .NET 8 by plugging in a custom serializer; copy-paste code included.
- The Stirring Debate Surrounding Moq's Latest Version: Unveiling Privacy Concerns and Trust Dilemmas
What happened with Moq 4.20 and SponsorLink: how developer emails were collected, the privacy concerns raised, and what .NET teams should do about it.
- Azure B2C Custom Policies Deployment - Azure DevOps
Deploy Azure AD B2C custom policies from Azure DevOps pipelines with token replacement, including fixes for validation issues.
- D365 FO EDMX / OData trimmer online– Make your metadata smaller online
Trim large D365 Finance and Operations EDMX / OData metadata files online to speed up .NET class generation and make your application lighter.
- Automatic Database Backup Of Golden Configuration Environment D365FO
Automate database backups of a D365 Finance and Operations golden configuration or tier 1/2 cloud-hosted environment with Azure DevOps and Azure Storage.
- AutoMapper ForAllOtherMembers
ForAllOtherMembers was removed from AutoMapper; here is why, and how to migrate mappings that relied on it.
- GCP Authentication Without JSON file
Authenticate to Google Cloud or Firebase from .NET without committing the service account JSON file to your repository, using environment variables.
- Updating Azure Function App From V3 to V4
Outline of the steps to upgrade an Azure Functions app from runtime version 3 to version 4, including backups, project changes and testing.
- Securing Azure APIM With Azure Key Vault
Step-by-step guide to securing Azure API Management by storing secrets and API keys in Azure Key Vault and referencing them from APIM named values.
- Azurite + GitHub Actions
· githubRun Azurite, the Azure Storage emulator, inside GitHub Actions or any CI/CD pipeline to execute integration tests against local storage.
- How To Change Azure Function App Time zone
How to change the time zone used by Azure Function App timer triggers with the WEBSITE_TIME_ZONE setting so CRON expressions run in local time.
- Where can I get list of countries and there state provinces?
A free, automatically updated list of all countries with their states and provinces, ready to use in your project as JSON.
- Does coding is enough to become a good backend engineer?
Is coding, data structures and algorithms enough to become a good backend engineer? Thoughts on the other skills that matter in real projects.
- Terraform for developers
Terraform basics for backend developers: what it is, how providers, resources and state work, and the essential commands to manage cloud infrastructure as code.
- gRPC Protobuf Data Types
Cheat sheet of gRPC Protobuf data types: scalar value types, well-known types and their C# and .NET equivalents in one document.
- Should we move to c# 8 using-declaration?
What C# 8 using declarations change compared to classic using blocks, when the object gets disposed, and whether moving your code to them is worth it.
</ul> - Regex Engine Performance: Rust regex vs Go regexp vs .NET 8 Regex vs Node 22, Measured with hyperfine