Archive¶
Every post in the Bedrock Python blog, grouped by year.
2026¶
- 2026-09-07 — AI code review should not be fully autonomous
- 2026-09-07 — Circuit breakers should be per origin, not per client
- 2026-09-07 — Exactly-once is a lie; exactly-once effects are not
- 2026-09-07 — Graceful Kafka consumer shutdown in Kubernetes
- 2026-09-07 — Graceful shutdown in Kubernetes is a protocol, not a signal handler
- 2026-09-07 — gRPC channels should not be pooled by address alone
- 2026-09-07 — How I start a production-grade Python library in 2026
- 2026-09-07 — How to partition an existing PostgreSQL table without rewriting your application
- 2026-09-07 — Idempotency across a chain of microservices
- 2026-09-07 — Idempotency for background jobs and Kafka consumers
- 2026-09-07 — Idempotency keys: the part everyone gets wrong
- 2026-09-07 — Mapping Python exceptions to gRPC status codes without leaking internals
- 2026-09-07 — Migrating from pg_partman to application-managed partitions
- 2026-09-07 — One lifecycle for HTTP, gRPC, workers and cron jobs
- 2026-09-07 — Partition retention is not DROP TABLE
- 2026-09-07 — PgBouncer transaction mode and async SQLAlchemy: the production setup nobody documents enough
- 2026-09-07 — Publishing to PyPI without API tokens: Trusted Publishing end to end
- 2026-09-07 — Redis health checks: PING is not the whole story
- 2026-09-07 — Reliability is not retry=3
- 2026-09-07 — Retries can make an outage worse: designing a retry budget
- 2026-09-07 — Retry-After, backoff and jitter: what a production HTTP client actually does
- 2026-09-07 — Safe gRPC retries: which status codes you should actually retry
- 2026-09-07 — Should your application create Kafka topics on startup?
- 2026-09-07 — Stop passing AsyncSession everywhere
- 2026-09-07 — Testing database migrations with Testcontainers: up, down and up again
- 2026-09-07 — The anatomy of a production Python gRPC server
- 2026-09-07 — The five migration tests every Python project should run in CI
- 2026-09-07 — The production checklist for aiokafka
- 2026-09-07 — The Unit of Work pattern in SQLAlchemy 2
- 2026-09-07 — Transactional inbox: the other half of the outbox pattern
- 2026-09-07 — Transport-independent errors: one domain error, HTTP and gRPC responses
- 2026-09-07 — Twelve libraries, one engineering standard, no monorepo
- 2026-09-07 — UUIDv7 as a PostgreSQL partition key
- 2026-09-07 — Warmup, readiness and liveness are three different things
- 2026-09-07 — We started writing documentation for AI coding agents
- 2026-09-07 — What every production Python microservice reimplements
- 2026-09-07 — What happens when Kafka is down for an hour?
- 2026-09-07 — What to monitor in a SQLAlchemy connection pool
- 2026-09-07 — When should Redis fail open?
- 2026-09-07 — Why application lifecycle should not belong to FastAPI
- 2026-09-07 — Why gRPC interceptors break on streaming RPCs
- 2026-09-07 — Why I stopped wrapping HTTP clients
- 2026-09-07 — Your models and your schema have drifted. Would CI notice?
- 2026-09-07 — Zero-dependency cores: why optional dependencies matter in infrastructure libraries
- 2026-09-06 — Managing PostgreSQL partitions, one failure at a time
- 2026-09-06 — Timeouts are not deadlines: how latency budgets break across microservices
- 2026-05-30 — Welcome to the Bedrock Python Blog
- 2026-05-28 — Introducing mr-review: AI-powered merge request reviews
- 2026-05-15 — The Transactional Outbox pattern in Python: omni-box