Posts
Short notes and links worth keeping, written down before I forget why they mattered. On .NET, Azure, and building with AI.
- UUIDv7 is not a drop-in replacement for your sequence number. — It buys distribution and index-locality but not strict ordering, stable pagination semantics, or business meaning. The RFC allows implementations to alter timestamps and real-world libs like Python’s…
- Treat a public CA as a replaceable dependency, not a one-time setup. — The eMudhra key failures and their exit show a CA can fail operationally overnight, and many non-browser clients won't get the memo. Build issuer agility: automate re-issuance, keep certificate…
- Stop thinking in npm versus pip versus composer. — The PHP RCE and the Brotli/CVE-2026-111497 fallout show the vulnerable unit is often a shared parser, compression library, or runtime component, not a package manager line. Your dependency plan…
- Stop talking about “rogue” agents and start treating every tool call as a… — The recent wave of AI-hacking stories points to ordinary engineering failures: weak containment, overly broad tool permissions, and blind monitoring. The useful move is procedural and structural…
- Retries in LLM-driven agents expose a classic distributed-systems failure… — Wrapping tool calls in fancier prompts or bigger models won't stop duplicate refunds or state bloat. Put the safety contract at the tool boundary: durable intent records, application-owned…
- The LiteLLM PyPI compromise is the clearest recent example that… — If you let a gateway library hold provider API keys or tenant data, a malicious release can harvest creds from any Python process and call home. Teams should separate routing from secret custody: a…
- Orchestrators are part of your consistency model, not neutral plumbing. — Jepsen’s Orkes Conductor analysis shows concurrent task runs and forgotten executions can make retries, callbacks, and compensations merely look idempotent in tests. You must test and design against…
- Treat any coding agent that stores credentials as part of your identity plane… — The OpenCode breach (affecting 1.4% of Console users) shows agents can hold real credentials, so you should issue short-lived, scoped credentials fronted by a broker, log sessions, and cap blast…
- Treat Bash as glue, not the place you let an LLM write decision logic. — Bash is excellent at launching tools and wiring streams, but its expansion pipeline and subshell semantics make branching, parsing, retries, and stateful workflows fragile when generated by an agent…
- Most “rogue agent” stories are containment and logging failures, not evidence… — Teams are still skipping mundane controls: proper sandboxing, strict egress rules, continuous monitoring, deterministic replay of agent actions, and an operator kill switch. That convenience of…
- The real bottleneck for agent-driven coding is review and intent, not object… — Anthropic’s Scion shows that when agents produce tens of thousands of changes a day, you need change units that record what an agent did and why, plus provenance that review tools can reason about…
- Relying on package managers alone will break when agents push updates faster… — Trail of Bits shows many managers don't verify content or signatures by default, and agents will surface that gap by automating high-velocity dependency churn. Add an external policy layer that…
- When multiple agents can each generate acceptable diffs, Git and branch-and-PR… — Anthropic’s Scion writeup makes that visible: merges ballooned and the old clone-based model strained under agent-scale churn. Teams need explicit agent workspaces, server-side merge queues, and a…
- This is a control‑plane failure, not an OT novelty: control commands across… — Teams that ship software for physical operations should treat those control paths like production deploys — segmented authority, attestable change records, offline‑safe defaults, and regular drills…
- Treat retries inside agent-driven flows as a product decision, not a middleware… — An automated retry converts a transport hiccup into a duplicated business action unless every downstream call has an idempotency plan, dedupe key, or clear compensation path. Decide retry policy…
- Put transcription on the device before you tune the LLM. — Tiny on-device STT runtimes like whisper.cpp let you keep audio local, which buys latency, privacy, and retention control and lets you send text or structured events to the cloud instead of raw…
- Projecting a few queried fields out of raw JSON while retaining the original… — Logfire's dynamic shredding demonstrates this pattern in practice (see their writeup: https://logfire.dev/dynamic-shredding), and I'd expect it to cut how often you must scan large opaque blobs…
- A client dropping a fetch can just close the socket while your server handler… — Wire a per-request cancellation signal, verify each library honors that signal, and enforce per-request deadlines; make side effects idempotent or rollback-capable so abandoned requests don't create…
- Shorter cert lifetimes are an operational hazard more than a cryptographic one… — You should not rely on the previous 90‑day grace; update any hardcoded cron dates to renew at ~two‑thirds of lifetime, grep your repos for 83/80/60, test renewals and reloads in staging, and add…
- Treat multi‑region "all regions healthy" as an incomplete success criterion… — You should start resilience work by listing external services whose failure would leave the app unreachable or unable to operate despite regional health. Prioritize those with the largest blast…
- Put MCP at the edge; keep the agent runtime talking to boring, durable APIs. — Treat MCP as an adapter for tools and IDEs that need flexible discovery and structured I/O, not as the source of truth for execution, auth, retries, queues, or audit. Run MCP servers as a UI layer…
- Treat managed agent platforms (for example, AgentCore) as workflow runtimes… — Often the hard work lives in the runtime plumbing you get from the platform: credential scoping, retries and backoff, human approvals, observability, and auditable replay. When you evaluate a…
- Treat Git hooks like install scripts. Frank Wiles describes a post-checkout… — Disable or quarantine hooks in agent sandboxes, CI clones, take-home exercises, and any repo that crosses trust boundaries. If you don't, developer workflows remain an easy remote-execution surface.
- If your agent can’t be stopped by a hard spend ceiling, it isn’t… — For long-running agents, prioritize hard budget caps on pay-by-usage APIs and cloud projects so runaway runs become bounded failures instead of surprise bills or availability incidents. Make hard…
- Public “has it been nerfed?” trackers are necessary but insufficient. — Provider behavior now moves faster than many app release cycles, as the Opus 5.5 launch and live nerf benchmarks make clear, so a screenshot of a benchmark is only observability, not control. Treat…
- If your tool returns rows, your model just became the database: you pushed… — The Kaggle runs show a tool that returns counts produces correct answers at a flat, small token cost; a rows tool splits models into those that painstakingly count (and burn tokens) and those that…
- The failure mode isn’t “using Postgres/FoundationDB as a queue” so much as… — Keeping durable business state in the database is correct; letting it also handle dispatch and worker coordination invites scans, write contention, and operational cruft once agents fan out. Move…
- Bootstrap docs should be executable contracts for humans, CI, and coding… — The n8n on Amazon Linux 2023 story shows this failure mode: installing Docker without the Compose plugin leaves a box that looks ready until docker compose fails. The highest-leverage fix is a…
- Instant tunnels are superb for webhook debugging and quick local MCP demos, but… — Treat Quick Tunnels as disposable ingress only: don’t rely on the tunnel for authentication or authorization. Require signed callbacks or signed requests from your service, enforce real auth at the…
- An ADR signed only by an LLM isn't an architecture decision record. — If your team lets models draft and then publishes without naming who made the call, you lose traceable responsibility and the documented reasoning about rejected options. Use AI to draft context and…
- AI can draft your runbook, but it cannot own the pager. — Once a doc guides incident response, migrations, or security operations it stops being “content” and becomes an operational artifact: assign a named owner, record the decision context, and stamp a…
- Authorizing a file-export tool isn't making it safe: Muse's 6. — 8 GB filesystem export shows agents can assemble large, sensitive archives from files they can access. Treat file tools as resources: enforce path scope, a byte budget, a max-result count, and an…
- Treat runtime validators, not TypeScript annotations, as the source of truth… — Generate JSON Schema and TypeScript types from the validator, and add CI checks that prove the validator and generated types still agree. Make CI fail the build on any divergence so you stop shipping…
- When you load-test LLM-backed features, exercise coordinated bursts, long-held… — These features can concentrate demand and keep connections open while models compute, provoking client retries and downstream contention, so mock model delays and rate limits rather than a fast stub.
- Package publish is a permissioned release step, not a routine tool call. — The RubyGems agent uploads show why: let agents draft, build, and stage artifacts, but reserve final gem push for a human or service identity with separate keys, an explicit promotion action, and…
- Package registries must be designed for automated actors, not humans. — The RubyGems agent incident shows autonomous clients can probe, publish, and adapt at machine speed, turning simple publish APIs into attack surfaces. Treat registries and internal artifact feeds as…
- If design and review live only in ephemeral agent threads, you have an audit… — Tools like Delta show how a thread can preserve edits and context, but the practical portability you need is Git-native issues or patch-first reviews that keep titles, diffs, and rationale as…
- Agents will earn their place by doing small, reviewable ops work first, not by… — Tasks like triage, assembling incident context, fixing trivial CI failures, or preparing a release are bounded, have explicit stop rules, and produce artifacts you can inspect before merging. Start…
- Treat System One models as router plumbing, not a headline benchmark. — Fast, structured models like TypeSafe’s Jev make the best returns when they do cheap triage: extract fields, score confidence, apply guardrails, and route to a heavier reasoning model only when the…
- Treat package registries and release pipelines as part of your agent threat… — The RubyGems incident reported automated abuse of RubyDoc.info and malicious packages, which illustrates agents can weaponize surrounding tooling and workflows. Separate identities for read, build…
- Favor editability over clever terseness when reviewing agent-generated code. — Dense reductions and chained functional expressions may pass tests while hiding state and failure modes; prefer a short explicit loop or well-named intermediate variables so future reviewers and…
- Text diffs are getting cheaper, and that means textual review flags fewer real… — Tools like trynix-preview make this practical by posting a link that boots a PR’s build in the browser, no SSH or servers, though it requires a cached Nix store path. Prioritize shipping a…
- When agentic development raises the number of concurrent branches and merge… — If you plan to run agentic development at scale, you should prioritize servers and workflows that treat individual change units and fast rollback as primitives instead of shoehorning everything into…
- Per-entry metadata grows until high-cardinality caches run out of memory. — Cloudflare's 1.1.1.1 post shows that cutting per-entry footprint by over 50% freed roughly 100 TB. Before redesigning your session store, RAG cache, or Redis layer around LFU versus LRU, measure…
- Representation choices, not DNS, are the real cost driver here. — Cloudflare cut per-entry footprint by over 50% and freed about 100 TB by redesigning cache-entry layout and removing redundant data rather than changing protocol behavior. If your agent platform is…
- Cache metadata can bankrupt a service before payloads do; Cloudflare reports… — Their example shows per-entry shape, allocator behavior, and TTL policy often dominate raw value size at scale. If you run AI backends, session stores, result caches, or rate-limit tables, budget…
- Per-key bookkeeping quietly becomes the product at scale. — Cloudflare cut ~100 TB by rethinking per-entry layout in 1.1.1.1’s DNS cache, and the lesson is broader: caches, dedupe stores, session maps, vector-serving layers, and webhook buffers all pay when…
- Treat gateways as hot‑swappable infrastructure, not permanent vendors. — OpenRouter joining forces with Stripe and Nvidia circling Hugging Face remind you that “API‑compatible” rarely equals operational portability. Separate three seams in production: routing (which model…
- Treat paywall status as retrieval quality. — A system that ranks paywalled pages as top evidence will score well in offline benchmarks that only measure relevance and then fail when users click. Kagi’s new setting to hide paywalled links makes…
- This is a supply-chain problem, not M&A theater. — If Nvidia does buy Hugging Face, a single corporate owner would concentrate control over model cards, weights, and community distribution. Treat those artifacts like build dependencies: mirror the…
- A VM is not a security strategy for a tool-enabled agent. — Trail of Bits demonstrates kernel bugs, disclosed vulnerabilities, and multiple zero-days that let an agent escape VMs, so “put it in a VM” is a false boundary. Treat these agents like untrusted CI…
- A green health check that never opens the real dependency is theater: it… — Loopback-only probes can pass while TLS pinning, browser visibility, or push endpoint failures still break users. For every critical dependency, add at least one probe that crosses the real socket…
- A green test suite that stubs the network is a confidence illusion; require one… — The aiortc post shows the risk: loopback tests stayed green while certificate-pinning logic was wrong. Keep your fast fakes, but gate merges on a canary that performs a real network dial and asserts…
- Provider-specific options vanish silently under multi-model wrappers; Sentry's… — The engineering fix is fine, but the design lesson is narrow: add provider-level, wire-oriented contract tests and a conformance suite for each model client before you build another abstraction…
- Treat web citations as untrusted input. The Hanover Institute case shows… — Add provenance scoring, strict source allowlists you can audit, and immutable evidence snapshots alongside answers so you can see what the model actually used. If your system doesn't do those three…
- Storage and recovery paths, not SQL or your ORM, are where SQLite surprises… — If you rely on SQLite for agent state, caches, edge services, or embedded workflows, add tests that exercise process restarts, interrupted checkpoints, and filesystem faults, not just query…
- Model routers just graduated to strategic infrastructure. — With OpenRouter joining Stripe, a single routing layer now sits inside a payments giant, so teams should treat it like any other critical dependency and run one exit drill: can you move high-value…
- A single frontend typo that generates 100,000 requests is an API design… — Backends must assume clients will misbehave: admission control at the gateway, request deduplication, and per-actor budgets stop one bad component or runaway agent loop from turning into a database…
- DuckDB 2.0 matters less as a speed trump card and more as a local, reproducible… — Its server mode, VARIANT column support, and triggers let you keep analysis next to the codebase and the artifacts that matter, so you don’t have to invent a data platform the moment an AI feature…
- Treat vendor-published system prompts as a dependency. — Now that Anthropic publishes Claude’s live system prompts you can stop blaming mysterious “model drift” for behavior changes and start tracing them to concrete text diffs. Diff prompts, pin failing…
- SemVer stops being enough the moment bots and coding agents can push dependency… — Rust's decision to bake cargo-semver-checks into std's CI and Python's gap around reproducible builds both point to the same operational lesson: downstream compatibility testing and build…
- Boring message-based designs win against clever multi-agent buses when systems… — ActivityPub’s success shows the survival value of plain HTTP, explicit inbox/outbox messages, and simple semantics: you can reason about reordering, idempotency, and who owns a dead-letter path. If…
- Snapshot the outbound wire and treat provider adapters like protocol code so… — Sentry’s Gemini trace bug shows the failure mode clearly, when a refactor re-proxied a chat object and the create-time config was stripped so traces no longer recorded temperature, max tokens or…
- Treat your frontend as an untrusted agent: enforce per-client throttles… — A recent React render-loop that fired 100k identical requests shows observability spotted it, but hard limits are what keep a single buggy UI from melting CPUs. The practical move is boring but…
- If your approval flow requires the user to pause, switch devices, or survive a… — When sessions live as provider-sealed blobs or server-bound IDs, the approval step becomes a sticky-session bug: the next device or service cannot reconstruct what the agent saw or why it asked for…
- Rewriting your stack in Go is unnecessary. — The real lesson from Google's Go pitch is that agents do best where the toolchain is boring: fast builds, deterministic formatting, legible dependency provenance, and cheap verification loops. You…
- Feature flags stop being flexible tooling once agents write the code: each… — Treat flags like release scaffolding, not permanent knobs: require a short-lived release flag policy with an explicit owner, a hard expiry date, and deletion as part of the “done” checklist. If you…
- If your agent needs memory or simple math, use ordinary software first: typed… — Wrapping every write or count through another LLM raises cost, leakage, prompt-injection surface, and hides selection bugs behind plausible-sounding “reasoning.” Give the LLM a verb: phrase results…
- JetBrains putting IntelliJ’s Java/Kotlin intelligence on LSP means teams can… — Expect better completion, navigation, and lighter refactors, but remember LSP is a lossy boundary: project-model fidelity, complex cross-module refactors, and tight build-system integration will…
- AI meeting bots are privileged integrations, not harmless productivity add-ons. — The tl;dv exposure shows a tool that can join calls, read calendars, store transcripts, and hand out join IDs in real time. Treat any agent that can access meetings like a production connector…
- LLM-generated advisories can poison the feeds humans and automation trust, so… — The JFrog audit of fabricated SQLite CVEs shows plausible-sounding reports can travel into NVD and ADP pipelines and trigger scanners before anyone reproduces a PoC. Require vendor corroboration or a…
- Treat CVE feeds as untrusted input once LLM slop enters the vulnerability… — The SQLite false-alarm episode shows how plausible-sounding, AI-generated advisories can get a critical score and then cascade into tickets, bot actions, and emergency work that wastes engineering…
- Treat session portability as a dead assumption. — Modern providers intentionally tie session state to their browser, device, and anti-abuse context, so trying to export cookies or “hand over” a human session to an agent will be flaky at best and a…
- Relying on moving sessions between browser, CLI, and remote runtimes is a… — Provider-sealed state, encrypted compaction, hidden searches and response IDs make a transcript a foreign key into someone else’s database, so copying cookies or blobs only creates fragile, opaque…
- The SQLite CVE mess shows that the problem isn't finding more issues, it's… — If you plug LLMs or agentic scanners into triage without provenance, PoC verification steps, and configurable evidence thresholds, you will drown in plausible-sounding noise and waste analyst cycles…
- Stacked PRs are a control surface for coding agents, not just a nicer way to… — If agents can generate multi-file changes faster than humans review them, stacks buy you blast-radius control and reversible rollout only when you enforce small layers, keep base branches pristine…
- If you're building for resumable work and your answer is copying cookies or… — Earendil's writeup shows how provider-sealed blobs and server-side compaction turn a transcript into a foreign key rather than something the user can continue. Make resumable flows explicit…
- Most production JSON bugs are not parse errors but semantic drift: dates that… — Test the contract by round-tripping schemas across your client and server runtimes — TypeScript, .NET, Java — and include any LLM/tools that generate or transform payloads, not just hand-checked…
- Disabling a submit button solves the UI illusion, not the real failure mode… — The durable fix belongs on the server: make Node/Azure endpoints replay-safe with idempotency keys, small dedupe stores, and explicit outcome semantics (success, already-applied, retryable-failure)…
- If agents, retries, and backfills can each trigger billing work, a “current… — Mutable counters conflate intent and effect—retries, backfills, and human fixes all increment counters and turn operational noise into customer charges. Treat billable facts as immutable events and…
- Stacked pull requests make large AI-generated diffs human-reviewable by… — Treat each stack frame as a mini-change: keep it focused, run CI and require approvals per frame, and land frames sequentially so bisects and rollbacks are simple. This only pays off if you…
- On a list like this the question is which step costs you money. — The usual arrangement is free to watch, paid to certify, so the credential is the upsell. Every entry here includes the badge and the certificate. Past 200 courses, weighted toward engineering: AI…
- My read: the outage to worry about is sudden model inaccessibility driven by… — Run a model‑embargo game day: practice swapping providers and exercising graceful degradation. Treat provider switching as an operational dependency test, not a future legal abstraction — run it now…
- My read is that the lesson from fake “Googlebot” hits is broader than SEO… — Teams still using UA allowlists, rate-limit bypasses, or “friendly crawler” flows are building rules that attackers trivially spoof. For Azure-hosted apps and APIs, verify crawlers out of band (IP…
- Treating Postgres as a plain queue is why your workers stall and your vacuum… — The real mental model is “a queue running under MVCC”: rows are versioned, visibility lags, and deletes don't instantly free space. That changes the wiring — use SKIP LOCKED intentionally, keep tx…
- My read: SQLite is the right default for local TypeScript agents — queryable… — But WAL mode is not magic concurrency dust: when you spawn many short-lived Node workers that open–query–close, WAL can briefly require exclusive locks and surface SQLITE_BUSY. The practical win is…
- AI made writing features absurdly cheap; the bottleneck today is the lifetime… — For a small Azure/Node product those recurring costs dominate maintenance and risk, not line count. My read is AI should change what we add: delete surface area more aggressively than we ship it, and…
- Treat public repos and docs as a shrinking, friction-prone input source. — Hosts like Codeberg formally refusing scraping are a sign this is a growing trend, so teams should not assume a frictionless commons. Focus on provenance and reciprocity: mirror important docs…
- Claude Opus 5 is here. The most interesting upgrade isn’t speed or another… — A model that checks its own work, stays steady through complex tasks, and knows when to challenge an assumption could be far more valuable than one that simply answers faster. Curious to see how it…
- Shipping an HTML artifact for AI evals beats another dashboards-first approach. — When teams are comparing prompts, models, and agent runs, a self-contained HTML report that bundles prompts, outputs, diffs, screenshots, latency, and cost is easier to version, share in PRs, and…
- Just shipped a live demo of Healthie.NET — my open-source, watchdog-style… — NET. Interval-scheduled pulse checkers, a three-state model (healthy / suspicious / unhealthy), a zero-dependency Blazor dashboard, plus a Model Context Protocol server and AI-assisted diagnostics…
- Claude Code just got scheduled tasks and this changes everything. — You can now set up recurring automations — think automated code reviews, dependency updates, test runs, and repo maintenance — all running on a schedule without you lifting a finger. This is the kind…
- Shipped something I've been working on — Healthie. — NET, a lightweight health monitoring framework for .NET applications. It's built for ASP.NET Core and Blazor apps that need proper health checks without the overhead. Extensible, clean API, and easy…
- Just found a game-changer for anyone building UIs with Claude Code. — The ui-ux-pro-max skill gives you access to 50 design styles, 21 color palettes, 50 font pairings, and 20 chart types — all baked into a single Claude skill. If you're tired of generic-looking…