TE
TechEcho
Home24h TopNewestBestAskShowJobs
GitHubTwitter
Home

TechEcho

A tech news platform built with Next.js, providing global tech news and discussions.

GitHubTwitter

Home

HomeNewestBestAskShowJobs

Resources

HackerNews APIOriginal HackerNewsNext.js

© 2025 TechEcho. All rights reserved.

Never trust a system that seems to be working

497 pointsby pkilgoreover 2 years ago

47 comments

snapcasterover 2 years ago
Great article, made this exact same mistake in space exploration before learning to transmit demand and not supply. There are so many principles like this I learned from playing through the game. One area I've been focusing on improving is trying to anticipate how any given subsystem might go wrong and add even simple circuitry to detect condition and alarm/signal to the factory dashboard. Has cut down on the times where I realize some part of factory hasn't been working properly for like 5 hours. Applying this to software development has made me better about getting better about how I use rollbar logging
electrolyover 2 years ago
This is why 4-20 mA is a common signaling standard in industrial automation. 4 mA means zero and 20 mA means one. 0 mA means <i>broken transmitter</i>!
评论 #33235298 未加载
评论 #33235865 未加载
评论 #33235449 未加载
评论 #33237166 未加载
评论 #33235101 未加载
评论 #33239936 未加载
评论 #33235235 未加载
评论 #33235638 未加载
评论 #33239601 未加载
评论 #33239598 未加载
Karellenover 2 years ago
One reply tweet notes &quot;a complex system always operates in a failure state&quot;, but to find more discussion on this point it&#x27;s worth noting that this is a restatement of:<p>&gt; &quot;The Fundamental Failure-Mode Theorem (F.F.T.): complex systems usually operate in a failure mode.&quot;<p>-- John Gall, <i>General Systemantics</i> (aka <i>Systemantics</i>, aka <i>The Systems Bible</i>), 1977 &lt; <a href="https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;Systemantics" rel="nofollow">https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;Systemantics</a> &gt;<p>Searching for &quot;fundamental failure mode theorem&quot; will provide interesting further insights on this.
评论 #33235072 未加载
评论 #33234448 未加载
评论 #33234296 未加载
评论 #33239967 未加载
评论 #33236748 未加载
评论 #33239795 未加载
评论 #33238069 未加载
评论 #33235584 未加载
csoursover 2 years ago
If your code has side effects, it only ever seems to be working.<p>----<p>&gt; the newbie says &quot;aww, why isn&#x27;t it working?&quot;<p>&gt; the intermediate says &quot;yay, it&#x27;s working!&quot;<p>&gt; the expert goes &quot;hmm, why is it working?&quot;<p>I&#x27;ve also seen this as<p>My thing isn&#x27;t working and I change X and now I get error J instead of error K, so now I have to change X back because it&#x27;s still not working.<p>Where K is a &quot;better&quot; error than J, such as K = failed to connect and J is Server 500 error. With J you are at least talking to a webserver.
评论 #33235518 未加载
评论 #33236697 未加载
评论 #33238304 未加载
ben_wover 2 years ago
Reminds me of Jurassic Park (book, I think?); nobody realised that dinosaurs were loose and breeding, because the system was doing:<p>if dinosaurs &lt; expected { alert(&quot;escaped dino!&quot;); }<p>and nobody anticipated dinosaurs &gt; expected
评论 #33236319 未加载
评论 #33237096 未加载
neonateover 2 years ago
<a href="https:&#x2F;&#x2F;web.archive.org&#x2F;web&#x2F;20221017155814&#x2F;https:&#x2F;&#x2F;twitter.com&#x2F;Foone&#x2F;status&#x2F;1581643197427523584" rel="nofollow">https:&#x2F;&#x2F;web.archive.org&#x2F;web&#x2F;20221017155814&#x2F;https:&#x2F;&#x2F;twitter.c...</a><p><a href="https:&#x2F;&#x2F;archive.ph&#x2F;cToUl" rel="nofollow">https:&#x2F;&#x2F;archive.ph&#x2F;cToUl</a>
shadowgovtover 2 years ago
There are two good lessons here:<p>1) Robust system design involves identifying the parts of your system that are mission-critical and <i>always</i> monitoring them. NASA missions have great automation and a 24&#x2F;7-staffed mission control.<p>2) If a system failure <i>can</i> result in massive secondary damage, isolate that system. Warehouses receiving orbital payloads should probably be nice and far away from the base you care about.
评论 #33236572 未加载
评论 #33239800 未加载
joshstrangeover 2 years ago
While I have not really played SE (past initial launch, it was too daunting to build the ship in space, etc) I have run into these kind of &quot;issues&quot; in Factorio. While they can have disastrous effects, I often really enjoy finding the core problem and finding a solution to make it &quot;fail-safe&quot;.<p>Sometimes I wish I could go back and wipe all my Factorio knowledge and start from scratch again, most importantly refusing to use blueprints from the internet except for basic things like balancers. Finding early&#x2F;mid&#x2F;late game malls&#x2F;blueprints sort of ruined the game for me. Min&#x2F;maxing is fine by myself but once I&#x27;m &quot;competing&quot; against the internet or feel obligated to find the most efficient&#x2F;best green&#x2F;red&#x2F;blue circuit factory, or science packs, etc it really ruins the game for me and makes it feel more like a job.<p>I got a good thousand or two hours out of the game before I hit that point and someday I want to try playing it again with self-enforced limits on what I&#x27;m &quot;allowed&quot; to get from the internet and what I need to just figure out on my own. The first game I played was pure bliss (and I played with Bob&#x27;s mods and a number of others, yes that was stupid for my first playthrough but damn it was fun), I&#x27;d love to recapture that.
评论 #33238544 未加载
评论 #33255302 未加载
mlazosover 2 years ago
It’s really interesting how factorio problems are pretty much the same as multiprocessing&#x2F;distributed systems problems. It just shows how universal and fundamental the idea of “work” and “workers” are. An engineer on my old team came up with a credit system to solve this problem, the receiver issues credits to the sender, which only sends when there is a credit available - this ends up with the same better failure mode that the article discovers and allows you to overlap communication with work.
评论 #33238278 未加载
评论 #33239663 未加载
eltetoover 2 years ago
Wow, Factorio is approaching Full Time Job levels of detail and work required to keep everything running. Incredible game that I will never play, I feel I’m back at my job!
评论 #33236117 未加载
评论 #33235553 未加载
评论 #33235240 未加载
评论 #33235092 未加载
评论 #33235486 未加载
lordnachoover 2 years ago
Same goes for work. If you join a well oiled machine that just seems to be working great, you may never understand how it works, since you won&#x27;t be exposed to various people diagnosing issues. Join a place that used to work and is now creaking, or a place that never worked, and there&#x27;s more pain but also more learning.<p>Also when does a Factorio system ever work? There&#x27;s permanently a pressure for it to do more, stuff stuck on the wrong belts, not enough of some input...
评论 #33237399 未加载
评论 #33234130 未加载
评论 #33235574 未加载
Amorymeltzerover 2 years ago
Just want to note that the novel noted in the first post, <i>The Moon Is A Harsh Mistress</i>, is a great read. I think I read it after seeing it recommended in Mary Robinette Kowal&#x27;s Lady Astronaut series, but it&#x27;s a nice balance of technical and science fiction with politics, almost like a condensed version of KSR&#x27;s Mars Trilogy. It&#x27;s mostly (not entirely) devoid of the more typical Heinlein sexism&#x2F;objectification.
评论 #33236035 未加载
评论 #33243288 未加载
dekhnover 2 years ago
My favorite is, after fixing a system in prod, asking &quot;how did that possibly work in the first place?&quot;
评论 #33235815 未加载
Darkphibreover 2 years ago
Reminds me a lot about the fascinating read of Knight Capital, and the $440M-in-28-min bug that lost them 75% of their equity.<p>Reminds me a lot about Knight Capital bug that cost them $440M in 28 min.<p>&gt; Rogue orders seemed originated from the new RLP router code, but no one could pinpoint the bug.... they reverted to last-stable.... and even <i>more</i> trades executed than before.<p><a href="https:&#x2F;&#x2F;www.henricodolfing.com&#x2F;2019&#x2F;06&#x2F;project-failure-case-study-knight-capital.html" rel="nofollow">https:&#x2F;&#x2F;www.henricodolfing.com&#x2F;2019&#x2F;06&#x2F;project-failure-case-...</a><p>I remember a PDF that went into even greater detail, was a very good read.
1970-01-01over 2 years ago
Isn&#x27;t the lesson NO SIGNAL != 0<p>More universally, 0 isn&#x27;t null.
raldiover 2 years ago
Tests that output booleans (pass&#x2F;fail) are an antipattern.<p>Tests and their dashboards must distinguish “the testing system worked and the test failed” from “the testing system failed”.
评论 #33236162 未加载
评论 #33235243 未加载
michaelmiorover 2 years ago
Whenever I write a non-trivial amount of code that appears to work the first time, I&#x27;m immediately suspicious. I probably spend more time testing that code than I would have if I had broken and fixed some things along the way.
mshenfieldover 2 years ago
Also a good reminder why exceptions and optionals exist. Bonkers that &quot;I didn&#x27;t get a response&quot; defaults to 0.
评论 #33235007 未加载
评论 #33237474 未加载
spillguardover 2 years ago
Side note, does anyone know why the author has written &quot;F*ctorio&quot; instead of &quot;Factorio&quot;?
评论 #33237142 未加载
评论 #33237155 未加载
lawrenceyanover 2 years ago
In the self-driving context, this reminds me strongly of Tesla Autopilot. Good enough to work most of the time, but likely would end up in greater overall injuries&#x2F;accidents per mile if actually enabled at scale.<p>Waymo, Cruise, Aurora, and others are doing it the right way.
评论 #33237548 未加载
freedombenover 2 years ago
We once learned a good lesson about this, as well as recognizing the real threat that ESD poses. We once had a terrible failure that was the result of a main signaling line being damaged by ESD such that it had much higher resistance than it should have. Our signal levels were too close such that it danced over the line a few times and got interpreted as the opposite value, but only sometimes. It also taught a good lesson that when the robots <i>do</i> become self-aware and take over the world, it&#x27;s gonna hurt like hell.
dtjohnnymonkeyover 2 years ago
This is a very dramatic illustration of one of the benefits of a pull vs push-based architecture.
encodererover 2 years ago
I’ve built a pretty successful software monitoring business off of this basic premise.
civilizedover 2 years ago
Statisticians learned long ago that &quot;missing&quot; needs to be treated special. It should be either an entirely separate signal or a &quot;sentinel value&quot; riding on the existing signal that everyone knows and couldn&#x27;t possibly be a normal operation value. Which is why sentinel values are usually a huge bunch of 9&#x27;s or the maximum possible value of the field or something.<p>Interesting that the sentinel value is zero in this case. In data analysis that&#x27;s usually a terrible sentinel value, but here it&#x27;s the most practical one.
sharnoover 2 years ago
This sounds close enough to Golang where a null value is basically a zero value. I think that would be another million dollar mistake that would need fixing later in the language
freeqazover 2 years ago
&quot;This Tweet has been deleted&quot; -- does anybody have a mirror? Maybe @dang can update the main link to that.
评论 #33239830 未加载
piasteover 2 years ago
A more narrow lesson: this is why all SQL statements involving NULL are always false.<p>&gt; in any case, losing power means the transmitter stops transmitting.<p>&gt; and here&#x27;s the fun part: your circuit which controls that inserter is set to insert &quot;if [ICE] &lt; 8000&quot;<p>&gt; and GETTING NO SIGNAL AT ALL counts the same to it as ICE=0.<p>&gt; 0 is &lt; 8000.
评论 #33234860 未加载
评论 #33234409 未加载
评论 #33234978 未加载
ezekgover 2 years ago
Spoiler alert! (lol)<p>I&#x27;m in the middle of reading this book and I figured this would (finally) happen next chapter. I&#x27;ll be looking forward to this pivotal moment.
throwawaymathsover 2 years ago
Someone just figured out how erlang&#x27;s gen_servers work and why you should use call instead of cast unless you really know what you&#x27;re doing
alexfromapexover 2 years ago
I think &quot;never&quot; is too polarized, maybe &quot;be skeptical of&quot; is a better suggestion.
sharnoover 2 years ago
Threadreaderapp of the tweets (still live): <a href="https:&#x2F;&#x2F;threadreaderapp.com&#x2F;thread&#x2F;1581643415850098688.html" rel="nofollow">https:&#x2F;&#x2F;threadreaderapp.com&#x2F;thread&#x2F;1581643415850098688.html</a>
matchagauchoover 2 years ago
Not familiar with this particular game. But in real-world systems design the default should be (?)<p><pre><code> boolean deliver = false; while( polling ){ deliver = readyToReceive(); if( deliver ) { send(); } }</code></pre>
评论 #33236905 未加载
tksidenover 2 years ago
They don&#x27;t teach that in college.
评论 #33236191 未加载
Arainachover 2 years ago
Tweet seems to be deleted now. A brief summary of what it was:<p>* In Factorio (game) you can have space stations that send supplies to your ground base<p>* If the supplies are not caught, then they cause damage to your base<p>* To avoid sending supplies that cannot be caught, you can use logic controls<p>* A common approach is to have the station say &quot;if (ground supply &lt; X) send&quot;<p>* This fails if the ground supply loses power, as no signal is interpreted as 0 and 0 &lt; X<p>* Thus, the system will appear to work until your ground base loses power, at which point it will be destroyed<p>* A better system is to have the ground base use logic to say &quot;if supply &lt; X send signal&quot; and the station to say &quot;if signal received, send&quot;. This way, a power failure fails safe instead of fails active.<p>With a fun callout to <a href="https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;The_Moon_Is_a_Harsh_Mistress" rel="nofollow">https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;The_Moon_Is_a_Harsh_Mistress</a>
评论 #33240030 未加载
TaylorAlexanderover 2 years ago
As I and others have previously pointed out [1] foone uses they&#x2F;them pronouns and feels particularly frustrated when their posts get featured on HN, because users here seem unable to honor this simple preference of theirs. It looks like they deleted their tweet out of frustration with todays latest round of misgendering.<p>I hope people on HN will learn to respect all members of our community. Yes that involves not assuming every person online is a man!<p>[1] <a href="https:&#x2F;&#x2F;news.ycombinator.com&#x2F;item?id=32978438" rel="nofollow">https:&#x2F;&#x2F;news.ycombinator.com&#x2F;item?id=32978438</a>
评论 #33238733 未加载
评论 #33241612 未加载
评论 #33239863 未加载
评论 #33239684 未加载
usrbinenvover 2 years ago
A bit of an off-topic: I only ever saw white traffic lights in the US and Canada (specifically, pedestrian traffic lights) and they confused me a lot at first - the rest of the world uses green. The icons displayed (hands) are confusing too: the rest of the world uses an icon of a man walking or standing.
评论 #33238452 未加载
评论 #33236514 未加载
评论 #33236543 未加载
评论 #33238589 未加载
评论 #33237504 未加载
评论 #33235923 未加载
评论 #33237292 未加载
评论 #33240528 未加载
评论 #33238263 未加载
fooneover 2 years ago
It was deleted because it was posted here.
评论 #33238989 未加载
评论 #33238710 未加载
评论 #33239901 未加载
carry_bitover 2 years ago
Full thread unroll: <a href="https:&#x2F;&#x2F;threadreaderapp.com&#x2F;thread&#x2F;1581643197427523584.html" rel="nofollow">https:&#x2F;&#x2F;threadreaderapp.com&#x2F;thread&#x2F;1581643197427523584.html</a>
评论 #33236211 未加载
taf2over 2 years ago
This tweet has been deleted... I should have checked sooner, had too much trust that it&#x27;d still be working... I feel like there is a joke in there somewhere
tiborsaasover 2 years ago
Oh cool, a random tweet from the middle of a twitter rant.<p>Unleash the chaos monkey&#x27;s just in case, not to get too confident.
positr0nover 2 years ago
What drama with the Factorio devs is he talking about at the end (and namesearchers?.. I don&#x27;t get Twitter sometimes)<p>I&#x27;ve never heard anyone say anything about the Factorio devs except praise their productivity and professionalism.
评论 #33235428 未加载
评论 #33234461 未加载
评论 #33234864 未加载
评论 #33234374 未加载
stavrosover 2 years ago
Hmm, what does he mean &quot;I woke up the next day&quot;? Did he leave Factorio running, or did it get an online component while I wasn&#x27;t looking?
评论 #33234217 未加载
评论 #33234315 未加载
pmarreckover 2 years ago
the tweet was deleted :&#x2F;
评论 #33241506 未加载
skeletonjellyover 2 years ago
Wonder why it was deleted
评论 #33240513 未加载
chris_wotover 2 years ago
Tweet was deleted?
评论 #33241510 未加载
potatototoo99over 2 years ago
What does it have to do with Factorio?
评论 #33234071 未加载
评论 #33234093 未加载
评论 #33234100 未加载
baxtrover 2 years ago
The tweet has been removed?
评论 #33244437 未加载
评论 #33240955 未加载