Idiomdrottning’s homepage

Put that in your CLI and smoke it

Snover, as transcribed by Michael Lynch, says:

I realized that — you know, that the mouse is antisocial. The GUI is antisocial. So what’s that mean? You have a problem to solve, and you solve it with the GUI. What do you have? A problem solved.

But when you solve it with a command line interface in a scripting environment, you have an artifact. And all of a sudden, that artifact can be shared with someone.

It’s certainly true that historically, CLIs have lead themselves much much more readily to reproducing and automating tedious tasks, and that those automations can be shared. That’s the main point, and I’m right there joining the choir.

It’s his secondary point that’s a li’l off:

By the way, the way you did it can show cleverness. I’ve never seen anybody use a GUI in a clever way. Ever. There’s no cleverness to it. No, like, “Oh my god, you should see the way Adam clicked that mouse. Oh my god. Guys, guys, guys, guys, come on! Check it out: Adam’s going to click the button! Oh my god! That’s amazing!” It just doesn’t happen.

Snover contrasts this with the reaction to seeing an impressive command-line script:

It’s like, “Oh my god! Did you see what Proust did? That’s phenomenal! This guy’s a frickin’ genius.” And then, “Hey, give that to me. I’m going to steal that technique and apply it to my code.”

Now, this on the other hand is the most sollipsistic thing I’ve heard all week (and it was RNC week!).

You’ve never seen anyone use a GUI in a clever way? I’ve been ten thousand miles in the mouth of a graveyard. The last makings of the future upon green banks of unseen battlefields. I traveled far and wide to prisons of the cross. What did you see there? I’ve seen hackers juggle mouse chords in ACME, musicians sequencing sequences of MIDI sequences in seq24, speed painters catching the light of day itself. I’ve seen Bay Raitt box modelling in Mirai.

It’s not a selling point of any UI that you’ve got to be clever to use it well, I don’t even agree that this is a good thing about CLIs, but GUIs share the same trait.

Ten years ago, the first post on this entire blog was about CLIs. I love CLIs. I just feel like this particular selling point is based on an ignorance on all the wonderfully productive work people do in spreadsheet, MIDI sequencers, box modellers, and painting apps. We use UIs to live, we don’t live to use UIs.

Michael replied (and I’ll paste some of this in as reply to his comment on his web page next time I have www access):

Thanks for responding! I’m still thinking about whether it is possible to use GUIs in a “clever” way. You shared the video of box modeling in Mirai, and others have talked about ableton speedruns, but even that feels like not quite using a GUI in a clever way. Like if you watched F. Scott Fitzgerald or Alice Walker sit at a typewriter and write an amazing page of a novel, we probably wouldn’t say they’re using the typewriter in a clever way. When I see the Mirai and Ableton videos, it feels like the person is using the GUI in an efficient or competent way, but it still feels somehow different from scripting something in a clever way.

A typewriter is a straightforward UI and while the end product of a story like Bernice Bobs Her Hair is indeed awesome, I agree that it’s not UI dazzling (a court stenographer might impress me with theor chorded typing of text and even words, but Fitzgerald or Walker banging on sholes, that’s not a “clever UI” in that same way). I also had many people writing in with game examples, yeah, I had some game examples in my own first draft but ended up deleting them since the point of a UI is to be easy to use while the point of a game is to be challenging to use. Not the same thing.

But the Ableton or Mirai examples or even some video or audio editors, that’s where I’m gonna take my stand. If we disagree that those usages are clever then there’s got to be some sort of semantics mismatch of what “clever” really means: I’ve seen radio station journalist use audio editing apps the public have never seen in ways that are insanely ideosyncratic, keyboard centric, efficienct, and clever.

My reaction to this framing is that we devs make apps (and libes) for making apps for making apps for making apps. Someone who’s learned to juggle Mirai or Ableton, they’re not a part of that same dev community, that same hacker culture, but I respect them maybe even more for how they do what they do. I understand some of the scripting clevernessess like duff’s device or the eval/apply loop or even code golfing. For me, the awe I feel is the same awe. If you have a more nuanced take on different kinds of awe and cleverness, that’s something I don’t wanna take away from you, but it’s hard to argue for that in a way that doesn’t disparages these non-coders that are masters of their tool in their own right.

Of course, when I can combine the two, that’s where I’m in really my element. I love the scripting interfaces of MyPaint, GIMP (#ChangeTheName), Blender, and Inkscape. Blender is as much of a Python machine as Emacs is a Lisp machine. We don’t have to choose.

Artifacts

Snover went on:

Or then I have this artifact, and I publish it, and people are using it. There’s a debt of gratitude. Like, they owe me a beer.

Always a quid-pro-quo with these guys. I’m not on board with shackling our world of imagination and sharing-is-caring to the zero-sum world of beers. Since we can make copies there’s no limit to how much we can lift each other up, how many shoulders we can stand on. It’s amazing that we can reproduce and automate and share workflows, that’s great, and that’s one area CLIs are winning.

Not the only area: on the web, in search boxes and address fields and chats, those are all CLIs. CLIs are back with a bang and there are so many jobs that a CLI does better.