Top all-time · #246
Articles — brandur.org
Personal blog · brandur.org · on HN as brandurprogrammingsystems
Articles — brandur.org is a personal blog at brandur.org about programming and systems. Since 2013, 189 different Hacker News readers have linked it 352 times, most often “Implementing Stripe-Like Idempotency Keys in Postgres”. It is still writing: the last post was on 2026-05-31, and you can follow it by feed.
Sometimes recommended · 12 of 40 sampled comments recommend it?
Why HN links it
HN readers link brandur.org for its technical articles on Postgres, queues, databases, Go and API design, and its newsletter.
- Recommended for · 12 comments
- Called very clear technical writing, an excellent newsletter, usually great, and its diagrams really beautiful; one article helped a lot and one describes a gre
Summarised by Claude from a sample of 40 HN comments that link here. Each comment is marked recommending, critical or neutral (citing without judging); how this works.
Most-linked posts?
- Implementing Stripe-Like Idempotency Keys in Postgres12 people · 12 mentions · first linked 2017-10-27
- Identity Crisis: Sequence vs. UUID as Primary Key9 people · 9 mentions · first linked 2022-03-29
- /articles8 people · 9 mentions · first linked 2017-12-14
- Postgres Job Queues and Failure by MVCC7 people · 9 mentions · first linked 2015-05-20
- Soft deletion probably isn't worth it6 people · 6 mentions · first linked 2022-07-19
- Learning from Terminals to Design the Future of User Interfaces6 people · 6 mentions · first linked 2017-01-28
- Rate Limiting, Cells, and GCRA6 people · 6 mentions · first linked 2015-09-19
- Using Atomic Transactions to Power an Idempotent API6 people · 6 mentions · first linked 2017-09-06
- logfmt (2013)6 people · 6 mentions · first linked 2016-09-05
- How Postgres Makes Transactions Atomic6 people · 6 mentions · first linked 2017-08-16
What Hacker News says?
Can you elaborate more about "text art"? I just recently purchased monodraw, after seeing it linked from Brandur's blog([1]), but have only done basic diagrams with it. [1]: https://brandur.org/articles
Comment linking /articles
on “Draw.io: Online Diagramming Website”Submitted Learning from Terminals to Design the Future of User Interfaces as a story · 785 points
HN discussionFrom Buckminster Fuller, retold to me by Brandur Leach: > Do more and more with less and less until eventually you can do everything with nothing. [ https://brandur.org/minimalism ]
Comment linking /minimalism
on “Ask HN: Name one idea that changed your life”Submitted Soft deletion probably isn't worth it as a story · 654 points
HN discussionIn Go, for example, there is a mixed approach of pgx + sqlc, which is basically a combo of the best Postgres driver + type-safe code generator (based on raw SQL). https://brandur.org/sqlc Even though I often use pgx only, for a new project, I would use the approach above.
Comment linking /sqlc
on “Good system design”Submitted In Pursuit of Production Minimalism as a story · 375 points
HN discussionIt's well documented that soft delete is more of a headache than it's worth https://brandur.org/soft-deletion
Comment linking /soft-deletion
on “Good system design”Submitted How Postgres Makes Transactions Atomic as a story · 374 points
HN discussionconnections aren't free[1] after reducing number of connections from 200 to 60 my commit throughput doubled. [1] https://brandur.org/postgres-connections
Comment linking /postgres-connections
on “System design hack: Postgres is a great pub/sub and job server”Submitted Fast, Safe, and Complete(ish) Web Service in Rust as a story · 359 points
HN discussionThe reason for low connection limit is because every connection is a separate process. There are also various structures in postgres that are frequently traversed during various operations that large number of connections affect[1]. In my company we use aurora which supposedly was also modified connection handling to use threads to handle more connections. By default I think aurora is set to 500 connections. In our…
Comment linking /postgres-connections
on “System design hack: Postgres is a great pub/sub and job server”Submitted How We Went All In on sqlc/pgx for Postgres and Go as a story · 293 points
HN discussionThe best reason I know of to use a relational database as a queue is that it lets you trigger queue operations from within a transaction - so a queue item is guaranteed to be created if the transaction succeeds, and guaranteed not to be created if the transaction fails. Brandur wrote a great article about that here: https://brandur.org/postgres-queues
Comment linking /postgres-queues
on “Do you really need Redis? How to get away with just PostgreSQL”Submitted Blog with Markdown and Git, and degrade gracefully through time as a story · 291 points
HN discussionhttps://brandur.org has lots of interesting posts about databases, especially Postgres. Also posts about interesting technical problems and their solutions. One of my favorites is this one about implementing an idempotent API: https://brandur.org/http-transactions
Comment linking /http-transactions
on “Ask HN: Favorite Blogs by Individuals?”Submitted 100 days with Rust: a series of brick walls as a story · 282 points
HN discussionHere are mine: - https://franz.hamburg - https://www.project-daily.com Some blogs I follow via RSS (using the awesome NetNewsWire app): - https://brendangregg.com - https://brandur.org/ - https://ferd.ca/
Comment linking /
on “If I could bring one thing back to the internet it would be blogs (2020)”Submitted How Postgres Makes Transactions Atomic (2017) as a story · 278 points
HN discussionBiggest pain points with Kinesis: - ordering is really hard, you don't get guaranted ordering unless you write one message at a time or do a lot of complexity on writes (see https://brandur.org/kinesis-order ) and the shards are simply too small for many of our ordered use cases - cost, we just don't send some data right now because it would just be too much relative to the utility of the data (we would need like 25…
Comment linking /kinesis-order
on “Apache Pulsar is an open-source distributed pub-sub messaging system”Submitted How to Manage Connections Efficiently in Postgres, or Any Database as a story · 265 points
HN discussionHeroku and Heroku Addons are freely available at my company, so it’s the preferred deployment target. I work on a developer productivity team so being able to stamp out apps fast is one of our most important requirements. Heroku has given us a ton of flexibility, and with that we’ve been able to become very opinionated and standardize on one stack. 12 factor design patterns (and the opinions of Django-cookiecutter)…
Comment linking /job-drain
on “Ask HN: What's your favorite way of getting a web app up quickly in 2018?”Submitted Redis Streams and the Unified Log as a story · 258 points
HN discussionAlways excited to hear Stripe talking about versioning :D For anyone else who's interested, they've written/talked about this a few times over the years, to fill out the picture: - http://amberonrails.com/move-fast-dont-break-your-api/ - https://www.heavybit.com/library/video/move-fast-dont-break-... - https://speakerdeck.com/apistrat/api-versioning-at-stripe - https://brandur.org/api-upgrades - https://news.ycombin…
Comment linking /api-upgrades
on “APIs as infrastructure: future-proofing Stripe with versioning”Submitted Postgres UUIDv7 and per-back end monotonicity as a story · 230 points
HN discussionWhenever I google to see if people are enjoying Sorbet or RBS I find articles like this that basically say “no, no one seems to be enjoying this and it’s going nowhere” https://brandur.org/fragments/ruby-typing-2024 In my opinion RBS files are a horrible design decision and split the Ruby community between a typing system that people actually want to use (Sorbet) and a typing system we’ll tolerate because it’s offic…
Comment linking /fragments/ruby-typing-2024
on “Rails is better low code than low code”Submitted Single dependency stacks as a story · 225 points
HN discussionI'm increasingly of the opinion that relational databases are absolutely the right way to build queue systems for most projects. One of the biggest advantages comes when you start thinking about them in terms of transactions. Transactional guarantees are really useful here: guarantee that a message will be written to the queue if the transaction commits successfully, and guarantee that a message will NOT be written…
Comment linking /job-drain
on “Postgres is a great pub/sub and job server (2019)”Submitted Scaling Postgres with Read Replicas and Using WAL to Counter Stale Reads as a story · 221 points
HN discussionIt’s also possible to use advisory locks to implement a job queue in Postgres. See e.g. Que[1]. Note there are a fair number of corner cases, so studying Que is wise if trying to implement something like this, as well as some (a bit older) elaboration[2]. We implemented a similar design to Que for a specific use case in our application that has a known low volume of jobs and for a variety of reasons benefits from th…
Comment linking /postgres-queues
on “Postgres is a great pub/sub and job server (2019)”Submitted A Missing Link in Postgres 11: Fast Column Creation with Defaults as a story · 219 points
HN discussion