title: "July 2026"

July 2026

Docker ps formatting and jq

Ah ffs docker nonsense again. even just querying containers is frustraing... 😢

Like just getting a list of containers in json? Colleage says docker ps --format {{json .}}, as if adding --json was too hard for them ‍🤦‍♂️

quick refresher on how to use jq..

➜ jollof ~ jq '.[] | select(.role == "admin")' << EOF
[
  {"name": "Alice", "role": "admin"},
  {"name": "Bob", "role": "user"},
  {"name": "Charlie", "role": "admin"}
]
EOF

output:

{
  "name": "Alice",
  "role": "admin"
}
{
  "name": "Charlie",
  "role": "admin"
}

where we pipeline using a heredoc the multiline array into jq as as stdin and use the select to query the 2 rows with role as admin

ok - simply does it - now if we search for names with the letter i in them?

➜ jollof ~ jq '.[] | select(.name | test("i"))' <<EOF
[
  {"name": "Alice", "role": "admin"},
  {"name": "Bob", "role": "user"},
  {"name": "Charlie", "role": "admin"}
]
EOF

outputs:

{
  "name": "Alice",
  "role": "admin"
}
{
  "name": "Charlie",
  "role": "admin"
}

nice!

good showcase here of the test() how it returns true false and how select() wraps this into querying and filtering before the final query at the bottom

➜ claude@streaming-server SparkyFitness (main) ✗ docker ps --format "{{json .}}" | jq '.Names'
"docker-sparkyfitness-server-1"
"sparkyfitness-db"
"schautrack-web-1"
"schautrack-db-1"
"wger-celery_beat-1"
"wger-celery_worker-1"
"wger-nginx-1"
"wger-web-1"
"wger-db-1"
➜ claude@streaming-server SparkyFitness (main) ✗ docker ps --format "{{json .}}" | jq '.Names | test("^wger")'
false
false
false
false
true
true
true
true
true
➜ claude@streaming-server SparkyFitness (main) ✗ docker ps --format "{{json .}}" | jq 'select(.Names | test("^wger"))'

output from last one is long

Nvim refresher (magic mode etc)

gosh. ok so magic mode... the deafult is on

:set magic

return magic

according to colleague, very magic and very nomagic are later developments hence not having a setting 🤦‍♂️

e.g. in plain terms the default is as if we just did to substitute :s/\m every time for \m magic

now.... back to the example at hand... i wanted to delete everything up to the first literal ". so [] groups ARE default in magic mode, but + STILL must be ecsaped. thus it must be:

:%s/[^"]\+//

blocking shutdown

For some reason on shutdown on desktop-work it pauses for 1m30s (which apparently is the default timeout according to colleage)

systemd.user.extraConfig = ''
  DefaultTimeoutStopSec=10s
  '';

but i dont think thats a great solution... however, it did help finding a command to view processes in a hierachy tree

systemd-cgls --user-unit

which is really helpful for tmux can see child panes (i assume each one is a window/session)

 48 │   │ │ ├─tmux-spawn-b9528ed0-843a-430f-9c3f-8e9cae7b19d1.scope
 49 │   │ │ │ ├─ 8820 -zsh
 50 │   │ │ │ ├─30496 /nix/store/fvrp5xsx4870n75nj8scdhnkqxvn9xj9-neovim-unwrapped-0.11.7/bin/nvim --cmd lua vim>
 51 │   │ │ │ ├─30502 /nix/store/fvrp5xsx4870n75nj8scdhnkqxvn9xj9-neovim-unwrapped-0.11.7/bin/nvim --embed --cmd>
 52 │   │ │ │ ├─31971 node /home/joelyboy/coding/bot/node_modules/typescript/lib/tsserver.js --stdio --locale en>
 53 │   │ │ │ ├─31982 node /home/joelyboy/coding/bot/node_modules/typescript/lib/tsserver.js --stdio --locale en>
 54 │   │ │ │ ├─32626 /nix/store/q1r7qkrnbhakljr4j228v2yi2874jkl9-nodejs-slim-24.15.0/bin/node /home/joelyboy/co>
 55 │   │ │ │ └─32648 /nix/store/q1r7qkrnbhakljr4j228v2yi2874jkl9-nodejs-slim-24.15.0/bin/node /home/joelyboy/co>

intersting note - i never knew this - to split a window to a new tab (:tab split) - intersting that :tab is a modifier

July To-Do

Some stuff needs nix package updates - review in a few weeks

  • yazi lua?
  • waybar new release (>0.15.0) for the commit to fix hyprland/workspaces (then for it to get to nix)
  • telegram golang migration - not merged yet (rewrite from python)
  • iamb unreads - PR #579 should fix unreads but not merged yet
  • sparkyfintess - searching much improved on master - wait for release to land on + v0.17.3