Credentials and Pedigrees |
|
|
|
|
I wasn't going to work on the journal today. I don't want to become a slave to producing a page a day or meeting a quota of pages each week. Also, some days I expect I'll just want to think about what to write; some amount of preparation and meditation will be necessary if this journal is be useful or inspiring to anyone. So I woke up this morning and decided that I'd just "play" with the computer, write some Perl scripts to handle some system "house cleaning" (Perl is a programming language used by system administrators and web hackers but good for all sorts of routine computing) and install some software that I have on my computer at work but that I've been too lazy to install on my home machine. I really do like to program so this struck me as a very nice way to spend the July 4th holiday. Installing software is also a way of learning about what other programmers have been up to and exploring what computers are capable of.
I hacked and installed for a bit and then my attention started turning back to working on the journal so I thought some about what I'd write for the first real entry, since the July 3rd, "Independence Day" entry was a preface and explanation of sorts. When I start a project, I become invested in it - a euphemism for "obsessed" - and I can't stop some part of my mind returning to thinking about the outstanding problems with my current project. To use a computer metaphor, my thinking about the journal corresponds to a particular thread of computation in my head. I have different threads for different projects as well as threads for recurring tasks such as eating, exercising bathing and the like. These threads have different priorities which may change as a result of internal or external stimuli. Right now my hunger thread is rising in importance and nagging at me to get a snack. My different threads of computation are woven together into a fabric that describes the sum total of my computations.
The thread metaphor is only marginally useful in this case. The seemingly disparate threads of thought that are spinning through your head just now are very different from the threads that comprise the computation of a modern operating system. For one thing your thoughts are much more closely related. Sometimes this makes for interesting connections when say you get an idea for solving a geometry problem while watching a store clerk put boxes on a shelf. But other times it can be annoying, for example, when you're trying to enjoy a movie and your mind keeps turning back to review something stupid you said or a mistake you made on an exam.
Another way that your threads are different from computer threads is that your computations are taking place in parallel, the computations corresponding to your different threads of thought are happening at the same time. Some so-called multi-processor computers can handle more that one thing at the same time and run threads at the same time on separate processors, but most computers are single processor computers and they can do only one thing at a time. Multiple threads of computation are carried out on a single processor by time sharing the processor, running each thread in turn and according to its priority for a small amount of time. Parallelism is simulated in the single processor case.
In any case, I'm getting way ahead of myself and I do hope I take the time at some point to talk at length in a future journal entry about threads of computation and single and multiple processor machines. I also hope that I remember to link the paragraph above to that future journal entry (July 27, 2002).
As I was saying, my hacking and installing was interrupted by thinking about the journal. What got me thinking was how would I ever get to write a proper preface for this journal/book in which I got to thank some of the folks who've inspired me over the years. Generally you write the preface to a book after the book is finished and you've had a chance to reflect on what you've written. You thank all those folks who've helped you out in one way or another or put up with your crankiness while you obsessed over writing the book. One of my goals is to avoid obsessing over the journal and enjoy the process of writing it at least as much as one can when working very hard at something that I'm sure will be intellectually taxing and frustrating at times. But I expect that there will be lots of people who will help me out from time to time and I'll want to acknowledge their help. Given my solemn pact to write this journal from beginning to end without backtracking (I'll have to backtrack to explain the computational twist on this useful metaphor) and organize at least one view of the work in strict chronological order, I'll have to figure out some other way of thanking all the folks who will no doubt provide useful advice and interesting insights.
Prefaces are also often used to establish your academic credentials and note your intellectual heritage. It's also a chance to say thanks to some people who inspired you. And this I thought I'd like to do early in the writing and today seemed as good an opportunity as any. I won't go all the way back to grade school but I will give you a peek into my checkered academic career.
An academic pedigree lists your advisors and mentors and, recursively, the pedigrees of your advisors and mentors. Some academics can trace their lineage back several centuries to such notable scientists and mathematicians as Gauss, Klein, Hilbert, Hooke, Boyle and Lavoisier (type "academic pedigree" into a search engine and see how far back you can trace someone's academic roots). Some of this is silly and annoying but there's another side of it that is important both scientifically and socially. Your academic associates, mentors and advisors constitute an important extended family. These are the people who inspired and taught you, who made it possible for you to carry out your research, and often with whom you shared some of your most exciting intellectual adventures.
At some point in my late 20s, I found myself at Virginia Polytechnic Institute and State University Blacksburg, where I was double majoring in mathematics and philosophy. This was my second attempt at college. An earlier start in journalism at Marquette University had ended after only a couple of weeks, but this time around I was motivated - I was there because I wanted to be. I was primarily interested in mathematics, topology, real analysis, number theory, and was almost sucked into a career in mathematics as a result of reading a book entitled "Surreal Numbers" written by a rather famous computer scientist by the name of Donald Knuth Donald Knuth who is also a very talented mathematician. For a while Knuth's book and the related work of John Horton Conway drew my attention away from other pursuits. But eventually my interest in (and frustrations with) philosophy led me to the computer science department where I encountered John Roach, a professor in computer science, working in robotics and artificial intelligence.
John was interested in some of the same questions that philosophers, logicians and epistemologists in particular, were interested in but he had a much more direct and, I thought, satisfying way of trying to answer these questions. He built and experimented with computer programs that were capable of performing a sort of crude inference. The idea of writing programs and building systems whose behavior one could only fully understand by providing the programs with input and then trying to understand their output or responses struck me as very compelling. The programs were relatively simple; it was their input / output behavior that was so complex and fascinating.
John enlisted me to help write programs in Prolog, a logic programming language about which we'll have more to say later. John's implementation of Prolog was written in another language by the name of Lisp. So the first programming language I ever used was really just a program written in one language that interprets programs written in another programming language. I'd get used to this idea of languages built on top of other languages pretty quickly but I wasn't particularly surprised at the time as I had no context to draw on.
The Prolog programs that John wanted me to write were supposed to reason about the shapes of objects, physical space and the passage of time in order to assist a robot that has to move about in space and manipulate objects to accomplish tasks. John just gave me a draft of a programmer's manual that he was working on, pointed me to some books and papers, and told me to go for it. John taught me that if I was to get a robot to reason about the real world, I would first have to supply the robot with knowledge about the real world. The very idea of imparting knowledge to a robot or rather to the program that controls a robot seemed natural at the time though later I was to learn that such notions were highly controversial. John kindled in me a life-long interest in both robotics and artificial intelligence.
At Virgina Polytechnic I would also meet I. J. (Jack) Good who was a statistician and cryptologist who worked closely with Alan Turing on Colossus at Bletchley Park and would figure prominently as inspiration for some of my later research. At the time however, I didn't really know enough to engage him on any particular topic that he found interesting and I mostly recall being amazed at the sheer size of his scholarly output; his office was a large room (almost classroom size) consisting primarily of rows and rows of shelves holding his life's work.
After finishing my undergraduate degree, my advisors and mentors suggested I go to graduate school in computer science. My grades were fine; unlike students who start college in their late teens, I'd already sowed my wild oats and seen a bit of the world. I spent my three and a half years at VPI working hard and enjoying most of it. I applied to a bunch of schools and then took a tour of several to get some idea of what life in graduate school might be like.
I can remember traveling to Pittsburgh to visit Carnegie Mellon University which I was told was a fine place to do graduate work in computer science. My biggest thrill in Pittsburgh however was my visit to the office of Nicholas Rescher, a philosopher and prolific author, who resided in the so-called "cathedral of learning" at University of Pittsburgh. Rescher wasn't in his office the day I visited but the cathedral was wonderfully gothic and the massive wooden door to Rescher's office seemed just right according to my expectations of how a philosopher should be housed. I found in Rescher's books, e.g., Hypothetical Reasoning [1964], Temporal Logic (with Alastair Urquhart) [1971], and Induction [1980], a wealth of tools and ideas for how to build thinking machines.
I ended up going to Yale University in large part due to my reading the work of Drew McDermott, a professor in the computer science department whose research was concerned with programs that reason about time and space and are able to plan out courses of action to achieve specified goals. It sounded like what I needed to learn about to program robots. Drew did his doctoral work at MIT and I would complete my dissertation under his tutelage. My academic pedigree going back three generations then was Drew McDermott, his advisor, Gerald Sussman, and Sussman's advisor, Marvin Minsky. Minsky was one of the founding fathers, along with John McCarthy of the field of artificial intelligence - though the origins of the interest in building artificial intelligences go much further back.
Drew McDermott was an inspiration to me in so many ways. Not only did he teach me and guide me to contribute to a particular area of computer science but he showed me how exciting and fulfilling a scientific career could be. Drew showed me that computer science was fun and his enthusiasm was contagious. He was also the best hacker I have ever had the privilege to observe and learn from at close hand.
Gerald Sussman's dissertation on automatic planning influenced me a great deal and his later collaboration with Harold Abelson and Julie Sussman on the "Structure and Interpretation of Computer Programs" was for a time one of my favorite books [Abelson and Sussman, 1985]. I'd looked at some of Sussman's code long before SICP came out. There were times when I was trying to figure out how some inscrutable and uncommented bit of Drew's code worked and I would find pieces of code either written by or adapted from code written by Sussman. There's a lot to be said for learning to program by reading and adapting the code of good programmers.
I've only met Marvin Minsky briefly a couple of times in my life and I'm sure he doesn't remember me but Minsky played a more important role in my career than simply being my academic great grandfather. Prior to moving to Blacksburg and VPI, my wife, Jo, and I lived on Squirrel Mountain, a large hill near the Blue Ridge Parkway about fifteen miles from Lynchburg Virginia. We had bought the land, about a quarter slice of the mountain pie, with the intention of building a house and perhaps later selling the house and land for a healthy profit to some wealthy retiree from Washington DC. There was an abrupt downturn in the economy and it wasn't looking like we'd be making a profit any time soon, so Jo and I went back to school at a community college in Lynchburg.
At Central Virginia Community College (CVCC), I studied electrical engineering and mathematics and Jo studied graphic arts, she was already an accomplished painter but we were both of a practical mindset thinking that we might be stuck in Lynchburg for some time. To make a long story short, I read all about Marvin Minsky and thought I had some ideas about how to build an intelligence. I sent him a package of my writings and drawings hoping for who knows what and he, bless him, sent me a very nice note that I thought indicated he had read some part of what I sent him and that gave me some concrete suggestions about what books I might read to learn more about my interests. I've tried my best to return the favor to those who have written me and will always have a soft spot in my heart for Marvin Minsky for his kindness to me at a time when I was looking for direction.
As I was writing about Lynchburg just now, I remembered Katherine Barringer a professor of mathematics at CVCC who taught me calculus. I really didn't get calculus or trigonometry in high school; I seem to recall that I came very close to not getting my high school degree because of my grades in math. I just wasn't interested; as far as I was concerned there were lots of much more interesting things to do in Washington DC in the 60s and I didn't have time for math homework. But Katherine Barringer made calculus interesting and even exciting; she was the one who told me to apply to VPI and major in mathematics. Twenty-eight isn't a great age to be embarking on a career in mathematics, most prodigies have their best years well before they're twenty, or so goes the myth that I'm now carelessly promulgating here. But at CVCC I was in love with math (and digital circuitry and physics and ...) and Katherine Barringer said I should go for it.
It was at Yale that I met Alan Perlis, a wise sage, inspirational teacher and all around very nice fellow (see his epigrams in programming for a sample of his wit and wisdom). Alan attended my thesis defense, a stressful event for most graduate students - the previous two students had failed in their initial attempts to defend their dissertations - and appeared to sleep throughout the proceedings. At the end of my presentation, however, when the assembled faculty were supposed to grill me, Alan asked the most interesting, penetrating and, indeed, appreciated questions of all - he made me believe that he was interested in my work and that indeed my work was interesting.
This requirement to write each journal entry and not to return to the text except to make small changes has its good side and its not-so-good side. The not-so-good side is that at some point in every day there are other things that have to be done and you may be at a point where you think you have much more to say. The good side is that you're probably wrong and you've likely already gone on too long. I did say that I'd try to remain sane throughout this effort and so I'll stop for the day in the interest of good mental hygiene. I currently live in a house near the Atlantic Ocean with a view of the water, specifically I look out across the ocean at Martha's Vineyard and Cuttyhunk Island. There's a sandy beach only a short bike ride away and I plan to take long walk along the beach and hopefully get a chance to ride some waves in the surf.