Get My IP

Using Existing Tools Efficient programming requires planning at both the design stage and the implementation stage. You can only improve an inefficient design so much. When prototyping with bash, work with existing tools. Typical implementation tradeoff is space against time. Using the best tools frequently improves both. Take advantage of their greatest speed and greatest … Read more

Hardware Queries

Several Linux utilities exist for querying and, in some cases, setting the system’s hardware. Run these utilities as root. dmidecode(8) — dnf install dmidecode DMI stands for Desktop Management Interface. This app dumps a great deal of information about the BIOS. Scrolling through the huge output is informative, but narrowing it down with certain options … Read more

GNOME Hang

It’s annoying. It’s been a bug for all too long. GNOME Shell Desktop irregularly hangs without a user-discernable cause or pattern. This isn’t minor trouble resolved with the Alt-F2 r (restart) command. Alt-F2 doesn’t respond. GNOME is hanged. How do you know when it happens? Just look at the screen. Did you last lock it for … Read more

Collecting Server Software Versions

You manage several servers running Linux distributions. Each server’s installation may be different, due to operation purpose or due to error. How do you know which ones need attention? Need upgrades? Make your servers tell you their installed software lists. Each list shows what is installed, but comparing lists from several servers is not easy because … Read more

Better Pseudorandom Numbers

Pseudorandom number generators (PRNGs) assist simulations by giving different values tied to choices a person might make. True randomness cannot happen with deterministic software. Following in the footsteps of Donald Knuth (or directly), using the term “random” here to discuss deterministic values is easier, even if less precise than “pseudorandom”. Present a large enough set of … Read more

Good Passphrases

The best passwords and passphrases are long and are derived from a large character set. Recalling that “X^Y” means raise X to the power of Y, “X/Y” means X divided by Y, and “X*Y” means X multiplied by Y, the following formulas demonstrate their importance: PossiblePWs = CharsInSet ^ PWLength PWEntropyBits = log(CharsInSet) / log(2) … Read more