The dangerous bug in a code analyser is never a wrong answer. It's a confident absence.
"No database operations found" — because the mapping sat on an interface, or Spring Data synthesised the method.
Wrote it up for Foojay: https://t.co/Hmy3KpqZX3
@starbuxman Buildpacks take the Dockerfile away, which is most of the pain. What they don't touch is the config around it — mine had a compose healthcheck hardcoding a database name the env var had already changed. Image was fine. Container was permanently unhealthy.
@FranckPachot@rponte@transactional And once the UNIQUE index is there you rarely need SERIALIZABLE for this at all — INSERT ... ON CONFLICT DO NOTHING gives the same idempotency at READ COMMITTED, with no retry loop for 40001.
@johncrickett The only answer that holds up: something that can fail the build. My prerenderer "waited for React to render" and shipped loading spinners to Google for weeks — reviewed and approved by humans. What caught it was an assertion that read the written file back and failed on it.
@Kaperskyguru The step I'd add: build the smallest version and measure it. Paper designs fail in the places paper can't show you — a query pattern that's fine at 1k rows, a cache that never gets hit. You learn those from a profiler, not a whiteboard.
@devXritesh N+1 survives code review because it doesn't look like a loop. It's one map() over a list where each element quietly fetches its own row, and the only place it shows up is the query count per request — which no source file displays.
@vlad_mihalcea On 2, the sharper version: a liveness probe should never check dependencies. If it does, a slow database becomes a restart loop and you kill pods that were working fine. Readiness checks dependencies. Liveness only asks whether the process is wedged
@0xlelouch_ On 2, the sharper version: a liveness probe should never check dependencies. If it does, a slow database becomes a restart loop and you kill pods that were working fine. Readiness checks dependencies. Liveness only asks whether the process is wedged
@johncrickett The skill hasn't changed. The penalty for lacking it has. A vague ticket used to cost you one review round; now it buys 400 lines of confident, plausible, wrong code that looks finished.
My app starts perfectly with Redis down. No errors, no failed beans.
Then Google sign-in dies with authorization_request_not_found — Spring keeps the OAuth state in the session, and the session lives in Redis.
Nothing was "down". One flow was, and only that flow knew.
@bibryam The one that keeps catching people: a single blocking call inside a reactive chain pins an event-loop thread, and the latency then surfaces on endpoints that never touch the model at all. You go profiling inference and the cause is a driver three layers down.
@thrawn01 Which is why liveness probes mislead so badly. A dependency answering in 4s passes "is it up" and quietly destroys every request behind it — slow never trips the alarm that dead trips instantly.
@thrawn01 Which is why liveness probes mislead so badly. A dependency answering in 4s passes "is it up" and quietly destroys every request behind it — slow never trips the alarm that dead trips instantly.
502 and 504 are not the same bad day.
504 — the gateway waited and your app never answered. It is still running somewhere, or deadlocked.
502 — your app answered, and the answer was garbage. It died mid-response.
One is slow. One is broken. They need different fixes.
body { overflow-x: hidden } silently breaks every position: sticky on your page.
Hide one axis and the other computes to auto. Body becomes a scroll container that never scrolls — html is the real page scroller — so sticky anchors to a dead scrollport.
Use overflow-x: clip.
Your accent colour has two jobs and passes only one of them.
#0d6efd on my dark background measures 4.45:1. A button fill needs 3:1 — fine. A word needs 4.5:1 — not fine.
I had 238 places using it as text, across 44 stylesheets.
One token cannot do both jobs.
For a while https://t.co/2TiY8hGniE was serving Google a page whose entire body was a loading spinner, with a canonical pointing at the homepage.
My prerenderer waited for "#root has children".
A Suspense fallback is a child. The check passed before the page existed.
app.version=1.10
Convert that to YAML with the wrong tool and you get
version: 1.1
because YAML read it as a number. Your build now asks for a version that does not exist.
The hard part of properties → yml was never the indentation. It is knowing what not to coerce.