The Curious Engineer

All blogs / Databases

brandur.org

brandur.org

DatabasesGoSoftware / engineering practice

Posts
82 from 2 Jun 2013 to 17 Sep 2026
Posting
monthly (9 in the last year)
Kind
personal blog
Feed
https://brandur.org/articles.atom

2026 7

  1. Fragments
  2. 15 years later, a day without Tmux
  3. A couple tiny Codex TUI features
  4. Does anyone run Postgres without PgBouncer?
  5. Sequences
  6. The Minimum Viable Unit of Saleable Software
  7. The Second Wave of the API-first Economy

2024 3

  1. Eradicating N+1s: The Two-phase Data Load and Render Pattern in Go
  2. The Notifier Pattern for Applications That Use Postgres
  3. Web APIs: Enriched DX By Disallowing Unknown Fields

2023 2

  1. River: a Fast, Robust Job Queue for Go + Postgres
  2. On Using Go's `t.Parallel()`

2022 1

  1. Soft Deletion Probably Isn't Worth It

2021 3

  1. Postgres: Boundless `text` and Back Again
  2. How We Went All In on sqlc/pgx for Postgres + Go
  3. Minimally Invasive (and More Accurate) Analytics: GoAccess and Athena/SQL

2020 1

  1. Feature Casualties of Large Databases

2019 4

  1. Doubling the Sorting Speed of Postgres Network Types with Abbreviated Keys
  2. Sequences: A Modest, Contra-garden Travel Project
  3. Building a Robust Live Reloader with WebSockets and Go
  4. SortSupport: Sorting in Postgres at Speed

2018 7

  1. How to Manage Connections Efficiently in Postgres, or Any Database
  2. A Missing Link in Postgres 11: Fast Column Creation with Defaults
  3. Tweeting for 10,000 Years: An Experiment in Autonomous Software
  4. Living APIs, and the Case for GraphQL
  5. Scaling a High-traffic Rate Limiting Stack with Redis Cluster
  6. Touring a Fast, Safe, and Complete(ish) Web Service in Rust
  7. Speed and Stability: Why Go is a Great Fit for Lambda

2017 16

  1. Scaling Postgres with Read Replicas & Using WAL to Counter Stale Reads
  2. Redis Streams and the Unified Log
  3. Implementing Stripe-like Idempotency Keys in Postgres
  4. Should You Build a Webhooks API?
  5. Transactionally Staged Job Drains in Postgres
  6. Using Atomic Transactions to Power an Idempotent API
  7. The Limits of Copy-on-write: How Ruby Allocates Memory
  8. How Postgres Makes Transactions Atomic
  9. Pseudo-HTML and Pidgin CSS: Building an Email Newsletter
  10. The Accidental Evangelist
  11. A Comparison of Advanced, Modern Cloud Databases
  12. Building Robust Systems with ACID and Constraints
  13. In Pursuit of Production Minimalism
  14. Is GraphQL the Next Frontier for Web APIs?
  15. Why Doesn't Stripe Automatically Upgrade API Versions?
  16. Learning From Terminals to Design the Future of User Interfaces

2016 8

  1. Using Canonical Log Lines for Online Visibility
  2. Service Limits
  3. The Case For A Go Worker Pool
  4. The Missing Manual for Hacking Postgres
  5. AWS Islands
  6. The Intrinsic Static Site
  7. Notes on Go
  8. A Guide to Free CA-Signed Certificates

2015 10

  1. My Heroku Values
  2. Exploring Object Hierarchies in Psql
  3. Running at Stripe
  4. Rate Limiting, Cells, and GCRA
  5. Designing Alerts
  6. Postgres Job Queues & Failure By MVCC
  7. A Month of Kinesis in Production
  8. Kinesis Shard Splitting & Merging by Example
  9. Guaranteeing Order with Kinesis Bulk Puts
  10. Version Variants

2014 14

  1. Small, Sharp Tools
  2. Dotfile Secrets and GPG
  3. Package Management in Go
  4. Command Exit Status
  5. The Humble Data Warehouse
  6. A Cheap X100S Filter Ring Hack
  7. Elegant APIs with JSON Schema
  8. Testing Distributed Services with JSON Schema
  9. Microservices
  10. The Mediator Pattern
  11. Healthy Anti-patterns
  12. Why I Don't Want Your SDK in Production
  13. BreakTime Classic
  14. Lamenting the Death of the Page

2013 5

  1. Logfmt
  2. Developer Accessible APIs
  3. Scoping and OAuth 2
  4. SOA and Service Stubs
  5. Tracing Request IDs

Undated 1

  1. Atoms