<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"><channel><title>vvek blog</title><link>https://vvek.io/blog/</link><description>Databases, programming, AI and how teams get work done</description><item><title>Code review that helps: approve what improves the code, save the nitpicks for later</title><link>https://vvek.io/blog/code-review-that-helps-approve-what-improves-the-code-save-the-nitpicks-for-late/</link><guid>https://vvek.io/blog/code-review-that-helps-approve-what-improves-the-code-save-the-nitpicks-for-late/</guid><pubDate>Sun, 08 Nov 2026 10:14:00 +0000</pubDate><description>A practical code review standard for reviewers and authors: improve code health steadily, separate facts from taste, label nits and settle disagreements.</description></item><item><title>Rate limits from both sides: handling 429 responses and limiting your own API</title><link>https://vvek.io/blog/rate-limits-from-both-sides-handling-429-responses-and-limiting-your-own-api/</link><guid>https://vvek.io/blog/rate-limits-from-both-sides-handling-429-responses-and-limiting-your-own-api/</guid><pubDate>Sun, 08 Nov 2026 08:33:00 +0000</pubDate><description>What a 429 means, how to retry with backoff and jitter, how to smooth traffic with a token bucket, and what to tell clients when you limit them.</description></item><item><title>SQL window functions: per-group answers without losing your rows</title><link>https://vvek.io/blog/sql-window-functions-per-group-answers-without-losing-your-rows/</link><guid>https://vvek.io/blog/sql-window-functions-per-group-answers-without-losing-your-rows/</guid><pubDate>Sun, 08 Nov 2026 06:51:00 +0000</pubDate><description>A practical guide to Postgres window functions: OVER, PARTITION BY, ORDER BY, running totals, top-N per group and reusable WINDOW definitions.</description></item><item><title>A job queue in Postgres: how FOR UPDATE SKIP LOCKED lets workers share a table</title><link>https://vvek.io/blog/a-job-queue-in-postgres-how-for-update-skip-locked-lets-workers-share-a-table/</link><guid>https://vvek.io/blog/a-job-queue-in-postgres-how-for-update-skip-locked-lets-workers-share-a-table/</guid><pubDate>Sun, 08 Nov 2026 05:18:00 +0000</pubDate><description>Build a simple, safe job queue on Postgres: claiming rows with SKIP LOCKED, handling crashes with leases, retries, and the limits of the approach.</description></item><item><title>The transactional outbox: saving data and sending a message without losing either</title><link>https://vvek.io/blog/the-transactional-outbox-saving-data-and-sending-a-message-without-losing-either/</link><guid>https://vvek.io/blog/the-transactional-outbox-saving-data-and-sending-a-message-without-losing-either/</guid><pubDate>Sun, 08 Nov 2026 03:37:00 +0000</pubDate><description>How the outbox pattern keeps a database write and its message in step, why duplicates still happen, and how to build a small version on Postgres.</description></item><item><title>Blameless postmortems: how to learn from an incident without pointing fingers</title><link>https://vvek.io/blog/blameless-postmortems-how-to-learn-from-an-incident-without-pointing-fingers/</link><guid>https://vvek.io/blog/blameless-postmortems-how-to-learn-from-an-incident-without-pointing-fingers/</guid><pubDate>Sat, 07 Nov 2026 13:57:00 +0000</pubDate><description>When to write a postmortem, what goes in it, and how to keep it blameless so people report problems early. Practical notes based on Google&#39;s SRE book.</description></item><item><title>Trace sampling with OpenTelemetry: head or tail, and what each one costs you</title><link>https://vvek.io/blog/trace-sampling-with-opentelemetry-head-or-tail-and-what-each-one-costs-you/</link><guid>https://vvek.io/blog/trace-sampling-with-opentelemetry-head-or-tail-and-what-each-one-costs-you/</guid><pubDate>Sat, 07 Nov 2026 13:03:00 +0000</pubDate><description>Keeping every trace gets expensive. How head and tail sampling differ in OpenTelemetry, when to combine them, and when not to sample at all.</description></item><item><title>Evals for AI agents: start with twenty tasks, grade the outcome</title><link>https://vvek.io/blog/evals-for-ai-agents-start-with-twenty-tasks-grade-the-outcome/</link><guid>https://vvek.io/blog/evals-for-ai-agents-start-with-twenty-tasks-grade-the-outcome/</guid><pubDate>Sat, 07 Nov 2026 12:04:00 +0000</pubDate><description>How to test an AI agent before users do: tasks, trials, graders, pass@k versus pass^k, and a first eval set you can build in an afternoon.</description></item><item><title>Prompt caching for LLM apps: put the stable parts first and watch the usage fields</title><link>https://vvek.io/blog/prompt-caching-for-llm-apps-put-the-stable-parts-first-and-watch-the-usage-field/</link><guid>https://vvek.io/blog/prompt-caching-for-llm-apps-put-the-stable-parts-first-and-watch-the-usage-field/</guid><pubDate>Sat, 07 Nov 2026 11:07:00 +0000</pubDate><description>How prompt caching works, how to order a prompt so it hits, what breaks the cache, and how to verify savings from the usage fields.</description></item><item><title>Python 3.15 for working developers: lazy imports, a sampling profiler and UTF-8 by default</title><link>https://vvek.io/blog/python-3-15-for-working-developers-lazy-imports-a-sampling-profiler-and-utf-8-by/</link><guid>https://vvek.io/blog/python-3-15-for-working-developers-lazy-imports-a-sampling-profiler-and-utf-8-by/</guid><pubDate>Sat, 07 Nov 2026 10:11:00 +0000</pubDate><description>A practical look at Python 3.15: the lazy keyword, the Tachyon profiler, UTF-8 as the default encoding, frozendict and unpacking in comprehensions.</description></item><item><title>Kubernetes probes: what liveness, readiness and startup checks should (and should not) test</title><link>https://vvek.io/blog/kubernetes-probes-what-liveness-readiness-and-startup-checks-should-and-should-n/</link><guid>https://vvek.io/blog/kubernetes-probes-what-liveness-readiness-and-startup-checks-should-and-should-n/</guid><pubDate>Sat, 07 Nov 2026 09:19:00 +0000</pubDate><description>A practical guide to Kubernetes liveness, readiness and startup probes: what each one does, sensible settings, and the dependency-check mistake to avoid.</description></item><item><title>Connection pooling for Postgres: what PgBouncer&#39;s pool modes change</title><link>https://vvek.io/blog/connection-pooling-for-postgres-what-pgbouncer-s-pool-modes-change/</link><guid>https://vvek.io/blog/connection-pooling-for-postgres-what-pgbouncer-s-pool-modes-change/</guid><pubDate>Sat, 07 Nov 2026 08:22:00 +0000</pubDate><description>Why Postgres needs a pooler, how PgBouncer&#39;s session, transaction and statement modes differ, and which features stop working in transaction mode.</description></item><item><title>Schema changes without downtime in Postgres: locks, NOT VALID and safer migrations</title><link>https://vvek.io/blog/schema-changes-without-downtime-in-postgres-locks-not-valid-and-safer-migrations/</link><guid>https://vvek.io/blog/schema-changes-without-downtime-in-postgres-locks-not-valid-and-safer-migrations/</guid><pubDate>Sat, 07 Nov 2026 07:34:00 +0000</pubDate><description>Which ALTER TABLE changes block your app, and how NOT VALID, VALIDATE CONSTRAINT and a lock timeout let you change a live Postgres table safely.</description></item><item><title>Architecture decision records: write down why, not only what</title><link>https://vvek.io/blog/architecture-decision-records-write-down-why-not-only-what/</link><guid>https://vvek.io/blog/architecture-decision-records-write-down-why-not-only-what/</guid><pubDate>Sat, 07 Nov 2026 06:46:00 +0000</pubDate><description>A short, practical guide to architecture decision records: what to put in one, when to write it, and how a decision log saves your team repeated debates.</description></item><item><title>Giving an AI agent only the access it needs: a least-privilege checklist</title><link>https://vvek.io/blog/giving-an-ai-agent-only-the-access-it-needs-a-least-privilege-checklist/</link><guid>https://vvek.io/blog/giving-an-ai-agent-only-the-access-it-needs-a-least-privilege-checklist/</guid><pubDate>Sat, 07 Nov 2026 05:11:00 +0000</pubDate><description>Most agent mishaps come from too many tools, too many permissions or too much autonomy. A practical checklist for narrowing all three, based on OWASP guidance.</description></item><item><title>Go 1.27 in practice: generic methods, goroutine leak profiles and a UUID package</title><link>https://vvek.io/blog/go-1-27-in-practice-generic-methods-goroutine-leak-profiles-and-a-uuid-package/</link><guid>https://vvek.io/blog/go-1-27-in-practice-generic-methods-goroutine-leak-profiles-and-a-uuid-package/</guid><pubDate>Sat, 07 Nov 2026 03:37:00 +0000</pubDate><description>A working developer&#39;s tour of the Go 1.27 release notes: generic methods, the goroutineleak profile, a standard uuid package, json v2 and go fix updates.</description></item><item><title>Reading EXPLAIN ANALYZE: a practical guide to Postgres query plans</title><link>https://vvek.io/blog/reading-explain-analyze-a-practical-guide-to-postgres-query-plans/</link><guid>https://vvek.io/blog/reading-explain-analyze-a-practical-guide-to-postgres-query-plans/</guid><pubDate>Fri, 06 Nov 2026 15:44:00 +0000</pubDate><description>How to read EXPLAIN ANALYZE output in Postgres: costs, row estimates, scan types, buffers, and the habits that keep it safe to run.</description></item><item><title>PostgreSQL 19 release candidate: what to look at before the final release</title><link>https://vvek.io/blog/postgresql-19-release-candidate-what-to-look-at-before-the-final-release/</link><guid>https://vvek.io/blog/postgresql-19-release-candidate-what-to-look-at-before-the-final-release/</guid><pubDate>Tue, 03 Nov 2026 07:42:00 +0000</pubDate><description>A tour of the PostgreSQL 19 release notes: REPACK, parallel autovacuum, automatic I/O workers, sequence replication and the migration items to check.</description></item><item><title>MCP goes stateless: what the 2026-07-28 revision changes for server authors</title><link>https://vvek.io/blog/mcp-goes-stateless-what-the-2026-07-28-revision-changes-for-server-authors/</link><guid>https://vvek.io/blog/mcp-goes-stateless-what-the-2026-07-28-revision-changes-for-server-authors/</guid><pubDate>Mon, 02 Nov 2026 13:12:00 +0000</pubDate><description>The newest Model Context Protocol revision drops sessions and the initialize handshake. Here is what that means if you run or build an MCP server.</description></item><item><title>Row-level security in Postgres: a practical guide to isolating tenants</title><link>https://vvek.io/blog/row-level-security-in-postgres-a-practical-guide-to-isolating-tenants/</link><guid>https://vvek.io/blog/row-level-security-in-postgres-a-practical-guide-to-isolating-tenants/</guid><pubDate>Sun, 01 Nov 2026 05:47:00 +0000</pubDate><description>How Postgres row-level security works, the traps that catch people, and a small tenant isolation pattern you can try today.</description></item><item><title>Idempotency keys: making retries safe in any API</title><link>https://vvek.io/blog/idempotency-keys-making-retries-safe-in-any-api/</link><guid>https://vvek.io/blog/idempotency-keys-making-retries-safe-in-any-api/</guid><pubDate>Sat, 31 Oct 2026 10:35:00 +0000</pubDate><description>Networks fail halfway. Idempotency keys, backoff and jitter let clients retry without charging, creating or sending twice.</description></item><item><title>Workflow or agent? Choosing the simplest design that does the job</title><link>https://vvek.io/blog/workflow-or-agent-choosing-the-simplest-design-that-does-the-job/</link><guid>https://vvek.io/blog/workflow-or-agent-choosing-the-simplest-design-that-does-the-job/</guid><pubDate>Fri, 30 Oct 2026 05:18:00 +0000</pubDate><description>Fixed workflows and autonomous agents suit different tasks. Five workflow patterns, tool design tips and a way to decide which one you need.</description></item><item><title>How database indexes speed up reads, and when they slow down writes</title><link>https://vvek.io/blog/how-database-indexes-speed-up-reads-and-when-they-slow-down-writes/</link><guid>https://vvek.io/blog/how-database-indexes-speed-up-reads-and-when-they-slow-down-writes/</guid><pubDate>Thu, 29 Oct 2026 09:56:00 +0000</pubDate><description>Learn when to use indexes for faster queries and when they hurt write performance.</description></item><item><title>Introducing vvek: hire AI agents like employees</title><link>https://vvek.io/blog/introducing-vvek/</link><guid>https://vvek.io/blog/introducing-vvek/</guid><pubDate>Thu, 22 Oct 2026 00:00:00 +0000</pubDate><description>A Manager agent that plans and hires, agents that work in chat beside your people, and you in charge of anything risky.</description></item><item><title>Why every agent gets its own virtual machine</title><link>https://vvek.io/blog/every-agent-gets-its-own-vm/</link><guid>https://vvek.io/blog/every-agent-gets-its-own-vm/</guid><pubDate>Tue, 20 Oct 2026 00:00:00 +0000</pubDate><description>Agents that run code and browse the web need real computers. Here is how we give them one without risking yours.</description></item></channel></rss>