Hardscrabble 🍫

By Max Jacobson

See also: the archives and an RSS feed

True love will find you in the end

April 21, 2023

This Tiny Desk Concert performance by Daniel Johnston from 2012 really moved me, particularly the fourth and final song, True Love Will Find You In the End.

It has to do, in part, with the impression that Johnston, at 51, is not particularly well. He would die seven years later of a heart attack. He’s singing about how he feels like a mummy, or Dracula, or Mr. Hyde, or a ghost. But he’s not alone up there. He has a friend and an audience that loves him. When he sings about optimism it feels hard-earned and true.

World Chess Championship 2023

April 7, 2023

The World Chess Championship, a head-to-head battle between Ding Liren and Ian Nepomniachtchi, starts this Sunday.

This event happens every two years, and decides who will be the new world chess champion. In the off year, there’s another event called the Candidates Tournament, which decides who will challenge the world champ next time.

Here’s a great preview of the two players by Ben Tippett in Defector: https://defector.com/the-world-chess-championship-begins-on-the-edge-of-the-unknown

If you’re the kind of person who likes being in control, the good news is that you’re responsible for exactly half of what happens on a chess board, but the bad news is that your opponent (who is trying to beat you) is responsible for the other half. You have some control over where you want to steer a game, but ultimately you’re in the boat with your opponent, and you both get the opportunity to row.

I’ll probably catch some of the games live, but I know I’ll be watching the GothamChess recaps after.

I’ve gotten into playing chess and watching chess content in the ~1.5 years since the last world chess championship. In fact it was Tippett’s piece on Defector that caught my attention. That led to watching the GothamChess recaps, including this wildly entertaining summary of this notable game in the match:

As with any niche, there’s a whole ecosystem of personalities, not just this one guy. Here are a few of the popular chess content creators I enjoy following:

  • GM Daniel Naroditsky
    • On YouTube he makes educational videos where he plays lower-rated players, beating them very easily, and explaining every single move in exhaustive detail.
    • On Twitch he grinds speed chess games against top opponents to try and maintain his rating near the very top of the rating charts. He keeps very strange hours, so I will often have him on as I’m falling asleep.
  • WFM Anna Cramling
    • On YouTube she makes educational and entertaining videos that are very accessible and fun. She often plays higher rated players and loses but has a great attitude about it. Both of her parents are grandmasters, and so she will often pull them in, which is quite sweet.
    • She’s also on Twitch although I haven’t caught her stream too many times
  • GM Hikaru Nakamura
    • First, here’s a fun article about him in The New Yorker: The Most Popular Chess Streamer on Twitch
    • On YouTube, he posts tons and tons of content, including videos of him playing against lower rated players and basically stunting on them, much more for entertainment sake than educational sake. But he also posts recaps of his legit tournaments and excerpts from his stream when he’s competing in events like Chess.com’s Titled Tuesday, which he routinely wins.
    • On Twitch where he streams loads and loads of chess
    • On Kick which I guess is some new Twitch competitor that threw a bucket of money at him to also stream there? idk

If you want to play some chess with me, get in touch :)

Joe Camerlengo's New Things

April 2, 2023

Joe Camerlengo, who I’ve previously written about twice before in these pages, has a new EP out (Apple Music, Spotify) and a great interview to promote it.

The subject of these songs is being a first time dad. This quote is beautiful:

I’m more artistically inspired than ever, because I’ve never felt as positive or as strongly about anything as I do being with Ozzy and Courtney. Having that little family is the most incredible environment, and I’ve been creating like crazy.

The highlight for me is the closing track, Life Might Begin.

The whole thing reminds me of this recent post from the popular author John Green, which touches on his experience as an artist whose work was heavily criticized, and what it’s taken for him to continue creating art.

the big lesson from those strange days for me is that if I must choose between being cold to the reality of feeling and being cringe, I always want to be cringe.

Honestly, same. There’s a similar unapologetic sincerity in Camerlengo’s work which I could imagine being offputting, but I encourage you to give it a chance anyway. And, hey, John Green is great too. I’ve read all his books and I’m very much looking forward to the upcoming film adaptation of his novel Turtles All the Way Down, which explores OCD beautifully.

See also: this profile from a few years ago naming Camerlengo the best musician in Columbus, Ohio.

Traffic Altercation

April 2, 2023

This sketch from last night’s SNL made me laugh out loud:

It features host Quinta Brunson from Abbott Elementary and I don’t really want to describe it except to say it’s very funny and features quite a lot of shouting. Enjoy.

It seems like road rage may be in the zeitgeist. I’m very much looking forward to Beef, the new Netflix show starring Steven Yeun and Ali Wong about a traffic altercation that spirals out of control.

This is America

April 2, 2023

When there’s another mass shooting in America my mind often goes to this music video from Donald Glover’s Childish Gambino:

You’ve probably seen it before, but I don’t care, it’s so good. Watch it again.

Taylor Swift - Riptide

March 20, 2023

I’ve always loved this Taylor Swift performance of Riptide from 2014.

The original is quite corny and insincere, IMHO, but the words feel potent in Swift’s voice. In part this is because she didn’t touch any of the pronouns, and doesn’t shy away from lyrics like β€œI wanna be your left-hand man”, which brings to mind the Gaylor conspiracy theory.

Understanding your homebrew dependencies

March 8, 2023

As a programmer who uses macOS, I greatly appreciate Homebrew, the β€œMissing Package Manager for macOS”.

I just learned about the brew leaves subcommand and was glad to discover it. Here’s a bit about how and why I’m using it.

This may be neurotic, or it may be some PTSD from when I used Arch Linux for a few years, but I try to upgrade all of my homebrew-managed dependencies regularly.

Here’s how I do it.

First, I tell homebrew to phone home and update its local list of packages, which it can use to tell if any of my locally-installed packages have updates:

$ brew update

Then I ask homebrew to list out which packages have updates available, if any:

$ brew outdated

Then, typically, I’ll upgrade all of them1:

$ brew upgrade

Very often I’ll find that some of my outdated packages have names that I do not recognize. There are only about 30 packages that I explicitly install2, but most of those have dependencies which end up getting installed too, so I end up with way more than 30 packages total – more like 138.

For example, I use vim, and vim has several dependencies that homebrew installs when it installs vim:

$ brew deps vim --tree
vim
β”œβ”€β”€ gettext
β”œβ”€β”€ lua
β”œβ”€β”€ ncurses
β”œβ”€β”€ perl
β”‚   β”œβ”€β”€ berkeley-db
β”‚   β”‚   └── openssl@1.1
β”‚   β”‚       └── ca-certificates
β”‚   └── gdbm
β”œβ”€β”€ python@3.11
β”‚   β”œβ”€β”€ mpdecimal
β”‚   β”œβ”€β”€ openssl@1.1
β”‚   β”‚   └── ca-certificates
β”‚   β”œβ”€β”€ sqlite
β”‚   β”‚   └── readline
β”‚   └── xz
└── ruby
    β”œβ”€β”€ libyaml
    β”œβ”€β”€ openssl@1.1
    β”‚   └── ca-certificates
    └── readline

Wow, look at all of those! So, because I installed vim, I also necessarily installed 15 other packages, and I’ll be updating all of them as time goes on.

When homebrew tells me that, for example, xz is outdated, a few questions enter my mind:

  1. what the heck is that?
  2. ok, it’s surely a dependency of something, but what is it a dependency of?
  3. is it possible that it’s actually not even necessary to have installed any longer? Maybe it was a dependency of something that I later uninstalled, but it just lingered around…

Answering all of those questions is possible, but I didn’t actually know how to answer them until today. Let’s take them one-by-one.

What the heck is that?

To answer this, we can use brew info:

$ brew info xz
==> xz: stable 5.4.1 (bottled)
General-purpose data compression with high compression ratio
https://tukaani.org/xz/
/opt/homebrew/Cellar/xz/5.4.1 (95 files, 1.7MB) *
  Poured from bottle on 2023-01-16 at 04:20:15
From: https://github.com/Homebrew/homebrew-core/blob/HEAD/Formula/xz.rb
License: Public Domain and LGPL-2.1-or-later and GPL-2.0-or-later and GPL-3.0-or-later
==> Analytics
install: 456,730 (30 days), 2,613,650 (90 days), 7,814,033 (365 days)
install-on-request: 22,257 (30 days), 150,853 (90 days), 422,948 (365 days)
build-error: 44 (30 days)

Which… sure, whatever. Sounds important.

What is this a dependency of?

This is a slightly tricky thing to answer. As far as I can tell, there’s no command such as brew why xz that could simply answer why is it installed (please get in touch if I’m mistaken).

What we can do is use the brew deps command to describe the relationships between packages, and then search through it to see exactly why it is installed. For me, that prints out 1,580 lines of output, which I’ll share in full behind a collapsible details widget here:

Full output of brew deps --full-name --installed --tree

aom
β”œβ”€β”€ jpeg-xl
β”‚   β”œβ”€β”€ brotli
β”‚   β”œβ”€β”€ giflib
β”‚   β”œβ”€β”€ highway
β”‚   β”œβ”€β”€ imath
β”‚   β”œβ”€β”€ jpeg-turbo
β”‚   β”œβ”€β”€ libpng
β”‚   β”œβ”€β”€ little-cms2
β”‚   β”‚   β”œβ”€β”€ jpeg-turbo
β”‚   β”‚   └── libtiff
β”‚   β”‚       β”œβ”€β”€ jpeg-turbo
β”‚   β”‚       └── zstd
β”‚   β”‚           β”œβ”€β”€ lz4
β”‚   β”‚           └── xz
β”‚   β”œβ”€β”€ openexr
β”‚   β”‚   └── imath
β”‚   └── webp
β”‚       β”œβ”€β”€ giflib
β”‚       β”œβ”€β”€ jpeg-turbo
β”‚       β”œβ”€β”€ libpng
β”‚       └── libtiff
β”‚           β”œβ”€β”€ jpeg-turbo
β”‚           └── zstd
β”‚               β”œβ”€β”€ lz4
β”‚               └── xz
└── libvmaf

autoconf
└── m4

bash

bat

bdw-gc

berkeley-db
└── openssl@1.1
    └── ca-certificates

indirect/tap/bpb

brotli

ca-certificates

cairo
β”œβ”€β”€ fontconfig
β”‚   └── freetype
β”‚       └── libpng
β”œβ”€β”€ freetype
β”‚   └── libpng
β”œβ”€β”€ glib
β”‚   β”œβ”€β”€ pcre2
β”‚   └── gettext
β”œβ”€β”€ libpng
β”œβ”€β”€ libx11
β”‚   β”œβ”€β”€ libxcb
β”‚   β”‚   β”œβ”€β”€ libxau
β”‚   β”‚   β”‚   └── xorgproto
β”‚   β”‚   └── libxdmcp
β”‚   β”‚       └── xorgproto
β”‚   └── xorgproto
β”œβ”€β”€ libxcb
β”‚   β”œβ”€β”€ libxau
β”‚   β”‚   └── xorgproto
β”‚   └── libxdmcp
β”‚       └── xorgproto
β”œβ”€β”€ libxext
β”‚   β”œβ”€β”€ libx11
β”‚   β”‚   β”œβ”€β”€ libxcb
β”‚   β”‚   β”‚   β”œβ”€β”€ libxau
β”‚   β”‚   β”‚   β”‚   └── xorgproto
β”‚   β”‚   β”‚   └── libxdmcp
β”‚   β”‚   β”‚       └── xorgproto
β”‚   β”‚   └── xorgproto
β”‚   └── xorgproto
β”œβ”€β”€ libxrender
β”‚   β”œβ”€β”€ libx11
β”‚   β”‚   β”œβ”€β”€ libxcb
β”‚   β”‚   β”‚   β”œβ”€β”€ libxau
β”‚   β”‚   β”‚   β”‚   └── xorgproto
β”‚   β”‚   β”‚   └── libxdmcp
β”‚   β”‚   β”‚       └── xorgproto
β”‚   β”‚   └── xorgproto
β”‚   └── xorgproto
β”œβ”€β”€ lzo
└── pixman

cloc

ctags

emacs
β”œβ”€β”€ gnutls
β”‚   β”œβ”€β”€ ca-certificates
β”‚   β”œβ”€β”€ gmp
β”‚   β”œβ”€β”€ libidn2
β”‚   β”‚   β”œβ”€β”€ libunistring
β”‚   β”‚   └── gettext
β”‚   β”œβ”€β”€ libtasn1
β”‚   β”œβ”€β”€ libunistring
β”‚   β”œβ”€β”€ nettle
β”‚   β”‚   └── gmp
β”‚   β”œβ”€β”€ p11-kit
β”‚   β”‚   β”œβ”€β”€ ca-certificates
β”‚   β”‚   └── libtasn1
β”‚   └── unbound
β”‚       β”œβ”€β”€ libevent
β”‚       β”‚   └── openssl@1.1
β”‚       β”‚       └── ca-certificates
β”‚       β”œβ”€β”€ libnghttp2
β”‚       └── openssl@1.1
β”‚           └── ca-certificates
└── jansson

exa
└── libgit2
    └── libssh2
        └── openssl@1.1
            └── ca-certificates

fd

fnm

fontconfig
└── freetype
    └── libpng

freetype
└── libpng

fribidi

gd
β”œβ”€β”€ fontconfig
β”‚   └── freetype
β”‚       └── libpng
β”œβ”€β”€ freetype
β”‚   └── libpng
β”œβ”€β”€ jpeg-turbo
β”œβ”€β”€ libavif
β”‚   β”œβ”€β”€ aom
β”‚   β”‚   β”œβ”€β”€ jpeg-xl
β”‚   β”‚   β”‚   β”œβ”€β”€ brotli
β”‚   β”‚   β”‚   β”œβ”€β”€ giflib
β”‚   β”‚   β”‚   β”œβ”€β”€ highway
β”‚   β”‚   β”‚   β”œβ”€β”€ imath
β”‚   β”‚   β”‚   β”œβ”€β”€ jpeg-turbo
β”‚   β”‚   β”‚   β”œβ”€β”€ libpng
β”‚   β”‚   β”‚   β”œβ”€β”€ little-cms2
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ jpeg-turbo
β”‚   β”‚   β”‚   β”‚   └── libtiff
β”‚   β”‚   β”‚   β”‚       β”œβ”€β”€ jpeg-turbo
β”‚   β”‚   β”‚   β”‚       └── zstd
β”‚   β”‚   β”‚   β”‚           β”œβ”€β”€ lz4
β”‚   β”‚   β”‚   β”‚           └── xz
β”‚   β”‚   β”‚   β”œβ”€β”€ openexr
β”‚   β”‚   β”‚   β”‚   └── imath
β”‚   β”‚   β”‚   └── webp
β”‚   β”‚   β”‚       β”œβ”€β”€ giflib
β”‚   β”‚   β”‚       β”œβ”€β”€ jpeg-turbo
β”‚   β”‚   β”‚       β”œβ”€β”€ libpng
β”‚   β”‚   β”‚       └── libtiff
β”‚   β”‚   β”‚           β”œβ”€β”€ jpeg-turbo
β”‚   β”‚   β”‚           └── zstd
β”‚   β”‚   β”‚               β”œβ”€β”€ lz4
β”‚   β”‚   β”‚               └── xz
β”‚   β”‚   └── libvmaf
β”‚   β”œβ”€β”€ jpeg-turbo
β”‚   └── libpng
β”œβ”€β”€ libpng
β”œβ”€β”€ libtiff
β”‚   β”œβ”€β”€ jpeg-turbo
β”‚   └── zstd
β”‚       β”œβ”€β”€ lz4
β”‚       └── xz
└── webp
    β”œβ”€β”€ giflib
    β”œβ”€β”€ jpeg-turbo
    β”œβ”€β”€ libpng
    └── libtiff
        β”œβ”€β”€ jpeg-turbo
        └── zstd
            β”œβ”€β”€ lz4
            └── xz

gdbm

gdk-pixbuf
β”œβ”€β”€ glib
β”‚   β”œβ”€β”€ pcre2
β”‚   └── gettext
β”œβ”€β”€ jpeg-turbo
β”œβ”€β”€ libpng
└── libtiff
    β”œβ”€β”€ jpeg-turbo
    └── zstd
        β”œβ”€β”€ lz4
        └── xz

gettext

gh

ghostscript
β”œβ”€β”€ fontconfig
β”‚   └── freetype
β”‚       └── libpng
β”œβ”€β”€ freetype
β”‚   └── libpng
β”œβ”€β”€ jbig2dec
β”œβ”€β”€ jpeg-turbo
β”œβ”€β”€ libidn
β”œβ”€β”€ libpng
β”œβ”€β”€ libtiff
β”‚   β”œβ”€β”€ jpeg-turbo
β”‚   └── zstd
β”‚       β”œβ”€β”€ lz4
β”‚       └── xz
β”œβ”€β”€ little-cms2
β”‚   β”œβ”€β”€ jpeg-turbo
β”‚   └── libtiff
β”‚       β”œβ”€β”€ jpeg-turbo
β”‚       └── zstd
β”‚           β”œβ”€β”€ lz4
β”‚           └── xz
└── openjpeg
    β”œβ”€β”€ libpng
    β”œβ”€β”€ libtiff
    β”‚   β”œβ”€β”€ jpeg-turbo
    β”‚   └── zstd
    β”‚       β”œβ”€β”€ lz4
    β”‚       └── xz
    └── little-cms2
        β”œβ”€β”€ jpeg-turbo
        └── libtiff
            β”œβ”€β”€ jpeg-turbo
            └── zstd
                β”œβ”€β”€ lz4
                └── xz

giflib

git
β”œβ”€β”€ gettext
└── pcre2

git-delta

glib
β”œβ”€β”€ pcre2
└── gettext

gmp

gnutls
β”œβ”€β”€ ca-certificates
β”œβ”€β”€ gmp
β”œβ”€β”€ libidn2
β”‚   β”œβ”€β”€ libunistring
β”‚   └── gettext
β”œβ”€β”€ libtasn1
β”œβ”€β”€ libunistring
β”œβ”€β”€ nettle
β”‚   └── gmp
β”œβ”€β”€ p11-kit
β”‚   β”œβ”€β”€ ca-certificates
β”‚   └── libtasn1
└── unbound
    β”œβ”€β”€ libevent
    β”‚   └── openssl@1.1
    β”‚       └── ca-certificates
    β”œβ”€β”€ libnghttp2
    └── openssl@1.1
        └── ca-certificates

graphite2

graphviz
β”œβ”€β”€ gd
β”‚   β”œβ”€β”€ fontconfig
β”‚   β”‚   └── freetype
β”‚   β”‚       └── libpng
β”‚   β”œβ”€β”€ freetype
β”‚   β”‚   └── libpng
β”‚   β”œβ”€β”€ jpeg-turbo
β”‚   β”œβ”€β”€ libavif
β”‚   β”‚   β”œβ”€β”€ aom
β”‚   β”‚   β”‚   β”œβ”€β”€ jpeg-xl
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ brotli
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ giflib
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ highway
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ imath
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ jpeg-turbo
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ libpng
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ little-cms2
β”‚   β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ jpeg-turbo
β”‚   β”‚   β”‚   β”‚   β”‚   └── libtiff
β”‚   β”‚   β”‚   β”‚   β”‚       β”œβ”€β”€ jpeg-turbo
β”‚   β”‚   β”‚   β”‚   β”‚       └── zstd
β”‚   β”‚   β”‚   β”‚   β”‚           β”œβ”€β”€ lz4
β”‚   β”‚   β”‚   β”‚   β”‚           └── xz
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ openexr
β”‚   β”‚   β”‚   β”‚   β”‚   └── imath
β”‚   β”‚   β”‚   β”‚   └── webp
β”‚   β”‚   β”‚   β”‚       β”œβ”€β”€ giflib
β”‚   β”‚   β”‚   β”‚       β”œβ”€β”€ jpeg-turbo
β”‚   β”‚   β”‚   β”‚       β”œβ”€β”€ libpng
β”‚   β”‚   β”‚   β”‚       └── libtiff
β”‚   β”‚   β”‚   β”‚           β”œβ”€β”€ jpeg-turbo
β”‚   β”‚   β”‚   β”‚           └── zstd
β”‚   β”‚   β”‚   β”‚               β”œβ”€β”€ lz4
β”‚   β”‚   β”‚   β”‚               └── xz
β”‚   β”‚   β”‚   └── libvmaf
β”‚   β”‚   β”œβ”€β”€ jpeg-turbo
β”‚   β”‚   └── libpng
β”‚   β”œβ”€β”€ libpng
β”‚   β”œβ”€β”€ libtiff
β”‚   β”‚   β”œβ”€β”€ jpeg-turbo
β”‚   β”‚   └── zstd
β”‚   β”‚       β”œβ”€β”€ lz4
β”‚   β”‚       └── xz
β”‚   └── webp
β”‚       β”œβ”€β”€ giflib
β”‚       β”œβ”€β”€ jpeg-turbo
β”‚       β”œβ”€β”€ libpng
β”‚       └── libtiff
β”‚           β”œβ”€β”€ jpeg-turbo
β”‚           └── zstd
β”‚               β”œβ”€β”€ lz4
β”‚               └── xz
β”œβ”€β”€ gts
β”‚   β”œβ”€β”€ glib
β”‚   β”‚   β”œβ”€β”€ pcre2
β”‚   β”‚   └── gettext
β”‚   β”œβ”€β”€ netpbm
β”‚   β”‚   β”œβ”€β”€ jasper
β”‚   β”‚   β”‚   └── jpeg-turbo
β”‚   β”‚   β”œβ”€β”€ jpeg-turbo
β”‚   β”‚   β”œβ”€β”€ libpng
β”‚   β”‚   └── libtiff
β”‚   β”‚       β”œβ”€β”€ jpeg-turbo
β”‚   β”‚       └── zstd
β”‚   β”‚           β”œβ”€β”€ lz4
β”‚   β”‚           └── xz
β”‚   └── gettext
β”œβ”€β”€ libpng
β”œβ”€β”€ librsvg
β”‚   β”œβ”€β”€ cairo
β”‚   β”‚   β”œβ”€β”€ fontconfig
β”‚   β”‚   β”‚   └── freetype
β”‚   β”‚   β”‚       └── libpng
β”‚   β”‚   β”œβ”€β”€ freetype
β”‚   β”‚   β”‚   └── libpng
β”‚   β”‚   β”œβ”€β”€ glib
β”‚   β”‚   β”‚   β”œβ”€β”€ pcre2
β”‚   β”‚   β”‚   └── gettext
β”‚   β”‚   β”œβ”€β”€ libpng
β”‚   β”‚   β”œβ”€β”€ libx11
β”‚   β”‚   β”‚   β”œβ”€β”€ libxcb
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ libxau
β”‚   β”‚   β”‚   β”‚   β”‚   └── xorgproto
β”‚   β”‚   β”‚   β”‚   └── libxdmcp
β”‚   β”‚   β”‚   β”‚       └── xorgproto
β”‚   β”‚   β”‚   └── xorgproto
β”‚   β”‚   β”œβ”€β”€ libxcb
β”‚   β”‚   β”‚   β”œβ”€β”€ libxau
β”‚   β”‚   β”‚   β”‚   └── xorgproto
β”‚   β”‚   β”‚   └── libxdmcp
β”‚   β”‚   β”‚       └── xorgproto
β”‚   β”‚   β”œβ”€β”€ libxext
β”‚   β”‚   β”‚   β”œβ”€β”€ libx11
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ libxcb
β”‚   β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ libxau
β”‚   β”‚   β”‚   β”‚   β”‚   β”‚   └── xorgproto
β”‚   β”‚   β”‚   β”‚   β”‚   └── libxdmcp
β”‚   β”‚   β”‚   β”‚   β”‚       └── xorgproto
β”‚   β”‚   β”‚   β”‚   └── xorgproto
β”‚   β”‚   β”‚   └── xorgproto
β”‚   β”‚   β”œβ”€β”€ libxrender
β”‚   β”‚   β”‚   β”œβ”€β”€ libx11
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ libxcb
β”‚   β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ libxau
β”‚   β”‚   β”‚   β”‚   β”‚   β”‚   └── xorgproto
β”‚   β”‚   β”‚   β”‚   β”‚   └── libxdmcp
β”‚   β”‚   β”‚   β”‚   β”‚       └── xorgproto
β”‚   β”‚   β”‚   β”‚   └── xorgproto
β”‚   β”‚   β”‚   └── xorgproto
β”‚   β”‚   β”œβ”€β”€ lzo
β”‚   β”‚   └── pixman
β”‚   β”œβ”€β”€ gdk-pixbuf
β”‚   β”‚   β”œβ”€β”€ glib
β”‚   β”‚   β”‚   β”œβ”€β”€ pcre2
β”‚   β”‚   β”‚   └── gettext
β”‚   β”‚   β”œβ”€β”€ jpeg-turbo
β”‚   β”‚   β”œβ”€β”€ libpng
β”‚   β”‚   └── libtiff
β”‚   β”‚       β”œβ”€β”€ jpeg-turbo
β”‚   β”‚       └── zstd
β”‚   β”‚           β”œβ”€β”€ lz4
β”‚   β”‚           └── xz
β”‚   β”œβ”€β”€ glib
β”‚   β”‚   β”œβ”€β”€ pcre2
β”‚   β”‚   └── gettext
β”‚   └── pango
β”‚       β”œβ”€β”€ cairo
β”‚       β”‚   β”œβ”€β”€ fontconfig
β”‚       β”‚   β”‚   └── freetype
β”‚       β”‚   β”‚       └── libpng
β”‚       β”‚   β”œβ”€β”€ freetype
β”‚       β”‚   β”‚   └── libpng
β”‚       β”‚   β”œβ”€β”€ glib
β”‚       β”‚   β”‚   β”œβ”€β”€ pcre2
β”‚       β”‚   β”‚   └── gettext
β”‚       β”‚   β”œβ”€β”€ libpng
β”‚       β”‚   β”œβ”€β”€ libx11
β”‚       β”‚   β”‚   β”œβ”€β”€ libxcb
β”‚       β”‚   β”‚   β”‚   β”œβ”€β”€ libxau
β”‚       β”‚   β”‚   β”‚   β”‚   └── xorgproto
β”‚       β”‚   β”‚   β”‚   └── libxdmcp
β”‚       β”‚   β”‚   β”‚       └── xorgproto
β”‚       β”‚   β”‚   └── xorgproto
β”‚       β”‚   β”œβ”€β”€ libxcb
β”‚       β”‚   β”‚   β”œβ”€β”€ libxau
β”‚       β”‚   β”‚   β”‚   └── xorgproto
β”‚       β”‚   β”‚   └── libxdmcp
β”‚       β”‚   β”‚       └── xorgproto
β”‚       β”‚   β”œβ”€β”€ libxext
β”‚       β”‚   β”‚   β”œβ”€β”€ libx11
β”‚       β”‚   β”‚   β”‚   β”œβ”€β”€ libxcb
β”‚       β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ libxau
β”‚       β”‚   β”‚   β”‚   β”‚   β”‚   └── xorgproto
β”‚       β”‚   β”‚   β”‚   β”‚   └── libxdmcp
β”‚       β”‚   β”‚   β”‚   β”‚       └── xorgproto
β”‚       β”‚   β”‚   β”‚   └── xorgproto
β”‚       β”‚   β”‚   └── xorgproto
β”‚       β”‚   β”œβ”€β”€ libxrender
β”‚       β”‚   β”‚   β”œβ”€β”€ libx11
β”‚       β”‚   β”‚   β”‚   β”œβ”€β”€ libxcb
β”‚       β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ libxau
β”‚       β”‚   β”‚   β”‚   β”‚   β”‚   └── xorgproto
β”‚       β”‚   β”‚   β”‚   β”‚   └── libxdmcp
β”‚       β”‚   β”‚   β”‚   β”‚       └── xorgproto
β”‚       β”‚   β”‚   β”‚   └── xorgproto
β”‚       β”‚   β”‚   └── xorgproto
β”‚       β”‚   β”œβ”€β”€ lzo
β”‚       β”‚   └── pixman
β”‚       β”œβ”€β”€ fontconfig
β”‚       β”‚   └── freetype
β”‚       β”‚       └── libpng
β”‚       β”œβ”€β”€ freetype
β”‚       β”‚   └── libpng
β”‚       β”œβ”€β”€ fribidi
β”‚       β”œβ”€β”€ glib
β”‚       β”‚   β”œβ”€β”€ pcre2
β”‚       β”‚   └── gettext
β”‚       └── harfbuzz
β”‚           β”œβ”€β”€ cairo
β”‚           β”‚   β”œβ”€β”€ fontconfig
β”‚           β”‚   β”‚   └── freetype
β”‚           β”‚   β”‚       └── libpng
β”‚           β”‚   β”œβ”€β”€ freetype
β”‚           β”‚   β”‚   └── libpng
β”‚           β”‚   β”œβ”€β”€ glib
β”‚           β”‚   β”‚   β”œβ”€β”€ pcre2
β”‚           β”‚   β”‚   └── gettext
β”‚           β”‚   β”œβ”€β”€ libpng
β”‚           β”‚   β”œβ”€β”€ libx11
β”‚           β”‚   β”‚   β”œβ”€β”€ libxcb
β”‚           β”‚   β”‚   β”‚   β”œβ”€β”€ libxau
β”‚           β”‚   β”‚   β”‚   β”‚   └── xorgproto
β”‚           β”‚   β”‚   β”‚   └── libxdmcp
β”‚           β”‚   β”‚   β”‚       └── xorgproto
β”‚           β”‚   β”‚   └── xorgproto
β”‚           β”‚   β”œβ”€β”€ libxcb
β”‚           β”‚   β”‚   β”œβ”€β”€ libxau
β”‚           β”‚   β”‚   β”‚   └── xorgproto
β”‚           β”‚   β”‚   └── libxdmcp
β”‚           β”‚   β”‚       └── xorgproto
β”‚           β”‚   β”œβ”€β”€ libxext
β”‚           β”‚   β”‚   β”œβ”€β”€ libx11
β”‚           β”‚   β”‚   β”‚   β”œβ”€β”€ libxcb
β”‚           β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ libxau
β”‚           β”‚   β”‚   β”‚   β”‚   β”‚   └── xorgproto
β”‚           β”‚   β”‚   β”‚   β”‚   └── libxdmcp
β”‚           β”‚   β”‚   β”‚   β”‚       └── xorgproto
β”‚           β”‚   β”‚   β”‚   └── xorgproto
β”‚           β”‚   β”‚   └── xorgproto
β”‚           β”‚   β”œβ”€β”€ libxrender
β”‚           β”‚   β”‚   β”œβ”€β”€ libx11
β”‚           β”‚   β”‚   β”‚   β”œβ”€β”€ libxcb
β”‚           β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ libxau
β”‚           β”‚   β”‚   β”‚   β”‚   β”‚   └── xorgproto
β”‚           β”‚   β”‚   β”‚   β”‚   └── libxdmcp
β”‚           β”‚   β”‚   β”‚   β”‚       └── xorgproto
β”‚           β”‚   β”‚   β”‚   └── xorgproto
β”‚           β”‚   β”‚   └── xorgproto
β”‚           β”‚   β”œβ”€β”€ lzo
β”‚           β”‚   └── pixman
β”‚           β”œβ”€β”€ freetype
β”‚           β”‚   └── libpng
β”‚           β”œβ”€β”€ glib
β”‚           β”‚   β”œβ”€β”€ pcre2
β”‚           β”‚   └── gettext
β”‚           β”œβ”€β”€ graphite2
β”‚           └── icu4c
β”œβ”€β”€ libtool
β”‚   └── m4
└── pango
    β”œβ”€β”€ cairo
    β”‚   β”œβ”€β”€ fontconfig
    β”‚   β”‚   └── freetype
    β”‚   β”‚       └── libpng
    β”‚   β”œβ”€β”€ freetype
    β”‚   β”‚   └── libpng
    β”‚   β”œβ”€β”€ glib
    β”‚   β”‚   β”œβ”€β”€ pcre2
    β”‚   β”‚   └── gettext
    β”‚   β”œβ”€β”€ libpng
    β”‚   β”œβ”€β”€ libx11
    β”‚   β”‚   β”œβ”€β”€ libxcb
    β”‚   β”‚   β”‚   β”œβ”€β”€ libxau
    β”‚   β”‚   β”‚   β”‚   └── xorgproto
    β”‚   β”‚   β”‚   └── libxdmcp
    β”‚   β”‚   β”‚       └── xorgproto
    β”‚   β”‚   └── xorgproto
    β”‚   β”œβ”€β”€ libxcb
    β”‚   β”‚   β”œβ”€β”€ libxau
    β”‚   β”‚   β”‚   └── xorgproto
    β”‚   β”‚   └── libxdmcp
    β”‚   β”‚       └── xorgproto
    β”‚   β”œβ”€β”€ libxext
    β”‚   β”‚   β”œβ”€β”€ libx11
    β”‚   β”‚   β”‚   β”œβ”€β”€ libxcb
    β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ libxau
    β”‚   β”‚   β”‚   β”‚   β”‚   └── xorgproto
    β”‚   β”‚   β”‚   β”‚   └── libxdmcp
    β”‚   β”‚   β”‚   β”‚       └── xorgproto
    β”‚   β”‚   β”‚   └── xorgproto
    β”‚   β”‚   └── xorgproto
    β”‚   β”œβ”€β”€ libxrender
    β”‚   β”‚   β”œβ”€β”€ libx11
    β”‚   β”‚   β”‚   β”œβ”€β”€ libxcb
    β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ libxau
    β”‚   β”‚   β”‚   β”‚   β”‚   └── xorgproto
    β”‚   β”‚   β”‚   β”‚   └── libxdmcp
    β”‚   β”‚   β”‚   β”‚       └── xorgproto
    β”‚   β”‚   β”‚   └── xorgproto
    β”‚   β”‚   └── xorgproto
    β”‚   β”œβ”€β”€ lzo
    β”‚   └── pixman
    β”œβ”€β”€ fontconfig
    β”‚   └── freetype
    β”‚       └── libpng
    β”œβ”€β”€ freetype
    β”‚   └── libpng
    β”œβ”€β”€ fribidi
    β”œβ”€β”€ glib
    β”‚   β”œβ”€β”€ pcre2
    β”‚   └── gettext
    └── harfbuzz
        β”œβ”€β”€ cairo
        β”‚   β”œβ”€β”€ fontconfig
        β”‚   β”‚   └── freetype
        β”‚   β”‚       └── libpng
        β”‚   β”œβ”€β”€ freetype
        β”‚   β”‚   └── libpng
        β”‚   β”œβ”€β”€ glib
        β”‚   β”‚   β”œβ”€β”€ pcre2
        β”‚   β”‚   └── gettext
        β”‚   β”œβ”€β”€ libpng
        β”‚   β”œβ”€β”€ libx11
        β”‚   β”‚   β”œβ”€β”€ libxcb
        β”‚   β”‚   β”‚   β”œβ”€β”€ libxau
        β”‚   β”‚   β”‚   β”‚   └── xorgproto
        β”‚   β”‚   β”‚   └── libxdmcp
        β”‚   β”‚   β”‚       └── xorgproto
        β”‚   β”‚   └── xorgproto
        β”‚   β”œβ”€β”€ libxcb
        β”‚   β”‚   β”œβ”€β”€ libxau
        β”‚   β”‚   β”‚   └── xorgproto
        β”‚   β”‚   └── libxdmcp
        β”‚   β”‚       └── xorgproto
        β”‚   β”œβ”€β”€ libxext
        β”‚   β”‚   β”œβ”€β”€ libx11
        β”‚   β”‚   β”‚   β”œβ”€β”€ libxcb
        β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ libxau
        β”‚   β”‚   β”‚   β”‚   β”‚   └── xorgproto
        β”‚   β”‚   β”‚   β”‚   └── libxdmcp
        β”‚   β”‚   β”‚   β”‚       └── xorgproto
        β”‚   β”‚   β”‚   └── xorgproto
        β”‚   β”‚   └── xorgproto
        β”‚   β”œβ”€β”€ libxrender
        β”‚   β”‚   β”œβ”€β”€ libx11
        β”‚   β”‚   β”‚   β”œβ”€β”€ libxcb
        β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ libxau
        β”‚   β”‚   β”‚   β”‚   β”‚   └── xorgproto
        β”‚   β”‚   β”‚   β”‚   └── libxdmcp
        β”‚   β”‚   β”‚   β”‚       └── xorgproto
        β”‚   β”‚   β”‚   └── xorgproto
        β”‚   β”‚   └── xorgproto
        β”‚   β”œβ”€β”€ lzo
        β”‚   └── pixman
        β”œβ”€β”€ freetype
        β”‚   └── libpng
        β”œβ”€β”€ glib
        β”‚   β”œβ”€β”€ pcre2
        β”‚   └── gettext
        β”œβ”€β”€ graphite2
        └── icu4c

gts
β”œβ”€β”€ glib
β”‚   β”œβ”€β”€ pcre2
β”‚   └── gettext
β”œβ”€β”€ netpbm
β”‚   β”œβ”€β”€ jasper
β”‚   β”‚   └── jpeg-turbo
β”‚   β”œβ”€β”€ jpeg-turbo
β”‚   β”œβ”€β”€ libpng
β”‚   └── libtiff
β”‚       β”œβ”€β”€ jpeg-turbo
β”‚       └── zstd
β”‚           β”œβ”€β”€ lz4
β”‚           └── xz
└── gettext

guile
β”œβ”€β”€ bdw-gc
β”œβ”€β”€ gmp
β”œβ”€β”€ libtool
β”‚   └── m4
β”œβ”€β”€ libunistring
β”œβ”€β”€ pkg-config
└── readline

harfbuzz
β”œβ”€β”€ cairo
β”‚   β”œβ”€β”€ fontconfig
β”‚   β”‚   └── freetype
β”‚   β”‚       └── libpng
β”‚   β”œβ”€β”€ freetype
β”‚   β”‚   └── libpng
β”‚   β”œβ”€β”€ glib
β”‚   β”‚   β”œβ”€β”€ pcre2
β”‚   β”‚   └── gettext
β”‚   β”œβ”€β”€ libpng
β”‚   β”œβ”€β”€ libx11
β”‚   β”‚   β”œβ”€β”€ libxcb
β”‚   β”‚   β”‚   β”œβ”€β”€ libxau
β”‚   β”‚   β”‚   β”‚   └── xorgproto
β”‚   β”‚   β”‚   └── libxdmcp
β”‚   β”‚   β”‚       └── xorgproto
β”‚   β”‚   └── xorgproto
β”‚   β”œβ”€β”€ libxcb
β”‚   β”‚   β”œβ”€β”€ libxau
β”‚   β”‚   β”‚   └── xorgproto
β”‚   β”‚   └── libxdmcp
β”‚   β”‚       └── xorgproto
β”‚   β”œβ”€β”€ libxext
β”‚   β”‚   β”œβ”€β”€ libx11
β”‚   β”‚   β”‚   β”œβ”€β”€ libxcb
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ libxau
β”‚   β”‚   β”‚   β”‚   β”‚   └── xorgproto
β”‚   β”‚   β”‚   β”‚   └── libxdmcp
β”‚   β”‚   β”‚   β”‚       └── xorgproto
β”‚   β”‚   β”‚   └── xorgproto
β”‚   β”‚   └── xorgproto
β”‚   β”œβ”€β”€ libxrender
β”‚   β”‚   β”œβ”€β”€ libx11
β”‚   β”‚   β”‚   β”œβ”€β”€ libxcb
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ libxau
β”‚   β”‚   β”‚   β”‚   β”‚   └── xorgproto
β”‚   β”‚   β”‚   β”‚   └── libxdmcp
β”‚   β”‚   β”‚   β”‚       └── xorgproto
β”‚   β”‚   β”‚   └── xorgproto
β”‚   β”‚   └── xorgproto
β”‚   β”œβ”€β”€ lzo
β”‚   └── pixman
β”œβ”€β”€ freetype
β”‚   └── libpng
β”œβ”€β”€ glib
β”‚   β”œβ”€β”€ pcre2
β”‚   └── gettext
β”œβ”€β”€ graphite2
└── icu4c

heroku/brew/heroku
└── heroku/brew/heroku-node

heroku/brew/heroku-node

highway

htop
└── ncurses

icu4c

imagemagick
β”œβ”€β”€ freetype
β”‚   └── libpng
β”œβ”€β”€ ghostscript
β”‚   β”œβ”€β”€ fontconfig
β”‚   β”‚   └── freetype
β”‚   β”‚       └── libpng
β”‚   β”œβ”€β”€ freetype
β”‚   β”‚   └── libpng
β”‚   β”œβ”€β”€ jbig2dec
β”‚   β”œβ”€β”€ jpeg-turbo
β”‚   β”œβ”€β”€ libidn
β”‚   β”œβ”€β”€ libpng
β”‚   β”œβ”€β”€ libtiff
β”‚   β”‚   β”œβ”€β”€ jpeg-turbo
β”‚   β”‚   └── zstd
β”‚   β”‚       β”œβ”€β”€ lz4
β”‚   β”‚       └── xz
β”‚   β”œβ”€β”€ little-cms2
β”‚   β”‚   β”œβ”€β”€ jpeg-turbo
β”‚   β”‚   └── libtiff
β”‚   β”‚       β”œβ”€β”€ jpeg-turbo
β”‚   β”‚       └── zstd
β”‚   β”‚           β”œβ”€β”€ lz4
β”‚   β”‚           └── xz
β”‚   └── openjpeg
β”‚       β”œβ”€β”€ libpng
β”‚       β”œβ”€β”€ libtiff
β”‚       β”‚   β”œβ”€β”€ jpeg-turbo
β”‚       β”‚   └── zstd
β”‚       β”‚       β”œβ”€β”€ lz4
β”‚       β”‚       └── xz
β”‚       └── little-cms2
β”‚           β”œβ”€β”€ jpeg-turbo
β”‚           └── libtiff
β”‚               β”œβ”€β”€ jpeg-turbo
β”‚               └── zstd
β”‚                   β”œβ”€β”€ lz4
β”‚                   └── xz
β”œβ”€β”€ jpeg-turbo
β”œβ”€β”€ libheif
β”‚   β”œβ”€β”€ aom
β”‚   β”‚   β”œβ”€β”€ jpeg-xl
β”‚   β”‚   β”‚   β”œβ”€β”€ brotli
β”‚   β”‚   β”‚   β”œβ”€β”€ giflib
β”‚   β”‚   β”‚   β”œβ”€β”€ highway
β”‚   β”‚   β”‚   β”œβ”€β”€ imath
β”‚   β”‚   β”‚   β”œβ”€β”€ jpeg-turbo
β”‚   β”‚   β”‚   β”œβ”€β”€ libpng
β”‚   β”‚   β”‚   β”œβ”€β”€ little-cms2
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ jpeg-turbo
β”‚   β”‚   β”‚   β”‚   └── libtiff
β”‚   β”‚   β”‚   β”‚       β”œβ”€β”€ jpeg-turbo
β”‚   β”‚   β”‚   β”‚       └── zstd
β”‚   β”‚   β”‚   β”‚           β”œβ”€β”€ lz4
β”‚   β”‚   β”‚   β”‚           └── xz
β”‚   β”‚   β”‚   β”œβ”€β”€ openexr
β”‚   β”‚   β”‚   β”‚   └── imath
β”‚   β”‚   β”‚   └── webp
β”‚   β”‚   β”‚       β”œβ”€β”€ giflib
β”‚   β”‚   β”‚       β”œβ”€β”€ jpeg-turbo
β”‚   β”‚   β”‚       β”œβ”€β”€ libpng
β”‚   β”‚   β”‚       └── libtiff
β”‚   β”‚   β”‚           β”œβ”€β”€ jpeg-turbo
β”‚   β”‚   β”‚           └── zstd
β”‚   β”‚   β”‚               β”œβ”€β”€ lz4
β”‚   β”‚   β”‚               └── xz
β”‚   β”‚   └── libvmaf
β”‚   β”œβ”€β”€ jpeg-turbo
β”‚   β”œβ”€β”€ libde265
β”‚   β”œβ”€β”€ libpng
β”‚   β”œβ”€β”€ shared-mime-info
β”‚   β”‚   └── glib
β”‚   β”‚       β”œβ”€β”€ pcre2
β”‚   β”‚       └── gettext
β”‚   └── x265
β”œβ”€β”€ liblqr
β”‚   └── glib
β”‚       β”œβ”€β”€ pcre2
β”‚       └── gettext
β”œβ”€β”€ libpng
β”œβ”€β”€ libraw
β”‚   β”œβ”€β”€ jasper
β”‚   β”‚   └── jpeg-turbo
β”‚   β”œβ”€β”€ jpeg-turbo
β”‚   β”œβ”€β”€ little-cms2
β”‚   β”‚   β”œβ”€β”€ jpeg-turbo
β”‚   β”‚   └── libtiff
β”‚   β”‚       β”œβ”€β”€ jpeg-turbo
β”‚   β”‚       └── zstd
β”‚   β”‚           β”œβ”€β”€ lz4
β”‚   β”‚           └── xz
β”‚   └── libomp
β”œβ”€β”€ libtiff
β”‚   β”œβ”€β”€ jpeg-turbo
β”‚   └── zstd
β”‚       β”œβ”€β”€ lz4
β”‚       └── xz
β”œβ”€β”€ libtool
β”‚   └── m4
β”œβ”€β”€ little-cms2
β”‚   β”œβ”€β”€ jpeg-turbo
β”‚   └── libtiff
β”‚       β”œβ”€β”€ jpeg-turbo
β”‚       └── zstd
β”‚           β”œβ”€β”€ lz4
β”‚           └── xz
β”œβ”€β”€ openexr
β”‚   └── imath
β”œβ”€β”€ openjpeg
β”‚   β”œβ”€β”€ libpng
β”‚   β”œβ”€β”€ libtiff
β”‚   β”‚   β”œβ”€β”€ jpeg-turbo
β”‚   β”‚   └── zstd
β”‚   β”‚       β”œβ”€β”€ lz4
β”‚   β”‚       └── xz
β”‚   └── little-cms2
β”‚       β”œβ”€β”€ jpeg-turbo
β”‚       └── libtiff
β”‚           β”œβ”€β”€ jpeg-turbo
β”‚           └── zstd
β”‚               β”œβ”€β”€ lz4
β”‚               └── xz
β”œβ”€β”€ webp
β”‚   β”œβ”€β”€ giflib
β”‚   β”œβ”€β”€ jpeg-turbo
β”‚   β”œβ”€β”€ libpng
β”‚   └── libtiff
β”‚       β”œβ”€β”€ jpeg-turbo
β”‚       └── zstd
β”‚           β”œβ”€β”€ lz4
β”‚           └── xz
β”œβ”€β”€ xz
└── libomp

imath

jansson

jasper
└── jpeg-turbo

jbig2dec

jpeg-turbo

jpeg-xl
β”œβ”€β”€ brotli
β”œβ”€β”€ giflib
β”œβ”€β”€ highway
β”œβ”€β”€ imath
β”œβ”€β”€ jpeg-turbo
β”œβ”€β”€ libpng
β”œβ”€β”€ little-cms2
β”‚   β”œβ”€β”€ jpeg-turbo
β”‚   └── libtiff
β”‚       β”œβ”€β”€ jpeg-turbo
β”‚       └── zstd
β”‚           β”œβ”€β”€ lz4
β”‚           └── xz
β”œβ”€β”€ openexr
β”‚   └── imath
└── webp
    β”œβ”€β”€ giflib
    β”œβ”€β”€ jpeg-turbo
    β”œβ”€β”€ libpng
    └── libtiff
        β”œβ”€β”€ jpeg-turbo
        └── zstd
            β”œβ”€β”€ lz4
            └── xz

jq
└── oniguruma

krb5
└── openssl@1.1
    └── ca-certificates

libavif
β”œβ”€β”€ aom
β”‚   β”œβ”€β”€ jpeg-xl
β”‚   β”‚   β”œβ”€β”€ brotli
β”‚   β”‚   β”œβ”€β”€ giflib
β”‚   β”‚   β”œβ”€β”€ highway
β”‚   β”‚   β”œβ”€β”€ imath
β”‚   β”‚   β”œβ”€β”€ jpeg-turbo
β”‚   β”‚   β”œβ”€β”€ libpng
β”‚   β”‚   β”œβ”€β”€ little-cms2
β”‚   β”‚   β”‚   β”œβ”€β”€ jpeg-turbo
β”‚   β”‚   β”‚   └── libtiff
β”‚   β”‚   β”‚       β”œβ”€β”€ jpeg-turbo
β”‚   β”‚   β”‚       └── zstd
β”‚   β”‚   β”‚           β”œβ”€β”€ lz4
β”‚   β”‚   β”‚           └── xz
β”‚   β”‚   β”œβ”€β”€ openexr
β”‚   β”‚   β”‚   └── imath
β”‚   β”‚   └── webp
β”‚   β”‚       β”œβ”€β”€ giflib
β”‚   β”‚       β”œβ”€β”€ jpeg-turbo
β”‚   β”‚       β”œβ”€β”€ libpng
β”‚   β”‚       └── libtiff
β”‚   β”‚           β”œβ”€β”€ jpeg-turbo
β”‚   β”‚           └── zstd
β”‚   β”‚               β”œβ”€β”€ lz4
β”‚   β”‚               └── xz
β”‚   └── libvmaf
β”œβ”€β”€ jpeg-turbo
└── libpng

libde265

libevent
└── openssl@1.1
    └── ca-certificates

libheif
β”œβ”€β”€ aom
β”‚   β”œβ”€β”€ jpeg-xl
β”‚   β”‚   β”œβ”€β”€ brotli
β”‚   β”‚   β”œβ”€β”€ giflib
β”‚   β”‚   β”œβ”€β”€ highway
β”‚   β”‚   β”œβ”€β”€ imath
β”‚   β”‚   β”œβ”€β”€ jpeg-turbo
β”‚   β”‚   β”œβ”€β”€ libpng
β”‚   β”‚   β”œβ”€β”€ little-cms2
β”‚   β”‚   β”‚   β”œβ”€β”€ jpeg-turbo
β”‚   β”‚   β”‚   └── libtiff
β”‚   β”‚   β”‚       β”œβ”€β”€ jpeg-turbo
β”‚   β”‚   β”‚       └── zstd
β”‚   β”‚   β”‚           β”œβ”€β”€ lz4
β”‚   β”‚   β”‚           └── xz
β”‚   β”‚   β”œβ”€β”€ openexr
β”‚   β”‚   β”‚   └── imath
β”‚   β”‚   └── webp
β”‚   β”‚       β”œβ”€β”€ giflib
β”‚   β”‚       β”œβ”€β”€ jpeg-turbo
β”‚   β”‚       β”œβ”€β”€ libpng
β”‚   β”‚       └── libtiff
β”‚   β”‚           β”œβ”€β”€ jpeg-turbo
β”‚   β”‚           └── zstd
β”‚   β”‚               β”œβ”€β”€ lz4
β”‚   β”‚               └── xz
β”‚   └── libvmaf
β”œβ”€β”€ jpeg-turbo
β”œβ”€β”€ libde265
β”œβ”€β”€ libpng
β”œβ”€β”€ shared-mime-info
β”‚   └── glib
β”‚       β”œβ”€β”€ pcre2
β”‚       └── gettext
└── x265

libidn

libidn2
β”œβ”€β”€ libunistring
└── gettext

liblqr
└── glib
    β”œβ”€β”€ pcre2
    └── gettext

libnghttp2

libomp

libpng

libraw
β”œβ”€β”€ jasper
β”‚   └── jpeg-turbo
β”œβ”€β”€ jpeg-turbo
β”œβ”€β”€ little-cms2
β”‚   β”œβ”€β”€ jpeg-turbo
β”‚   └── libtiff
β”‚       β”œβ”€β”€ jpeg-turbo
β”‚       └── zstd
β”‚           β”œβ”€β”€ lz4
β”‚           └── xz
└── libomp

librsvg
β”œβ”€β”€ cairo
β”‚   β”œβ”€β”€ fontconfig
β”‚   β”‚   └── freetype
β”‚   β”‚       └── libpng
β”‚   β”œβ”€β”€ freetype
β”‚   β”‚   └── libpng
β”‚   β”œβ”€β”€ glib
β”‚   β”‚   β”œβ”€β”€ pcre2
β”‚   β”‚   └── gettext
β”‚   β”œβ”€β”€ libpng
β”‚   β”œβ”€β”€ libx11
β”‚   β”‚   β”œβ”€β”€ libxcb
β”‚   β”‚   β”‚   β”œβ”€β”€ libxau
β”‚   β”‚   β”‚   β”‚   └── xorgproto
β”‚   β”‚   β”‚   └── libxdmcp
β”‚   β”‚   β”‚       └── xorgproto
β”‚   β”‚   └── xorgproto
β”‚   β”œβ”€β”€ libxcb
β”‚   β”‚   β”œβ”€β”€ libxau
β”‚   β”‚   β”‚   └── xorgproto
β”‚   β”‚   └── libxdmcp
β”‚   β”‚       └── xorgproto
β”‚   β”œβ”€β”€ libxext
β”‚   β”‚   β”œβ”€β”€ libx11
β”‚   β”‚   β”‚   β”œβ”€β”€ libxcb
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ libxau
β”‚   β”‚   β”‚   β”‚   β”‚   └── xorgproto
β”‚   β”‚   β”‚   β”‚   └── libxdmcp
β”‚   β”‚   β”‚   β”‚       └── xorgproto
β”‚   β”‚   β”‚   └── xorgproto
β”‚   β”‚   └── xorgproto
β”‚   β”œβ”€β”€ libxrender
β”‚   β”‚   β”œβ”€β”€ libx11
β”‚   β”‚   β”‚   β”œβ”€β”€ libxcb
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ libxau
β”‚   β”‚   β”‚   β”‚   β”‚   └── xorgproto
β”‚   β”‚   β”‚   β”‚   └── libxdmcp
β”‚   β”‚   β”‚   β”‚       └── xorgproto
β”‚   β”‚   β”‚   └── xorgproto
β”‚   β”‚   └── xorgproto
β”‚   β”œβ”€β”€ lzo
β”‚   └── pixman
β”œβ”€β”€ gdk-pixbuf
β”‚   β”œβ”€β”€ glib
β”‚   β”‚   β”œβ”€β”€ pcre2
β”‚   β”‚   └── gettext
β”‚   β”œβ”€β”€ jpeg-turbo
β”‚   β”œβ”€β”€ libpng
β”‚   └── libtiff
β”‚       β”œβ”€β”€ jpeg-turbo
β”‚       └── zstd
β”‚           β”œβ”€β”€ lz4
β”‚           └── xz
β”œβ”€β”€ glib
β”‚   β”œβ”€β”€ pcre2
β”‚   └── gettext
└── pango
    β”œβ”€β”€ cairo
    β”‚   β”œβ”€β”€ fontconfig
    β”‚   β”‚   └── freetype
    β”‚   β”‚       └── libpng
    β”‚   β”œβ”€β”€ freetype
    β”‚   β”‚   └── libpng
    β”‚   β”œβ”€β”€ glib
    β”‚   β”‚   β”œβ”€β”€ pcre2
    β”‚   β”‚   └── gettext
    β”‚   β”œβ”€β”€ libpng
    β”‚   β”œβ”€β”€ libx11
    β”‚   β”‚   β”œβ”€β”€ libxcb
    β”‚   β”‚   β”‚   β”œβ”€β”€ libxau
    β”‚   β”‚   β”‚   β”‚   └── xorgproto
    β”‚   β”‚   β”‚   └── libxdmcp
    β”‚   β”‚   β”‚       └── xorgproto
    β”‚   β”‚   └── xorgproto
    β”‚   β”œβ”€β”€ libxcb
    β”‚   β”‚   β”œβ”€β”€ libxau
    β”‚   β”‚   β”‚   └── xorgproto
    β”‚   β”‚   └── libxdmcp
    β”‚   β”‚       └── xorgproto
    β”‚   β”œβ”€β”€ libxext
    β”‚   β”‚   β”œβ”€β”€ libx11
    β”‚   β”‚   β”‚   β”œβ”€β”€ libxcb
    β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ libxau
    β”‚   β”‚   β”‚   β”‚   β”‚   └── xorgproto
    β”‚   β”‚   β”‚   β”‚   └── libxdmcp
    β”‚   β”‚   β”‚   β”‚       └── xorgproto
    β”‚   β”‚   β”‚   └── xorgproto
    β”‚   β”‚   └── xorgproto
    β”‚   β”œβ”€β”€ libxrender
    β”‚   β”‚   β”œβ”€β”€ libx11
    β”‚   β”‚   β”‚   β”œβ”€β”€ libxcb
    β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ libxau
    β”‚   β”‚   β”‚   β”‚   β”‚   └── xorgproto
    β”‚   β”‚   β”‚   β”‚   └── libxdmcp
    β”‚   β”‚   β”‚   β”‚       └── xorgproto
    β”‚   β”‚   β”‚   └── xorgproto
    β”‚   β”‚   └── xorgproto
    β”‚   β”œβ”€β”€ lzo
    β”‚   └── pixman
    β”œβ”€β”€ fontconfig
    β”‚   └── freetype
    β”‚       └── libpng
    β”œβ”€β”€ freetype
    β”‚   └── libpng
    β”œβ”€β”€ fribidi
    β”œβ”€β”€ glib
    β”‚   β”œβ”€β”€ pcre2
    β”‚   └── gettext
    └── harfbuzz
        β”œβ”€β”€ cairo
        β”‚   β”œβ”€β”€ fontconfig
        β”‚   β”‚   └── freetype
        β”‚   β”‚       └── libpng
        β”‚   β”œβ”€β”€ freetype
        β”‚   β”‚   └── libpng
        β”‚   β”œβ”€β”€ glib
        β”‚   β”‚   β”œβ”€β”€ pcre2
        β”‚   β”‚   └── gettext
        β”‚   β”œβ”€β”€ libpng
        β”‚   β”œβ”€β”€ libx11
        β”‚   β”‚   β”œβ”€β”€ libxcb
        β”‚   β”‚   β”‚   β”œβ”€β”€ libxau
        β”‚   β”‚   β”‚   β”‚   └── xorgproto
        β”‚   β”‚   β”‚   └── libxdmcp
        β”‚   β”‚   β”‚       └── xorgproto
        β”‚   β”‚   └── xorgproto
        β”‚   β”œβ”€β”€ libxcb
        β”‚   β”‚   β”œβ”€β”€ libxau
        β”‚   β”‚   β”‚   └── xorgproto
        β”‚   β”‚   └── libxdmcp
        β”‚   β”‚       └── xorgproto
        β”‚   β”œβ”€β”€ libxext
        β”‚   β”‚   β”œβ”€β”€ libx11
        β”‚   β”‚   β”‚   β”œβ”€β”€ libxcb
        β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ libxau
        β”‚   β”‚   β”‚   β”‚   β”‚   └── xorgproto
        β”‚   β”‚   β”‚   β”‚   └── libxdmcp
        β”‚   β”‚   β”‚   β”‚       └── xorgproto
        β”‚   β”‚   β”‚   └── xorgproto
        β”‚   β”‚   └── xorgproto
        β”‚   β”œβ”€β”€ libxrender
        β”‚   β”‚   β”œβ”€β”€ libx11
        β”‚   β”‚   β”‚   β”œβ”€β”€ libxcb
        β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ libxau
        β”‚   β”‚   β”‚   β”‚   β”‚   └── xorgproto
        β”‚   β”‚   β”‚   β”‚   └── libxdmcp
        β”‚   β”‚   β”‚   β”‚       └── xorgproto
        β”‚   β”‚   β”‚   └── xorgproto
        β”‚   β”‚   └── xorgproto
        β”‚   β”œβ”€β”€ lzo
        β”‚   └── pixman
        β”œβ”€β”€ freetype
        β”‚   └── libpng
        β”œβ”€β”€ glib
        β”‚   β”œβ”€β”€ pcre2
        β”‚   └── gettext
        β”œβ”€β”€ graphite2
        └── icu4c

libtasn1

libtermkey
└── unibilium

libtiff
β”œβ”€β”€ jpeg-turbo
└── zstd
    β”œβ”€β”€ lz4
    └── xz

libtool
└── m4

libunistring

libuv

libvmaf

libvterm

libx11
β”œβ”€β”€ libxcb
β”‚   β”œβ”€β”€ libxau
β”‚   β”‚   └── xorgproto
β”‚   └── libxdmcp
β”‚       └── xorgproto
└── xorgproto

libxau
└── xorgproto

libxcb
β”œβ”€β”€ libxau
β”‚   └── xorgproto
└── libxdmcp
    └── xorgproto

libxdmcp
└── xorgproto

libxext
β”œβ”€β”€ libx11
β”‚   β”œβ”€β”€ libxcb
β”‚   β”‚   β”œβ”€β”€ libxau
β”‚   β”‚   β”‚   └── xorgproto
β”‚   β”‚   └── libxdmcp
β”‚   β”‚       └── xorgproto
β”‚   └── xorgproto
└── xorgproto

libxrender
β”œβ”€β”€ libx11
β”‚   β”œβ”€β”€ libxcb
β”‚   β”‚   β”œβ”€β”€ libxau
β”‚   β”‚   β”‚   └── xorgproto
β”‚   β”‚   └── libxdmcp
β”‚   β”‚       └── xorgproto
β”‚   └── xorgproto
└── xorgproto

libyaml

little-cms2
β”œβ”€β”€ jpeg-turbo
└── libtiff
    β”œβ”€β”€ jpeg-turbo
    └── zstd
        β”œβ”€β”€ lz4
        └── xz

lua

luajit

luv
└── libuv

lz4

lzo

m4

mpdecimal

msgpack

ncdu
└── ncurses

ncurses

neovim
β”œβ”€β”€ gettext
β”œβ”€β”€ libtermkey
β”‚   └── unibilium
β”œβ”€β”€ libuv
β”œβ”€β”€ libvterm
β”œβ”€β”€ luajit
β”œβ”€β”€ luv
β”‚   └── libuv
β”œβ”€β”€ msgpack
β”œβ”€β”€ tree-sitter
└── unibilium

netpbm
β”œβ”€β”€ jasper
β”‚   └── jpeg-turbo
β”œβ”€β”€ jpeg-turbo
β”œβ”€β”€ libpng
└── libtiff
    β”œβ”€β”€ jpeg-turbo
    └── zstd
        β”œβ”€β”€ lz4
        └── xz

nettle
└── gmp

oniguruma

openexr
└── imath

openjpeg
β”œβ”€β”€ libpng
β”œβ”€β”€ libtiff
β”‚   β”œβ”€β”€ jpeg-turbo
β”‚   └── zstd
β”‚       β”œβ”€β”€ lz4
β”‚       └── xz
└── little-cms2
    β”œβ”€β”€ jpeg-turbo
    └── libtiff
        β”œβ”€β”€ jpeg-turbo
        └── zstd
            β”œβ”€β”€ lz4
            └── xz

openssl@1.1
└── ca-certificates

openssl@3
└── ca-certificates

p11-kit
β”œβ”€β”€ ca-certificates
└── libtasn1

pango
β”œβ”€β”€ cairo
β”‚   β”œβ”€β”€ fontconfig
β”‚   β”‚   └── freetype
β”‚   β”‚       └── libpng
β”‚   β”œβ”€β”€ freetype
β”‚   β”‚   └── libpng
β”‚   β”œβ”€β”€ glib
β”‚   β”‚   β”œβ”€β”€ pcre2
β”‚   β”‚   └── gettext
β”‚   β”œβ”€β”€ libpng
β”‚   β”œβ”€β”€ libx11
β”‚   β”‚   β”œβ”€β”€ libxcb
β”‚   β”‚   β”‚   β”œβ”€β”€ libxau
β”‚   β”‚   β”‚   β”‚   └── xorgproto
β”‚   β”‚   β”‚   └── libxdmcp
β”‚   β”‚   β”‚       └── xorgproto
β”‚   β”‚   └── xorgproto
β”‚   β”œβ”€β”€ libxcb
β”‚   β”‚   β”œβ”€β”€ libxau
β”‚   β”‚   β”‚   └── xorgproto
β”‚   β”‚   └── libxdmcp
β”‚   β”‚       └── xorgproto
β”‚   β”œβ”€β”€ libxext
β”‚   β”‚   β”œβ”€β”€ libx11
β”‚   β”‚   β”‚   β”œβ”€β”€ libxcb
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ libxau
β”‚   β”‚   β”‚   β”‚   β”‚   └── xorgproto
β”‚   β”‚   β”‚   β”‚   └── libxdmcp
β”‚   β”‚   β”‚   β”‚       └── xorgproto
β”‚   β”‚   β”‚   └── xorgproto
β”‚   β”‚   └── xorgproto
β”‚   β”œβ”€β”€ libxrender
β”‚   β”‚   β”œβ”€β”€ libx11
β”‚   β”‚   β”‚   β”œβ”€β”€ libxcb
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ libxau
β”‚   β”‚   β”‚   β”‚   β”‚   └── xorgproto
β”‚   β”‚   β”‚   β”‚   └── libxdmcp
β”‚   β”‚   β”‚   β”‚       └── xorgproto
β”‚   β”‚   β”‚   └── xorgproto
β”‚   β”‚   └── xorgproto
β”‚   β”œβ”€β”€ lzo
β”‚   └── pixman
β”œβ”€β”€ fontconfig
β”‚   └── freetype
β”‚       └── libpng
β”œβ”€β”€ freetype
β”‚   └── libpng
β”œβ”€β”€ fribidi
β”œβ”€β”€ glib
β”‚   β”œβ”€β”€ pcre2
β”‚   └── gettext
└── harfbuzz
    β”œβ”€β”€ cairo
    β”‚   β”œβ”€β”€ fontconfig
    β”‚   β”‚   └── freetype
    β”‚   β”‚       └── libpng
    β”‚   β”œβ”€β”€ freetype
    β”‚   β”‚   └── libpng
    β”‚   β”œβ”€β”€ glib
    β”‚   β”‚   β”œβ”€β”€ pcre2
    β”‚   β”‚   └── gettext
    β”‚   β”œβ”€β”€ libpng
    β”‚   β”œβ”€β”€ libx11
    β”‚   β”‚   β”œβ”€β”€ libxcb
    β”‚   β”‚   β”‚   β”œβ”€β”€ libxau
    β”‚   β”‚   β”‚   β”‚   └── xorgproto
    β”‚   β”‚   β”‚   └── libxdmcp
    β”‚   β”‚   β”‚       └── xorgproto
    β”‚   β”‚   └── xorgproto
    β”‚   β”œβ”€β”€ libxcb
    β”‚   β”‚   β”œβ”€β”€ libxau
    β”‚   β”‚   β”‚   └── xorgproto
    β”‚   β”‚   └── libxdmcp
    β”‚   β”‚       └── xorgproto
    β”‚   β”œβ”€β”€ libxext
    β”‚   β”‚   β”œβ”€β”€ libx11
    β”‚   β”‚   β”‚   β”œβ”€β”€ libxcb
    β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ libxau
    β”‚   β”‚   β”‚   β”‚   β”‚   └── xorgproto
    β”‚   β”‚   β”‚   β”‚   └── libxdmcp
    β”‚   β”‚   β”‚   β”‚       └── xorgproto
    β”‚   β”‚   β”‚   └── xorgproto
    β”‚   β”‚   └── xorgproto
    β”‚   β”œβ”€β”€ libxrender
    β”‚   β”‚   β”œβ”€β”€ libx11
    β”‚   β”‚   β”‚   β”œβ”€β”€ libxcb
    β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ libxau
    β”‚   β”‚   β”‚   β”‚   β”‚   └── xorgproto
    β”‚   β”‚   β”‚   β”‚   └── libxdmcp
    β”‚   β”‚   β”‚   β”‚       └── xorgproto
    β”‚   β”‚   β”‚   └── xorgproto
    β”‚   β”‚   └── xorgproto
    β”‚   β”œβ”€β”€ lzo
    β”‚   └── pixman
    β”œβ”€β”€ freetype
    β”‚   └── libpng
    β”œβ”€β”€ glib
    β”‚   β”œβ”€β”€ pcre2
    β”‚   └── gettext
    β”œβ”€β”€ graphite2
    └── icu4c

pcre

pcre2

perl
β”œβ”€β”€ berkeley-db
β”‚   └── openssl@1.1
β”‚       └── ca-certificates
└── gdbm

pixman

pkg-config

postgresql@14
β”œβ”€β”€ icu4c
β”œβ”€β”€ krb5
β”‚   └── openssl@1.1
β”‚       └── ca-certificates
β”œβ”€β”€ lz4
β”œβ”€β”€ openssl@1.1
β”‚   └── ca-certificates
└── readline

pure
└── zsh-async

python@3.11
β”œβ”€β”€ mpdecimal
β”œβ”€β”€ openssl@1.1
β”‚   └── ca-certificates
β”œβ”€β”€ sqlite
β”‚   └── readline
└── xz

rbenv
└── ruby-build
    β”œβ”€β”€ autoconf
    β”‚   └── m4
    β”œβ”€β”€ pkg-config
    └── readline

rcm

readline

redis
└── openssl@1.1
    └── ca-certificates

ripgrep
└── pcre2

ruby
β”œβ”€β”€ libyaml
β”œβ”€β”€ openssl@1.1
β”‚   └── ca-certificates
└── readline

ruby-build
β”œβ”€β”€ autoconf
β”‚   └── m4
β”œβ”€β”€ pkg-config
└── readline

rust
β”œβ”€β”€ openssl@1.1
β”‚   └── ca-certificates
└── pkg-config

shared-mime-info
└── glib
    β”œβ”€β”€ pcre2
    └── gettext

sl

sqlite
└── readline

terminal-notifier

tig
β”œβ”€β”€ ncurses
β”œβ”€β”€ pcre2
└── readline

tmux
β”œβ”€β”€ libevent
β”‚   └── openssl@1.1
β”‚       └── ca-certificates
β”œβ”€β”€ ncurses
└── utf8proc

tree

tree-sitter

unbound
β”œβ”€β”€ libevent
β”‚   └── openssl@1.1
β”‚       └── ca-certificates
β”œβ”€β”€ libnghttp2
└── openssl@1.1
    └── ca-certificates

unibilium

utf8proc

vim
β”œβ”€β”€ gettext
β”œβ”€β”€ lua
β”œβ”€β”€ ncurses
β”œβ”€β”€ perl
β”‚   β”œβ”€β”€ berkeley-db
β”‚   β”‚   └── openssl@1.1
β”‚   β”‚       └── ca-certificates
β”‚   └── gdbm
β”œβ”€β”€ python@3.11
β”‚   β”œβ”€β”€ mpdecimal
β”‚   β”œβ”€β”€ openssl@1.1
β”‚   β”‚   └── ca-certificates
β”‚   β”œβ”€β”€ sqlite
β”‚   β”‚   └── readline
β”‚   └── xz
└── ruby
    β”œβ”€β”€ libyaml
    β”œβ”€β”€ openssl@1.1
    β”‚   └── ca-certificates
    └── readline

watch
└── ncurses

webp
β”œβ”€β”€ giflib
β”œβ”€β”€ jpeg-turbo
β”œβ”€β”€ libpng
└── libtiff
    β”œβ”€β”€ jpeg-turbo
    └── zstd
        β”œβ”€β”€ lz4
        └── xz

wget
β”œβ”€β”€ libidn2
β”‚   β”œβ”€β”€ libunistring
β”‚   └── gettext
└── openssl@3
    └── ca-certificates

x265

xorgproto

xz

yarn

youtube-dl
└── python@3.11
    β”œβ”€β”€ mpdecimal
    β”œβ”€β”€ openssl@1.1
    β”‚   └── ca-certificates
    β”œβ”€β”€ sqlite
    β”‚   └── readline
    └── xz

zsh
β”œβ”€β”€ ncurses
└── pcre

zsh-async

zsh-syntax-highlighting

zstd
β”œβ”€β”€ lz4
└── xz


As we can see… tons of things depend on xz.

This output is slightly overwhelming, but if you want to be even more overwhelmed, you can run brew deps --full-name --installed --graph to produce a visual graph representation, which I’ll present to you here:

graph of brew dependencies

You can click on it to see it in more detail.

Maybe I’m not much of a visual learner, but I’ll take the plain text representation any day.

How do I know if I even need this package any longer?

One easy way to figure out if you need a package any longer is to just try uninstalling it and seeing what happens:

$ brew uninstall xz
==> Downloading https://formulae.brew.sh/api/cask.jws.json
######################################################################## 100.0%
Error: Refusing to uninstall /opt/homebrew/Cellar/xz/5.4.1
because it is required by aom, gd, gdk-pixbuf, ghostscript, graphviz, gts, imagemagick, jpeg-xl, libavif, libheif, libraw, librsvg, libtiff, little-cms2, netpbm, openjpeg, python@3.11, vim, webp, youtube-dl and zstd, which are currently installed.
You can override this and force removal with:
  brew uninstall --ignore-dependencies xz

As you can see, homebrew refuses to uninstall it because it’s a dependency of a bunch of stuff. So, I guess, I do need this one.

It would be tedious to do this one-by-one, going through all ~100 or so of the packages I have installed that I don’t recognize the name of, just to free up some space on my hard drive.

Thankfully, it turns out that homebrew has another command, brew leaves, which will solve this problem.

If I run brew list, homebrew prints out 138 packages, many with names I don’t recognize.

If I run brew leaves instead, it prints out 38 packages, most of which I recall asking homebrew to install.

Let’s learn more about this subcommand:

$ brew leaves --help
Usage: brew leaves [--installed-on-request] [--installed-as-dependency]

List installed formulae that are not dependencies of another installed formula.

  -r, --installed-on-request       Only list leaves that were manually
                                   installed.
  -p, --installed-as-dependency    Only list leaves that were installed as
                                   dependencies.
  -d, --debug                      Display any debugging information.
  -q, --quiet                      Make some output more quiet.
  -v, --verbose                    Make some output more verbose.
  -h, --help                       Show this message.

In other words, running brew leaves will print out all of the things that can be uninstalled, because nothing depends on them. In my case, that includes vim, but not xz.

So, if there’s anything in the brew leaves output that you don’t think you need, you can probably safely uninstall it.

There are two flags there that are particularly handy: --installed-on-request and --installed-as-dependency, which filter the output based on why exactly that package is installed on your system.

If you run brew leaves --installed-as-dependency, it will print out all of the things that:

  1. were installed as a dependency of something else
  2. but are no longer a dependency of anything

That sounds eminently uninstallable if anything does.

Note that when you uninstall a package, homebrew does not uninstall that package’s dependencies. That means that many of that package’s dependencies, which were previously not uninstallable become uninstallable. In other words, they become leaves.

So, for example, if I run brew uninstall imagemagick and then check on my leaves, here’s what I see:

$ brew leaves --installed-as-dependency
ghostscript
libheif
liblqr
libraw

I still have ghostscript, libheif, liblqr, and libraw hanging around, and I can use this command to identify that they are not actually needed anymore and continue trimming my hedge.

  1. If homebrew wants to upgrade vim, I’ll usually quit any running vim processes, because it sometimes gets wonky when you upgrade it while it’s already running.Β 

  2. Which I can see spelled out in my BrewfileΒ 

Configuring ALE to only run rubocop in projects that use rubocop

March 6, 2023

I usually use rubocop to help maintain consistency and catch bugs in my Ruby codebases.

When I’m using Vim, I can see the feedback inline via Asynchronous Lint Engine, aka ALE, the terrific vim plugin.

Here’s what it looks like:

Screenshot of rubocop offenses showing up in vim via ALE

Nice!

I could run rubocop from the command line and see my offenses there, but it’s a really nice workflow to see the offense right away, in context, when I introduce it in the editor.

Before I used this vim plugin, I’d just run the rubocop CLI on the command line, which looks like this:

Screenshot of rubocop offense showing up on command line

It’s clear enough what’s happening, but you’d need to open the file to see the context, and there’s some noise, so I think the editor integration is a real improvement.

But! There’s one problem… not every ruby codebase uses rubocop.

For example, the RSS reader I use, Feedbin, is an open source rails app, and when I clone it and open it in vim, here’s what I see:

Screenshot of rubocop offense showing up in vim via ALE when you don't want them to

Yikes!!!

This codebase doesn’t even use rubocop, so of course there are a lot of β€œoffenses”.

This is so annoying that it almost makes me want to disable ALE, but that would make my experience worse when I’m working on codebases that do use rubocop.

What to do?

Thankfully, after some poking around, I found out that it is possible to improve the situation with some ALE configuration. Here’s a bit about how I worked that out.

Here’s what I had in my .vimrc:

let g:ale_linters_explicit = 1

let g:ale_linters= {'ruby': ['rubocop']}

let g:ale_fixers = {'ruby': ['rubocop']}

let g:ale_ruby_rubocop_executable = "bundle"
let g:ale_fix_on_save = 1

I thought this would be sufficient. I ran :help ale-ruby and read through the docs there, and found this relevant bit:

g:ale_ruby_rubocop_executable                   *g:ale_ruby_rubocop_executable*
                                                *b:ale_ruby_rubocop_executable*
  Type: |String|
  Default: `'rubocop'`

  Override the invoked rubocop binary. Set this to `'bundle'` to invoke
  `'bundle` `exec` rubocop'.

So, because I configured that ale_ruby_rubocop_executable global variable to "bundle", that means that ALE is going to invoke bundle exec rubocop instead of simply rubocop.

That has a few nice benefits:

  1. You can feel confident that you’ll use the version of rubocop specified in your Gemfile.lock
  2. If rubocop is not included in your Gemfile.lock, the bundle exec rubocop command will fail, and therefore no offenses will be found

So… wait a second, why was I seeing any rubocop offenses in the feedbin codebase if feedbin doesn’t use rubocop?

Hm, let’s try searching the codebase with ripgrep for references to rubocop:

$ rg rubocop
Gemfile.lock
517:    rubocop (1.42.0)
524:      rubocop-ast (>= 1.24.1, < 2.0)
527:    rubocop-ast (1.24.1)
529:    rubocop-performance (1.15.2)
530:      rubocop (>= 1.7.0, < 2.0)
531:      rubocop-ast (>= 0.4.0)
572:      rubocop (= 1.42.0)
573:      rubocop-performance (= 1.15.2)

Hmm, what the heck, rubocop is in the bundle, even though feedbin doesn’t actually use it. How is it getting in there?

If bundler had a subcommand like npm explain, we could use that to find out exactly why it’s in our bundle. Alas, it doesn’t, so we must resort to reading through Gemfile.lock and figure it out. If we look closely, we’ll see this clue:

standard (1.22.1)
  language_server-protocol (~> 3.17.0.2)
  rubocop (= 1.42.0)
  rubocop-performance (= 1.15.2)

Aha! The feedbin codebase uses standard, which is kind of like an opinionated wrapper around rubocop.

So, because feedbin has this line its Gemfile:

gem "standard"

We get the standard gem and we also get its dependencies in the bundle, which includes rubocop. That means that when ALE tries running bundle exec rubocop, rubocop will run.

If we take a look at standard’s docs, we can find a page about integrating standard with vim which recommends this:

The recommended method for running standardrb within vim is with vim-ale.

To set Standard as your only linter and fixer for Ruby files and thereby preventing conflicts with RuboCop, add these lines to your .vimrc file:

let g:ale_linters = {'ruby': ['standardrb']}
let g:ale_fixers = {'ruby': ['standardrb']}

For automatically fixing on save, add this to your .vimrc:

let g:ale_fix_on_save = 1

Nice! ALE also supports standard, and can be configured to use standard instead of rubocop.

But that’s not exactly what I want…

To recap, here are my goals:

  1. When working in a codebase that uses rubocop, I want ALE to use rubocop to lint and fix
  2. When working in a codebase that uses standard, I want ALE to use standard to lint and fix, and not use rubocop directly
  3. When working in a codebase that uses neither, I want ALE to do nothing

Thankfully, this can be achieved.

Here’s what we can do:

let g:ale_linters_explicit = 1
let g:ale_linters= {'ruby': ['rubocop', 'standardrb']}

let g:ale_fixers = {'ruby': ['rubocop', 'standardrb']}

let g:ale_ruby_rubocop_executable = "bin/rubocop"
let g:ale_ruby_standardrb_executable = "bin/standardrb"
let g:ale_fix_on_save = 1

We’re no longer setting ale_ruby_rubocop_executable to "bundle", because it proved to be insuffient in codebases like feedbin.

Now we’re configuring it to point to the rubocop binstub1. And likewise, we’re configuring it to point to the standard binstub. If a codebase has a binstub for a tool, that’s a pretty good sign that it uses that tool.

This way, ALE will use rubocop in a codebase that has a rubocop binstub and it will use standard in a codebase that has a standard binstub. There should never be a codebase that has both binstubs2, so you don’t need to worry about activating both of them. Just run bundle binstubs rubocop or bundle binstubs standard and commit the generated file and you’re good to go.

  1. Here’s a nice primer on binstubs for the unfamiliar.Β 

  2. Of course it’s possible that both will be there if you run bundle binstubs --all and commit them all, but… please do not do that!Β 

Patrick Willems - How To Analyze Movies

February 22, 2023

This analysis of Home Alone is a tour de force:

It covers quite a lot of ground, from formalist film theory to Auteur Theory demonstrating how they can enrich your experience of filmgoing.

It’s pretty long, but is broken up into nice chapters. I watched it over several days.

NewJeans - OMG

February 19, 2023

I am a sucker for a catchy pop song and a high concept music video and this has both.

(If you don’t speak Korean, turn on the closed captions. The dialogue is funny.)

NewJeans is a new K-pop girl group and I am going to assume that I’m hip for having heard of them.