Best Products
Launches
Launch archive
Most-loved launches by the community
Launch Guide
Checklists and pro tips for launching
News
Newsletter
The best of Product Hunt, every day
Stories
Tech news, interviews, and tips from makers
Changelog
New Product Hunt features and releases
Forums
Forums
Ask questions, find support, and connect
Kitty Points Leaderboard
The highest scoring community members
Streaks
The most active community members
Events
Meet others online and in-person
Advertise
Subscribe
Sign in
Clear text
recent
p/general
by
Anton Kylikov
•
5d ago
How do you notice when a data source breaks quietly instead of loudly?
... returning HTTP 200 with an empty list, and from the outside it simply looked like they had stopped hiring. Nothing alerted, because technically nothing had failed. I ended up alerting on the shape of the data instead of the
status
code
: if a source drops more than half its rows overnight, a human looks at it before anything downstream moves. That threshold is a guess, and it still misses the slow rot, where a site changes one selector ...
0
8
p/general
by
Alex Goldwyn
•
12d ago
An unset webhook secret did not close my endpoint, it opened it
... secrets. The failure only exists on a server whose config file is one change behind the
code
. The fix is three lines: if the secret is empty, refuse before verifying. The part that took thought was the
status
0
5
p/general
by
Serdar D
•
1mo ago
Two of our customer sites served a byte-identical page for the first 60 seconds after deploy
... Just turn off prerendering is not a safe move on its own, and I would rather say that out loud than let someone repeat it. The part that bothers me most is not the bug. It is that a
status
code
check was never going to catch it. The process returned a fast, clean, completely wrong 200, with another company's name in the title and a canonical pointing at localhost. If a crawler happened to arrive inside that window ... ... monitoring only really start once things settle? And does your health check assert anything about the content of the response, a title, a canonical, an identifier that proves it came from your database, or does it only check the
1
2
p/general
by
Serdar D
•
1mo ago
Googlebot was let in and handed a 500, and every checklist stayed clean
... reporting what we found, not a turnaround. The check itself is not clever. Fetch your ugliest URLs with Googlebot's user agent using curl, pass the Googlebot user agent string with the -A flag, and read the
status
code
back with the write-out flag. Do not start with your homepage. It is the page most likely to be healthy, so it tells you the least. Run it against a paginated listing, a URL with a query string ... ... competing with each other instead of continuing to assume it. 13 posts, 78 pairs, similarity threshold 0.363, highest observed 0.300. The assumption was wrong. If you have ever run a Googlebot user agent fetch against your ugliest URLs, what
1
3
p/murror
by
Mona Truong
•
1mo ago
The Cloudflare box you ticked in 2024 starts blocking Googlebot on 15 September
... dead rows in our own catalogue rather than for anything we had done. The control gave up something better than a verdict though. The two responses differ on an axis neither the detector nor I was looking at: the
status
code
. 200 against 404. Our fetch path calls goto() and throws the Response object away, so every downstream decision was made from the HTML alone, which is the one surface where these two cases genuinely do look alike. The distinguishing ... ... reframes what I had already shipped. I built a contextual guard: if this node succeeded within the last two minutes, an error page is a dead ID rather than a block. It works, but it infers from timing. The
23
25
Subscribe
Sign in