Think about coupling and cohesion. Don't tie things together by making them share code that coincidentally is similar but isn't made for the same purpose.
Don't abstract things until you have at least 2 (preferably 3) examples of what you're trying to abstract. If you try to guess at the requirements of the 2nd or 3rd thing you'll probably be wrong and have to undo or live with mistakes.
When you so abstract and break things down, optimize for reading. This includes maximizing loading the code into your head. Things that make that hard are unnecessary indirections (like uncle Bob tells you to do) and shared state (like uncle Bob tells you to do).
Pure functions (meaning they take inputs and remit outputs without any side effects such as setting shared state) are the platonic ideal. Anything written not as a pure function should have a reason (there are tons of valid reasons, but it's a good mental anchor)
I should really read the Ousterhout book. It would be great if I could just point people at something, and it sounded decent from that discussion between him and Bob I saw the other day
Edit: I don't agree with everything in here but it's pretty great https://grugbrain.dev/
“While these mechanisms were often used to bypass Microsoft account setup, they also inadvertently skip critical setup screens, potentially causing users to exit OOBE with a device that is not fully configured for use.”
Lol sure. If that was the real reason they'd simply let you create a local account. The audacious lying is just insulting.
The expectation is the ntsync is more correct than and thus will work for more programs than esync/fsync. I'd expect for games that already work well in proton there will be no noticeable change for the end user
Most niche communities are full of people that desperately want people to participate in their hobby. Linux despite being a relative underdog is not actually a niche community. Even so, the majority of people are kind and accommodating, but it only takes 1 out of 10 interactions being negative for someone to label a community as toxic, even if that interaction is basically "use the existing resources in the sidebar"
In my opinion, the biggest shortcoming of Python’s dynamic typing system is that you need to have very thorough test coverage to be sure that your code doesn’t have semantic errors
Are the millennials killing car ownership!?