385 karma · joined March 24, 2016
And yeah I included that last part in the estimate for seeing up to 50, otherwise the projection would be of course up to half of all of them.
Someone else commented something that puts me at more ease but it is worrying at first glance.
I get this comment is very subjective but surely I'm not the only one thinking it's a bit of an eyesore
If I give tools and a robbery checklist to someone and tell them to rob a bank, surely I'm still able to be charged and probably for a higher crime right? At least that's how these charges seem to me. I guess I don't see how it's invalid.
I do however see how this could set a dangerous precedent should the courts allow loose interpretation of the outcome to mean "reporting leaked information is illegal"
Boeing is now in unsaveable waters for this situation and all doubt is being removed. I still am upset that any airline was able to in good faith say "nah we don't want all the safety options not worth it" but here it doesn't seem it would have helped much the more data comes out.
Commands can go through message busses and be managed easily or it could just be a sequence of async requests, but regardless of what drives commands and events at that point you should have a very solid CQRS architecture in mind. What should be acknowledged to the client is that the command was published and that's it. The problem is of course eventual consistency but it's a trade-off for being able to handle a huge amount of load by scaling separately both COMMAND handlers which perform data modification, and EVENT handlers that allow the side effects that must occur.
In a typical web app setup I would define a request ID at time of client request. The request creates a COMMAND which carries with it a request ID as well as a command ID. This results in an action and then the EVENT is published with the request ID, command ID, and event ID.
To monitor you collect the data and then look at the timestamp differences to monitor lag and dropped messages. With the events, you get all the data necessary to audit what request, and subsequent command, created a system change. To audit the full data change however, and not just which request caused what change, you need to have a very well-structured event model designed for what you want to audit.
You can't guarantee when a command or subsequent event will be processed, but that's fine. That's the whole point around eventual consistency. It's a bit uncomfortable at first, but use the lag monitoring and traceability as a debug tool when needed and really it's no problem. Also just shift the client over to reading from your read-specific projections on refresh or periodically and data will eventually appear for the user. It's the reason sometimes a new order might not appear right away on your order history for instance on Amazon, and in reality it's fine 99% of the time. Never have your client wait on a result. Instead think: how can I design my application to not need to block on anything? It's doable though it is quite hard and if you've only designed synchronous systems it will feel so uncomfortable.
And remember some things should not have CQRS design, backed by a message bus or not. These will be bottlenecks but they might be necessary. The whole system you design doesn't have to stick to a single paradigm. Need transaction IDs to be strictly consistent for a checkout flow to be secure and safe? Use good old synchronous methods to do it.
Core in all of this is data design. If you design your entities, commands, or events poorly, you will suffer the consequences. You will often hear the word "idempotency" a lot in CQRS design. It's because idempotent commands are super important in preventing unintended side effects. Same with idempotent events, if possible. If you get duplicate events from a message bus, idempotency will save your arse if it's a critical part of the system. If it's something mild like an extra "addToCart" command or something, no big deal really, but imagine a duplicated "payOrder" command ;).
To summarize, I correlate output to commands and requests by ensuring there are no unknown side-effects, critical synchronous components remain synchronous, designing architecture that compliments the data (not the other way around), and ensuring that the client is designed in such a way that eventual consistency doesn't matter from the user perspective when it comes into play.
As for less speed causing more nose down moment, yeah but at the same time they weren't in a descent for that portion either, nor were they nose down (this from page 26). The data shows they were oscillating though climbing slightly while they were overspeeding. In this case it could have helped to reduce the forces at play. I think it was more that they were just busy and left thrust settings where they were from takeoff.
Edit: And remember at the end of the day, these airlines and pilots agreed to fly the plane. Even in the wake of the LionAir incident. At the end of the day, the pilots choose to fly and can say no if they aren't comfortable. And if the answer to this is that there is pressure from airlines to keep flying? We just found another major issue and danger in aviation
Edit2: should clarify actually that I agree it's a bad design. Not about the procedures being "unintuitive". If the pilots think the corrective procedures are unintuitive they shouldn't fly any 737 since stab trim systems exist on all 737s and require the same corrective procedure in runaway stab trim.
In your example, if there were adaptive cruise control, I would turn off cruise control by hitting the button. Same options are present here. However it does mean that braking or acceleration would be overriden until that happens. But the real analogy is if all drivers had to be trained that you turn off cruise control in runaway. If you don't do that, well then you will crash and it's from system failure AND improper general procedure
I could also ask, would the plane have crashed if it WASNT a max and another stab trim system failed?
It's both. We need to look at everything otherwise we will end up solving only 1 part of the issue.
Edit: To address something you mentioned about root cause (in aviation it's almost never a single root cause and I will give an example that shows such cases here). Let's look at another situation: Assume P&W designs an engine model a plane uses. The plane they are used in has in-air engine fire procedures that must be performed in order to mitigate disaster regardless of the engine model used. Now imagine the new engine design causes more engine fires. If pilots don't manage the problem appropriately when it occurs, what is the root cause? The poor engine design? Improper training from the pilot? In my opinion it's, again, both. Poor training coupled with higher chance of system issues.
A 737 first off is not a Cessna like the author mentions flying. You do not get to use direct inputs easily nor do you want to have to fight stab trim because the force on the stabilizer control surfaces is muuuch higher than those on a slower flying plane. Because of this, when the 737 came out there were designs for trim systems that can help. These systems work by adjusting the trim settings for pitch using motors (like the author mentioned). However sometimes these systems would give erroneous inputs to the trim. The system might be causing incorrect trim up or down depending on the failure. This is officially known as stabilizer trim runaway. The procedure for this has been well established as a memory item meaning all pilots of 737s must be able to correct this without referencing a checklist since it is so dangerous. And it is HARD to correct because of the aerodynamic forces on the stabilizer. You can find videos of training for it. Now they introduced MCAS. A system designed to adjust trim automatically to compensate for the shift in the moments acting on the plane due to powerplant placement, etc. This adjusts the trim as well to prevent to high of angle of attack that would allow these different moments to introduce a stall situation. So what procedure should you use if it starts giving incorrect inputs? That's right, the stab trim runaway procedures, which again should be a memory item all pilots of these 737s should know and be ready and able to execute. The differences between systems that cause it just means you are taking different systems out of the control loop. This is also why I believe the FAA said it was fine to forego full airframe certification requirements. The procedures for handling the plane just didn't change drastically enough.
Yes there was negligence on Boeing's part, but I also think it's worrying that the reports seemed to indicate that the correct procedures for runaway stab trim were not followed which could have saved lives (e.g. turning MCAS back on while dealing with runaway stab trim). Also something to note is the plane in Ethiopian airways' crash was flying with "unusually high thrust settings". Remember the aerodynamic forces that make runaway stab trim a bitch to deal with? Well those forces get stronger with more speed. People are quick to point the finger at Boeing and surely they ARE at fault in some ways, but what's worrying to me is that there are pilots that are being trained that cannot perform the proper procedures that have been known since way before MCAS. Whats more is that the motors for trim from MCAS is limited to move at a rate of 2.5 degrees over 10 seconds with a pause of 5 seconds before the next adjustment. This is definitely slow enough to give pilots time to catch the runaway trim, cutout the stab trim and regain control. Anyway I am just surprised that the engineer, working for Boeing, couldn't be arsed to also give this info which allows an alternative perspective. It is bad that stab trim runaway is happening more with this system and Boeing acknowledged it and pushed patches. It is worse imo that pilots are forgetting or just not being trained on how to recognize and correct for stab trim.
Edit: Any details or numbers about the systems I got wrong please post a comment so I can correct it.
In comparison to LA where I recently moved back: I work 40 hours a week, barring any emergency that may come up. Though LA isn't really a tech hub so maybe it's not a fair comparison.
In both places expectations are unwritten, so to speak, as laws prevent abuse of labor. However in either case you are pretty well compensated for overtime.
Not to mention many kommun areas' snow are managed by its citizens (t.ex. the areas southwest of Farsta Strand). It's not uncommon that areas don't get plowed at all and people just chance driving it.
Blatant exaggeration of limited cases where this is true imo.
I can't say if it works to reduce congestion but it does even the field and it certainly made me want to not drive there.
However the thing I think that is more unique to Sweden and drives these kind of nice benefits is that it's really hard to get rid of an employee. Employees are protected so much with rules and regulations that even if you get let go you have a required three month grace period unless otherwise negotiated with the employee.
It's not uncommon I would say to see tech workers "fired" but then still on the payroll for an extra 2 months while they are arbetsbefriad (paid leave)
Pretty nice if you know how to game the system
It can be argued and should because the arguments laid out in this discussion set precedence that acts as a more concrete requirement that sits on top of GDPR. Basically imo this could be a very interesting set of arguments that mean changes to a huge amount of websites.
Edit: I should say that this approach was deemed acceptable by Swedens dataskyddsmyndighet which is the government regulatory agency and is a common approach in many sites.
It's interesting that this wasn't brought up to my employer in sweden. We had default data collection settings checked and in a separate view accessible by a similar "more options" toggle and it was deemed okay as long as we had a visible blanket opt-in checkbox and a link explaining the settings, how we use data, and how to adjust. Our regulators said it would be enough as the goal of GDPR is to make every use of data reasonably known, adjustable, and revokation with good faith toward the user. Yet here it seems France is arguing that it is about immediate showing of all settings to the user and that every website should tell in the user's face about every single configuration of data usage. It's possibly a good approach, idk, I feel it is a bit too annoying of a precedent and that they are nitpicking a bit.
I can't wait for this to fully play out. Regarding documentation and informing the user, I disagree with their findings entirely about the frustration of finding data usage info as all of Frances concerns were lost on me upon visiting https://safety.google/privacy/data/. To me it seems that google has made a good faith effort at least in documentation.
I'd also argue it's how our brains work. Many times as we come to a decision we are going off of confidence, not true correctness. I'm the case of declaring suspicious person's, well by definition they are suspects based on confidence, not by truth. Even in court we determine verdicts based on human probabilistic confidence that comes from the evidence.
If it wasn't the coding question interviews that warranted complaint it would be the personality interviews. I've seen plenty of people dropped because while they were smart, they were shit at working with other people. So yeah, hiring is a series of filters. That's life imo.