Learning my tools - Winter 2025

Posted on Jan 15, 2025

I am a big fan of deeply learning my existing tools before shopping around for replacements. I’ve mentioned it before and I’ll keep saying it, constantly researching and testing different apps is a form of procrastination. You just need to learn your tools and get to work.

Each year we close down our construction contracting business during the coldest time of year. I call this my hibernation period. This year I wanted to spend more time learning more about the tools I already use and push myself to do more with them during my hibernation.

I figured I would share what I’ve learned.

yazi

I don’t have enough words to describe how much I love using yazi. I wrote about it last summer and I was barely scratching the surface.

  • Instead of mv, it does cut/paste method. Hit x to cut, then p to paste.
  • Hit z for zoxide and navigate straight to a directory.
  • Hit Z to use fzf to search for a file or directory.
  • I updated my keymap.toml file to add a shortcut to open the current directory in a new Terminator window. I don’t prefer using the shell command option in yazi and want a new terminal pane. This setup works fine.
  • I also added a keyboard shortcut to do the same, but also launch gitui. I like this workflow much better as then I’m have a new workspace for my task.

Here is my keymap.toml file:

[manager]
prepend_keymap = [
    { on = "T", run = "shell --orphan --confirm 'terminator -M -b'", desc = "Open terminal at current dir" },
    { on = ["g", "i"], run ="plugin lazygit", desc = "run lazygit" },
    { on = ["g", "I"], run = "shell --orphan --confirm 'terminator -M -b -e gitui'", desc = "Open directory in gitui" },]
]

rsync

I am such a beginner when it comes to rsync even though I use it almost ever day. It feels like the stuff I learned the winter I should have known a long time ago.

  • You can exclude a directory with --exclude. So, if you want to transfer /mnt/foo but exclude /mnt/foo/bar you do rsync -azv --exclude='bar' /mnt/foo /some/new/path
  • Before starting a transfer, do --dry-run to make sure its all okay.

chezmoi

I realized I am not using my dotfile manager to its full capacity. Even how I use it now feels like I am under-utilizing it.

  • You can create a installs script and chezmoi will automatically install what’s on in the script, in addition to pulling the dotfiles. My script adds and removes some directories in my $HOME, installs packages from apt, and sets up Docker and Distrobox.

Stew

This was a recent discovery for me. I love it when a project has a single binary to run instead of a PPA, flatpak, or snap. Don’t even get me started on brew, cargo, and npm. Using stew helps with installing and managing these binaries.

Here is some extra stuff I learned about stew this winter:

  • I can put the stew config and the binary path in chezmoi and it will pull those when I pull my dotfiles.
  • Pulling the files with chezmoi doesn’t work if you change architectures. Rather than mapping the config and binary path, I created a Stewfile.lock.json for x86 and arm64.

Docker

Originally I thought I was going to spend more time learning LXC so I could minimize the resource allocation to virtual machines in my homelab. Instead, I went deeper and deeper into Docker. I love Docker and I think I’m ready to start writing my own containers.

  • Switched almost all of my configs to compose and learned how to write a compose file. I had been using docker run for everything and was resistant to compose because I just couldn’t wrap my head around how it worked. Now I get it.
  • Can use compose pull, compose restart, compose stop, and compose start when working with the files. This was my biggest mental barrier and I was mixing docker run and docker compose commands. I feel way more comfortable with compose now.
  • I learned that [[Forgejo]] can be used as a container registry and makes it easier to save and use containers in my archive. For example, instead of using sigoden/dufs in a compose file, I can use my.git.instance/$USER/dufs and it will pull it from my own server. I have this set to automatically update, too. I wrote a lot more about this in a recent blog.
  • I migrated three virtual machines to Docker and cut the resource allocation by 90% while still keeping things easy to manage and backup.

- - - - -

Did you like this post? Give it an upvote by clicking on the arrows below! Sending me an upvote is like you and I giving each other a high five.

🙏 😎

Thank you for reading! If you would like to comment on this post you can start a conversation on the Fediverse. Message me on Mastodon at @cinimodev@masto.ctms.me. Or, you may email me at blog.discourse904@8alias.com. This is an intentionally masked email address that will be forwarded to the correct inbox.

If you enjoy the random stuff I write here, post to Mastodon, or watch on YouTube, and are feeling generous, I am open to tips of Ko-fi.