git-rexec: Find Git Repositories and Execute Commands Against Them, either Sequentially or in Parallel

The git-rexec command-line tool recursively locates Git repositories within a directory and executes commands against them, either sequentially or in parallel. Here are examples demonstrating how to use git-rexec: Example 1: Execute git status -s across all discovered Git repositories (found by searching recursively under the current working directory) in parallel (-p or --parallel): git-rexec -p -- git status -s Example 2: Fetch updates across all discovered repositories, limiting the concurrency to 5 background jobs (-j 5), which helps avoid network congestion or server rate limits when communicating with upstream Git remotes: git-rexec -j 5 --parallel -- git fetch Example … Continue reading

ansible-cleanup - Cleanup an Ansible project

Ansible-cleanup provides a command line tool to find and remove unused playbooks, tasks, group variables, and host variables. It maintains a clean codebase by recursively scanning your Ansible repository and listing files that are safe to delete. Features Identify unused playbooks and tasks: Scans the repository to find all unused playbooks and tasks. It analyzes the codebase and determines which playbooks and tasks are no longer referenced or used. Find unused YAML files in group_vars and host_vars: Parses the "hosts" file, load all hosts and groups into a data structure. It then scans the group_vars and host_vars directories, identifying any … Continue reading

A Shell Script that Configures the GNOME Desktop Programmatically

The jc-gnome-settings repository provides the jc-gnome-settings.sh script, which holds James Cherti's settings to customize the GNOME desktop environment, including window management, notifications, desktop behavior, keyboard settings, and more, to enhance the user experience. Requirements gsettings Usage Clone the repository: git clone https://github.com/jamescherti/jc-gnome-settings Navigate to the repository directory: cd jc-gnome-settings Run the script to configure GNOME: ./jc-gnome-settings.sh Author and License The jc-gnome-settings tool has been written by James Cherti and is distributed under terms of the MIT license. Links jc-gnome-settings @GitHub Other projects by the same author: jc-dotfiles @GitHub: A collection of UNIX/Linux configuration files. You can either install them directly … Continue reading

A Shell Script that Automates XFCE Desktop Configuration

The jc-xfce-settings project provides the jc-xfce-settings.sh script, which holds James Cherti's settings to customize the XFCE desktop environment, including window management, notifications, desktop behavior, keyboard settings, and more, to enhance the user experience. (The jc-xfce-settings.sh script was created with the help of watch-xfce-xfconf) Requirements The XFCE Desktop Environment, and xfconf-query utility that is part of XFCE. Usage Clone the repository: git clone https://github.com/jamescherti/jc-xfce-settings Navigate to the repository directory: cd jc-xfce-settings Run the script to configure XFCE: ./jc-xfce-settings.sh Features Title Bar Customization: Simplifies button layout for easier window management. Font and Display Settings: Enables anti-aliasing, hinting, and configures RGBA rendering. File … Continue reading

ansible-role-flatpak - An Ansible role that configures Flatpak, adds Flathub as a remote repository, and manages Flatpak packages and updates

The ansible-role-flatpak Ansible role installs and configures Flatpak, adds Flathub as a remote repository, and optionally manages Flatpak packages and updates. This role supports specific Linux distributions: Debian-based, Gentoo, and Arch Linux. Requirements Supported operating systems: Debian/Ubuntu (and their derivatives), Gentoo, or Arch Linux. Ansible collections: community.general Role Variables The following variables can be set to customize the role's behavior: Variable Description Default flatpak_packages List of Flatpak packages to install. [] flatpak_update_script Whether to enable automatic daily updates and cleanup of Flatpak packages. false flatpak_update_script_cmd_prefix Optional prefix command to run before the Flatpak update command (e.g., nice, ionice). '' flatpak_update_script_cmd_suffix … Continue reading

Disabling XML-RPC in WordPress for Security and Performance

When deploying WordPress in a production environment, every enabled feature should be evaluated for its security and performance implications. By default, WordPress prioritizes backward compatibility, which often results in legacy protocols remaining active on every request. XML-RPC is a legacy API protocol that allows external applications to interact with a WordPress installation over HTTP. Long before the integration of the modern WordPress REST API, XML-RPC was the standard method for third-party clients to execute remote commands, such as creating posts, managing comments, and uploading media. The Impact of Disabling XML-RPC: Gains and Losses XML-RPC is unnecessary for most modern WordPress … Continue reading

A Technical Guide to Compiling Emacs for Performance on Linux and Unix systems

Most Linux distributions ship generic binaries compiled to run safely on a vast array of older hardware configurations. While this ensures broad compatibility, it sacrifices the speed that comes from using the specific, modern instruction sets of your processor. Building Emacs directly from source allows instructing the compiler to generate machine code targeted at your CPU architecture, resulting in a faster and more efficient runtime environment. Before we dive in, please consider sharing this article on your website, blog, Mastodon, Reddit, X, Linkedin, or other social media platforms. Sharing it will help other Emacs users discover how to properly build … Continue reading

How Breaking Windows 30 Years Ago Turned Me Into a Software Developer and Linux Professional

Every technology professional has an origin story. Mine began in 1995, centered around a Packard Bell corner computer running Windows 95. This beige chassis dominating the desk instantly transports me back to the very beginning of my career. I do not just see outdated hardware; I feel a profound nostalgia for the quiet, uninterrupted hours I spent discovering the inner workings of operating systems and programming languages. That computer was my gateway into the digital realm. First programming language The idea of computers controlling vehicles and medical devices remotely with artificial intelligence, as depicted in the science-fiction movies I watched … Continue reading

Easily Toggle an Emacs Terminal with a Single Keystroke using shell-pop (Recently Refactored)

The shell-pop Emacs package provides on-demand access to a terminal buffer via a single, configurable key binding. It allows toggling a terminal window without disrupting the workspace layout, making it a useful tool for quick command-line tasks. NOTE: Kazuo Yagi, the shell-pop original author, appointed me as a co-maintainer of shell-pop Emacs package. I recently refactored shell-pop to improve robustness, fix bugs, and add support for additional terminals (vterm and eat). Stepping into the maintainer role gave me the opportunity to give the codebase a thorough refactoring. Why use shell-pop? Adding shell-pop to your workflow offers the following benefits: Installation … Continue reading

Fixing Aqara Smart Hub M3 High Volume System Crashes and Reboots

After purchasing an Aqara Smart Hub M3 to manage my smart home ecosystem, I configured its security features, set the internal alarm volume to 100 percent, and armed the system by switching it to Away mode to test the built-in 95dB loudspeaker. The moment the alarm triggered, the hub completely crashed and rebooted. My initial thought was that I had received a defective unit. However, after extensive troubleshooting, I found the solution to this surprising behavior. Understanding the reboot issue When the Aqara Smart Hub M3 unexpectedly restarts the moment an alert sound is triggered at a high volume, it … Continue reading

The Definitive Guide to Code Folding in Emacs

Navigating large source files containing thousands of lines of code with Emacs makes it difficult to perceive the underlying structure. For a software engineer spending the majority of the day reading and writing code, reliable folding is a requirement for maintaining focus and managing complexity. Before we dive in, please consider sharing this article on your website/blog, Mastodon, Reddit, X, or your preferred social media platforms. Sharing it will help fellow Emacs users discover better ways to manage code folding. In this article, we explore: Why code folding? Code folding is about managing cognitive load, preserving spatial memory, and controlling … Continue reading

buffer-guardian.el - Automatically Save Emacs Buffers Without Manual Intervention (When Buffers Lose Focus, Regularly, or After Emacs is Idle)

The buffer-guardian Emacs package provides buffer-guardian-mode, a global mode that automatically saves buffers without requiring manual intervention. By default, buffer-guardian-mode saves file-visiting buffers when: - Switching to another buffer. - Switching to another window or frame. - A frame is closed. - The window configuration changes (e.g., window splits). - The minibuffer is opened. - Emacs loses focus. (Skip to: Installation) Beyond standard file-visiting buffers, buffer-guardian-mode provides built-in support for: Isolated inline code buffers: It fully supports specialized editing environments like org-src (for Org mode) and edit-indirect (commonly used for Markdown code blocks). Since these temporary buffers are dynamically linked … Continue reading

update-iptables - A low-level Linux firewall for advanced users

The update-iptables script implements a firewall for managing network traffic and routing. It supports a modular configuration model through drop-in scripts located in /etc/update-iptables.d/. Each file is a shell script executed sequentially during firewall initialization. This low-level firewall script is intended for Linux system administrators who require precise control over packet states, network address translation, and custom routing chains. Rules are defined directly through iptables without the abstraction layers commonly introduced by modern firewall management tools. If this low-level firewall proves useful, please support the project by ⭐ starring update-iptables on GitHub, helping more developers discover it. Requirements bash iptables … Continue reading

Vim Plugin: pathaction - A Vim plugin for executing pathaction, the universal Makefile, for any file in your filesystem

The vim-pathaction Vim plugin provides an interface for executing .pathaction.yaml rules directly from Vim through the pathaction cli, a flexible tool for running commands on files and directories. Think of pathaction like a Makefile for any file or directory in the filesystem. It uses a .pathaction.yaml file to figure out which command to run, and you can even use Jinja2 templating to make those commands dynamic. You can also use tags to define multiple actions for the exact same file type, like setting up one tag to run a script, and another to debug it. This tool is for software … Continue reading

Emacs Package: pathaction.el - An Emacs plugin for executing pathaction, the universal Makefile, for any file in your filesystem

The pathaction.el Emacs package provides an interface for executing .pathaction.yaml rules directly from Emacs through the pathaction cli, a flexible tool for running commands on files and directories. Think of pathaction like a Makefile for any file or directory in the filesystem. It uses a .pathaction.yaml file to figure out which command to run, and you can even use Jinja2 templating to make those commands dynamic. You can also use tags to define multiple actions for the exact same file type, like setting up one tag to run a script, and another to debug it. This tool is for software … Continue reading