This is quite common prey animal behavior. Larger predators have a harder time adapting to rapid turns made just as the jaws/claws are about to snap shut.
In general: yes. But I’ve certainly had to use swathes of screwdrivers that are worse at being screwdrivers than my Swiss army knife is. Same I believe applies here: there’s a relation, but it’s nuanced. The same screwdriver is a better screwdriver when carried in a hand than in a toolbox full of other high-quality tools, but worse for everything else.
IMO at least on PC, BFV was occasionally a really good shooter, but it was a constant back and forth between updates that ruined the entire game and new swathes of cheaters on the latest exploit not caught by the anti-cheat, until eventually they stopped even trying to stop them.
It’s not necessarily punishment, e.g. leaving an abusive partner is in most cases about self-preservation, and if intended as a punishment, very ineffective at that. That said, I think a lot of people who end up at the receiving end of it do tend to try to spin it as a punishment due to self-centered thinking and in order to frame themselves as the victim.
What does db.safe do though? How does it know what is the safe way of escaping at that point of the SQL? It will have no idea whether it’s going inside a string, if it’s in a field name position, denotes a value or a table name.
To illustrate the question further, consider a similar html.safe: f"<a href={html.safe(url)}>{html.safe(desc)</a>" - the two calls to html.safe require completely different escaping, how does it know which to apply?
Assuming a driving culture where other people won’t instantly insert themselves into the empty space in between, yes, it’s the exact same speed. I’d very much like that.
That’s assuming the divested Chrome would then proceed to lose its gigantic market share and thus the mind-boggling proceeds from defaulting to Google as the search engine. They might even be able to afford a bigger development team, if need be.
But what makes you think the DoJ allow Google to continue paying Chrome to have Google as default? Google is already not allowed to pay Apple to be default.
Having teams is exactly the wrong reason to have micro services, having endpoints with different traffic patterns and resource/scaling constraints is exactly the correct reason.
I find an odd overlap between people who get incredulous about function decomposition and who think cracking open a thesaurus as an architectural exercise is stupid.
I have no idea what that’s about, but I think it has something to do with “white-knuckling”.
People name things and then miss boundary conditions that matter and would have been implied by finding a more accurate synonym. And also supplementary features that the better name suggests.
I have definitely been guilty of naming functions foo_thenBarSometimes. I wince whenever I write them, but I've never really regretted seeing them later on, even after years. So sometimes it really is a perfectly good name. Sometimes there are two related functions that are often called together and don't have a succinct label for the combined operation.
It likely has some higher-level meaning other than just do foo, bar, qoo.
For example if you are calling functions "openDishwasher", "loadDishwasher", "closeDishwasher", "startDishwasher", your function should be called "washDishes". Not always that straightforward, but I believe in 95% it's not difficult to put a name on that. For the rest 5% you need to get creative, or maybe you realize that you didn't group the function calls well enough to have an atomic meaning.
Yeah, I agree in spirit but I think the answer is more ”it depends” than something where you should feel bad or something if you deviate from it. If washDishes also sends a bunch of metrics/diagnostics or updates a database of your favorite dish washing programs somewhere inside it, that’s probably fine. Otherwise you push the path of least resistance to just be vague instead, then you get a codebase full of functions with names like handle or process.
Some function can be named generally but the name is specific when concatenated with the module name and/or the package name. `load` is generic, but `app.config.load` is more descriptive.