Along the Commandline
Interaction with computers has pre-occupied many a psychologist since the earliest musings on the subject by the non-psychologist Alan Turing. Indeed, the very notion of a Turing test, and the philosophical controversies that arose in its aftermath, define a large portion of the discussion of what a successful interaction with a computer should be. The Turing test set standards that were a tad high: not being able to distinguish your computer from the man in the street or your friendly neighbourhood pharmacist is not what every user wants from their computer...
Turing Interfaces
The Turing test tries to answer the question of how we would recognize an interlocutor as intelligent by analysing the appropriateness of the machine's replies to our questions. Anyone who has watched Ridley Scott's Blade Runner knows how explosive a problem this can be. The Turing test makes no assumption of what interface we should be using, since any computational machine showing signs of intelligence should be substrate neutral. Neither does the implementation of the computational engine, nor the interface through which communication with the computational engine occurs, have any bearing on whether the machine can be said to exhibit signs of intelligence.
An operating system does not fulfill the same functions, but the metaphors are similar: the software libraries running the hardware make decisions about the use of hardware that we hope are sensible, while communicating with human and other users through an arbitrary interface.
Our Interfaces
Our user interfaces, regardless of whether we use Linux, FreeBSD or even Mac OX X, are built using metaphors with which we have been familiar through our early education. Cultural assumptions and visual motifs abound in any graphical user interface: We love icons, we positively salivate at the sight of directory tress, and we just adore application windows. Or do we? There is a suspicion among many commandline users that iconically mediated interaction, to coin a phrase, has a lot more to do with subliminal manipulation than deliberate, conscious use.
Commandline Interfaces
It seems natural to think that a commandline interface is a throwback to a past that's best forgotten. It suggests a closeness to hardware and systems software, which seems unnecessary, even over-elaborate. Actually, we hark back to commandlines quite liberally. There is a blip in the matrix every time someone admits to god-like emotions whenever someone in a suit proudly announces mastery of the exim mailserver in his or her home, or when setting up a VOIP server for family, friends, and fellow countrymen is being discussed - the slight hiatus relating to the double-take whenever a non-IT friend discovers that technical skills can make one's life run more smoothly. And my granny didn't understand Linux. Now she does, since she can talk to her grandson in Australia for free. And I thought I was safe when I was talking to the men in suits..
Same Parents, Different DNA
This may come as a shock to some, but shells, GUIs and kernels are part and parcel of the shared history of operating systems. No corporation paid thousands to focus groups and marketing managers to create the graphical user interface. Shells don't grow on trees, but on Unix-type kernels. The first usable GUIs were dreamed up and implemented on virtual machines with very little architecture-specific code. Communication with the VM as opposed to the OS kernel fulfilled almost the same functions, even though the users did not always have the same purposes in mind. A commandline god creates ASCII worlds, a GUI slave thinks of symbolic relationships in a 2D universe. Still, a VM hides the hardware, but manages it all the same. A Unix kernel exposes many kernel functions and leaves some policy making to the user. Words, letters and punctuation allows for a greater subtlety of expression than visual metaphors ever could, which makes GUIfied interaction with an OS kernel fairly difficult.
Historically, commandline editing and attempts at GUIfied human-computer interaction were developed only a few years apart. Conceptually, they belong to different worlds: GUIs emerged from experiments in learning psychology and shells evolved when the idea that computers provided just one particular kind of interaction (like complex calculations, data processing etc.) disappeared with the emergence of multiprocessing, multi-user systems like the s/360. Historically, shells and GUIs are part of the same solution: namely how to access system resources efficiently and quickly. Not much of a systemic differential there. Stringing together commands in files and running them under the aegis of a command interpreter led to #!user/bin/bash becoming one of the more popular invocations of the computer age.
Corporate Bad Faces
Naturally, we talk about the BSDs, Linux and Mac OS X whenever we speak about shells and commandline interfaces. But why does the commandline have a reputation that belies its power? Why did the hold over users' minds exercised by Apple and Microsoft lead to an almost complete rejection of commandline interaction? Why do we, the masters of the commandline, feel slightly sheepish in the presence of the GUI builders?
Perhaps we should not see the world in such Manichaean terms. After all, most of US are just as familiar with the world of graphical interfaces as we are with commandline hacking. But THEY of the GUI-only world whose software, let's face it, often has a proprietary whiff to it, are not keen on seeing falling toothpicks and runic incantations command the power of networks and the encoded knowledge of centuries.
Neal Stephenson's Lines
Neal Stephenson, the science fiction writer and author of Snowcrash and The Cryptonomicon, wrote extensively about the commandline and text analysis made possible by using commandline utilities. He is a paid-up, card-carrying Linux enthusiast and ex-programmer himself. His worries have a lot to do with the vice-like grip companies such as Apple and Microsoft seem to exert on their customers' imaginative powers. Much of this problem has to do with the fact that Windows and Macintosh GUIs were folded into the operating system structure: there used to be graphics primitives within Windows that in case of failure managed to shut down the complete operating system. This is not a likely occurrence in any Unix-type operating system, simply because X Window has nothing whatsoever to do with the kernel: kernel as well as system libraries were safely decoupled from X Window; graphics input and output were accessed by a different "server" whose interrupt handling was largely irrelevant to the kernel. Neal Stephenson also used BeOS extensively, or at least until most application companies ceased supporting the platform.
He did his degree in geography and physics; his biography has strong similarities with that of many other high-school geeks and college science majors in the US: sitting by teletype terminals in darkened computer rooms while waiting for the results of processing done on a mainframe miles away played a major role in his life. His overview of operating system history from the 1970s until 1999 leads him to believe that operating systems will not seriously be improved upon since the limits and possibilities of commodity hardware (meaning Intel) have been explored. He adduces other arguments to support his case for purely cultural choices being manipulated by large armies of marketing drones.
But he also rightly suggests that commandlines and shells are here to stay for reasons that go a bit deeper than subtle neuronal rearrangements in our visual cortex for corporate gain.
The Hacker is God
Open source Culture and hacking in general appeal to a far more fundamental urge. During the Middle Ages in a Europe that was only beginning to emerge from barely concealed post-Roman chaos, similar division between a very lively visual religious discourse and highly abstract theological discourses emerged as well. Both spoke in metaphysical terms, even though signs used in images were meant as references to, rather than explanations of, say, the beginning of the universe. Indeed, the two worlds did not exactly have any crossover points that were immediately apparent.
Medieval theological discourse was "open-sourced" at the very moment printing became a European phenomenon. This is not just a specious analogy between European medieval culture and the modern history of computing: let us not forget that the conceptual and emotional phylogeny of children in what used to be called the "West" recapitulates historical ontogeny at least to some extent: visual "biblical" narrative was usually taught (at least until the 1960s) before philosophical writing becomes accessible, if at all, to adolescents. But the internal machinations and communication with the internal powers of the universe occurred usually in metaphysical and later, mathematical terms. Historically, cosmogony told the story of the universe, before cosmology tried to explain the interplay of its primary forces. Neal Stephenson situates the operating system and its interface in a much more modern context.
"I think that the message is very clear here: somewhere outside of and beyond our universe is an operating system, coded up over incalculable spans of time by some kind of hacker-demiurge." Not that Stephenson posits the existence of a god of hackers. To be sure, Linus Torvalds would insist on a slightly less elevated interpretation of his work. His use of metaphors is aimed at elucidation, not explanation, of physical processes using software as the metaphor.
"The cosmic operating system uses a command-line interface. It runs on something like a teletype, with lots of noise and heat;" Or conversely: can you imagine a hacker-demiurge using Windows, or even KDE as an interface to specify the upper mass limits of brown dwarf stars? Just drag a corner here and...it looks about right. Oops, we accidentally kicked off a fusion chain. It looks like a blue giant now.
"The demiurge sits at his teletype, pounding out one commandline after another, specifying the values of fundamental constants of physics:
universe -G 6.672e-11 -e 1.602e-19 -h 6.626e-34 -protonmass 1.673e-27...."
The commandline speaks for itself, even though my programming teacher would have tut-tutted at all that use of constants in my code. In all seriousness, this half-joking analogy makes it somewhat more obvious why commandlines have far more cultural significance and staying power: although the additional complexity of commandlines is beyond doubt, it is perfectly possible - if the commands have been saved to a file - to reconstruct their workings a few years, or even decades later. They follow known rules, scale to fairly high degrees of complexity and they have cultural roots that are accessible to the use of intelligent argument. After all, ASCII files can be read even centuries later, since their encoding is simple and devoid of any structural markup. GUIs do little but tell a pretty story about the workings of the operating system or application they are supposed to beautify, the layers of which have to be peeled away to answer any serious question a user might have. GUIs represent structural markup, whose interpretation and rendering is extremely complex.
The Universe of Letters
In this sense, since the invention of telegrams (a point made by Stephenson), we were used to the commandline to communicate actionable signals to communication devices. But even further back in time, one only needs to look at the logic, philosophy and theology manuals of late medieval universities to understand that the expansion of metaphysics and later mathematical physics equipped mankind to see the world in two ways: the interface of consecutive visual story telling and the metaphysical and mathematical formulas of early physics. The world of software retains this distinction: after all metaphysical and mathematical formulas need to use little more than ASCII symbols cunningly manipulated.
It is fun and instructive to get diverted with cod-theology: if one were to run a software universe, i.e. a complete operating system, from a commandline, the system administrator would be in a position similar to that of second-level creator. The system administrator would perhaps not do much more than change the rules according to which the operating system behaves. Yet that is the role of the demiurge in Gnostic thinking. Indeed, the system administrator would make the universe of the user accessible to more than just creators of software universes. Incidentally, open source, just like printing, collapses the ideological walls between commandline and GUI users, revealing the archi-texture of code and libraries. Today, the availability of source code and the Internet contribute to a world where many rule-sets are known that produce extremely interesting software universes or user environments.
We are Creationists
Obviously, the hacker, the system administrator and the medieval theologian have a lot more in common. Stephenson again: "because what those hackers would be aiming for would be much more ambitious than a universe that had a few stars and galaxies in it.... Any run-of-the-mill hacker would be able to do that. No, the way to gain a towering reputation...would be to get so good at tweaking your commandline that your universes would spontaneously develop life."
Perhaps, we should not go so far as to credit a Linux configuration with the concomitant effect of breeding (artifical) life. Although, as many programmers would admit, this is possible, it is definitely not advisable to let software worms and viruses run around on your Linux PC hardware. But it leads to a thought that might make your life a little more interesting when you are trying to build shell scripts to make your life easier. A richer shell-scripting environment with a more sophisticated set of facilities, and not just a greater number of them, enables a sysadmin to write a better working environment for her users.
Let's Shell Out
As we all know, GNU\Linux-based operating system come with a number of shells installed. bash, csh, pdksh and zsh are the most well-known today. They all provide the logic and machinery to access operating system facilities. Although they are almost all programmable, and the list of user-accessible features has increased manifold since sh came into existence, the additions from sh to zsh all show one tendency: the syntax tends to become ever more powerful, and in the case of es and Plan 9's rc, they even include anonymous functions. Shells also became ever more configurable, thereby turning shells into personalized programming environments.
This served to turn history on its head: the reason GUIs came into existence had a lot to do with making programming environments something like intellectual playgrounds, graphically abstracting away from the underlying machine. For creators of ASCII universes, the whole point of shell programming consisted in integrating system resources into the programming model itself. The machine became a source of ideas, not the embarrassing closet kept hidden from the prying eyes of the demiurge-hacker. Since the machine and the hacker encoded their information in ASCII - today we would use utf-8 - they were able to communicate using the same encoding. And visual language suddenly becomes an encumbrance, not an enabler.
Let us never forget that using a visual language gives a lot power to the organization creating the language. The old adage of an image being more powerful than a thousand words doubly applies to the inventors of visual languages. They are in a position to censor much of the workings of the machine and inhibit the user's freedom of action. The medieval thinkers searching for the workings and origins of the universe often ended up being proscribed by ecclesiastical censors. Painters never were. But despite their creativity in late medieval times and current popularity among hackers, painters told the story of the universe's origin as a sop, not to teach the language spoken by a physical universe. Shell programmers are the rebels of the software universe after all.
God's ability to count to infinity
That nature computes and indeed executes a general version of the rules of universal computation described by Turing et. al. has become commonplace. Curiously, an analogous discussion revolving around God's ability to count to infinity took place in the Middle Ages. Aristotle, John Philoponus, Simplicius and Islamic thinkers like an-Nazzam of Basra and al-Kindi were considering the possibility that the universe cannot be eternal since it had been created. Today's views are somewhat different, but some of the arguments against the eternity of universe stated that a God who created the physical universe must have himself existed in eternity. Given that time was not considered continuous, but discrete - Islamic Occasionalists insisted on this argument - nature became a giant clock counting out the moments of time since the universe's inception. But God himself had existed since eternity and therefore had to be able to count the moments of time since eternity. God was quite openly considered the infinite tape and nature the computational engine.
Man had to have some kind of interface to understand this problem and various ingenuous paradoxes were constructed to visualize solutions. Visual as well as geometric solutions failed completely and algebra, itself a field invented in the Arab world, was to provide the royal road to understanding problems of infinite sets of objects or time instants. Interestingly, set theory was thought of in a very rudimentary way in 9th century Bahgdad. But it was known and acknowledged that to account for an infinite amount of time instants, algorithmic operations had to be employed. In a curious reversal, the very absence of a visual language encouraged philosophical and mathematical analysis of this problem. Of course today we would not try to prove the existence of a creative agent at the beginning of time. We are just accounting for consistent rules of computation.
Neal Stephenson
Neal Stephenson was the novelist who managed the unusual feat of writing a wonderful historical novel on not one, but two Turing-like characters during the 2nd World War, while keeping the narrative firmly grounded in the "anything goes" world of late 1990s Silicon Valley. The "Cryptonomicon" was the first novel to contain a Perl script and made cryptography central to the plot. It also mentioned open source software in many places and was plainly written for hackers. His popularity was such that job interviews for Internet startups in the late 1990s were riddled with references to the Cryptonomicon.
In another life, Neal was a geography and physics student at Boston University, and he got his degree at the ripe old age of 22. His views on the commandline were published in 1999, and as he said recently, should not be taken to reflect the present state of technological affairs. His thoughts are valid, though, and we, the staff at LUD, forgive him for temporarily preferring the quite marvellous Mac OS X to true open source operating systems.
He started his career as a novelist in 1984 with the Big U, which is sadly out of print. He continued with the alternative thriller Zodiac and brought out Snowcrash which made him the darling of critics and lovers of virtual worlds. Often compared to William Gibson, it is essentially a romp through a virtual world and a latter-day USA gone mad. Like the real thing, actually.
His Baroque Cycle is meant as a prequel to the Cryptonomicon, although links between the main protagonists are not always easily discerned. A writer of astonishing scholarship, his historical novels show him as a narrator of the history of continents and intellectual adventurers. There are few documents in the history of science and technology that do not get an honourable mention in his novels.
His past as a geek is documented in "In the beginning was the Commandline", a short book he wrote to introduce his views on the role of operating systems in the development of digital culture and economics. He quite rightly saw the role of Microsoft as the popularizer of commodity hardware, but was perhaps slightly more swept up in chiliastic enthusiasm of the late millennium than his open source advocacy evident in his writings allow. He foresaw the end of operating system business as we know it, a development we now know to be somewhat exaggerated.
Frank Pohlmann
References
Bash Scripting: www.faqs.org/docs/abs/HTML/
Some Thoughts about Interfaces under Unix www.faqs.org/docs/artu/ch01s06.html#id2877537
Neal Stephenson's rant www.cryptonomicon.com/beginning.html
zsh junkie's page http://zsh.sunsite.dk/Guide/zshguide.html
God in the Machine www.wired.com/wired/archive/10.12/holytech.html?pg=1&topic=&topic_set=

