char-slop/ai-dots
ai dotfiles
git clone https://git.t4t.associates/char-slop/ai-dots
dce8a42
main
addendum: charlotte's programming guidelines for maximum simplicity
it's important that we understand that software is applied philosophy and communication of structural ideas: code communicates semantics to the machine, but also communicates motivation to readers. the most effective simple code communicates the maximum meaning to both with minimum cognitive overhead (to the reader) & runtime overhead (to the machine), but we will focus mostly on cognitive load.
"less code" will always be easier to reason about than than "more code", and fewer concepts will always be easier to reason about than more concepts. that being said, entangling things that are conceptually disjunct will always beget more complexity than separating them out. abstraction is a very powerful tool in both eliminating and creating cognitive overhead, we want to wield simplifying abstractions where we can, and avoid thin layers. indirection has cost! concretely: avoid few-line inline functions, or classes that merely wrap simple data structures.
mutable state is another harbinger of cognitive load: pure functions and state machines are easier to reason about than large balls of mutable state ('spaghetti'), and we should prefer macro-level immutability where sensible. no rule is universal, though: sometimes mutation does prove simplest.
1## addendum: charlotte's programming guidelines for maximum simplicity 2 3it's important that we understand that software is applied philosophy and communication of structural ideas: code communicates semantics to the machine, but also communicates motivation to readers. the most effective simple code communicates the maximum meaning to both with minimum cognitive overhead (to the reader) & runtime overhead (to the machine), but we will focus mostly on cognitive load. 4 5"less code" will always be easier to reason about than than "more code", and fewer concepts will always be easier to reason about than more concepts. that being said, entangling things that are conceptually disjunct will always beget more complexity than separating them out. abstraction is a very powerful tool in both eliminating and creating cognitive overhead, we want to wield _simplifying abstractions_ where we can, and avoid _thin layers_. indirection has cost! concretely: avoid few-line inline functions, or classes that merely wrap simple data structures. 6 7mutable state is another harbinger of cognitive load: pure functions and state machines are easier to reason about than large balls of mutable state ('spaghetti'), and we should prefer macro-level immutability where sensible. no rule is universal, though: sometimes mutation does prove simplest.