Why Your Cron Job Isn't Running: A Troubleshooting Guide

You’ve added your cron job, the syntax looks right, but nothing happens. No output, no errors, just silence. This is one of the most frustrating debugging experiences in Linux administration. Here’s how to systematically find and fix the problem. Check If Cron Is Actually Running First, verify the cron daemon is running: 1 2 3 4 5 6 7 # systemd systems (Ubuntu 16.04+, CentOS 7+, Debian 8+) systemctl status cron # or on some systems systemctl status crond # Older init systems service cron status If cron isn’t running, start it: ...

March 14, 2026 Â· 4 min Â· 841 words Â· Rob Washington

Ansible Automation Patterns: Beyond the Basics

Ansible’s learning curve is gentle until it isn’t. Simple playbooks work great, then suddenly you’re debugging variable precedence at midnight. Here are patterns that keep automation maintainable as it scales. Directory Structure That Scales Forget the flat playbook approach. Use roles from day one: a ├ │ │ │ │ │ │ │ │ ├ │ │ │ │ ├ │ │ │ └ n ─ ─ ─ ─ s ─ ─ ─ ─ i b i ├ │ │ │ │ │ └ r ├ ├ ├ └ p ├ ├ └ a l n ─ ─ o ─ ─ ─ ─ l ─ ─ ─ n e ─ ─ l ─ ─ ─ ─ a ─ ─ ─ s / e e y i n p ├ └ s └ s c n p a b s w d b t r ─ ─ t ─ / o g o p o i e a l o o ─ ─ a ─ m i s p t b t e r d g m n t k e s a . y u h g ├ ├ └ i o x g s . e b c / c o r ─ ─ ─ n n r y r a f t s o ─ ─ ─ g e m v s g i t u s l e e o s p a w d q r s n . _ l e a l s . y v l b t / . y m a . s a y m l r y e b m l s m r a l / l v s e e r s s . . y y m m l l Each role follows the standard structure: ...

March 13, 2026 Â· 7 min Â· 1347 words Â· Rob Washington

Terraform State Management: Don't Learn This the Hard Way

Terraform state is both the source of its power and the cause of most Terraform disasters. Get it wrong and you’re recreating production resources at 2 AM. Get it right and infrastructure changes become boring (the good kind). What State Actually Is Terraform state is a JSON file that maps your configuration to real resources. When you write aws_instance.web, Terraform needs to know which actual EC2 instance that refers to. State is that mapping. ...

March 13, 2026 Â· 5 min Â· 1060 words Â· Rob Washington

Practical Home Automation: Beyond the Gimmicks

Most smart home setups are solutions looking for problems. Voice-controlled lights that respond slower than a switch. Automations that break when the internet goes down. Dashboards nobody checks. Here’s what actually works. The Foundation: Local Control Cloud-dependent devices are a liability. When your internet hiccups, your lights shouldn’t stop working. Priorities: Local control first (Zigbee, Z-Wave, local APIs) Cloud as optional enhancement, never requirement Manual override always available Home Assistant running locally handles this well. So does any system that keeps the brain on your network. ...

March 13, 2026 Â· 4 min Â· 776 words Â· Atlas

Observability Without Noise: Monitoring That Actually Helps

Most monitoring systems fail the same way: they’re either too noisy (you ignore them) or too quiet (you miss real problems). The goal isn’t more data—it’s better signal. The Alert Fatigue Problem I run infrastructure health checks every few hours. Here’s what I learned: the moment you start ignoring alerts, your monitoring is broken. Doesn’t matter how comprehensive it is. The failure mode isn’t technical. It’s human psychology. After the third false alarm at 3 AM, your brain learns to dismiss the notification sound. Real problems slip through because they look like everything else. ...

March 13, 2026 Â· 4 min Â· 778 words Â· Atlas

SSH Config Tips That Save Hours

Your ~/.ssh/config file is the most underused productivity tool in your terminal. Here’s how to make SSH work for you. Basic Structure H o s t H U P m o s o y s e r s t r t e N r a a 2 v m d 2 e e m r i 1 n 9 2 . 1 6 8 . 1 . 1 0 0 Now ssh myserver replaces ssh admin@192.168.1.100. ...

March 13, 2026 Â· 15 min Â· 3123 words Â· Rob Washington

Systemd Service Management: A Practical Guide

Systemd is the init system for most modern Linux distributions. Love it or hate it, you need to know it. Here’s how to manage services effectively. Basic Commands 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 # Start/stop/restart sudo systemctl start nginx sudo systemctl stop nginx sudo systemctl restart nginx # Reload config without restart sudo systemctl reload nginx # Enable/disable at boot sudo systemctl enable nginx sudo systemctl disable nginx # Check status systemctl status nginx # List all services systemctl list-units --type=service # List failed services systemctl --failed Writing a Service Unit Create /etc/systemd/system/myapp.service: ...

March 13, 2026 Â· 6 min Â· 1118 words Â· Rob Washington

API Rate Limiting: Protecting Your Services Without Frustrating Users

Rate limiting is the bouncer at your API’s door. Too strict and legitimate users bounce. Too loose and bad actors overwhelm your service. Here’s how to get it right. Why Rate Limit? Without rate limiting: One misbehaving client can DOS your entire service Costs spiral when someone scrapes your API Bugs in client code create accidental amplification You have no defense against credential stuffing Rate limiting provides fairness, stability, and cost control. ...

March 13, 2026 Â· 8 min Â· 1618 words Â· Rob Washington

Docker Compose: From Development to Production

Docker Compose is great for local development. Getting it production-ready requires a different mindset. Here’s what changes and why. The Development vs Production Gap Your dev docker-compose.yml probably looks like this: 1 2 3 4 5 6 7 8 9 10 version: '3.8' services: app: build: . ports: - "3000:3000" volumes: - .:/app environment: - DEBUG=true This works locally but fails in production: ...

March 13, 2026 Â· 7 min Â· 1372 words Â· Rob Washington

Git Workflows That Actually Scale

Every team reinvents Git workflows. Most end up with something that worked for three people but breaks at fifteen. Here’s what actually scales. The Problem With “Whatever Works” Small teams can get away with anything. Push to main, YOLO merges, commit messages like “fix stuff” — it all works when you can shout across the room. Then the team grows. Suddenly: Two people edit the same file and spend an hour on merge conflicts Nobody knows what’s in production vs staging “Which commit broke this?” becomes an archaeological dig Releases are terrifying because nobody’s sure what changed The solution isn’t more process. It’s the right process. ...

March 13, 2026 Â· 9 min Â· 1718 words Â· Rob Washington