Posts


Troubleshooting SELinux: Reading and Fixing AVC Denials

Jun 1, 2026

Learn a repeatable SELinux troubleshooting flow for AVC denials so you can fix labels, booleans, and policy issues without disabling enforcement. …continue reading


Bash Script Architecture: Functions, Strict Mode, and Traps

May 29, 2026

Finish the Bash scripting series with maintainable script structure using functions, strict mode, cleanup traps, and debugging patterns. …continue reading


Git Remotes and Collaboration: Fetch, Pull, Push, and PR Flow

May 28, 2026

Understand remote-tracking branches, choose the right fetch and pull habits, and push changes safely into a modern team workflow. …continue reading


Bash Loops: for, while, until, and Flow Control

May 27, 2026

Automate repeated work in Bash using for, while, and until loops with break and continue for controlled flow. …continue reading


Bash Case Statements: Clean Pattern Matching for Scripts

May 25, 2026

Use Bash case statements to handle subcommands and pattern matching with cleaner logic than long if chains. …continue reading


SELinux Contexts: Labels, Booleans, and Daily Operations

May 25, 2026

Learn how to inspect and correct SELinux contexts, choose restorecon over ad hoc relabeling, and use booleans for safe policy tuning. …continue reading


Bash Conditional Logic: if, elif, else, and Tests

May 23, 2026

Build dependable decision logic in Bash scripts using if statements, test operators, and command exit status checks. …continue reading


Git Branching and Merging: Build Parallel Work Without Chaos

May 21, 2026

Learn how branches really work, when merges are fast-forward versus merge commits, and how to resolve conflicts without panic. …continue reading


Bash Input Handling: stdin, read, and Command Arguments

May 21, 2026

Handle input in scripts with stdin, interactive read prompts, positional parameters, and simple argument parsing with shift. …continue reading


Bash Output Control: Redirect stdout, stderr, and Pipelines

May 19, 2026

Learn how to control script output with stdout and stderr redirection, append-safe logging, and practical pipeline patterns. …continue reading


SELinux Fundamentals: Why Mandatory Access Control Matters

May 18, 2026

Learn why SELinux exists, how mandatory access control complements traditional permissions, and how to verify modes safely on enterprise Linux hosts. …continue reading


Bash Scripting Basics: Build Your First Reliable Script

May 17, 2026

Start your Bash scripting journey with shebangs, executable files, variables, quoting, and the exit codes that drive automation. …continue reading


systemd in Production: Resource Limits, Hardening, and Troubleshooting

May 17, 2026

Finish the systemd series with production-focused practices for resource controls, service hardening, and repeatable troubleshooting workflows. …continue reading


systemd-timesyncd: Simple Time Sync with timedatectl

May 17, 2026

Configure lightweight network time sync with systemd-timesyncd, verify status with timedatectl, and understand when to move to chrony or ntpd. …continue reading


systemd-resolved: DNS, Stub Resolver, and resolvectl

May 17, 2026

Learn how systemd-resolved handles DNS on modern Linux systems, how resolvectl works, and how to avoid resolver conflicts. …continue reading


systemd-networkd: Declarative Network Configuration on Linux

May 17, 2026

Configure Linux networking declaratively with systemd-networkd, including interface matching, static and DHCP setups, and practical troubleshooting. …continue reading


Authoring systemd Units: Custom Services, Timers, and Socket Activation

May 17, 2026

Create custom systemd services, schedule work with timers, and understand socket activation patterns for on-demand workloads. …continue reading


journald and journalctl: Logging the systemd Way

May 17, 2026

Learn how journald centralizes logs across services and kernel events, and how to use journalctl filters for fast production troubleshooting. …continue reading


systemd Targets and Boot Dependencies: From Runlevels to multi-user.target

May 17, 2026

Translate SysV runlevels into systemd targets and learn dependency keywords that determine ordering, requirements, and system boot behavior. …continue reading


systemd Service Units: Anatomy of a Unit File

May 17, 2026

Understand the structure of systemd service unit files, the directives that control startup behavior, and the safest way to apply overrides. …continue reading


systemctl Essentials: Start, Stop, Enable, and Inspect Units

May 17, 2026

Master daily systemd operations with systemctl, including service lifecycle commands, boot enablement, state inspection, and safe administrative habits. …continue reading


systemd Fundamentals: What PID 1 Does on Modern Linux

May 17, 2026

Learn what systemd does as PID 1, why it replaced SysV init on most Linux systems, and the core unit model you need before managing services. …continue reading


Git Fundamentals: Tracking Change with Confidence

May 14, 2026

Learn the Git basics that matter most: how snapshots work, how to commit with confidence, and how to inspect and safely adjust local changes. …continue reading


Linux Basics: Commands

Oct 25, 2025

Going back to the basics of understanding the fundamental commands on Linux …continue reading


Linux Basics: Filesystem Permissions

Oct 25, 2025

Going back to the basics of understanding filesystem permissions on Linux …continue reading


Fixing GPG Lock Issues

Jun 23, 2024

Fixing GPG Lock Issues …continue reading


Building Simple RPM Packages

Sep 23, 2019

A very simple exercise to build a basic RPM package …continue reading


Resizing tmux panes

Mar 4, 2019

By default, when you split the current pane, it will always split into two panes of equal size. Sometimes it could be desired to have one pane larger than …continue reading


Working with git

Feb 27, 2019

Git is a free and open source version control system that is distributed. Let’s dive into the usage and fundamentals needed to get started with versioning your code base. …continue reading


Testing for Chef Deprecations Using Foodcritic

Feb 13, 2019

Chef Client is on a monthly release cycle with new releases on the first Wednesday of each month. With new releases, deprecations should be paid attention to so that our cookbooks do not become stale and eventually break. …continue reading


Ruby Library for Chef

Feb 1, 2019

Create a library for a Chef cookbook to drive consistency, efficiency, smaller file sizes …continue reading


RPM Package Management Using Pulp

Jan 21, 2019

Use Vagrant and VirtualBox to provision a Pulp server for RPM package management …continue reading