Lessons
A reference of troubleshooting notes from real engineering incidents — the symptom, how to confirm it, why it happens, the fix, and how it was verified. Each entry is a citable source maintained by bhived.
Docker Alpine set timezone: ENV TZ silently stays UTC until you install tzdata
On Alpine Docker images, ENV TZ silently stays UTC because Alpine ships no tzdata. Install tzdata, set the zone, and add a boot-guard so prod isn't on UTC.
CSP nonce not working for React inline styles? style-src nonces cover style tags, not the style attribute
Adding a CSP nonce won't fix React inline styles: a style-src nonce authorizes style tags, not the style attribute React emits from style={{}}. Here's the fix.
'This email doesn't match a Google account': the GA4 service-account Google bug (Apr 2026)
"This email doesn't match a Google account" when adding a service account to GA4 or Search Console is a confirmed April 2026 Google bug. Use the API workaround.
Export Samsung Health data without root: stress, HRV & BIA via Download personal data
Export Samsung Health data without root. The built-in 'Download personal data' export already contains your deep stress, HRV and BIA body-composition CSVs.
Python UnicodeEncodeError: 'charmap' codec can't encode on Windows — set PYTHONIOENCODING=utf-8
Python UnicodeEncodeError 'charmap' codec can't encode on Windows? It's a redirected-stdout cp1252 problem, not your string. Fix it with PYTHONIOENCODING=utf-8.
Docker: 'no space left on device' but there's free space — fix TMPDIR and DOCKER_CONFIG
Docker or your test runner throws 'no space left on device' but df shows free space? The write is on a full root filesystem, not your data mount. Fix it with DOCKER_CONFIG and TMPDIR.
Uncaught TypeError: Illegal invocation from fetch — bind globalThis.fetch to fix it
Fix 'Uncaught TypeError: Illegal invocation' from fetch: storing globalThis.fetch in a variable or field detaches its this receiver. Bind it in one line.
JavaScript date off by one day from node-postgres: pg reads DATE at local midnight
JavaScript date off by one day from node-postgres? pg parses a Postgres DATE at local midnight, so toISOString() rolls it back a day. Fix it with to_char().
Prisma partial unique index: plain @@index + hand-authored CREATE UNIQUE INDEX ... WHERE
Prisma can't express a partial unique index on stable versions. Use a plain @@index, hand-author CREATE UNIQUE INDEX ... WHERE, and stop migrate dropping it.
How to check if XMP is enabled on Linux when decode-dimms shows all zeros
How to check if XMP is enabled on Linux when decode-dimms shows all zeros: the SPD is firmware-locked on modern Intel, so read XMP status from dmidecode.
discord.js intents: why messageDelete never fires (add GuildMessages, not MessageContent)
discord.js messageDelete not firing and no error? You're missing the GuildMessages gateway intent, not MessageContent. The one-line fix and how to confirm.
Next.js 16: middleware renamed to proxy — your auth matcher silently stops running
After upgrading to Next.js 16, your middleware.ts no longer runs: Next renamed the file convention to proxy.ts and the old name is ignored with no error, so route protection silently disappears. How to confirm it and fix it.
502 Bad Gateway + "my password stopped working" — usually an OOM-killed upstream, not auth
If nginx suddenly returns 502 Bad Gateway and users report login is broken, the credentials are almost always fine — the upstream app is down. A frequent trigger: a heavy build/test workload (a batch of CI/Docker build jobs and a test suite — large image builds, pytest, extra database/cache containers) sharing the host with the live service until the app container is OOM-killed and restart-loops. Requests during the outage never reach the app, so they don't trip account lockout either — a tell that it's infrastructure, not auth. Move builds off the box (or give the live container a memory reservation), stop the build workload, and restart the app.