Hacker News

Top stories

Live mirror
30 storiesupdated just nowView source snapshot
  1. In an $80 Motel Room, a Discovery to Shed Light on the Origins of Life (nytimes.com)
    32comments
  2. Ten Lines of Code That Changed My World (pixelambacht.nl)
    15comments
  3. Writing Efficient C++ Code (asawicki.info)
    26comments
  4. Replacing the old battery on rechargeable bike lights (jvns.ca)
    36comments
  5. The Normalization of Inexplicable Failures (ihatethefuture.com)
    35comments
  6. Show HN: TinyAIArena watch AI agents battle it out (tinyaiarena.com)
    18comments
  7. There are no "rogue" AI agents (eoinhiggins.substack.com)
    51comments
  8. Walgit: A Git server that is one binary in front of an object store (github.com/rgodha24)
    4comments
  9. Flip Fluid on Flip Dots (mitxela.com)
    19comments
  10. Fakecloud: Local AWS cloud emulator for integration tests (fakecloud.dev)
    32comments
  11. postmarketOS Rebrand: Nura (nura.eco)
    8comments
  12. The Cartesian Hand: In-Hand Manipulation with All-Linear Fingers (generalroboticslab.com)
    —discuss
  13. Does Georgism work? Five years later (astralcodexten.com)
    388comments
  14. Show HN: A CC0 museum of retro 3D tricks you can paste into a page (3d-retro.com)
    10comments
  15. Go Concurrency Distilled (antonz.org)
    136comments
  16. Finally, A True Blue Rose Exists (sciencenews.org)
    29comments
  17. PipePipe: NewPipe hard fork implementing SponsorBlock (github.com/infinityloop1308)
    257comments
  18. Installing NeoVim caused original Vim undo files to be deleted (aresluna.org)
    231comments
  19. Rusty thoughts on "Parse, don't validate" (thegreenplace.net)
    18comments
  20. Unsealed Briefs in Authors’ Case v. Microsoft/OpenAI (authorsguild.org)
    522comments
  21. The internet discovers TLA+. Now what? (reasonable.io)
    47comments
  22. Show HN: Reladraw – A diagram language where you decide where to place things (github.com/reladraw)
    101comments
  23. DeepSeek Elastic Compute (DSec) (arxiv.org)
    97comments
  24. Biology might not be quantum, but its math is quantumlike (quantamagazine.org)
    47comments
  25. "As a Language Model": Chat Template Switches LLM Self-Referential Voice (arxiv.org)
    94comments
  26. 10 Tells of a Slop UI (hereticpleb.vercel.app)
    169comments
  27. A searchable library of forgotten public-domain film clips from 1915 onward (movingimagearchive.com)
    27comments
  28. OpenAI halts training of latest models as reports mount of AI agents going rogue (theguardian.com)
    47comments
  29. An agent used DNS to reach an external chatbot (alignment.openai.com)
    151comments
  30. Exploding variance of means of exponentials: least-squares to the rescue (francisbach.com)
    —discuss

The Normalization of Inexplicable Failures

134 pointsby 2h agoihatethefuture.com
33 comments
1h agoHN ↗

If you spend more time with a product, you’re more likely to choose to do it again, even if it’s because of failure or annoyance. You’d justify it somehow (I have a leg up now or something). This actually applies to looking at things as well; a brightly colored box on the supermarket shelf is simply more likely to be chosen because you look at it first and longer.

Wasting your time and resources is a power signifier, but getting you to waste your own time and your own resources is hegemony.

1h agoHN ↗

There is no way intentionally increasing failure rates improves user retention... right? Please tell me it doesn't.

1h agoHN ↗

This is the problem building "it does everything" machines.

If you are pitching that your service can do potentially "whatever the client wants" you have such a thin basis on which to provide contracts and guarantees as a provider. The narrower the function, the clearer you can be about what's supposed to happen and why things might have gone wrong.

When you're using probabilities as the fundamental approach to computation, all of that goes out the window. Nondeterminism is powerful because it's insanely flexible, but the cost of that flexibility is predictability and expectation. Determinism was humanity's primary choice for formalisms and technology precisely because it reduces complex problems and situations to repeatable mechanics that are easy to understand. Deterministic tools can't do a lot in the grand scheme of things, but it is precisely these limitations that make them work well in concert and keep them comprehensible.

33m agoHN ↗

What happens when non deterministic machines become better than humans at translating requirements to deterministic machines?

1h agoHN ↗

Another of the ways that software "engineering" is drifting even further away from traditional engineering. Failure mode analysis? Root cause analysis? I have no idea, I just talk to this magic box.

1h agoHN ↗

When a button breaks on a website, I have a model about what should have happened. Somewhere a contract got broken. [...] I might not have access to debug just an HTTP status 500, but I expect there to be somebody whose job is to understand why the endpoint is 500ing. The ownership is well-defined albeit opaque³.

For many users, however, the actual experience is roughly just "stupid thing sucks." Software already feels capricious; more failures just change the rate of frustration.

I am betting author does not use cloud services much. It is not just "users", it's developers as well. Github is returning 5xx? AWS service does not work? Your email did not get delivered? Nothing we (developers) can do, "stupid thing sucks".

40m agoHN ↗

It is not just "users", it's developers as well.

One can be simultaneously a developer and a user. Distributed systems [0] weren't invented five years ago, after all. ;)

"Github owns this part that we rely on for correct operation and we can do fuckall about it when it fails." is a well-defined ownership model.

[0] ...implying the existence of distinct parts that can be independently developed and independently fail...

1h agoHN ↗

Why is the author pretending that it is only now that inexplicable failures are "being normalized"? They've been normal(ized) ever since this industry has existed.

Literally go no further than the age old advice of "have you tried turning it off and then back on again?", and then that actually working.

Did this person never experience the effects of rocking the boat just a little too much? Daring to do a little too good of a job? How?

23m agoHN ↗

Are you referring to "move fast and break things"?

If so, it's definitely newish for those of us who started programming twenty+ years ago. Back then waterfall was the way to develop applications. Once it was burned to CDs or DVDs, that was it. We could not afford shipping broken things.

Ever since internet became ubiquitous we moved to on-the-fly patching for installed software and fast deployment cycles on cloud.

That said, the lack of forethought in design and backward compatibility is nowadays definitely on the rise and occurs likely on an order of magnitude more often.

11m agoHN ↗

No, I'm referring to the "we're a massive enterprise and we don't make money by troubleshooting issues, so if service XYZ has troubles after 30 hours of uptime, then we'll restart it every 20 hours and problem solved" phenomenon.

Or the phenomenon where I piss blood explaining why having a p99 that is 30x worse than our p95 is maybe possibly a problem that should be looked at.

Or the phenomenon where concurrency exists, and so issues are no longer reliably reproducible, meaning everyone just throws their hands up and tries to ignore and downplay them as much as humanly possible. That is until a dickhead like me comes around, and does something like a scripted 300 restart cycle test overnight until a clustering resiliency defect finally reproduces, and i can capture enough debugging data that would never be possible on a live environment.

1h agoHN ↗

The "normalization of inexplicability" is indeed infuriating. It has always been bad when it comes to computer software, and it's increasingly creeping into other consumer products that depend on embedded software.

I bought a new electric car recently. For the most part I've been quite happy with it. Shortly after I bought it, it started popping up a warning message saying "check EV system" every time I started it. By the time I brought it into the dealership, the warning had gone away, and the technician just told me something to the effect of "eh, I guess it just does that sometimes, let us know if it happens again." Hardware fault? Software bug? Who can say?

Like most modern cars, it has connectivity and Google Maps built into the infotainment system. The vast majority of the time, it works fine. Sometimes it says it has no connectivity (meaning no traffic data and suboptimal routes) for the duration of a drive, even in areas with a strong cell signal where it normally works fine. Sometimes the car says it has connectivity, but Google Maps still thinks it's offline. Sometimes Maps will actually load and display a route, but the "start navigation" button just spins forever as though it's still waiting for something. Are these related issues? Is there a common cause that might be fixable? Who can say?

(Conveniently enough, the warranty specifically does not cover any failures of software or firmware to operate correctly.)

29m agoHN ↗

My Kia Niro EV, which I'm otherwise quite happy with, has an occasional failure mode where it locks out the ignition for an arbitrary amount of time (generally 15 minutes). It's sometimes, but not exclusively, triggered by scheduled departure turning on the AC. Kia's response is a big shrug...

20m agoHN ↗

I think some of it is an unintended consequence of the backlash against bad or puzzling error dialog boxes in '80s and '90s software. A lot of people seem to have concluded that the easy solution to the challenges of error reporting was just to fail silently instead roll_safe.jpg .

13m agoHN ↗

a warning message saying "check EV system"

These are some of the most annoying messages a piece of software can possibly display, and I hate them with a passion!

It's like this with a lot of commercial software, where designers don't want to scare users with complicated (useful) error messages, so you just get a "whoopsie! Something went wrong".

I'd much rather have an error message that I _don't_ understand over an error message I _can't_ understand.

In the case of cars, it used to be that a generic "Check engine" light showed up on your dash, and you needed an external tool to ask the computer what caused it to light up, but why would that be nessecary in a modern vehicle? You've got a large, high resolution display (or more!) on the CAN bus, why can't it show the full problem so you could take a picture right as it happens and send it to your dealer for instant diagnosis?

10m agoHN ↗

I remember twenty years ago trouble-shooting my father's Internet connections and not being able to discover the misconfiguration. Once I called the technician and they knew nothing but "wade down to this dialogue and choose 'reset'". That didn't work either - but it was a distinct moment in me noticing the Internet and software becoming opaque. And it was only gotten - sometimes those moments of opaque failure are transitory but sometimes they stay indefinitely. Currently, my android phone can't see group texts created by iphones. I'm thankfully semi-retired enough for this to be a blessing but it could a crisis for someone else (I know a couple that fixes the problem temporarily but a text isn't something you want to spend hours debugging to get if you need it).

But my point - this has been increasing for quite a while and it's something like the evil twin of the "it just works" school of design. Because when the default expectation is "just working", the failure mode is "it just doesn't work". I mean, the default assumption that users are morons has de facto made us all morons since we can only deal with the "interface made for morons" and makes failure into opaque failure.

It's world the developers know "all abstractions are leaky abstraction" but where developers still won't give users (or even downstream developers) tools to deal with the leaks 'cause a simplistic interface matters more.

"When there's no emergency exit, there can't be an emergency, can there?"

1h agoHN ↗

It frustrates me quite a bit that the best solution to many issues is "Just try again tomorrow", trusting that the problem occurring on Azure is caused by some obscure backend service being down six timezones from our office, and the thing™ will start working again in a few days when Microsoft fixes said backend service.

59m agoHN ↗

This leads to a normalization of inexplicability.

It’s also tightly connected to a normalization of lack of accountability.

This isn't "getting an FTP account, mounting it locally with curlftpfs, and then using SVN or CVS on the mounted filesystem" -- you still have to do the hard part.

This is probably losing the younger portion of the audience by now. ;)

7m agoHN ↗

The people accountable are those hosting & writing the algorithms, e.g. Therac-25.

56m agoHN ↗

Excellent post. People always defend agentic/LLM-driven development by saying, "Well it's good enough", or "It works most of the time."

That may be tolerable for some user-facing app. But what if we start normalizing failures in the libraries, the infrastructure, and the compilers? Everything descends into a mess of unreliability, and that slows EVERYTHING and EVERYONE down.

41m agoHN ↗

Exactly. Reliable abstractions are more important than ever. They're the dues the rest of us must pay to support vibe coding.

40m agoHN ↗

Banking/Finance is the one industry I've seen push back against this type of thinking. Transactions must be handled in a perfect and repeatable way, or the system is unusable as far as the company is concerned.

There's definitely still AI/LLM integration happening, but is kept out of specific areas of the business.

29m agoHN ↗

Counterpoint: software has always had bugs. People are fallible.

Perhaps designing with assumptions that the entire stack is imperfect is the route to higher quality, along the lines of chaos monkey, which randomly kills processes on production boxes… which ensures resilience is real.

Even without AI our tech stack is so deep it’s hard to imagine every feature at every layer being provably correct.

13m agoHN ↗

Write tests first. Have agent iterate until they are satisfied.

The point is that it boils down to writing the tests correctly, regardless of who is implementing the actual code. Hand-written code without test coverage has the same problems as AI generated code.

12m agoHN ↗

However, we are not (yet) building probabilistic libraries right? Even if AI is used, the code it builds is still deterministic and will fail in a way that can be fixed.

Not unlike legacy code, where the original developers are long gone and no one knows when that system breaking bug is about to wake up.

Even in the best of cases tho, fully human written and reviewed code will still fail eventually.

So I would say we are not normalizing failures (yet) but rather normalizing legacy.

37m agoHN ↗

See also "normal accidents" [1], which are an even bigger worst case scenario, which we already struggle with, and will only get worse.

"Normal accidents, or system accidents, are... inevitable in extremely complex systems. Given the characteristic of the system involved, multiple failures that interact with each other will occur, despite efforts to avoid them... while operator error is a very common problem, many failures relate to organizations rather than technology, and major accidents almost always have very small beginnings. Such events appear trivial to begin with before unpredictably cascading through the system to create a large event with severe consequences." [1]

[1] https://en.wikipedia.org/wiki/Normal_Accidents

31m agoHN ↗

I am big on reproducibility (nix aficionado) and determinism (flagging test failures are a red-alert, all-hands-on-deck situation in my world) and correctness.

I am also big on testing (the correct things). And nine-nines (big on Elixir).

And... I'm also big on agent-assisted dev. Which requires pretty much every check in the book to stay productive in. And that's fine to me. I've seen bugs that I wouldn't have made myself. And I've also seen my own bugs fixed. They've all gotten fixed in short order. I don't see why this is a problem.

Raise your personal standards.

Thing is, the unreliable-software situation was already untenable before agents (in poor hands) made it worse.

5m agoHN ↗

This, 100% I've seen far far worse produced by humans.

30m agoHN ↗

"Confidence scores" have always implied an anthopocentric meaning that doesn't exist. An algorithm doesn't have "confidence" in the way that a person has confidence, but as soon you put something with that name in front of a business person they assume the number is always a meaningful "letter grade curve" or "universal percentage". I still believe so much that the old quote to "there's lies, damned lies, and then statistics" remains a key to understanding so much why ML is leading to dumb outcomes versus hype. People don't understand statistics, so machines that produce nothing but statistics especially confuse people. (I feel this applies to LLMs as well.)

22m agoHN ↗

Inexplicable has a range from “I can’t explain that” to “that is not in the realm of possibility”. Windows failures especially have been steadily moving from A (already pretty sad) to B in the past years and I’ve been thinking about how utterly unempowering that is. Tools stop being tools if they have a secret life of their own.

Excellent post!

18m agoHN ↗

That’s not even an attempt to be charitable to jev. It can make decisions from unstructured data. Nobody uses anything just because it is cheap…

12m agoHN ↗

Yeah I think the Jev hype is weird... But this blog post is complete nonsense.

Of course you aren't going to use Jev where you can easily make a decision deterministically with old-school programming. It's going to be used for stuff that might have previously been done by a person, e.g. reviewing app updates in app stores, reviewing CVs, labelling bugs, etc. Obviously that can already have inexplicable failures.