diff --git a/site/blog/2024-09-30-gitignore.md b/site/blog/2024-09-30-gitignore.md index 67ab938..be06b31 100644 --- a/site/blog/2024-09-30-gitignore.md +++ b/site/blog/2024-09-30-gitignore.md @@ -98,18 +98,21 @@ You change your gitignore to this: !.gitignore -!src/*.rs +# whitelist `src` directories and their children, regardless of place +!src/**/ +!src/**/*.rs !Cargo.{toml,lock} -!pysrc/*.py +# whitelist root `pysrc` directory +!/pysrc/*.py !pyproject.toml !poetry.lock -!cmd/*.go +!/cmd/*.go !main.go !go.{mod,sum} -!docs/*.md +!/docs/*.md ``` Now, nobody can accidentally commit undesired files, as git automatically diff --git a/site/blog/2025-07-20-no-gnulib.md b/site/blog/2025-07-20-no-gnulib.md index 7b33edf..1ed79fb 100644 --- a/site/blog/2025-07-20-no-gnulib.md +++ b/site/blog/2025-07-20-no-gnulib.md @@ -1,6 +1,9 @@ --- title: Say NO to Gnulib description: ...and Debian. + +tags: +- build-systems --- If you are a GNU maintainer and are not willing to be criticized by people sick diff --git a/site/blog/2025-07-21-3-json.md b/site/blog/2025-07-21-3-json.md new file mode 100644 index 0000000..e4efe42 --- /dev/null +++ b/site/blog/2025-07-21-3-json.md @@ -0,0 +1,61 @@ +--- +title: 3-json +description: tree, not three + +tags: +- cli +--- + +From the +[`tree(1)` release notes](https://oldmanprogrammer.net/source.php?dir=projects/tree/CHANGES), +version 2.0.0: + +> - Output un-indented JSON on file descriptor 3 ("stddata") automatically if +> file descriptor 3 is present (currently Linux only.) Maybe switch to BSON. + +Surely, nothing will happen if I just assume that the existence of a specific +file descriptor implies something, as nobody is crazy or stupid enough to +hardcode such a thing? **_\_** + +Oops (from the `tree`version 2.0.2 release notes): + +> - Okay, apparently the stddata addition is causing havoc (who knew how many +> scripts just haphazardly hand programs random file descriptors, that's +> surely not a problem.) Going forward the stddata option will only work if +> the environment variable STDDATA_FD is present or set to the descriptor to +> produce the JSON output on. + +Assuming anything about the users environment is and will always be a mistake. +But it's still cool we can have `tree` output structured data using +`STDDATA_FD`: + +```json +> STDDATA_FD=1 tree + +[{"type":"directory","name":".","contents":[{"type":"file","name":"2024-01-01-test.md"},{"type":"file","name":"2024-03-04-htmnix.md"},{"type":"file","name":"2024-04-02-cosmic-drift.md"},{"type":"file","name":"2024-04-15-nix-iceberg.md"},{"type":"file","name":"2024-05-20-swap-i.md"},{"type":"file","name":"2024-09-30-gitignore.md"},{"type":"file","name":"2025-06-05-why-cores.md"},{"type":"file","name":"2025-06-09-nginix.md"},{"type":"file","name":"2025-06-20-intro-cab.md"},{"type":"file","name":"2025-07-04-derive-broken.md"},{"type":"file","name":"2025-07-20-no-gnulib.md"},{"type":"file","name":"_data.ts"}]},{"type":"report","directories":1,"files":12}] +``` + +Also, obligatory [nushell](https://nushell.sh/) mention (using the `markdown` +table style because for some reason the fancy characters don't render properly +with my webfont): + +```sh +> STDDATA_FD=1 tree | from json + +|-#-|---type----|-name-|------------------contents-------------------|-directories-|-files-| +| 0 | directory | . | |-#--|-type-|------------name-------------| | nope | nope | +| | | | | 0 | file | 2024-01-01-test.md | | | | +| | | | | 1 | file | 2024-03-04-htmnix.md | | | | +| | | | | 2 | file | 2024-04-02-cosmic-drift.md | | | | +| | | | | 3 | file | 2024-04-15-nix-iceberg.md | | | | +| | | | | 4 | file | 2024-05-20-swap-i.md | | | | +| | | | | 5 | file | 2024-09-30-gitignore.md | | | | +| | | | | 6 | file | 2025-06-05-why-cores.md | | | | +| | | | | 7 | file | 2025-06-09-nginix.md | | | | +| | | | | 8 | file | 2025-06-20-intro-cab.md | | | | +| | | | | 9 | file | 2025-07-04-derive-broken.md | | | | +| | | | | 10 | file | 2025-07-20-no-gnulib.md | | | | +| | | | | 11 | file | _data.ts | | | | +| 1 | report | nope | nope | 1 | 12 | +```