macOS' SMB implementation is buggy, corrupting images when viewed with Preview.app.
As a workaround, select a different protocol, such as NFS.
The gold standard of software testing is formal verification, a mathematical proof that a body of code cannot fail with unspecified behavior. However, in practice formal verification proceeds at a slower pace than many teams prefer to operate. Fortunately, we have a productive compromise: Fuzzing.
Fuzzing significantly raises the quality bar of software components, closing subtle testing gaps that other approaches neglect to address. For example, validation, a handful of manual tests, and code coverage will still leave latent bugs in very many codebases. This is because the input/state space is many orders of magnitude larger than the number of lines of code, and scale exponentially with the bit width and number of variables.
Fuzzing is able to identify these kinds of bugs, by generating random test cases to more comprehensively evaluate the input and/or state space. Code coverage won't tell you when you have a division by zero bug, or a nil pointer bug, or an empty array
Like a deck of Poker playing cards, trading card game's (TCG's) can be enjoyed in multiple ways, by applying different rulesets (formats).
TCG formats come in two main varieties: Constructed and Limited.
Broadly speaking, players bring preassembled decks to Constructed events, whereas in Limited formats they assemble a fresh deck from a pool of cards.
macOS relies too much on applications to manage their own startup item configuration. Over time, this leads to vestigial entries building up in startup items.
Both System Settings and launchctl stink at startup item management.
One of the key features lacking in macOS is GUI + CLI options to query startup items by the very name listed in the Login Items & Extensions pane. This overcomplicates basic cleanup operations, and makes it easier for malware to hide.
Standardize Command Line Interface (CLI) program exit code semantics similar to Web response statuses, towards an ecosystem of more intuitive, scriptable, and CI/CD friendly terminal applications.
Unlike modern REST apps, CLI program behavior has continued to vary in the extreme. Simply checking whether a child process succeeds vs. fails from the parent is often a complicated affair, involving tons of error handling logic specific to that particular child command, and all too often involving flaky stdout/stderr log parsing as well.