Still pretty busy with game stuff--applications, puzzle ideas. It's been far too hectic for the last few days. Sometime yesterday afternoon, things turned a corner and I started to dig out from under. This evening I even started to catch up on personal mail. 180 pieces of personal mail. OK, I'm not caught up yet. But things feel soooo less hectic now. As part of the game application, I helped make a video. The guy with a video camera lives on Valencia, so Dwight and I headed over to Valencia to make this movie. Which is kind of a lame seque to say that I'm about to paste in this previously-composed book report about the novel Valencia. So sue me. I'm going to bed. I'm sleepy. It's been a heck of a week.
This novel is by Michelle Tea, but I've never heard her speak, so instead I'm going to start out by talking about Gerald Sussman, who I did hear speak a few weeks back. He's one of the authors of SICP, the Structure and Interpretation of Computer Programs. If you are a computer science geek, you may know this as the MIT intro-to-computer-science textbook. We used it at Cal, too. I remember that it was full of strange things to think about: the metacircular evaluator springs to mind. An interesting topic, but one that makes a naive frosh think, "What is the point of this?" Years later, I'd have some more perspective. Ah, he wanted to expose us to this concept and that concept, thinking that they'd come in handy later. Too bad that, at the time, I just thought that the textbook authors were crazy.
Sussman came to talk at work. He was worried about the state of computer progamming today. People creating code libraries, people designing APIs--they were all doing it wrong. There were these complicated interfaces for getting these gobbets of code to interact with each other. He sought inspiration from biological systems. In DNA, there's a reason that arms are like legs, but different. There is some DNA that controls how all limbs grow. But there is some DNA that is "triggered" based on where a body feature, uhm, sprouts from. Thus our legs are a lot like our arms, but are set up to be thicker, capable of supporting our weight all the time.
Modern software libraries aren't set up to fit together so easily. Sussman wanted components that could be combined more easily. To illustrate this, he put a diagram up on the board. It would be good if there was some way that in one stage of computing, a component could look at many thingies, figuring out something about each of these thingies; and then it would be good if there was some way to combine all of these results. So if you wanted to compute the sum of squares of many numbers, then you could say "well, for each number, the many-thingy operation is: compute the square; then when that's done, to combine the answer, we want to add those numbers together". To compute the average height of NBA athletes, you would say "for each athlete, the many-thingy operation is: extract the height from the data that we have about each athlete; then when that's done, to compute the answer, we want to add up all of those numbers and then divide by the number of athletes". This framework should exist; people writing software libraries should design those librarys' interface functions to "snap" into such a framework.
He had a few of these frameworks in mind, not just the many-operations-combined, but that's the one he showed. If he wanted to show us an idea that hadn't taken hold out in the world, that was the wrong framework to show. It was MapReduce. Folks at work use it all the time. I used it a couple of weeks ago for a project where I didn't have to--I could have used a loop. A year ago, I would have used a loop. But no, I used MapReduce. It was just the easiest way to solve the problem. I am not the sharpest programmer at work, not by a long shot. I have spent little time in the ivory tower of academia. But I'd been exposed to this idea for a while, and it had sunk in. As more coders get exposed to this stuff, they'll use it. I'd heard that the ideas for MapReduce came from the dread buried knowledge of the Lisp hackers, and of course Sussman is one of those. Anyhow, I can't claim that all of computer science has advanced to the point that Sussman dreams of, but... Perhaps we are closer than he thought.
After the talk, he took questions. I think that MIT's intro-to-CS course changed recently. Sussman's book will, presumably, be replaced by something else. I get the impression that various afficianados of novelty and fans of stability had been nattering at each other about whether or not this change was good. Maybe that's why someone asked about the future of education. I forget what the question was. But Sussman decided to talk a bit about the future of education. He pointed out that right now kids go to university because it's the ticket to a job. But jobs keep going away, and will do so more rapidly. As machines get better at tasks, it's not so important that humans do things. As the necessities of life become cheaper, we will have more idlers. If these people don't need jobs, how can we motivate them to educate themselves?
I thought about Michelle Tea's novel Valencia. This book is full of alternative youth falling in love, altering mental states, falling out of love, wandering city streets, wandering the nation. Occasionally someone holds down a job for a while, but most people seem to drift along without such. It would not be correct to call this book a lesbian version of a collection of Aaron Cometbus stories; but you suspect that these writers' characters would understand each other pretty well. These people drop out; when they have jobs, those jobs do not exercise their educations. That tattooed bartender's degree in comparative literature has not helped her career.
Sussman thought of this as an edutainment problem: how do you fool young people into learning if their education doesn't help them? I'm thinking, "Maybe that world is closer than you think." I don't have a great solution to this problem. I figure: if education becomes irrelevant, maybe we shouldn't continue shoving it down people's throats.
Labels: book, programming languages, zine