Before move semantics the HeavyObject problem was solved in most cases by specializing std::swap for each container.
The design lesson I draw from this is that pursing a 100% general solution to a real problem is often worse than accepting a crude solution which covers the most important cases.
my take looking at languages beyond C++ is a very different one
you want a well working general solution which works well (most of the time for most of the "generic code" (i.e. good defaults for the default use-case).
and then add escape hatches for micro-optimizations, micro-control etc.
C++ on the other hand was deeply rooted designed with micro optimizations and micro control first.
"Generic solutions" where then tried to be added on top, but not by changing a badly working abstraction/design but by adding more abstraction layers and complexity on top. And with a high requirements for back/forward compatibility, not just with the language but ton of different tooling. That this isn't playing out well is kinda not really surprising IMHO. I mean adding more abstraction layers instead of fixing existing abstraction layers rarely plays out well (1) especially if the things you add are pretty leaky abstractions.
-----
(1): In context of them archiving overall the same goal with just different details and no clear boundaries. Layering very different kind of layers is normal and does make sense in a lot of situations. Just what C++ does is like layering "a generic system programming language" (modern C++) on top of "a generic system programming language" (old C++) without clear boundaries.
The gamification was in large part misaligned with the site's objectives. It's a shame Atwood and Spolsky didn't realize the problems and didn't explicitly solicit and incorporate feedback about it basically ever. (Not that random user proposals were ever especially good, but.)
At Codidact we're trying to build systems that hand out privileges based on actions taken that are relevant to the privilege. There's still a reputation system but the per-user numbers are relatively de-emphasized. And posts are by default sorted by Wilson score, with separate up/down counts visible to everyone by default, so that downvotes on an upvoted post (and vice-versa) have meaningful effect and "bad" voting can be more easily corrected. There's also a system of "reactions" for posts so that people willing to put their username behind it can explicitly mark an answer as outdated or dangerous.
AFAIK, not a lot in HN gets outright removed. A decent amount of stuff will get flagged (and thus becomes invisible) especially when it's anywhere near politics.
But even in those spaces, few things end up actually being flagged even when the flames are burning hot.
> there were no endemic wrongdoings in the governance either
Once it became a product there was constant tension between community and management. A 24 year old PM who had never worked in software would come declare a sweeping change and then accuse the community for being toxic uninclusive trolls.
Also Joel violated all rules and norms and used it to promote his personal political platform.
It isn't necessary to identify the world's most unfortunate person to recognize that most redditors have privileged lives, yet choose to wallow in misery.
I don’t think Craig gets enough blame. He’s the one who just loves gadget features and shiny stuff. I don’t think Apple has championed a single Mac feature around making your computer more a powerful system for professional work since he has taken over.
The design lesson I draw from this is that pursing a 100% general solution to a real problem is often worse than accepting a crude solution which covers the most important cases.
reply