dotenv Files: The Mistakes That Leak Secrets
You committed .env.production once. Your database credentials are in git forever. Here's how to use dotenv without shooting yourself.
All the articles with the tag "bash".
You committed .env.production once. Your database credentials are in git forever. Here's how to use dotenv without shooting yourself.
Oh My Zsh had its moment. Here's the 2026 shell setup: Starship prompt, three killer plugins, and when to consider Fish or Nushell.
Stop committing broken code. Git hooks catch mistakes before they hit CI, save hours of debugging, and make your team love you.
Master bulk file renaming on Linux with rename, vidir, fd, and mmv. The right tool for every scenario from regex rewrites to visual editing.
du and df still work, but Rust-era tools like dust, duf, and fclones make disk triage faster and way less painful in 2026.
zstd is as fast as gzip with near-xz compression ratios. Here's why you should drop bzip2 forever and how to use zstd in 2026.
Named pipes (FIFOs) let you buffer and synchronize between processes. They're underused but solve real problems: queuing, coordination, and complex data flows.
Declare, iterate, slice, and manipulate bash arrays safely. Indexed and associative arrays, the @ vs * trap, and patterns that make scripts readable.
Process substitution lets you treat a command's output as a file, and feed input to a command as if it were a file. It's weird but powerful.
Bash heredocs and here strings explained: <<EOF for multiline input, <<-EOF for tab-indented blocks, <<<string for single lines, and when to use each.
GNU parallel runs tasks in parallel across CPU cores. It's faster than xargs and easier than writing a job queue. Here's when and how to use it.
Use trap EXIT to clean up temp files, INT/TERM for graceful shutdown, and ERR for errors. Stop your bash scripts from leaving messes when they die.