GRV – Git Repository Viewer

GRV is a text-based Git repository viewer for the console, much like tig, but with a few extra features:

  • Commits and refs can be filtered using a query language.
  • Changes to the repository are captured by monitoring the filesystem allowing the UI to be updated automatically.
  • Organised as tabs and splits. Custom tabs and splits can be created using any combination of views.
  • Vi like keybindings by default, key bindings can be customised.
  • Custom themes can be created.

Nerd Fonts – Iconic font aggregator, collection, and patcher

Nerd Fonts is a collection of fonts for people who work with code snippets, command line, and text-based user interface applications.  The fonts are also patched with additional popular icon sets like Font Awesome, Devicons, Octicons, and others.

MySQL optimize, repair, and analyze

Years ago I had the following script running as a cron job, but then I lost it somewhere.  It took me a few minutes to find it again, but just in case I need it in the future, I’m saving it here.

mysqlcheck --all-databases
mysqlcheck --all-databases -o
mysqlcheck --all-databases --auto-repair
mysqlcheck --all-databases --analyze

Found it here this time.

Querying CSV with SQL

Excel is not the only tool available when it comes working with CSV files.  I have previously mentioned TextQL (here).  Yesterday, I tried another tool, called “q”.  But since searching for “q” is not very effective, it’s also known “q text as data“.

For those using Fedora, you can install it by simply running “dnf install q-text-as-data“.   Here’s an example of how it works:

$ q-text-as-data -H -d ',' "SELECT COUNT(DISTINCT(Project)) FROM deploy.csv"

In the above example, I’m querying the deploy.csv file, which is in the current folder. q supports both command and tab separated values, so I’m helping it out with the “-d ‘,’” parameter, saying that this particular one is a CSV. “-H” tells q that the first row in this file is used for headers. CSV files with headers are more convenient, as you can use headers as column names, instead of numerical indexes.

SSH via bastion host

A while back I wrote this blog post on the subject of using SSH via bastion hosts.  If you are into this sort of thing, have a look at this blog post by my brother.  He is providing a few more explanations and clarifications, as well as covers a tricky to troubleshoot case with non-default location of your SSH configuration files and keys.

SystemD strikes again : Unit X.mount is bound to inactive unit

My brother is blogging about a really weird issue we had today.  Apparently, the old school approach of working with disk volumes, and mounting them is not enough anymore.  These days, systemd is responsible for part of that workflow and it can bite you in the behind if you are not careful.

Solution: run “systemctl daemon-reload” whenever you edit /etc/fstab.

Run boy run! This world is not made for you …


jq and jo – handy CLI tools for working with JSON

Here are a couple of really useful command-line tools for anybody working with JSON.  The first one is jq, which is a somewhat wider known JSON processor.  Here’s a nice tutorial with many examples of how this tool is useful.  The second one, is jo – a command-line tool for easier creation of JSON output.

htop explained

htop explained” is a very detailed guide into the htop Linux system monitoring tool.  Even if you are an experienced Linux user, and even if you are not a fan of htop (why aren’t you?), you will still find this guide useful, as it goes into a lot of detail on how htop figures out all the values and where Linux keeps bits and pieces of system information.

Firewalld configuration and usage

If you are a Linux old-timer, who is used to iptables (or even ipchains, or even … anyway), you might find “Firewalld configuration and usage” guide very handy.  It covers firewalld concepts and provides a number of examples for zones, ports, services, interfaces and other bits and pieces that you might be scratching your head about, when configuring the modern Linux firewall.