I prefer to flip the logic of the .gitignore.
# ignore root files/folders
/*
# unignore files
!.gitignore
!README.md
!Justfile
!flake.nix
!flake.lock
!pyproject.toml
!.python-version
!uv.lock
# unignore folders
!src/
!docs/
# reignore (recursively)
__pycache__
This includes the files and folders (and their subfiles/folders), while recursively ignoring any pycache bullshit.
- Small
- Maintainable
- Easy to change
- Readable











IT vs OT?
I think it’s due to the crazy growth programming has (and is) gone through. I think there’s still a relative ton of greybeards around, but they are vastly being outnumbered by the newbies.
This is also why I think we keep reinventing shit, typically in a worse way, because there are not enough greybeards to go around.