Buying a new device comes with the thrill of unboxing and using it for the very first time. When I was young, the electronic gifts you'd get for Christmas required power either from a wall outlet or batteries, the most common being AA and AAA. Both my remote-control Ferrari (red) and my Game Boy Classic were powered by four AA batteries. Products that require batteries often display a disclaimer on the box along the lines of "Batteries not included" or "Batteries sold separately." I loved unpacking IKEA's bright and yellow rechargeable batteries and charging them with my Dad's charger. Today, most modern portable electronics ship with lithium-ion batteries, similar to the ones used by electric cars and scooters. Each device requires a particular charger and cable (say, the new USB-C standard, Apple's lightning cable, or the ubiquitous micro-USB).
There's something special about opening a new product, putting its batteries in place, and using it for the first time. I guess that's one of the keys to capitalism and consumerism—to get customers hooked into the habit of buying and using something for the first time. Like a kid with her red car, using a shiny new iPhone is a thrill. And, to be honest, I felt this thrill while unboxing my new M1 MacBook Pro. Meanwhile, I still carry my first smartphone ever, a six-and-a-half-year-old iPhone 6 that works but doesn't support the latest operating system and many of the latest apps—that's the side of me that believes in the power of scarcity.
More specifically, one of the thrills for us—creatives, software engineers, tinkerers—when setting up a new computer is to install our favorite tools and configurations; to customize the machine. Yet this initial setup can become a dread if you do it often enough; instead of play, it becomes an unwanted obligation.
By default, Unix-like operating systems1 hide files whose name starts with a dot from ordinary users (say, when listing the contents of a directory or viewing a folder). These files, commonly called 'dot files' or 'dotfiles,' tend to contain plain-text configurations for different aspects of the system or contain folders with a set of configuration files inside. This behavior of hidden files (as many other abstractions) is embedded in the operating system to accommodate different levels of expertise of its users. If you're a pro-user, a software engineer, or a systems administrator, you can opt-in to view these hidden files to view and edit these configurations 'by hand.' But if you're a beginner, you probably don't want to be overwhelmed by a set of files you can barely make sense of.
The operating system of Mac computers—macOS—lets you toggle between displaying hidden files or not with the
CMD+SHIFT+. shortcut. (That is, 'command-shift-dot.') When I do this on my machine, I see several dotfiles in my user directory, mostly related to programming tools I have installed and 'dot folders' that hold the configuration of desktop apps, such as Dropbox.
Programmers are lazy. In essence, we minimize the human effort involved in everyday tasks and the friction of manual and tedious repetitive processes. In search of avoiding long hours of configuration to replicate their system setup on a new machine, power users and software developers devise programs to automate this process. In turn, the source of satisfaction—the thrill—becomes the act of putting a workflow in place to automate the system configuration precisely as you like it by running a few commands.
Back to dotfiles.
If this is the first time you hear about dotfiles and system configuration automation, the size of the community behind these efforts would surprise you. I adapted a set of configuration scripts open-sourced by Zach Holman on GitHub. Still, with a lot of work to do, I can now wipe a computer or buy a new one and have many of my systems configured automagically.
Let me share with you a few of those automations.
A Brewfile lists dozens of macOS command-line and desktop apps—such as Dropbox, Spotify, Google Chrome, Discord, or Zoom—that get installed by running a single command; the zsh folder configures my Terminal with shortcuts to commands and autocompletion helpers. A bash script inside of the macOS folder configures a set of System Preferences—say, the mouse tracking speed and whether the Dock and status bar hide automatically—and the Preferences of other apps (such as iA Writer or Calendar).
Automation is an endless game that can become a trap in itself—you may end up spending more time automating a task than the time it would take you to complete it manually, and you won't ever run out of things to automate. Yet, you may automate processes for the thrill of having the machine take care of tedious processes for you thanks to custom-made workflows. You can sit back, relax, adjust a few parameters, and go on with your day.
Unix is a family of multitasking, multiuser computer operating systems [in which other operating systems, such as Linux or macOS, are based] that derive from the original AT&T Unix, whose development started in the 1970s at the Bell Labs research center by Ken Thompson, Dennis Ritchie, and others. Unix. Wikipedia. ↩
My sketches and stories, in your inbox.
One email per week. No spam ever.