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
- Schema Migrations Without Downtime (and Why You Should Practice Now)
Most teams avoid schema migrations until they're forced to do one at 3am. Better to practice when stakes are low.
- Code Review as Conversation, Not as Test
Most teams treat code review as finding flaws. Better reviews are collaborative exploration where both people learn something.
- The Mistake Everyone Makes When They Get Promoted
You got better at your old job, so you got promoted. Now you're doing a new job you're not good at yet. The instinct is to work harder at what you know.
- What a Lead Engineer Actually Does (and What They Spend Too Much Time Thinking They Should)
If you became lead because you were good at the previous job, you are now doing a different job you are not yet good at. Here's what that job actually is.
- The Difficult Conversation You Should Have Had Last Month
There was a moment when you knew something was wrong. You chose not to say it. Here's what that choice costs, and why speaking up is easier than silence.
- TypeScript Interfaces vs Types: What Actually Differs
The two ways to describe an object shape in TypeScript behave differently in places that matter. Here's where they diverge and which to reach for first.
- Those Who Know Nothing, Doubt Nothing
Visible hesitation is often a sign of expertise. The most confident voice in the room is usually the least useful one.
- Why Puppeteer PDFs Are So Large (and How to Compress Them)
Puppeteer generated a 53MB PDF from a ten-page document. Here's why Puppeteer PDFs are so large and the one Ghostscript command that brings it to 300KB.
- What Is 'as const' and Why Does It Keep Coming Up
TypeScript widens literal types by default. Here's what that costs you and how as const stops it.
- Being Smart Is Useless If You Won't Help Others
Technical ability without useful output is just a credential with nowhere to go.
