Hacker News

Top stories

Live mirror
30 storiesupdated just nowView source snapshot
  1. Cloudflare Quick Tunnels(cloudflare.com ↗)
    163comments
  2. Photon-Emission-Guided Laser Fault Injection Enables RP2350 Secure Debug(ledger.com ↗)
    19comments
  3. Show HN: Cactus Needle 3: 8-29MB automation models can match DeepSeek V4 Flash(cactuscompute.com ↗)
    38comments
  4. North Korean nuclear test sets off years of earthquakes(science.org ↗)
    99comments
  5. US Military had close call after using AI for hallucinated intelligence report(cnn.com ↗)
    57comments
  6. OpenJev(openjev.com ↗)
    225comments
  7. C++26: Trivial infinite loops are no longer undefined behaviour(sandordargo.com ↗)
    127comments
  8. Systemd is a suite of basic building blocks(systemd.io ↗)
    13comments
  9. Show HN: Ax-check.com – Can agents use your product?(ax-check.com ↗)
    10comments
  10. I vibed a proof of Conway's conjecture(overreacted.io ↗)
    129comments
  11. A heap overflow and SSO misconfiguration to compromise OpenAI internal repos(hacktron.ai ↗)
    187comments
  12. Mathematicians Build Long-Awaited Graph Sandwich(quantamagazine.org ↗)
    10comments
  13. I don't like passkeys(hawksley.dev ↗)
    601comments
  14. Border agents can search cellphones without a warrant or reasonable suspicion(lawandcrime.com ↗)
    10comments
  15. Jemalloc 5.4.0(github.com/jemalloc ↗)
    77comments
  16. NATS publishes preliminary report on technical incident of 8 September(nats.aero ↗)
    24comments
  17. The scourge of x86 emulation(fex-emu.com ↗)
    71comments
  18. Show HN: Scry, programmable internet search w/ congestion pricing(scry.io ↗)
    8comments
  19. Cekura (YC F24) Is Hiring(ycombinator.com ↗)
    discuss
  20. The Shadows Lurking in the Equations – Underwater Islands(gods.art ↗)
    13comments
  21. Warren Buffett Steps Down as Berkshire Chairman, Names Son to Replace Him(nytimes.com ↗)
    171comments
  22. GrassLobster: AI Agentic Generation of Parametric Geometry Workflows(miro.vision ↗)
    5comments
  23. BeanShell3 in Development(beanshell.github.io ↗)
    18comments
  24. Replacing Pull Requests with Delta(zed.dev ↗)
    80comments
  25. AI chatbots are becoming experts at changing people's minds(science.org ↗)
    81comments
  26. An empirical study of harness design for coding agents(arxiv.org ↗)
    49comments
  27. Bend 2 and the Vibe-Coding Trap(liampwll.com ↗)
    224comments
  28. Build Faster Feedback Loops Using Qualitative User Research(nseldeib.com ↗)
    2comments
  29. Pre-Greek: The lost language hidden within Ancient Greek(linguisticdiscovery.com ↗)
    63comments
  30. Microsoft exec called AI scraping 'the largest theft of labor in human history'(techcrunch.com ↗)
    684comments

Source of the recent outagelet

68 pointsby 12y ago
47 comments
We have a list of phrases that get replaced in titles and their replacements (which can be the empty string if we simply want to remove something). A moderator accidentally added an identical pair to it.
12y agoHN ↗

Probably used "while" instead of "for each" when matching.

12y agoHN ↗

Presumably a hit on any of the "before" keys triggers not just a replacement with the corresponding "after", but another pass through either a subset of the replacement list starting from the key that matched, or the entire replacement list from the top down; otherwise an identical pair wouldn't have a chance to be pathological.

12y agoHN ↗

i wonder whether other cycles would cause the same problem.

12y agoHN ↗

I spent entirely too much time trying to parse 'outagelet'.

12y agoHN ↗

Maybe this term "outagelet" should be added to list of terms to automatically replace in article titles.

12y agoHN ↗

For some reason my brain insists on adding an extra 'l' so it reads as "outlagelet" every time.

12y agoHN ↗

yup. It took me literally several minutes before I saw the word "outage" in there for some reason. For some reason the non-word "gelet" overwhelmed my brain so I kept seeing out-a-gelet. Kind of like port-a-potty. Then I migrated to outa-gelet->ou-tage-let->o-utage-let->(I skipped ou-tagel-et because that looked like a german word sandwiched between two french words)->outage-let---eureka, where's my bath tub!

12y agoHN ↗

I read "outragelet" which is something else that occasionally happens around here.

12y agoHN ↗

I guess "outagelet" is a replacement for "downtime".

12y agoHN ↗

It wasn't straight downtime. For a while we were up but you couldn't submit stories or comments.

12y agoHN ↗

Ill get my team to incorporate this in their lexicon and include it in post mortems.

Minimizes perceived downtime.

12y agoHN ↗

I've seen this called badtime. Outagelet seems too cute, when I think of downtime as serious business.

(TBF, that is when I am a paying consumer or a paid developer. I'm upset about neither the HN badtime nor the phrase outagelet.)

12y agoHN ↗

That is hilarious. That one will be hard to resist.

12y agoHN ↗

That's why, have tests and a staging environment.

12y agoHN ↗

This is HackerNews. It's not called PerfectSoftwareDevelopmentPracticesInActionNews.

Just saying.

12y agoHN ↗

I was able to keep a 10k/min request website up and running when I was 15. I feel sorry about who's taking care of this website.

12y agoHN ↗

Right ... websites with tests and a staging environment never experience downtime.

12y agoHN ↗

Hmm, that sounds like quite n0nsense to me. Maybe it's because "less downtime" is better than "more downtime"?

12y agoHN ↗

Why none of us should quit our day jobs...

12y agoHN ↗

But that's exactly what pg/YC wants you to do!

12y agoHN ↗

Out of curiosity, what are some of those phrases?

12y agoHN ↗

Don't know about phrases, but exclamation points are automatically removed, so "!" -> "" in this case. The problem arose because someone replaced an unidentified X with X, resulting in an infinite recursion.

12y agoHN ↗

Things like "Top 10 Reasons X is Y" becomes "Reasons X is Y" I believe.

12y agoHN ↗

For a hardcoded list that is manually edited frequently, maybe a duplicate-safe data structure would be preferably. It might require an extra line to parse out duplicates, but at least a page won't fail if something like this happens again.

12y agoHN ↗

I'd assume that they've added a check for that now, but it's hard to predict beforehand what things will break.

12y agoHN ↗

We have a list of phrases that get replaced in titles and their replacements (which can be the empty string if we simply want to remove something). A moderator accidentally added an identical pair to it.

This should prove once and forever that tail recursion is dangerous and does not help with real world problems. Clearly, blowing up the stack would have been the appropriate and safer response here.

12y agoHN ↗

I think you mean that TCO is dangerous. Besides, this is probably more of an implementation problem. Do you really want to be applying a filter like this multiple times?

If I had to implement this, I would just imagine that just taking your mapping, and for each key,value , do a title.replace(key,value). I would be a "good enough" solution , and in the worst case you still have human editors on HN.

12y agoHN ↗

If you have one wordfilter to map "!"->"" and another to replace "cunt"->"asdf" and you got the input "cu!nt" what should the output be?

12y agoHN ↗

good point. I understood this to be more of a counter to non-malicious intent than otherwise.

12y agoHN ↗

Interestingly, distinguishing between "non-loopy" and "potentially loopy" sets of rewrite rules seems to be equivalent to the halting problem :-( The key phrase would be "tag systems".

12y agoHN ↗

I'm not sure I particularly care so long as it produces some output before the heat death of the universe.

12y agoHN ↗

Yeah, that would replace an infinite loop with a stack overflow in that specific case, but I'm not sure that all infinite loop bugs can be converted to stack overflow bugs in the general case. Another commenter's suggestion to "have tests and a staging environment" makes more sense to me.

12y agoHN ↗

Sorry, this is uneducated bullshit. There was a infinite loop and that was a error in programming logic. Limiting loops a certain number of iterations is absolute bogus. Ever though how stupid it sounds to demand c to forbid while(1)?

12y agoHN ↗

issue: code 403 (Forbidden).

I think you should do your best to always return an appropriate HTTP status header, and in this case it is status 503 (Service Temporarily Unavailable). You really want to reserve 403's for those pesky w00t w00ts :) , ' aNd 1=1 and the likes.

Getting 403's with my personal account, but gaining (slow) access through another browser, I was convinced that the issue had to do with my account being blocked.

12y agoHN ↗

In this case using nginx allow and deny statements was much easier than doing bit fiddling in Lua and returning 503s. Any time spent researching other options would have been time not spent determining the problem.

Often getting to the root of the problem as quickly as possible while simultaneously keeping the site up (practical) wins over always using correct HTTP response codes (pedantic).

12y agoHN ↗

Serving 403s to w00tw00ts is for casuals. Face those leet haxors!

12y agoHN ↗

You just need enough cores so the infinite loop completes in a finite amount of time.