Work for Pizza


A Quick Rant about GUIs

December 4, 2012

I got this email from my gal today:

I find it amusing that you prefer to do things command line. Then I get to work and hear devs talking about how Azure is awesome because it has an easy to use GUI and you don’t have to do things command line.

It takes less than that to get me going! :)

GUIs are good for discovery. They are good when you don’t know what you are doing or don’t know what to do it with. I know from personal experience. In the mid-nineties I set up an email server (Exchange) for my family business. I’d never heard of mail agents or any such thing. I just popped in the Microsoft Small Business Server CD (note: not a DVD) and clicked “Install.” When it was done, not knowing what to do, I just clicked on the “Start” menu and found the new entries. Before long I found myself in an Exchange console and kept on clicking around, opening panes and dialogs and sub-dialogs and so forth. After a lot of trial and error I got email working, inbound and eventually outbound. I didn’t know what I’d done or or if I’d done it correctly. But there was an effect; something was happening. To be clear, I didn’t know what I’d needed to do or what I was trying to build but with persistence I found my way to an end.

Interlude: Who doesn’t love the Postfix mascot?

I’ve used Postfix without problem for years so please do.

Oh. But where was I? Ah, yes. I’ve managed MSSQL systems for ~15 years. I’ve also managed MySQL and PostgreSQL systems. Managing database servers with a GUI, whether it’s with SSMS or pgAdmin, involves a lot of interaction with a pane on the left that’s essentially an iFrame. Getting, say, a list of tables can be a hassle when you do it all day long. Just ask your DBA to show you how it’s done in the GUI. It’s slow and tedious. On the other hand, doing the same thing against MySQL from the command line is a lot simpler:


You just type that and hit ENTER. That’s fewer keystrokes than GUI mouse-clicks and I can do them with my eyes closed. With PostgreSQL they made it, well, simpler still:


Yes. That’s it. That “\dt” means DESCRIBE TABLES. Since I know what I need to do and how to do it I’ll take


over playing point-and-click/click-and-drag/whack-a-mole with the GUI.

To be fair, and go on a tangent, I got into SQL not in school but thanks to MS Access. I created much with its graphical designer. But before long I needed more of its SQL engine; things that weren’t presented or weren’t possible in the GUI. But things it could indeed do. The GUI got me started. It was there to help me discover. Regarding going past what the GUI can do, I’ll just leave you with What You See Is All You Get.

PS. Wasn’t this supposed to be about command line interactions? I got off-track. Unfortunately for you I just woke up and we are continuing:


Now please use your Windows/Mac/Boobuntu GUI to show me the IP and MAC addresses for each of your network interfaces, along with their MTUs. Unfair example? Sorry. It’s just the first that comes to mind.

SQL, Lisp, and Haskell are the only programming languages that I’ve seen where one spends more time thinking than typing. Philip Greenspun

I think the command line is similar. You need to know what you’re doing before you begin composing. There is no “undo” at the command line.

sleep 14400