Preferences

Last week I had to download a dependency on Homebrew. It had been a while since I had downloaded anything as my personal device had been stable for a long time, so dependencies were out of date. Well, homebrew decided to upgrade EVERYTHING before it started the new download, all without my prompt. An hour later, I was met with a device that was full of issues, and it took me an entire week to fully get back to normal. Not saying I hate homebrew, but I welcome any competition in this space.

I feel you. I could write an essay about Homebrew, instead I'll list the other alternatives. There's pkgsrc[1], MacPorts[2], and Nix[3]. In my experience, none of these are as comprehensive, and each comes with its own quirks. Worth a try, might work for you.

[1]: https://www.pkgsrc.org/, https://pkgsrc.smartos.org/install-on-macos/

[2]: https://www.macports.org/

[3]: https://nixos.org/download/

It’s a bit surprising to hear nix described as “not as comprehensive”, considering they’ve basically built a whole OS around it, but I’m curious about your take on this specifically.
Mostly the prebuilt binary packages, "casks". Out of 13 casks I currently have installed, only 6 are in nixpkgs. Some are built for Linux (e.g. Ungoogled Chromium), but not for Mac.

I've also cherry-picked a couple non-cask packages that I would dearly miss: dark-notify, ddcctl, displayplacer, the kinda stuff you need to "fix" macOS.

Add this to your shell profile:

  export HOMEBREW_NO_AUTO_UPDATE=1
  export HOMEBREW_NO_ANALYTICS=1
Why these aren't the defaults, I don't know.
There's an explanation somewhere as to why. It has to do with "not breaking" stuff relying on it. So I guess it only answers "why we won't fix it".

Anyway, I don't think this is enough. Or I guess it only works to stop the trigger during install? I have the NO_AUTO_UPDATE set up, and recently needed to update (or upgrade? who knows) a single package and it somehow ended up with Homebrew working for over two hours. I saw it installing python at least two times.

That's not a proper explanation IMO. The thing is - all these settings are introduced "quietly" as new defaults and you have to opt out. So one day you decide to upgrade a package, brew updates itself, and then starts doing all these things that weren't present before (and are most likely not needed at all). It's very annoying, and a dark pattern to say the least.
Maybe also these, to limit other annoyances:

  export HOMEBREW_NO_EMOJI=1
  export HOMEBREW_NO_ENV_HINTS=1
  export HOMEBREW_NO_INSTALL_CLEANUP=1
Out of curiosty, why the last one? If you update a package, generally you don't need the old version, why would you keep it around? I can imagine this being useful in some edge cases, but as a global setting, I'm not so sure.
I got bitten by broken upgrades in the past, when you were still able to simply "brew switch" to the old version if it was there. In addition the cleanup time is annoying when upgrading a lot of packages, so I kept the setting.
because the fundamental ethos of homebrew and a lot of “modern” tools is to prioritize the conservation of attention. Aka “don’t make me think“ which, ironically, appears to often be adopted, not only on behalf of users, but at a meta level, so things which might well deserve prompts are simply pre-configured.

some charity is due here, because this is the culture, and also because for any software tool of sufficient complexity, there is always more to think about than attention to give. But the culture could use more improvement and reflection here.

I have found `mise` to be a pretty good way to install tooling https://github.com/cybernetics/mise-en-place

This item has no comments currently.

Keyboard Shortcuts

Story Lists

j
Next story
k
Previous story
Shift+j
Last story
Shift+k
First story
o Enter
Go to story URL
c
Go to comments
u
Go to author

Navigation

Shift+t
Go to top stories
Shift+n
Go to new stories
Shift+b
Go to best stories
Shift+a
Go to Ask HN
Shift+s
Go to Show HN

Miscellaneous

?
Show this modal