🎵 The song for this post is Use Me, by Bill Withers. 🎵
I've been programming for professionally for 10 years, and nothing still feels as
good as running a sed command on an entire codebase and it more-or-less just
working. Running git diff after and seeing several boring hours of work to
rename something, just… done.
With shell stuff, I’ve noticed a lot of people love a few tools and use the shell for those use cases over and over again. Any time I have a text processing task that involves CSVs, some tokenization, some splitting and merging of columns, I don’t default to Excel or spreadsheets, I reach for cut/tr and it’s because I know enough about those that I can quickly get what I want as output. The shell overall is great for transforming data from one kind to another, which is what I really love - ImageMagick is another great example of it. Any time I have to convert a PDF to a JPEG in Java or something like that I groan. I would much rather farm that out to a shell command.
There’s a real romance to the shell, and for me a lot of that has to do with easy scalability/repeatability too. Shell commands once figured out are these neat little modules you can reuse and place wherever. Everyone has their own .bashrc and their own lore of shell stuff they reuse and that’s also kind of great.
I feel like with the no-code tools out there people are sort of developing that same culture - “I piped this thing from IFTTT to an AirTable and then that triggers a series of SMS messages via Twilio and…”. It’s interesting to see, and has some of the same pitfalls - these are all greedy (in the algorithm way) of solving a problem, as you pointed out. Just takes that little bit more work to add support for the next use case, make your shell script more robust and before you know it, you are running half the internet on cgi-bin.
Which is great, honestly. We should put more quick and dirty tools into the hands of business people, have them quickly build up these massive businesses that run on bubblegum and shoelaces so we can come in and get paid to clean it up and turn it into a Scalable Distributed System.