Notices by mikerotch (mikerotch@poa.st)
-
@JoshuaSlocum @EvilSandmich @philmchawk @judgedread There's a reason the Homestead Act handed out land in 160 acre increments: that's about how much it takes feed a family and have a bit of profit left over using the technology that was available at the time.
-
@deprecated_ii When Boeing designed the 777 the average engineer working on it had 20 years of experience.
As of now they don't have anybody with 20 years of experience because they drove them all out of the company to make the stock look better.
I don't have a degree in math but it sounds to me like it would take a minimum of twenty years to recover their previous competence, and only then if the people with the same competence and conscientiousness are available to be hired and their HR staff is willing to employ and retain them.
Also somebody would need to be willing to fund the operations of the company for two decades while everybody was getting back up to speed.
Even if the federal government stepped in to make that happen, I don't see any way the money wouldn't all just get stolen long before the goal was achieved.
-
@VaxxSabbath @deprecated_ii If you think this is about how long it takes to build a plane you're missing the point.
It's about how long it takes to train a person who is able to build planes.
You can not will those kinds of people into existence with money. Acquiring expertise is a long process that can not be rushed and whose result is not readily transferable other than via the same means it was generated originally.
Maintaining expertise is a continuous flow process and Boeing (and many other companies) have interrupted it. They got short term gains out of doing so in exchange for catastrophic consequences.
-
@n3f_X All mammalian predators follow the same basic heuristic:
1. If it's running away it's prey.
2. If it's running at me it's a threat.
Predators can not afford to be injured and lose the ability to chase down and subdue prey so they are generally very risk-averse when it comes to threats.
As a general rule for any predator you outweigh your best bet is to charge at it, not away from it, because the algorithm they all follow is to assume anything bigger that acts like it can take you out is probably correct.
-
@troubledturtle @n3f_X @Captain80s You don't need to be the smartest or the fastest: it's merely not being the dumbest or slowest is enough.
-
@gentoobro @matrix @jeffcliff > There's not a lot of power
That reminds me of this meme I say years ago about "how to write a genetic function in Go" which was just manipulating an text editor to type out half a dozen versions of the same function at once while slightly changing the argument types.
-
@gentoobro @matrix It is possible. Some people write C++ on embedded platforms without an operating system where all dynamic allocation is forbidden and they usually do avoid the standard library entirely.
C++17 made that a lot easier because now you can construct a standard container with a PMR allocator which only uses allocates stack memory.
-
@gentoobro @matrix @jeffcliff Golang was the first of the languages that was openly frantic about making programming "simpler" which is code for, "oh shit, we ran out of high IQ developers. wtf do we do now?"
-
@jeffcliff @matrix @gentoobro That's another trend which is not entirely unrelated. I think Apple beat them to the punch though with their mandatory Developer Mark of the Beast in order to distribute software on their platform.
-
@gentoobro @matrix > I'm already undermining malloc et. al. with globally included macros.
I've got polymorphic allocators so I can customize memory allocation almost for free.
-
@gentoobro @jeffcliff @matrix All new language design for the last decade and a half has been a desperate attempt to lower the IQ requirements for writing mobile apps that harvest user data and display ads.
They are willing to sacrifice almost all use cases as long as you can still execute javascript and make https requests.
-
@gentoobro @matrix Actually there is one exception: I do use "using namespace std::literals" because that's the one and only way to get access to those symbols.
-
@gentoobro @matrix "using namespace" should be rare, ideally never used at all.
It's much better to pull in only the specific symbols, "using std::swap" being one of the most canonical examples.
I normally don't have very long qualifications on my names despite making very extensive and deep usage of namespaces because most of the time you are using types in your own namespace or a parent namespace and neither of those require a qualification.
-
@gentoobro @matrix > I make extensive use of static functions, often with the same names in many TU's, so a unity build isn't directly feasible for me even for releases.
Namespaces: you either have them built into the language or_you_have_to_reinvent_them_yourself_poorly.
I lost a bunch of hours once because I needed to statically link libsodium and also statically link argon2 into the same excutable and got ODR violations because libsodium had previous copied argon2 into their source tree and made modifications to it without changing the symbol names.
-
@gentoobro @matrix I also don't use LTO because I've found "jumbo" or "unity" builds to be a superior alternative.
It takes some discipline in terms of restricting your usage of internal linkage, but once you have everything cleaned up so that every file is unity-safe, then just compile your entire project as a single TU and make LTO completely redundant.
It requires a lot more ram and you lose all parallelism so it's only worthwhile for release builds and can't be done if you build on a potato, but it gives you at least the same benefits as LTO without any of the complexity. It also lets you optimize shared libraries that would otherwise be excluded from LTO.
-
@gentoobro @matrix A PCH is an intermediate representation though. It doesn't perform the exact same sequence of steps you describe but the outcome is equivalent as far as I can tell.
You can move some work from compile time to link time and vice versa, but ultimately if you have many types used in your code then every user of that type will need to know the size and memory layout if for no other reason than for the compiler to know how much stack space to allocate.
PCHs are often glitchy for the same reason that a lot of software is often glitchy: competence and manpower are generally decreasing as demographics are deteriorating. Fewer people know the right way to do things and of those who do don't always have the time.
In my projects I set them up to build with or without a PCH as a command line flag and have CI jobs that test compilation in both modes to make sure my headers are clean and correct and don't depend on the PCH, thus turning it into an optimization rather than an essential component.
-
@gentoobro @matrix That's called a "precompiled header" and all major compilers support them.
How easy those are to enable in a specific project depends a lot on the build system the project uses and how much benefit one can derive from using them depends on how good the developers are in terms of laying out their code in a sensible way.
-
@gentoobro @matrix A template is just a set of instructions to the compiler for how to construct types and functions.
Any piece of code that is going to work with a type needs to know at a minimum how large the type is and how it is laid out in memory, therefore any function which constructs a templated type needs to see the template definition.
Likewise any template function needs to be instantiated once for every set of template arguments it is called with or else the function won't exist.
Usually the best way to ensure this happens is to put the definition in the header with the declaration and accept there will be duplicate instantiations which the linker has to resolve but at least everything happens automatically.
If you do want to manually instantiate templates then you can use "extern template" to prevent automatic instantiation. Then you need to explicitly instantiate your templates for every combination of types they care called with. Compiles will be faster but if you miss one then you'll get missing symbols.
mikerotch
NHTB refugee
- Tags
-
- ActivityPub
- Remote Profile
Statistics
- User ID
- 116460
- Member since
- 1 May 2024
- Notices
- 18
- Daily average
- 0