On composability

Lately, I’m working on a new tool which will help me to automate the tasks I manually do using my desktop computer. While these tasks are mundane, they increase life quality of me and many individuals. As I mentioned before, I won’t have a Linux desktop system, and will move to a Mac laptop.

Naturally, I wanted to move these workflows to macOS.

Moving these workflows to macOS is indeed possible. However, I wanted to automate them to save time and create consistent outputs while at it, and this proved to be a different story.

macOS has automation capabilities, namely AppleScript and Automator. First one is in maintenance mode for a long time, and second one relies on endpoints published by applications themselves. Moreover, Apple doesn’t want you to enable these third party automations much, and the software I have doesn’t expose the functionality I need.

However, Automator has one more trick: ability to run .sh scripts. That would be useful, if the software I had CLI counterparts (like Tower, BBEdit and Monodraw), but no, they are GUI first apps.

Hence, I can’t automate the tasks the way I need on macOS. Also, I’m not a fan of Homebrew and other package managers for macOS, hence I’m stuck.

Then, I remembered having no desktop computer doesn't mean I can't run Linux.

I took out a Raspberry Pi 3, installed a 64 bit OS, and started to play around, then decided to design the tool I mentioned at the beginning of this post. While designing the system I wanted to create, something made itself apparent.

The magic of Linux is rooted in its composability.

To create the system I want, I can use a lot of available packages, plug them together, and lastly write the little tool which binds them (yes, like The Ring), and create the bigger system I have dreamt of.

Today's developers use and exploit these principles a lot, and build amazing things with them. Since they didn't live in a world where these things are absent, they take these features as granted and sometimes do not apply the same principles, or underestimate the power of them.

It's important to understand that the UNIX principles and the GPL protecting the tools which makes this composability possible underpins and enables almost everything we do with Linux systems today. Dismissing them as useless, old-fashioned or backwards is equal to cutting the branch we're sitting on.

Until next time,

Be kind.