Hacker
Posted by phil on 10 Mar 2004 at 11:27 pm | Tagged as: Uncategorized
Here’s a discussion I was having in my Topics in Information Systems class:
Dave Bourgeois writes:
[Alan C.] Kay states that knowing how to program is essential to using the computer to its fullest extent. Do you agree?
Yes, I think this is true to a degree.
The function of a User Interface is to make things easier to use. Therefore the better a UI is, the less computer knowledge will be required to use a program. That’s why M$ software is so dominant.
The problem here is that you run into the Powerpoint syndrome. People who only know how to use the program and don’t know as much about computers in general will be very bound by limitations of a program. Kay also said that a good program will allow users to do things that the programmer had not thought of. This gets progressively harder the “better” a user interface is, because the UIs are specialized—ie they allow easier access to certain things.
Sendmail is a great example of this. Sendmail is an SMTP server—it is a program which will relay mail from your computer to another. The usual use for it is your email client contacts Sendmail with a message to send to a certain user at a certain computer. This is great if you always want to send email in the ways that your email client knows. However, if you want to send email in a different way, such as with different headers or headers with false information, there’s no way to do that from within the GUI. You have to drop directly into Sendmail with a command like ‘cat | /bin/sendmail’ followed by everything you want the email to contain. Thus the GUI is actually a very limiting factor in this case. It works great when you do what it wants you to do, but if you are thinking outside the box, then you are pretty much stuck—there’s nothing you can do within the GUI. You have to resort to the command line.
This is why you need an Open system. When the email client and Sendmail are integrated so tightly that the user can’t step in at any point, the user suddenly finds that once he’s progressed beyond a certain point (the limits of the imagination of the programmer), and he can do no more with his computer.
Thus my thesis: a Good system will be scalable—it will have a good GUI that anticipates the needs of beginners, but it will not be limited to that interface. Any user who develops beyond the need for that GUI will be able to do far more than the original programmers have anticipated if the system is open to the point where all its functionality is exposed to someone who displays the requisite interest. Most people think it’s inverted—the higher-level you are thinking, the better you are using a computer. Neal Stephenson’s brilliant essay In the Beginning was the Command Line solidly refutes this way of thinking.
At the risk of causing a Holy War, I’m going to use this to explain why Windows is insufficient for intelligent computer users. None of its programming interfaces are open, and when they are documented, it is often done incorrectly. But before even mentioning the programming interfaces, you are bound to the GUI, and no functionality is possible beyond it. The command line in Windows is essentially a joke—it hasn’t changed since 1993, and even then it was worlds behind where Unix was ten years before that. If you have a more creative use for your system, you have to reverse-engineer the system, as opposed to ‘emacs /usr/src/myProgram/main.cpp’ and reading the source right before your eyes.
Side note: this also explains why Mac OS X can get away with having a completely proprietary system that is still usable by intelligent hackers. (Again, I mean hackers in the Raymondian sense—creative programmers.) The part that is closed is the GUI, which hackers aren’t really interested in anyway. The functionality all lies within the FreeBSD base that it’s built off of.
Wow, that was a mouthful, but I think I have justified my epistemology of hacking, so it was worth it.