On Mon, Feb 28, 2022 at 1:47 PM Dan Cross <crossd@gmail.com> wrote:
> [snip]


Oops, I forgot to mention something. I imagine a lot of readers of this list are familiar with this paper, but for those that aren't, this resonates:

https://www.usenix.org/legacy/publications/library/proceedings/sa92/spencer.pdf

On a personal note, when I was learning to write C for Unix, I read a lot of open source code to see how to do it. So much of it was riddled with complex #ifdefs that I kind of got the impression that that was how things were _supposed_ to be written. Then I read the Spencer/Collyer paper, and modified some program that I'd written to use abstract interfaces; it was so much easier to reason about that I was kind of shocked that others didn't do the same.

I suppose the point is that many programmers learn by copying what has come before. However, so much of what's out there is a poor example of how to do things; we're stuck with a feedback loop of poor design.

        - Dan C.