An embarrassment of command prompts

In the past few years, I’ve noticed an increase in text-driven ways to control the software I use. The most prominent example is Spotlight on macOS (or the many 3rd party alternatives, and the similar tools on Windows and Linux systems).

Most of these tools work something like this: you use a keyboard shortcut (cmd+space, cmd+K, etc.) to summon a typing prompt. You can then type a variety of commands to trigger an action, like launch an application, search for a file, or perform a calculation.

I presume the origin of these types of text prompt interfaces are linked to two prominent text-input interfaces types:

  1. Web search – Google in particular has taught us to see a simple text input, and expect to be able find just about anything with it.
  2. Command line interfaces – the text-based terminal interfaces that come along with Linux/Unix systems are less forgiving than the Google search box, but they allow experts powerful capabilities by chaining together simple text-based tools.

These days, most of the systems I use have some incarnation of these command prompts:

  • Terminals (bash, zsh, etc.) – local and remote. In my work as Web designer and developer, I spend lots of time in a terminal either locally on macOS, or remotely on Linux-based Web servers.
  • System-wide search/launcher prompts (Spotlight or equivalent) – a system-wide prompt for quickly launching or searching.
  • Web-application command prompts – applications like Slack and Notion had keyboard shortcuts that trigger and application-level prompts to search or navigate within that app.
  • Text editor command prompts (VS Code, Sublime Text, etc.) – most development-focused text editing tools feature command prompts for performing actions or navigating text files. These are like other application-level command prompts, but seem to be particularly common in the domain of text editing, presumably because it’s already a keyboard-focused activity.

Text-based interfaces tend to be powerful and flexible, but not easily discovered. The issue of discovering capabilities is often addressed with auto-complete suggestions.

Text-based input also happens to be a relatively low-bandwidth model that works well on remote systems across a potentially slow network.

One, or many?

I find myself wanting for more consistency among these different types of commands prompts. Though some conventions are emerging, many applications have different keyboard shortcuts to trigger the prompts, and different syntax and behaviors within the prompts.

I’d like to see all of these systems become interoperable in the way of Unix-style command line tools. On a command line, I can “pipe” the output on one command into the input of another (indefinitely). The command prompts in macOS Spotlight, Slack, Notion, and my text editor live in silos, inaccessible to each other.

Slack and Notion both have concepts of “people” (usually prefixed with an @ symbol) and spaces (“channels” or “pages”). However, I can’t reference a Slack channel from Notion. Slack and Notion don’t know that when I refer to @Kelly in either system, I’m talking about the same person. This type of interoperability requires that: Everything should have a URL (sidenote: I think much of Slack’s effectiveness stems from how they do have a URL for every message, even though it’s a closed system).

There are some advantages to keeping each command prompt isolated in its own domain. This isolation allows each application to tailor the syntax and behavior of its command prompt to best match the type of content in that application. The more broad-reaching a system becomes, the more abstraction you must introduce. This abstraction can be powerful but abstractions can also leak and obfuscate.

Despite the drawbacks of a more universal system of interoperable command prompts, I still find myself wanting for a single universal command prompt that works across my entire system and can reach within each of the applications.

Also happens that voice command systems like Siri, Alexa, and whatever Google calls theirs, are becoming more popular. Infrastructure that makes application-level command prompts more interoperable could also open up more capabilities for voice-based control.

Editing note: This was a draft post I wrote and didn’t complete about two years ago, thinking I would build it into a great article full of images and references. Then, this week I saw much better posts on the topic from Chris Coyier and Maggie Appleton. The lesson: Press Publish.

 

Buying as the last step rather than the first

When starting a productive or creative project, I find myself exaggerating the need for new tools, gear, or equipment before making any actual creative output.

  • I’d probably write some great songs if I just had that new guitar or amp.
  • It would be fun to do a podcast. Now, what are the best microphones.
  • I would get more exercise if I had a nice new pair of running shoes, or maybe an Apple Watch.
  • I could really get some great writing done if I had a new workspace, or a new desk and chair.

It’s obvious procrastination. Goods tools are important, but I often have what I need already. I at least have what I need to get started.

I’ve been enjoying playing guitar more again in the past year or two. I even started a bit of recording.

Next thing I knew, I had to have a bass guitar. Precious evenings were lost to scouring the internet for just what bass I should buy. Recognizing my premature leap to tool acquisition, I’ve tried to reverse the process by making a deal with myself.

Rather than thinking, if only I had a new bass guitar, I would write all these songs, I’m trying this instead: If I write and record five actual songs, then I will buy a bass.

They don’t have to be good songs, but they have to exist. As Chris & Dave repeat in the opening of each episode of their ShopTalk Show podcast: Just! Build! Websites! (replace building websites with whatever it is you want to do).

I can write and record songs without a new bass. If I never end up writing or recording anything, then I know it would have been a wasted purchase anyhow.

It’s been about six months so far, and I’m about 10% of the way to my goal. For those doing the math, that means I’ve got about half of one song. It remains to be seen if I’m someone who writes and records songs, or just a person who thinks of themselves as someone who writes and records songs.

 

Five-stars for not asking

If I recently bought a product or service from you or interacted with your sales or support staff online, and you did not send a follow-up email asking me to rate the experience: Thank you.

You get five-stars: ⭐️⭐️⭐️⭐️⭐️

 

Broth conspiracy

My last two web searches were:

  1. “when was the last time someone was convicted of seditious conspiracy?”
  2. “chicken bouillon vs. chicken broth”

Our brains were not made to live in so many worlds at once.

For the record, the last successful seditious conspiracy charge in the US was in 1995 and bouillon and broth are interchangeable.

 

Instant web dev classic

For many web developers, A Complete Guide to Flexbox from CSS-Tricks.com is a pillar of our web developer reference material. It’s my externalized memory on how the flex feature of CSS works. I don’t have to remember how it works because I know I can look it up there. You can even download a poster version to hang on the wall.

Cartoon image of a smiling person with the text "An Interactive Guide to Flexbox"

Now there’s another great reference An Interactive Guide to Flexbox by Joshua Comeau. An instant classic.

 

New (to me) music: Expert In A Dying Field by The Beths

Today I stumbled across (via the YouTube algorithm, I think) a song I immediately loved. The song is called Expert In A Dying Field by a band called The Beths.

My preferred musical formula: heavy + melodic. While I wouldn’t call their music ‘heavy’, they combine fuzzy guitars with sweet melodies, which does the trick.

The jumping in-and-out of falsetto reminds me of Regina Spektor, the lyrical style reminds of me Kathleen Edwards (bonus recommendation: Change The Sheets), and the fuzzy buzzing guitars remind me of, me!