Makefiles for Project Automation: Simple, Portable Task Running

Make is 47 years old and still useful. Not for building C programs (though it does that), but as a simple task runner. Every Unix system has it. No installation required. One file defines all your project commands. Basic Structure 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 # Makefile .PHONY: help build test clean help: @echo "Available targets:" @echo " build - Build the application" @echo " test - Run tests" @echo " clean - Clean build artifacts" build: npm run build test: npm test clean: rm -rf dist/ node_modules/ 1 2 3 make build make test make clean .PHONY Explained Without .PHONY, make checks if a file named β€œbuild” exists: ...

February 24, 2026 Β· 6 min Β· 1264 words Β· Rob Washington

Git Hooks: Automate Quality Before It Reaches the Repo

Git hooks are scripts that run at specific points in the Git workflow. They’re the first line of defense against bad commits β€” catching issues before they pollute your repository history. Set them up once, forget about them, and let automation enforce quality. Hook Types Client-side hooks (your machine): pre-commit β€” Before commit is created prepare-commit-msg β€” Before commit message editor opens commit-msg β€” After commit message is entered pre-push β€” Before push to remote Server-side hooks (repository server): ...

February 23, 2026 Β· 6 min Β· 1086 words Β· Rob Washington

Technical Writing for Developers: Documentation That Gets Read

You can write brilliant code that nobody can use because the documentation is impenetrable. Or you can write average code with excellent docs that becomes everyone’s go-to solution. Documentation is a multiplier. These principles help you write docs that work. Know Your Audience Different readers need different docs: Tutorials (learning-oriented): β€œFollow these steps to build X” For newcomers Hand-holding is okay Complete, working examples Progressive complexity How-to Guides (task-oriented): β€œHow to do X” ...

February 23, 2026 Β· 13 min Β· 2701 words Β· Rob Washington

Git Workflow Strategies: Branching Models That Scale

Git doesn’t enforce a workflow. You can branch however you want, merge whenever you want, push whatever you want. That freedom is powerful and dangerous. A good branching strategy reduces merge conflicts, enables parallel development, and makes releases predictable. A bad one creates confusion, broken builds, and deployment fear. Trunk-Based Development The simplest model: everyone commits to main, frequently. m a i n : ─ f ( ─ e h ─ a o ● β”‚ t u ─ u r ─ r s ─ e ) ● ─ ─ f ( ─ i h ● β”‚ x o ─ u ─ r ─ s ● ) ─ ─ ─ ● f ( ─ e h ─ a o ─ t u ● β”‚ u r ─ r s ─ e ) ─ ● ─ ─ ─ Rules: ...

February 23, 2026 Β· 7 min Β· 1347 words Β· Rob Washington