Dependency management sucks

Project A

brew install npm==6.14.4+ds-1ubuntu2
brew install libmagic==1:5.38-4
brew install awscli==1.17.14-1
brew install openjdk==11.0.7+10-3ubuntu1
brew install redis==6.1.0

Project B

brew install npm==9.2.0~ds1-1
brew install python==3.12.0.rc3
brew install redis==4.1.0

Project B installs fine but now Project A throws an error where users can view data from other teams?

Our actual installed state is now

brew install npm==**9.2.0~ds1-1**
brew install libmagic==1:5.38-4
brew install awscli==1.17.14-1
brew install openjdk==11.0.7+10-3ubuntu1
brew install redis==**4.1.0**

Dependency conflicts are often subtle and hard to spot

nix

Nix aims to solve all of these issues by making package management reliable and reproducible.

direnv