PGH Web Blog
Articles on web development.
A place for writing about web development. Articles cover tooling, architecture, deployment, and the day-to-day decisions that come up when building things for the web.
Posts
- Drop the Content Wall
When someone asks a direct question and gets a paragraph of qualifications instead of an answer, that's a content wall. It's not careful thinking. It's avoidance.
- Faster Builds with esbuild
Most TypeScript projects still use tsc for everything. esbuild strips types and transpiles fast. Here's how to use both without sacrificing type safety.
- Partitions vs Table Inheritance in PostgreSQL
PostgreSQL has two ways to split large tables. Declarative partitioning is newer and simpler. Table inheritance is older, more flexible, and has more footguns.
- What BRIN Indexes Are Good For (and Why the Use Case Matters)
BRIN indexes are tiny and nearly free to maintain. They are also nearly useless unless your data has strong physical correlation with the indexed column.
- What Is Fill Factor and When to Use It
Fill factor controls how full PostgreSQL allows heap pages to get. Lower fill factor preserves room for updates, which keeps HOT updates working and reduces bloat.
- context.Canceled and context.DeadlineExceeded Are Not the Same Error
Most Go code treats ctx.Err() as a boolean. That loses information you almost always wanted later.
- What to Do When the Fast Path Breaks (And How to Explain Why It Was Worth the Risk)
Sometimes the fast solution is fragile. It works most of the time and breaks rarely, but when it breaks, it breaks hard. Plan the exit strategy.
- The Subtle Bug That Lives in Your Retry Logic
Retry logic is everywhere. Most of it is wrong in the same way: retrying when it shouldn't, or not retrying when it should.
- What Gets Logged and Why (and What You're Losing by Logging Everything)
High-volume logging makes it hard to find signal. Selective logging makes incidents easier to investigate.
- The Difference Between 'It Works' and 'It Scales'
A solution that works on test data might not work at 10x scale. Know the difference before you choose your approach.
