26 ms·
Never trust a system that seems to be working
- electroly 4y agoThis 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 broken transmitter!
- xani_ 4y agoThat's why in our monitoring we used nagios scheme + 1 (0 for invalid, 1 for ok, 2 for warning, 3 for crit, 4 for unknown)
- jallmann 4y agoAlso issue with golang (+ protobufs) where you can't distinguish a populated zero value from the default "not present" value.
- kortex 4y agoThis drives me absolutely bonkers. We had a situation in a machine learning context where we should have been treating the output of a detector as NaN (it was deliberately opting out), but instead it was falling back to zero. Last I checked (this was years ago) the way to deal with this is to wrap it in a sub-message (which are actually nullable), which is just kinda gross.
- krackers 4y agoI thought proto3 has support for optional scalar fields now (https://github.com/protocolbuffers/protobuf/releases/tag/v3.15.0 https://github.com/protocolbuffers/protobuf/releases/tag/v3....), and proto2 always had it
- bazoom42 4y agoThats why JavaScript has both undefined and null!
- deely3 4y agoDo we really need to differentiate between undef and null?
- bazoom42 4y agoNot necessarily, but it does allow a level of robustness to be able to distingish between values which have deliberately been assigned null, and values which have not been initialized correctly.
- mananaysiempre 4y agoLua does fine with only a nil, although it gets a tad annoying when you actually want to store a nil value in an array and end up creating a hole instead. (Arguably, the solution to that problem is to use your own marker object and not a nil when you need some sort of unspecified or default value which is not a literal absence of one.)
- hardware2win 4y agoC# linqs method - first or default has the same problem
- int_19h 4y agoThe method itself just uses the default value of the corresponding type. If you have a sequence of ints, and you cast it to Nullable<int> first before applying FirstOrDefault, then you can distinguish between null and 0.
- invalidator 4y agoThat's one reason, but the big one is that it makes it easy to remote-power the sensors. It gives them a 4mA budget to Do Their Thing even when outputting a zero.
- weaksauce 4y agoI would say the independence of conductor length to voltage drop since current is measurable at any point in the wire is more important. another big advantage to it is that it also is resistant to noise. (though you should be using grounded on on end TSP anyway) nowadays it's pretty common to use cat5 and read a bunch of things from the sensors though via various protocols. 4-20mA sure is a lot simpler to program against though.
- crgwbr 4y agoInteresting. That makes sense, but what’s the reason for using current instead of voltage as the variable?
- mschuster91 4y agoCurrent flow is independent of wire length, the sender only has to turn up the voltage high enough to overcome the wire resistance.
- sjruckle 4y agoAlso, there's greater immunity to interference and poor connections.
- adrian_b 4y agoThis happens because the real insulators are better approximations of ideal insulators, than real conductors are approximations of ideal conductors. In electrical circuits made with normal conductors and insulators, e.g. copper wires and organic polymer insulators, it is possible to ignore the currents that branch from the wires and close through the insulators, because they are extremely small (e.g. in the femtoampere range), but frequently it is not possible to ignore the voltage drops along the copper wires, which are caused by the resistances of the wires, and which may be in the millivolt range.
- lisper 4y agoI have a bachelors degree in electrical engineering and work experience in hardware design and in the back of my mind I've always known this to be true, but this is the first time in my life I've ever heard anyone say this explicitly. EE pedagogy is badly broken in places.
- freedomben 4y agoIndeed, when discussing theory we love pretending that there's no voltage drop from the wires, which can really bite you when you get into design or deep failure analysis. All good technicians and engineers learn this reality fairly soon, and it's one of the things we check especially when dealing with indeterminate failures. As much as I love academia, I really wish there were more instructors with real experience that could say things like, "for math purposes assume a zero-loss conductor" while still emphasizing that real life is not so simple.
- janpot 4y agoor why we build a stop command with normal-closed contacts. a broken wire results in the same signal as a "stop" command.
- mauvehaus 4y agoIf you're doing three-wire control [0], it also means you can add additional "stop" buttons by wiring them all into the circuit in series. A nice-to-have addition to your table saw is a big red stop button you can reach with your foot so you don't have to take your hands off of your work pieces to shut the saw down if things have gotten more interesting than you expected them to. Three wire control makes this super easy to add (once you've found the big red mushroom-head n/c switch, of course). [0] https://twcontrols.com/lessons/control-wiring-3-wire-control-start-stop-circuit https://twcontrols.com/lessons/control-wiring-3-wire-control...
- Akronymus 4y agoI think for a foot pedal, it'd make more sense to have an enable rather than e-stop. Altough, that also depends on if you only work from one location or many. (Presses in industry often use such a design for hands, so that it ensures you hands aren't in the press.)
- phkahler 4y agoSemantics are really important in these situations. We have a system with an E-stop (emergency stop) circuit. Any break in the loop and the system will shut off. It needed to work together with one particular vendors board that insisted on having a "hardware enable" signal that it could control. Rather than adding an additional circuit, someone decided to have "hardware enable" flip a normally open relay in the E-stop circuit. Technically this "works" because enable clears the E-stop condition and allows the thing to function. From a practical point of view this has caused no end of odd problems, particularly when diagnosing issues where things fail because the meaning of this signal has been compromised.
- oasisbob 4y ago
- hedora 4y agoIt is also why white traffic lights no longer mean "go". White means "the red glass lens in front of the incandescent bulb shattered again". Related, from train signals: > The invention of the track circuit in 1872 by William Robinson permitted automatic block signals. Most simply, a low voltage battery current runs up one rail and down the other. As long as current flows from the battery through one rail to the relay and back through the other rail, the relay remains energized and routes current from another battery to the green lamp of a clear signal. But when a train is present, the circuit is short circuited by the steel wheels and axles of the cars; a broken rail or an open switch will also break the circuit. As a result the relay is opened and the signal displays red. The system is arranged so the failure of any component results in a red indication or a dark signal (which must be interpreted as the most restrictive aspect that signal can display). https://www.trains.com/trn/train-basics/abcs-of-railroading/railroad-signals/ https://www.trains.com/trn/train-basics/abcs-of-railroading/...
- martyvis 4y agoSimilarly train brakes are failsafe. They operate by compressed air. Being connected to the locomotive and hence control allows them to be released. If the carriages become disconnected, brakes get applied.
- acdha 4y agoTrain air brakes are similar in failing safely for the same written-in-blood reasons: https://en.wikipedia.org/wiki/Railway_air_brake https://en.wikipedia.org/wiki/Railway_air_brake
- peterleiser 4y agoAlarm systems use the "End of Line" resistor concept. The alarm triggers when a sensor is opened and current flow stops. Closed is ambiguous because it could mean power is flowing through all closed sensors OR there is a short (alarm panels handle shorts). A resistor allows the panel to consider 0 Ohms a short and some specific number of Ohms as closed and working. It apparently also provides a way to detect tampering of the wires. https://www.alarmsystemstore.com/pages/all-about-resistors https://www.alarmsystemstore.com/pages/all-about-resistors
- deleted 4y ago[deleted]
- Unklejoe 4y agoAnother example is how garage door opener trip-beams work (the sensors that detect if something is in the way before lowering the door). The transmitter and receiver are wired in parallel and connected to a power supply through a series resistor. When the receiver receives the signal from the transmitter, it pulls the supply voltage down, which then causes the transmitter to stop transmitting, which then causes the receiver to stop pulling the supply down, and the cycle continues. The end result is that if there's no obstruction, the supply voltage pulses and the system checks for this. If there's any other type of condition, the signal is either 0 or VCC. Basically, the system is designed so that false positives are extremely unlikely since that's the worst case scenario. There's some capacitors in the transmitter/receiver to control the frequency.
- Gordonjcp 4y agoGas central heating boilers use something similar to control the gas solenoid - the solenoid is fed through a biggish capacitor, which has a diode and a capacitor to "smooth" the pulses from the microcontroller. If the microcontroller output latches itself on, the capacitor charges fully, there are no more pulses, and the solenoid drops out.
- blep_ 4y agoThat sounds very complicated. What advantage does it have over wiring the two in series and having an open circuit indicate an obstruction? edit: it gets you protection against one of the two failing closed, duh
- mananaysiempre 4y agoAlso why a standard keyboard has a Break key: used to be that a telegraph station would have a bell that rang if it detected a broken connection (a “break condition”), then people figured that deliberately inducing a break was a handy way to alert the remote operator. I think the first automated telegraph systems actually used current-loop signalling, but I’m not sure about the first practical ones; in any case, the concept carried over into modern (well, 70s-vintage) asynchronous lines—most UARTs nowadays have a break interrupt that you can enable.
- sneak 4y agoI have a standard keyboard and it has no break key.
- cafeinux 4y agoIt's also named "Pause key", but one could argue that if your keyboard doesn't have any of these two keys, it cannot really be called "standard".
- mananaysiempre 4y agoTo clarify, by a “standard” keyboard I mean a (usually US) QWERTY PC keyboard with 101 to 105 keys (depending on the amount of Win/Super and Menu keys and the presence of an additional punctuation key to the left of Z). Those have three rows of three keys each above the arrows (not counting any “media keys” such as Power); the topmost one of those is PrintScreen / SysRq, Scroll Lock, and Pause / Break, though some of those labels may be omitted. I honestly have never seen a full-size PC keyboard without those. (How am I supposed to hit Ctrl-Break or Win-Break otherwise?) Strictly speaking, there is no Break key in the same sense that there is no SysRq key—there are only special Break and SysRq scancodes that AT and PS/2 keyboards send instead of Pause and Print Screen when Ctrl or Alt respectively is depressed (thus the combined labels), while USB keyboards don’t even have those, they just send normal modifier sequences. But I don’t think that’s what you had in mind :)
- sneak 4y ago
- foone 4y agoIt was deleted because it was posted here.
- NateEag 4y ago
- sjs382 4y ago
- LawTalkingGuy 4y ago
- irskep 4y agoSome people dislike interacting with the HN community for one reason or another. I imagine that's the case here. This person definitely isn't the only one. Getting a post or tweet picked up by a large community who doesn't see your stuff regularly can be a lot more stressful than speaking directly to your audience (in this case, direct Twitter followers) who have a lot more context on your work.
- CaliforniaKarl 4y agoIn this case, there’s no need to imagine. Their latest Tweet has the answer.
- TaylorAlexander 4y agoAs I and others have previously pointed out [1] foone uses they/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. 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! [1] https://news.ycombinator.com/item?id=32978438 https://news.ycombinator.com/item?id=32978438
- tbodt 4y agoI did a quick search on the comments page for "he"+"him" and found nothing referring to foone, and was about to congratulate HN for getting it right, and then thought to scroll to the bottom of the page and found a dozen dead/autocollapsed comments, most including the wrong pronouns. At least they're where they belong.
- deleted 4y ago[deleted]
- throwawayallday 4y ago
- endianswap 4y ago> no one is getting dehumanized [citation needed]
- camdenlock 4y ago
- neonate 4y agohttps://web.archive.org/web/20221017155814/https://twitter.com/Foone/status/1581643197427523584 https://web.archive.org/web/20221017155814/https://twitter.c... https://archive.ph/cToUl https://archive.ph/cToUl
- ricardobeat 4y ago
- freeqaz 4y ago"This Tweet has been deleted" -- does anybody have a mirror? Maybe @dang can update the main link to that.
- bombcar 4y agohttps://threadreaderapp.com/thread/1581643415850098688.html https://threadreaderapp.com/thread/1581643415850098688.html https://archive.ph/cToUl https://archive.ph/cToUl but foone doesn't like the orange site so we probably shouldn't link (another advantage to running your own site, you can make refers you don't like see goats) https://threadreaderapp.com/thread/1582089029096382464.html https://threadreaderapp.com/thread/1582089029096382464.html
- xani_ 4y ago
- andrewflnr 4y agoSeems they're tired of people in HN threads misgendering them, and have already tried diplomatic solutions. You can find it if you go straight to their profile. I honestly haven't seen anything like that in this thread, but maybe I'm not looking hard enough...
- xani_ 4y ago
- deworms 4y ago
- dang 4y agoYou've been using HN repeatedly for ideological battle. We ban accounts that do that, so please stop doing that. It's not what this site is for, and it destroys what it is for. https://news.ycombinator.com/newsguidelines.html https://news.ycombinator.com/newsguidelines.html
- tightlips 4y ago
- gyropop 4y ago
- gyropop 4y ago
- gyropop 4y ago
- skeletonjelly 4y agoWonder why it was deleted
- neonate 4y agohttps://news.ycombinator.com/item?id=33238679 https://news.ycombinator.com/item?id=33238679
- baxtr 4y agoThe tweet has been removed?
- neonate 4y agohttps://threadreaderapp.com/thread/1581643415850098688.html https://threadreaderapp.com/thread/1581643415850098688.html
- foobiekr 4y agoso many dark patterns "click here to download PDF" -> "log in to download PDF" -> [ unbelievable, privacy-eviscerating Twitter permissions, email ] --email--> You're almost there, click the emailed link to download the PDF! --click link--> you must go premium to download the PDF! And then no less than two additional "Your PDF is ready!" emails which also redirect to the "go premium" page.
- cestith 4y agoFoone has asked repeatedly that HN not accept links to their threads. They've taken to deleting tweet threads that make it here.
- paulwilsondev 4y ago[flagged]
- taf2 4y agoThis tweet has been deleted... I should have checked sooner, had too much trust that it'd still be working... I feel like there is a joke in there somewhere
- chris_wot 4y agoTweet was deleted?
- deleted 4y ago[deleted]
- pmarreck 4y agothe tweet was deleted :/
- deleted 4y ago[deleted]
- xani_ 4y ago
- dang 4y agoYou posted three flamebait comments to this thread alone. We ban accounts that post like that. No more of this, please. https://news.ycombinator.com/newsguidelines.html https://news.ycombinator.com/newsguidelines.html
- lordnacho 4y agoSame 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'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's more pain but also more learning. Also when does a Factorio system ever work? There's permanently a pressure for it to do more, stuff stuck on the wrong belts, not enough of some input...
- georgyo 4y ago> Also when does a Factorio system ever work? There's permanently a pressure for it to do more, stuff stuck on the wrong belts, not enough of some input... Sounds like a growing SaaS company.
- roflyear 4y agoI think this is the classic "when it is working well, no one notices"
- nostrademons 4y agoIf you use a calculator and then carefully design out the logistics & geometry of your factory, you can build stuff that basically "just works" once you iron out the missing inserters & power poles. You get bottlenecks when you focus on one product at a time instead of looking at how the system as a whole functions.
- potatototoo99 4y agoWhat does it have to do with Factorio?
- deleted 4y ago[deleted]
- Tomte 4y agoYou mean apart from the Factorio screenshots and the Factorio gameplay specifics? The thread's start is here, btw: https://mobile.twitter.com/Foone/status/1581643197427523584 https://mobile.twitter.com/Foone/status/1581643197427523584
- tslater2006 4y agoThe linked tweet is part of a larger thread which details an issue with how they set up transmitters in factorio which led to the destruction of the entire base. The thread then pivots to how it applies to other areas.
- potatototoo99 4y agoAh thank you, that makes sense now. I'm not too used to how Twitter is organized.
- tiborsaas 4y agoOh cool, a random tweet from the middle of a twitter rant. Unleash the chaos monkey's just in case, not to get too confident.
- carry_bit 4y agoFull thread unroll: https://threadreaderapp.com/thread/1581643197427523584.html https://threadreaderapp.com/thread/1581643197427523584.html
- Tao3300 4y ago
- Karellen 4y agoOne reply tweet notes "a complex system always operates in a failure state", but to find more discussion on this point it's worth noting that this is a restatement of: > "The Fundamental Failure-Mode Theorem (F.F.T.): complex systems usually operate in a failure mode." -- John Gall, General Systemantics (aka Systemantics, aka The Systems Bible), 1977 < https://en.wikipedia.org/wiki/Systemantics https://en.wikipedia.org/wiki/Systemantics > Searching for "fundamental failure mode theorem" will provide interesting further insights on this.
- TeeMassive 4y agoThe number of interactions of a system with n components increases according to O(n^2). The probability of an interaction not going wrong decreases exponentially with each interaction.
- rdoherty 4y agoAlso related: How Complex Systems Fail https://how.complexsystems.fail/ https://how.complexsystems.fail/
- msluyter 4y agoThank you for introducing me to this rabbit hole. Here's a NYTimes article from 1976 -- note, many issues with the OCR, but still interesting and entertainingly written: https://www.nytimes.com/1976/12/26/archives/why-nothing-works-the-way-its-supposed-to-systemanantics.html https://www.nytimes.com/1976/12/26/archives/why-nothing-work...
- selestify 4y agoSame author wrote an entire book, The Systems Bible, on the topic.
- MichaelZuo 4y ago'complex systems usually operate in a failure mode' has a somewhat different meaning from "complex system always operates in a failure state". They usually operate in a failure mode because it's easy to be deceived by the superficial appearances of complex systems, thus it seems like a big bother to drill down the layers, until a failure has occurred. As excellently demonstrated by this 'Factorio' player.
- stavros 4y agoHmm, what does he mean "I woke up the next day"? Did he leave Factorio running, or did it get an online component while I wasn't looking?
- SmooL 4y agoProbably left it running? I've definitely left my factory to idle to build up resources while I'm gone, when I'm playing on peaceful mode. You could also run headless version of the game on a server and just connect to it for the same effect. Remember - Factorio is just an idle game with extra steps.
- stavros 4y agoAh, makes sense, thanks.
- alephaleph 4y ago*they, this is why they hate their tweets being posted here
- LawTalkingGuy 4y ago
- stavros 4y ago
- ranger207 4y agoIt's done by some people intentionally to be offensive, and it's impossible to tell if someone doing it is doing it as an insult or out of ignorance. And, believe it or not, there's enough people out there that do it intentionally that assuming ignorance would be incorrect more often than it'd be correct
- horsawlarway 4y ago
- tksiden 4y agoThey don't teach that in college.
- deleted 4y ago[deleted]
- shadowgovt 4y agoThere are two good lessons here: 1) Robust system design involves identifying the parts of your system that are mission-critical and always monitoring them. NASA missions have great automation and a 24/7-staffed mission control. 2) If a system failure can 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.
- xani_ 4y ago> 1) Robust system design involves identifying the parts of your system that are mission-critical and always monitoring them. NASA missions have great automation and a 24/7-staffed mission control. You should alert on critical parts but you should monitor anything and everything you can. It might be critical in finding out why system broke later on. Easier said than done for hardware but easy for software
- pjmorris 4y ago> Warehouses receiving orbital payloads should probably be nice and far away from the base you care about. As mentioned elsewhere in the thread, shades of 'The Moon is a Harsh Mistress' by Heinlein. All your base are belong to dust.
- shadowgovt 4y agoSorry, having never read that story (nor played Factorio since it went interplanetary) I don't understand the reference.
- piaste 4y agoA more narrow lesson: this is why all SQL statements involving NULL are always false. > in any case, losing power means the transmitter stops transmitting. > and here's the fun part: your circuit which controls that inserter is set to insert "if [ICE] < 8000" > and GETTING NO SIGNAL AT ALL counts the same to it as ICE=0. > 0 is < 8000.
- deleted 4y ago[deleted]
- sidpatil 4y agoIn industrial automation, one old and popular analog signal scheme is the 4–20 mA current loop [1]. Why 4mA instead of 0mA? Because that way, you know 0mA specifically indicates a fault caused by a failed sensor, break in the line, etc. [1] https://en.wikipedia.org/wiki/Current_loop https://en.wikipedia.org/wiki/Current_loop
- branko_d 4y agoA CHECK constraint treats NULL as true.
- positr0n 4y agoWhat drama with the Factorio devs is he talking about at the end (and namesearchers?.. I don't get Twitter sometimes) I've never heard anyone say anything about the Factorio devs except praise their productivity and professionalism.
- mplewis 4y agoKovarex promoted Uncle Bob in the past, who has generated a drama vortex of his own.
- shp0ngle 4y agoOne dev said in one post that they like Uncle Bob. I think that’s it.
- adhoc_slime 4y agoThe Uncle Bob from clean code(er)?|architecture?
- unsafecast 4y agoYes.
- teraflop 4y agoWell, that and a number of follow-up comments from the same developer, such as this one: https://www.reddit.com/r/factorio/comments/o2ly6f/friday_facts_366_the_only_way_to_go_fast_is_to_go/h28beya/ https://www.reddit.com/r/factorio/comments/o2ly6f/friday_fac... A lot of people have (understandably) lost patience with the "just asking questions" style of rhetoric, and don't appreciate others making excuses for it.
- snapcaster 4y agoGreat 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
- mshenfield 4y agoAlso a good reminder why exceptions and optionals exist. Bonkers that "I didn't get a response" defaults to 0.
- a_shovel 4y agoIt's not that "no response" defaults to 0, it's that in Factorio's circuit network, "no signal" and "signal with a value of 0" are exactly synonymous.
- 1-more 4y agoOne thing I hated about working with Go. POSTed JSON bodies missing a field could not be distinguished from those where that field pointed was present and pointed to the empty value for that (an empty array or string or something). This may be entirely work-around-able and simply a failure of how that job worked, but it was a whole thing.
- Laremere 4y agoIn this case, instead of, say, an int, you could have the field be a pointer to an int.
- manicennui 4y agoAnd now you've traded one problem for another.
- dekhn 4y agoMy favorite is, after fixing a system in prod, asking "how did that possibly work in the first place?"
- ziml77 4y agoI've totally asked that many, many times. But sometimes the answer is actually quite simple: no one was ever paying attention to the outputs of that piece of the system.
- dekhn 4y agowell, I'm the sort of person who digs around logs of ostensibly working systems just to find problems, which has been very useful in identifying long-tail problems (like, 1% of your network cables are blipping but the application just runs slower instead of failing).
- raldi 4y agoTests that output booleans (pass/fail) are an antipattern. Tests and their dashboards must distinguish “the testing system worked and the test failed” from “the testing system failed”.
- danuker 4y agoMost testing frameworks distinguish between failure (aka assertion violation) and error (invalid or nonexistent test result). But there may be mistakes writing the tests (false success result). To check the tests, I break the implementation, then check that they fail.
- sgtnoodle 4y agoI dunno, I think regression tests are inherently boolean. Either it passed or it didn't. The code path that the system takes to get to a green light or not is arbitrary. If you start using an enum to return the result of the test, folk tend to add more and more enums over time until it's overly complicated. Processes return an 8 bit integer, but 99% of the time all anyone checks is whether it was 0. There's certainly practical benefit to being able to quickly triage a test failure. Tests that only output booleans are annoying. When there is a failure, it's helpful to have some out-of-band information about why it failed. That's typically provided via console output, but you can make whatever complex logging system you want.
- raldi 4y agoIf a regression test fails, you alert the programmer who kicked it off and maybe roll back the checkin. If the regression testing system has an error while running a test, you page the oncall SRE and maybe try to rerun it. You certainly don’t roll back any checkins.
- elteto 4y agoWow, 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!
- hardolaf 4y agoFor most of these things, you just make a blueprint and stamp it down repeatedly.
- Kiro 4y agoThis is a mod that seems extremely boring and tedious. The base game is not like this.
- thelopa 4y agoIt definitely can be. I don’t think it needs to be as long as it is. With 5 space science categories, each with 4 tiers, and each tier requiring 4 unique data cards with one common ingredient and one catalog recipe for the tier, one insight per category, there are ~125 intermediate products to manufacture that don’t really pose any new interesting logistical challenges. For example, once you set up iridium processing, the 20 intermediates you need to manufacture to finish all 4 tiers of materials science are pretty straightforward. Sure, dealing with the scrap generated in the process of making those intermediaries is a logistical challenge that becomes harder the deeper you progress, but they probably could have presented that logistic challenge without requiring you to set up production for 25 separate products — most of which are ONLY useful for making materials science packs. I have really enjoyed the puzzles it has posed in the form of circuit network logic for automating rockets and spaceships. The issue described in TFA is just the tip of the iceberg. My factory has deadlocked in a number of interesting and unique ways over the course of the 600 hours I’ve played thus far. I’ve enjoyed the mod. It has some very interesting ideas and challenges. It’s a shame those puzzles are hidden behind so much slog.
- rcxdude 4y agoSpace exploration is a mod which has extra automation challenges compared to the base game, and it's probably got some of the most interesting ones compared to other mods which tend to just have the same basic concepts as the base game, just with many more steps piled on, which are probably more on the tedious side (pyanodons mods being the most infamous in this regard).
- alexfromapex 4y agoI think "never" is too polarized, maybe "be skeptical of" is a better suggestion.
- KMnO4 4y ago
- eenell 4y ago
- deleted 4y ago[deleted]
- yottabyte47 4y agofoone's pronouns are they/them
- deleted 4y ago[deleted]
- grimmn 4y ago
- csours 4y agoIf your code has side effects, it only ever seems to be working. ---- > the newbie says "aww, why isn't it working?" > the intermediate says "yay, it's working!" > the expert goes "hmm, why is it working?" I've also seen this as My thing isn'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's still not working. Where K is a "better" 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.
- bee_rider 4y agoWorking with beginning programming students, "Yay, now we have an error message that makes sense" has become my catchphrase.
- physicles 4y agoOr its close cousin: "Yay, now we have a different error message!" When something is totally broken and you have no idea why, this is a promising signpost.
- csours 4y ago"Read the error message, no wait don't close that go back" when helping people is a definite feeling. Take a deep breath. Take off your headset. Go outside. Never look at a computer again. Start driving a bulldozer. Life is good.
- macintux 4y agoI’ve lamented here before, but the number of technical people who absolutely freeze up at the sight of an error message is daunting. Being able to interpret errors correctly is a huge step up in this industry; to me it feels like table stakes, but clearly isn’t.
- Akronymus 4y agoUsually error messages are somewhat nice, What I have problems with at work is "error 395" and such. Where the documentation for the error codes can't be found easily. (I hate progress openedge)
- 0xbadcafebee 4y ago
- city17 4y agoWas thinking the same. Once you exceed like 5 tweets in a thread, it becomes a small article and you would've been better off just writing an article in the first place. If you check the thread reader below you can see just how unstructured and incoherent it is compared with a simple article.
- fknorangesite 4y agoIf you're genuinely curious: > I have ADHD: it makes writing blogs hard but Twitter easy. So it gets quickly tiring that every time I'm posted there [to HN] that the comments immediately go "why isn't this a blog? Twitter is a bad site for this kind of writing and I hate it blarg" https://twitter.com/foone/status/1440695857699962893 https://twitter.com/foone/status/1440695857699962893 This exact comment of yours is a prime example of why foone hates it when their tweets are posted here.
- conradfr 4y agoHow does that make sense? You write the same amount of text in the end.
- ranger207 4y agoThe dopamine hit from click the send button can help overcome the ADHD tendency to wander off task. Plus, even if you have half an essay posted to Twitter and still get bored, it's much more difficult to just leave it halfway finished than to leave an unposted blog post in your drafts. And besides that, I'm really not sure why people get so upset at people putting content into the world. Wasn't the point of the internet to make it easier for people to share their knowledge with the world?
- 4y ago
- Amorymeltzer 4y agoJust want to note that the novel noted in the first post, The Moon Is A Harsh Mistress, is a great read. I think I read it after seeing it recommended in Mary Robinette Kowal's Lady Astronaut series, but it's a nice balance of technical and science fiction with politics, almost like a condensed version of KSR's Mars Trilogy. It's mostly (not entirely) devoid of the more typical Heinlein sexism/objectification.
- atq2119 4y agoIt's been a long way since I've read it, and it certainly had an interesting theme of politics and oppression. What bugged me was the description of the resistance movement: it pretended to be cleverly divided into cells, but ultimately the computer knew everything so it was pretty questionable security theater, and it didn't seem the book was particularly self-aware of that fact.
- bb101 4y agoIt seemed to me to be a handbook on how to conduct a revolution. Much as Heinlein's Stranger from a Strange Land was a handbook on how to start a religion (hello Scientologists).
- jawadch93 4y ago[dead]
- dtjohnnymonkey 4y agoThis is a very dramatic illustration of one of the benefits of a pull vs push-based architecture.
- encoderer 4y agoI’ve built a pretty successful software monitoring business off of this basic premise.
- joshstrange 4y agoWhile 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 "issues" in Factorio. While they can have disastrous effects, I often really enjoy finding the core problem and finding a solution to make it "fail-safe". 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/mid/late game malls/blueprints sort of ruined the game for me. Min/maxing is fine by myself but once I'm "competing" against the internet or feel obligated to find the most efficient/best green/red/blue circuit factory, or science packs, etc it really ruins the game for me and makes it feel more like a job. 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'm "allowed" 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's mods and a number of others, yes that was stupid for my first playthrough but damn it was fun), I'd love to recapture that.
- jamiepenney 4y agoI found I enjoyed the process of putting together a mall from a blueprint, but leaving the rest of the factory up to me. I find the logistics and planning part of factorio more interesting than the "build up all the parts you need to make the factory" part.
- aaronscott 4y agoI want to reinforce your plan. Somehow I played factorio for a few hundred hours before finding online communities and blueprints. It was a wonderful experience of discovery and exploration. I came up with a few "novel" designs during that time that I'm still proud of. Once comparing my own work to the best online it took a lot of joy out of the game. But I found that the memory was short lived, once I cut myself off from those online communities it was easy to fall back into the "let me pull out my sketchbook and solve this problem" mindset. I think half the fun is that design process. I'm well north of 1000 hours now, and still discovering new ways to play and solve problems. I've come full circle and now build spaghetti bases because they are so visually fun.
- deleted 4y ago[deleted]
- LastTrain 4y ago[flagged]
- vaidhy 4y agoI think that should have gone over my head as I do not remember anything in the book to be libertarian. Maybe the final part where they are trying to set up the lunar government, where the libertarian stuff fails in practice?
- dang 4y ago"Eschew flamebait. Avoid generic tangents." https://news.ycombinator.com/newsguidelines.html https://news.ycombinator.com/newsguidelines.html
- usrbinenv 4y agoA 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.
- dang 4y agoWe detached this subthread from https://news.ycombinator.com/item?id=33235298 https://news.ycombinator.com/item?id=33235298.
- MBCook 4y agoI’ve never seen a white traffic light, but pedestrian crossing lights are often white/red still.
- wongarsu 4y agoAre you suggesting I'm doing worse on Google Captchas because I consider pedestrian crossing lights as a form of traffic lights but Americans don't?
- smolder 4y agoPossibly. I think people in the US strongly associate "traffic" with cars and don't generally think of the crosswalk indicators as "traffic lights".
- MBCook 4y agoAs an American I totally agree with that. I would never think to include the cross walk lights. If you asked for “signal lights” I could see it. But not traffic.
- andirk 4y agoBest choices to pick on captcha are not what you think is pictured but what you think most people think is pictured.
- matchagaucho 4y agoNot familiar with this particular game. But in real-world systems design the default should be (?) boolean deliver = false; while( polling ){ deliver = readyToReceive(); if( deliver ) { send(); } }
- outworlder 4y agoIf 'readyToReceive()' returns a bad value you could have the same problem. Imagine it is an async external call, it fails, and whoever wrote the error handling did "return 'error'". Now you have the same problem.
- ben_w 4y agoReminds me of Jurassic Park (book, I think?); nobody realised that dinosaurs were loose and breeding, because the system was doing: if dinosaurs < expected { alert("escaped dino!"); } and nobody anticipated dinosaurs > expected
- dudeinjapan 4y ago"Life, uh, finds a way." Dr. Ian Malcolm anticipated it, but the park science lackeys dismissed his idea.
- smugkot 4y agoIf I remember correctly, Malcom did nothing but harp endlessly about how the park was doomed to failure due to various vague non-sequiturs. All we know is that he predicted fence integrity would fail somehow. We don't know what else he predicted, maybe he just got that one right by chance. We don't know if Hammond changed the park after the paper to invalidate Malcom's reasons for predicting fence integrity failure; if he had done this, Malcom would be wrong despite having predicted fence integrity failure. We sent people to the fucking Moon _and_ brought them back home. I'll be damned if humans can't solve Jurassic Park.
- TillE 4y agoMalcolm was an author surrogate for the purpose of going on weird abstract rants which were mostly nonsensical even before they injected him full of morphine. I vastly prefer reading books in general, but with Jurassic Park they really cleaned up a lot of rough edges in the movie. The kids are way less annoying too.
- dudeinjapan 4y agoI read the book as kid after seeing the movie. I don't remember it so well, but one scene I liked in the book absent from the movie was the "compies" killing Dr. Hammond with narcotic bites.
- known 4y ago
- freedomben 4y agoWe 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 do become self-aware and take over the world, it's gonna hurt like hell.
- ezekg 4y agoSpoiler alert! (lol) I'm in the middle of reading this book and I figured this would (finally) happen next chapter. I'll be looking forward to this pivotal moment.
- 1970-01-01 4y agoIsn't the lesson NO SIGNAL != 0 More universally, 0 isn't null.
- throwawaymaths 4y agoSomeone just figured out how erlang's gen_servers work and why you should use call instead of cast unless you really know what you're doing
- spillguard 4y agoSide note, does anyone know why the author has written "F*ctorio" instead of "Factorio"?
- drewtato 4y agohttps://twitter.com/Foone/status/1581662557470806017 https://twitter.com/Foone/status/1581662557470806017
- xani_ 4y ago
- serf 4y agothe problem is that while it also breaks search for the inflammatory assholes that want to ruin everyone's day, it also breaks search for everyone else. it's a strange problem, to be sure. "I want to speak publicly about something in the market-place square, but in such a way as to avoid the nay-sayers and rabble-rousers.' -- this seems like a problem that was fixed in ye days' of olde by forming secret collectives and 'meeting down by the docks', I guess that's akin to what federated services offer? note : I find federated social networks to have the same flaw, it's my belief that good things should be archived and catalogued for the public good -- so I have a hard time getting behind the idea of federated spaces that are protected from archival efforts -- but I do acknowledge that curation of a group is one of the best ways to reduce harassment.
- fknorangesite 4y ago> it also breaks search for everyone else. Yes, and that sucks. But you can blame the assholes for that; they're the ones who ruin it for everyone else.
- noduerme 4y ago
- 4y ago
- lawrenceyan 4y agoIn 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/accidents per mile if actually enabled at scale. Waymo, Cruise, Aurora, and others are doing it the right way.
- Jupe 4y agoWell, I was driving home yesterday, and the integrated navigation map of my car was randomly rotating 180 degrees every few moments, just long enough to be noticeable on-screen, but then flipped back. I have no idea why (something in the compass integrated in the car? was GPS being hacked?). But the thought I kept having was "If I had a self-driving car, what would be the impact of this?". All I could think of was horrendous disasters for me and the other cars around me on the road.
- a_t48 4y agoA proper self driving car will have more signals for orientation than just the compass.
- lawrenceyan 4y agoExactly, sensor fusion is so important.
- michaelmior 4y agoWhenever I write a non-trivial amount of code that appears to work the first time, I'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.
- mlazos 4y agoIt’s really interesting how factorio problems are pretty much the same as multiprocessing/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.
- righttoolforjob 4y agoSemaphore, Dijkstra, around 1962-1963
- alexchamberlain 4y agoThat is the Token Bucket [1] algorithm. Variations can easily be coded to be distributed (use Redis), or account for multiple receivers etc. [1]: https://en.m.wikipedia.org/wiki/Token_bucket https://en.m.wikipedia.org/wiki/Token_bucket
- Darkphibre 4y agoReminds me a lot about the fascinating read of Knight Capital, and the $440M-in-28-min bug that lost them 75% of their equity. Reminds me a lot about Knight Capital bug that cost them $440M in 28 min. > Rogue orders seemed originated from the new RLP router code, but no one could pinpoint the bug.... they reverted to last-stable.... and even more trades executed than before. https://www.henricodolfing.com/2019/06/project-failure-case-study-knight-capital.html https://www.henricodolfing.com/2019/06/project-failure-case-... I remember a PDF that went into even greater detail, was a very good read.
- ncmncm 4y ago
- civilized 4y agoStatisticians learned long ago that "missing" needs to be treated special. It should be either an entirely separate signal or a "sentinel value" riding on the existing signal that everyone knows and couldn't possibly be a normal operation value. Which is why sentinel values are usually a huge bunch of 9's or the maximum possible value of the field or something. Interesting that the sentinel value is zero in this case. In data analysis that's usually a terrible sentinel value, but here it's the most practical one.
- Arainach 4y agoTweet seems to be deleted now. A brief summary of what it was: * In Factorio (game) you can have space stations that send supplies to your ground base * If the supplies are not caught, then they cause damage to your base * To avoid sending supplies that cannot be caught, you can use logic controls * A common approach is to have the station say "if (ground supply < X) send" * This fails if the ground supply loses power, as no signal is interpreted as 0 and 0 < X * Thus, the system will appear to work until your ground base loses power, at which point it will be destroyed * A better system is to have the ground base use logic to say "if supply < X send signal" and the station to say "if signal received, send". This way, a power failure fails safe instead of fails active. With a fun callout to https://en.wikipedia.org/wiki/The_Moon_Is_a_Harsh_Mistress https://en.wikipedia.org/wiki/The_Moon_Is_a_Harsh_Mistress
- xani_ 4y agoThat's also easier way to design it in Factorio. When I was playing with Space exploration mod that's precisely what I did, the base sent "shopping list" and the provider sent stuff on that shopping list
- sharno 4y agoThis 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
- sharno 4y agoThreadreaderapp of the tweets (still live): https://threadreaderapp.com/thread/1581643415850098688.html https://threadreaderapp.com/thread/1581643415850098688.html