The Unreasonable Effectiveness of Makefiles
My most horrible abuse of `make` was to write a batch job runner.Most of the targets in the Makefile had a command to kick off the job and wait for it to finish (this was accomplished with a Python script since kicking off a job involved telling another application to run the job) followed by a `touch $@` so that make would know which jobs it had successfully run.  If a process had dependencies these were declared as you'd expect.The other targets in the Makefile lashed those together into groups of processes, all the way up to individual days and times.  So "monday-9pm" might run "daily-batch", "daily-batch" would have "daily-batch-part-1" (etc), and each "daily-batch-part-..." would list individual jobs.It was awful.  It still is awful because it works so well that there's been no need to replace it.  I keep having dreams of replacing it, but like they say there's nothing more permanent than a temporary solution.All of this was inspired by someone who replaced the rc scripts in their init system with a Makefile in order to allow processes to start in parallel while keeping the dependencies in the right order.