I have an annoying habit that irritates my family. When we are on a relaxing beach holiday I like to read books that are dense, intellectually challenging works on esoteric topics. (Yes, I am a nerd.) I have fond memories of being scolded for constantly bringing up ideas from Douglas Hofstadter’s Gödel, Escher, Bach one summer. This Christmas, I’ve done it again – with a book that is so thought-provoking and intriguing that it is a real delight to read.
The book is a collaborative effort, with 10 authors, but it is a coherent piece. Each section looks at the topic from a slightly different angle, but together they form a book that has structure and focus. It’s a literary and cultural analysis work, analyzing a piece of writing through various lenses, including culture and history. This results in a far more detailed understanding and appreciation of the original work, as well as greater reflection on various aspects of education, commerce, and more.
The book has the unusual title of 10 PRINT CHR$(205.5+RND(1)); : GOTO 10 because it is about the one-line BASIC program that is contained in the title. The program, referred to as 10 PRINT, was written for the Commodore 64 computer in the 1980’s and 90’s and generated a maze-like image on the screen using two characters from the C64’s extended character set.
I won’t attempt a full review of the book here. If you want a good review of it, do read Geeta Dayal’s piece in Slate, which led me to the book. It’s a great review and gives you a good picture of what the book is all about and what it’s like. (I’ll just say that it is a fascinating, eminently readable, and enjoyable book. Go buy and read it. There’s a CC-licensed PDF version available for free download.) For me, I appreciated the book in several different ways.
Firstly, as intellectual stimulation it was terrific. There was so much to learn. From its discussion of mazes in history and culture, I learned what the difference is between a labyrinth and a maze. An aside about screensavers and the famous Flying Toasters led me to learn about the Maillard process. The analysis of regularity and randomness in art not only got me thinking about the interplay between those two factors in effective art and design, but also got me rethinking the value of modern geometric super-abstract art. (I can’t say that I like it any more, but my knee-jerk antipathy has certainly eased.) The section about the origins of BASIC and various early versions discussed the differences between free and proprietary software and the cultures of Microsoft and various computer user/programmer groups – and the fact that there was no hero and villain in these two groups, but that both made valuable contributions. The book definitely got me thinking about a lot, and that spilled over into rumination on other subjects. (My family, relaxing by the pool, were not amused.)
It was also fascinating to read a book which looked at a computer program as a work of writing – could I say literature? Taking this code as the product of human creativity, with historical and cultural contexts, was a fascinating way to think about software. Most non-programmers view computer programming as a utilitarian, almost mechanical process. In reality, however, any good programming is the result of an individual’s creative response to a problem. The process of coding involves problem-solving and creative thinking. The resulting code is unique to the individual(s) who produced it: given the same problem, another programmer would come up with a different code. Analyzing the text of a program, therefore, focuses on the individuals who work to create programs and casts the art of coding in a completely different – and respectful – light.
But what got me really going was the book’s relevance to technology education and computer science, two subjects near and dear to my heart and work. 10 PRINT describes a time when computers were first sold for home use, and back then they were tools for building and creating. BASIC was built in to home computers’ ROM so that as soon as the computer was turned on it was ready to be programmed. Sure, there were programs for sale or share, but one of the first things that any new computer owner & user did was to learn to program. In that way, the user/programmer became more knowledgeable about how the machine worked, and also gained a sense of mastery and dominance over the tool. I remember my own first personal computer – an Apple IIe – and programming in BASIC. That experience gave me control over the computer. If I didn’t have a program to do something I wanted, I built my own. If a program stopped working, I hacked the code to see what was going on and tried to figure it out. Modern systems have easier but much more opaque interfaces, so that the level of control is much harder to achieve.
This causes a strange dichotomy in modern computer use. It is so much easier to use a computer that such use has become completely ubiquitous. (In my family on holiday, everyone from my 7 year old nephew to his 73 year old grandfather are using computers, iPod touches, etc.) However, modern computer users are just that: users. People don’t have mastery of the machine. If there’s no “app for that,” then it doesn’t get done. If the computer doesn’t do what the user wants, or doesn’t work the way the way they want, the user just accepts it. There’s no sense of control, no sense of mastery.
In its conclusion, 10 PRINT states that programming is “a process that can lead to a better understanding of and realationship with computation, in addition to leading to other aestheticallyinteresting and differently functioning programs.”
10 PRINT got me thinking about a lot of things during this holiday. Most important for me was how it brought fresh evidence – from a 30 year old computer program – of the value of teaching computer users how to read, analyze, write and value code.