Hacker News

Top stories

Live mirror
30 storiesupdated just nowView source snapshot
  1. Claude Code now reads AGENTS.md if there is no Claude.md(claude.com ↗)
    83comments
  2. Android 17 is the first since 3.x to add new APIs without releasing to the AOSP(grapheneos.social ↗)
    165comments
  3. Y Combinator's PAC is throwing money at Republicans across the country(gazetteer.co ↗)
    8comments
  4. Saving another 100TB of RAM(cloudflare.com ↗)
    27comments
  5. Cloudflare Quick Tunnels(cloudflare.com ↗)
    213comments
  6. Xcode 27.1 Beta Release Notes(developer.apple.com ↗)
    54comments
  7. Cache-to-Cache: Direct Semantic Communication Between LLMs (2025)(arxiv.org ↗)
    10comments
  8. Photon-Emission-Guided Laser Fault Injection Enables RP2350 Secure Debug(ledger.com ↗)
    40comments
  9. How to Write with an LLM(sockpuppet.org ↗)
    235comments
  10. Show HN: Cactus Needle 3: 8-29MB automation models can match DeepSeek V4 Flash(cactuscompute.com ↗)
    70comments
  11. OpenJev(openjev.com ↗)
    234comments
  12. The Implications of Linguistic Illegibility for LLM Security(arxiv.org ↗)
    14comments
  13. Cyclomatic Complexity in C#(ndepend.com ↗)
    3comments
  14. The first new cat species discovered in 100 years(nationalgeographic.com ↗)
    28comments
  15. Two parallel neural ectoderm progenitors contribute to the developing brain(newscientist.com ↗)
    49comments
  16. From Geometry to Algebra and Back Again: 4000 Years of Papers (2023) [video](youtube.com ↗)
    discuss
  17. A search-and-inference database from scratch in pure Zig(antfly.io ↗)
    14comments
  18. C++26: Trivial infinite loops are no longer undefined behaviour(sandordargo.com ↗)
    160comments
  19. How SpaceX streamlined the Raptor engine(construction-physics.com ↗)
    19comments
  20. Minimal Phone 2(minimalcompany.com ↗)
    136comments
  21. I vibed a proof of Conway's conjecture(overreacted.io ↗)
    172comments
  22. Inside ZCode: Silently uploading your Git history to the cloud(ferstar.org ↗)
    88comments
  23. Korea raises data breach fines to 10% of revenue(koreajoongangdaily.com ↗)
    59comments
  24. Warez: The Infrastructure and Aesthetics of Piracy (2021)(archive.org ↗)
    12comments
  25. US Military had close call after using AI for hallucinated intelligence report(cnn.com ↗)
    262comments
  26. Cekura (YC F24) Is Hiring(ycombinator.com ↗)
    discuss
  27. Border agents can search cellphones without a warrant or reasonable suspicion(lawandcrime.com ↗)
    121comments
  28. Show HN: Ax-check.com – Can agents use your product?(ax-check.com ↗)
    25comments
  29. War may be coming. Are we psychologically ready?(bbc.com ↗)
    27comments
  30. Mathematicians Build Long-Awaited Graph Sandwich(quantamagazine.org ↗)
    15comments

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.