René Magritte. The Treason of Images. "Ceci n'est pas une pipe." means "This is not a pipe." I know it's not a pipe. It's a picture of a pipe. But this blog posting is about another type of pipe.
I grew up in New Orleans. My brother went to De La Salle High School. When my time came, I went to De La Salle High School. My brother went to Louisiana State University (LSU). My sister went to LSU. When my time came, I went to the University of Southwestern Louisiana (USL) [now called the University of Louisiana at Lafayette]. Huh? I had to. At LSU, they had a computer system based on punch cards. You punched a set of cards that represented your computer program. You turned them in at a window. An hour later you came back and got your cards along with a printout. You looked at the printout to see how your program turned out. If you had a syntax error or logic error, you punched an updated card, replaced it into the card deck, and repeated the process. How exciting!
At the USL, we had a $6.5 million Honeywell Multics system. There was a terminal room with 60 terminals. Students used a text editor to enter their computer program. They ran the compiler themselves. Any syntax errors could be fixed in a matter of seconds. Students could use an interactive debugger called probe to root out logic errors in their programs. The system provided immediate feedback. Going to the USL instead of LSU was one of the best decisions I have ever made.
After graduation I worked at Honeywell on the CP-6 operating system. It was much like Multics in that it was a command line interactive operating system. After successfully completing several projects on CP-6, Honeywell wanted me to execute the same projects on one of its other operating systems - GCOS. GCOS used punch cards. Instead of doing that, I moved to another company, GTE Communication Systems, where they used Unix.
One of the cool things about Unix is its concepts of pipes. Unix commands are based on standard input and standard output streams. Thus the output of one command can be used as input to another command or commands. The syntax for this is a vertical bar called the pipe. For example, the list command (ls) lists the contents of a directory. The sort command sorts things. So
ls | sort
produces a sorted list of the files in a directory. Users can apply this same piping technique with a variety of commands.
The other day I popped up a DOS box on my Windows system. I entered a series of commands. After about the fifth one, I thought to myself, I can't believe this is the way we used to use computers. But before graphical user interfaces, command lines were the norm. I scoffed at punch cards because a command line experience was superior. Now we scoff at command lines, because a graphical user interface is superior.
Software as a service is a hot topic at Autodesk and the industry in general. The connectivity of the internet is leveraged by Web 2.0 applications. Mashups are the norm. A mashup is where you take the output of one service and use it as the input to another. Huh? That sounds a lot like Unix pipes. The connectivity of the internet has allowed the output of one solution to be the input to another. I guess it won't be long before we scoff at single applications that can't be mashed up. I guess it's all about the pipes.