Remember how computers were supposed to do the work, so people had time to think?
Do you ever catch yourself operating in a tight loop, something like:
10 Edit file 20 Invoke [some process] on file 30 Read output of [some process] 40 GOTO 10Feels a bit mechanical, no? Annoying having to switch from the text editor to your terminal window, yes?
Let's break down what's actually happening in your meatspace loop*:
10 Edit file in text editor 15 Save file (e.g. Ctrl-S) 17 Change active window to Terminal (e.g. Cmd/Alt+Tab) 20 Press [up-arrow] once to recall the last command 22 Visually confirm it's the expected command 25 Hit [Enter] to execute the command 30 Wait for the command to complete 35 Interpret the output of the command 40 Cmd/Alt+Tab back to the editor 45 GOTO 10That's even more blatant! Most of the work is telling the computer what to do next, even though it's exactly the same as the last iteration.
(*) Props to anyone recognising the BASIC line-numbering reference 😂
Wouldn't something like this be better?
10 Edit file in text editor 15 Save file (e.g. Ctrl-S) 20 Swivel eyeballs to terminal window 30 Wait for the command to complete 35 Interpret the output of the command 40 Swivel eyeballs back to editor 45 GOTO 10
It can be better
If you've got npm on your system somewhere it's as simple as:
$ npm install -g watchand arranging your UI windows suitably. Having multiple monitors is awesome for this. Now by invoking:
$ watch '[processing command with arguments]' dir1 dir2 ... dirNyou have the machine on your side. As soon as you save any file in dir1, dir2 etc, the command will be run for you. Here are some examples:
Validate a CircleCI build configuration
You're editing the circleci/config.yml of a CircleCI continuously-integrated project. These YAML files are notoriously tricky to get right (whitespace matters...🙄) - so you can get the circleci command-line tool to check your work each time you save the file:$ brew install circleci $ watch 'circleci config validate' .circleci
Validate a Terraform configuration
You're working on a Terraform infrastructure-as-code configuration. These .TF files can have complex interrelationships - so you can get the terraform command-line tool to check your work each time you save the file:$ brew install terraform $ watch 'terraform validate' .
Auto-word-count an entire directory of files
You're working on a collection of files that will eventually be collated together into a single document. There's a word-limit applicable to this end result. How about running wc to give you a word-count whenever you save any file in the working directory?:$ watch 'wc -w *.txt' .
Power tip
Sometimes, the command in your watch expression is so quick (and/or its output so terse), you can't tell whether you're seeing the most-recent output. One way of solving this is to prefix the time-of-day to the output - a quick swivel of the eyeballs to the system clock will confirm which execution you're looking at:
$ watch 'echo `date '+%X'` `terraform validate`' .
> Watching .
13:31:59 Success! The configuration is valid.
13:32:23 Success! The configuration is valid.
13:34:41 Success! The configuration is valid.
No comments:
Post a Comment
Comments welcome - spam is not. Spam will be detected, deleted and the source IP blocked.