Sunday, June 07, 2009

Alan Kay on User Interface

I've been starting lots of projects and finishing none of them. A newer pursuit of mine is computer programming. My language of choice is Python. Firstly, because it is very simple and consistent. And secondly, because it is applicable to most situations I would want to write a program for: shell scripting, web development, CAD automation, and most interestingly, the umpteen different ways to use Python in Blender (logic in the game engine, PyDrivers, PyNodes...).

I found a course in UC Berkley's webcasts series that can start to fill in the giant holes in my knowledge about writing programs. Anyway, the lecture that I am linking to in this post is not very technical at all. It is a talk by Alan Kay about human-computer-interaction. Alan Kay was a major player at Xerox PARC, which is considered the birthplace of the graphical-user-interface. (bio.) He shows a a demo of what must have been one of the first CAD systems, Sketchpad. It could do things that AutoCAD cannot do now without extensive scripting. The ideas that formed his thinking about user interface were visual thinking, multi-modal learning, and giving people access to the building blocks inside the computer.

The talk is in two parts. I don't think I can link to them directly. They are the September 12th and 15th classes labeled "User Interface (Alan Kay)" on the class' website. (link.)


Mr. Alex said...

Thank you Pete! Really a fascinating lecture. Have you found the rest of the class of value?

Also, what resources have you been using to learn Python scripting? I've muddled with PHP for work, but no Python...

Pete said...

The best place to start that I've found is this short on-line book. The PDFs on the website are also helpful for more technical topics like unicode and regular expressions.

I'm on the twelfth lecture of the Berkley class. And though the class deals with Scheme and not Python, the class is about concepts and not mechanics. The prof isn't boring, and his example code is only as complex as he needs to demonstrate the concept he is introducing.

Python's PHP equivalent is Django. I haven't worked with it yet. I have pipe-dreams of setting up a project portal/ 'virtual print room' for work with it.

My biggest Python endeavor thus far was a program to help correct floor plans, which are often one big shunting puzzle. After dimensioning the plan, the user enters the field measurements as additional data in the dimension objects in brackets, which the Python script then monitors, changes the color and indicates the amount needed to correct the dimension. This is very helpful because, on a big plan, moving a wall can effect six or more dimensions in one operation, and was a tremendous pain-in-the-ass before. It was a simple program to write; it took a full day because AutoCAD misreports its object types and variable types, so I had to recast every little thing to the proper interface.

Python's interactive mode was invaluable.