Saturday, February 1, 2014

CLI-nging ON



Imagine if you had to do the following  just to start your car every morning...

1.    Pull the choke adjacent to the right fender while engaging the crank lever under the radiator at the front of the car, slowly turning it a quarter-turn clockwise to prime the carburetor with fuel.
2.     Get into the car. Insert the ignition key, turning the setting to either magneto or battery. Adjust the timing stalk upward to retard the timing, move the throttle stalk downward slightly for an idle setting, and pull back on the hand brake, which also places the car in neutral.
3.     Return to the front of the car. Use your left hand to crank the lever (if the engine backfires and the lever swings counterclockwise, the left arm is less likely to be broken). Give it a vigorous half-crank, and the engine should start.

Chances are, your great grandparents were very familiar with the procedure if they owned a Model T.  Mind you, all that bother just starts the car, you haven't even tried to drive anywhere yet.  A complicated procedure to be sure but it beat shoe leather, barely.

Times changed and eventually somebody figured out how to take all those manual processes and mechanically automate them.  Soon, starting your car was just a turn of a key and driving it was more about where you wanted to go than how to control a mass of cantankerous machinery.  It also made the act of driving more accessible to more people.

That's called progress....

So as I stare at my open PowerShell window with a line of gobbledygook that to my dismay is my only means of finding out how much space my email users are hogging I have to wonder...

[PS] C:\>Get-MailboxDatabase "Mailbox Database 1" | Get-MailboxStatistics | Sort totalitemsize -desc | Export-CSV C:\mailboxes.csv

What's up with this command line stuff? 

Go into just about any forum or social media discussion even remotely related to IT and the flame wars will start with the mere mention of the command line.

"Go play with Windows if you want to click buttons"

countered with...

"You know, nobody uses punch cards anymore"

On and on ad infinitum. 

I had just such an exchange the other day with an open source devotee.  He was one of those grizzled admin types who clings to the mantra that nothing real happens in IT without a CLI (Command Line Interface)
He went on and on about his numerous accomplishments with his mastery of cursor and alphabet.  He also bemoaned the lack of functionality in all those "buttons."

It brought me back to the story a friend told me of an old CPA who refused to use a computer with Windows on it because all those kinds of OS's were just "Game" machines.

Anyway, apparently support for his favorite open source R&D project was callously left out of the latest VMWARE Vsphere client.  There was no doubt that to him such an omission doomed VMWare's GUI.

I was quick to point out that the Vshpere client is the preferred method (or the Web client for 5.5) to manage VMWare.  Actually, it's one of the more complete GUI management interfaces available and there aren't a lot of "buttons" to it.

He didn't think so...

To my mind, if it isn't officially supported then you take your lumps and have no right to complain.  But it's pointless to argue with someone like that.  As far as I was concerned he could just go back to his cave...

So it should be no surprise that I hate the command line but only because it's frequently a requirement instead of an option and to me that's all kinds of wrong.  A throwback to carrying around a crank to start your car and the Charleston.

But I have to admit that my console loving friend does have a point.  Far too often Graphical User Interfaces (GUIs) let us down.  They only contain the bare minimum of functionality often forcing you to stare into the inky blackness of a console.

 After 30 years of interface development why is it that CLI's are still so prevalent even in operating systems called "Windows?"  Why, for instance, do I have to execute scripts to select multiples of anything instead of just selecting what I want as a group and clicking "OK"

What my troglodytic friend doesn't seem to understand with all his mastery of the blinking cursor is that he's being forced to do more work than he needs to.  System Administration is frequently bogged down by syntax.  I shouldn't need to be a closet code monkey just to efficiently manage an enterprise.

Microsoft, the entity that made the whole concept of a GUI interface acceptable to most of the corporate world seems to be at odds with its own history. (BTW, Yes I know MAC was first with GUI's)

With every new version of windows it seems simple functions are being relegated to scripts and command lines.  Only the most rudimentary controls are left behind.  Spend any time managing Windows Server 2008 or 2012 and it starts to feel like you've entered some twisted Twilight Zone version of Linux.

I'm not saying the command line should be abolished.  Just like you occasionally need to roll up your sleeves and get a little dirty to get your car started in the morning; there's times you need to drop to that nasty old CLI.

That's ok, I have a right to get a little dirty if I need to BUT it shouldn't be a requirement.  That's my problem with the CLI. 

There's an assumption among the CLI elitists that if you're not comfortable with the command line then you must not know what you're doing.

I can assure you, I know exactly what I'm doing.  I'd just rather do it than get bogged down in a layer of abstraction to get to it. 

Yes, I said it, the CLI is an abstraction almost to the point of a DIStraction.  Even more so than a GUI, the convoluted syntax and cryptic commands do more to separate you from the task at hand than any click ever could.

Is your DNS server more secure and better optimized than mine because you configured it with your arsenal of scripts?  Or is it really an indication of a lazy GUI development team that's given you inadequate tools.

Microsoft introduced the concept of a modular GUI interface called the MMC (Microsoft Management Console) back in the NT 4 days.  It was designed to be customizable and more flexible than the standalone applets that accompanied every service.  It was a step in the right direction but unfortunately began the trend of minimizing GUI functionality by neutering the available commands within the MMC applets.

I submit that both the GUI and CLI devotees are right.  I should never have to go to a command line or call up a script to perform management functions.  I should, however, have a robust CLI that doesn't require me to understand the intricacies of of the Microsoft Foundation Classes.  Interfaces should be complete or at least offer the option to be that way regardless of their presentation.. 

What's wrong about the CLI guys is all the arrogance.  So what if you can dash out 30 line scripts from memory or poke holes through VMWARE to support the latest R&D cloud project. 

Don't assume that because I choose not to waste my time on hand cranked cars to get where I'm going that I don't know how to get there. 

I just expect...no...I demand better and at this stage in the game it's just developer laziness that I don't have it.


No comments: