"If you care a lot about the future, it shows that you believe in what you're doing now and you think it's worthwhile enough to have some lasting impact." – Syd Mead

Menu

Month: August 2010

I saw this talk that Sir Ken Robinson gave at RSA (the Royal Society for the encouragement of the Arts, Manufactures, and Commerce) online a week ago, and I was deeply impressed with it. He talked about a book he wrote in 2008 called “The Element”, which tries to explain how people get into “their element”, a creative place within themselves where they feel at home. Another major topic of his book is a critique of education systems throughout the world, and a proposal for what might be a better way to educate.

Unfortunately this video does not contain the full talk, just the first 39 minutes. I assume that’s most of it. All I know is the video cut off the conversation. I tried looking around for a more complete version, but I haven’t found it yet.

I recognized a lot of my own learning experience about my talents in what Robinson said. A big thing that struck home for me is that there are many things I’m good at, but I don’t enjoy, and that a problem many people have is they “shoot low and succeed”. I spent part of my life doing these things because I am good at them, and they were rather like low hanging fruit. They were accessible things I could do to make money. That’s pretty important, I’ll grant you. Everyone needs a way to sustain themselves, and that involves looking at your circumstances practically at a certain level. I could even convince myself sometimes that a few of the things I did were the things I’d always wanted to do, because I felt like I was accomplishing something, making a contribution to the world, being rewarded for it, and it related to my true passion. I spent quite a bit of time on those few things. I could feel happy about them most of the time…for a while. With these endeavors I reached a point where my motivation to continue started to wane, and it was a rut I couldn’t get out of. Eventually I reached a point where I said, “I don’t want to do this anymore. It’s too frustrating. It’s unfulfilling. It’s not worth it.” Some would look at the trajectory of what happened and say I had outgrown these things. That’s true to a certain extent. Looking at it honestly, though, I’d say I had either gotten into these things in the first place because I thought they represented the whole domain, the full experience of what I was interested in, which I found out years later was not true, or I felt forced into it because while I did see other possibilities, I didn’t see how I could get to them. So I “settled”.

As I talked about earlier, I also came to a place a few years ago where I didn’t have any other “low hanging fruit” to grasp at that felt satisfying. Without that I felt lost for a little while. I had to realize it’s okay to shoot high for a big goal, even if it means I might fail to reach it. Robert Compton, a tech VC who produced the documentary “2 Million Minutes” talked about this with respect to students picking universities. It’s important to shoot high, even if you fail to get what you want. That doesn’t just mean shooting high because you can, but also because you have done the work to try to prepare for it. That ambition makes you more capable than those who shoot for the easy goals.

I felt for a long time before I embarked on this pursuit that there was something a bit wrong with me, certainly that I was a bit eccentric. I tried to conform more to what others expected, in a sense, but the strange thing is doing that felt like work! And besides, I don’t like trying to not be me. Imagine being a child and having a teacher tell you that you’re doing something wrong by doing your own creative activities, or you won’t amount to anything if you keep it up, in addition to all this. This is why Robinson says that education systems throughout the world tend to kill off our creativity in childhood. You have misunderstanding from your family, and perhaps your friends, and you get discouragement from your teachers. What’s a kid to do but try to conform in that environment? Not that this happened to me so much (I got plenty of encouragement in childhood). It’s just that I didn’t get it as I was entering into adulthood, and I didn’t know how to find a supportive community for my passion. What’s changed everything for me since then is the availability of quality information in the subject area I’m interested in on the internet.

Robinson didn’t talk about this much, but I’ve found that following my passion can be scary. If you’re accessing your own unique set of talents they can look odd to your friends and family. I’ve certainly gotten strange looks from some of my friends, and my mother has been worried for me from time to time. Of course they mean well. An important thing I’ve discovered is that if someone is making you feel wrong or foolish for pursuing what feels great to you, it’s worth looking at whether they’re right. Perhaps they’re trying to alert you to some practical realities you need to pay attention to for the time being, but it’s also worth considering that they could be wrong. Maybe it’s just something they can’t see clearly, and the unknown is scary. The main thing everyone’s noticed is that my behavior towards my pursuits has changed dramatically. I don’t have the same outlook towards them as I used to.

If you’re in the process of discovering your talents you also might be doing things that hardly anyone else around you is doing, and they can’t relate to it. You may see things in ways that few others recognize. You can end up feeling very alone, isolated. “Finding my tribe” has occupied my thoughts a lot lately. I’ve found a few kindred people, both locally and nationally, with whom I’ve been in communication from time to time.

Another big thing Robinson talked about is creativity is not just for special people with an inborn talent. He equated creativity to literacy, and that large numbers of people can be creative, but it may take some prompting and mentoring to help them develop it. He almost expressed it as a skill, because he set up some characteristics for it. Being creative is not passive. You’re creating something, doing work. Secondly, you’re coming up with original ideas that have value. So you’re having to engage your mind, and imagination, and perhaps work with your body, depending on what you’re trying to accomplish. My own experience is that this can be encouraged by setting out the premise that everyone is unique, and everyone has their own voice, their own perception, and their own ideas to contribute–that everyone has their own intrinsic integrity. It probably requires encouraging a sense of one’s individuality, one’s self, and taking some pride in it. An important point Robinson makes is that it’s important to develop people’s critical faculties as well. Creativity without criticism can lead to disasters.

Robinson has brought up elsewhere that the world’s modern education systems came into existence in the 19th century, largely oriented around supporting the Industrial Age. School was designed to inculcate habits needed for creating manufacturing workers. Other sources I’ve consulted have confirmed this. What this does is create a system where certain subjects and traits are selected and emphasized, and other subjects and traits are de-emphasized and rejected. It also makes very narrow selections about intelligence and talent, partly based around myths about them. We’ve heard of the term “gifted”. Robinson said it was like saying that we only want long jumpers (making a sports analogy). We know there are other sports, but this is the one that matters. If you are not a good long jumper, well there’s remedial education in the 100 meter dash. In addition, schools have unnecessarily separated subjects into absolutist categories, and this shuts off multidisciplinary learning opportunities.

Robinson doesn’t totally reject standardized testing. He used a medical test as an example. If he wanted to get his cholesterol tested, he’d want a standardized test. He wouldn’t want it rated according to something his doctor came up with. What he doesn’t like is that standardized testing has become the end-all be-all of public education. He complained that governments always insist on standardizing everything in education, which doesn’t work. Assessment is important, but the method of assessment is important as well. He said that creativity needs to be assessed, but there’s no objective systematic way to do it. It has to be assessed in its own context. This implies that the assessment must by its nature be subjective. In my view standardized tests might be better used as diagnostic tools, as he suggests by the medical example, rather than assessments of how much you’ve learned about a subject area, or assuming that they give a total view of intelligence. What he’d prefer is much more of an emphasis on good teaching, and this means hiring people who have a very good feel for, and are interested in what they teach, and are capable of engaging students in a way that’s compatible with where they are at. Bad teaching can turn students off to learning, defeating the purpose of education. I certainly know about that.

He pointed out, and this is ironic given that we’re talking about a school system that was designed for the Industrial Age, that school systems shun vocational skills, as if they’re unworthy. I’ve been somewhat guilty of having this prejudice. I don’t detest vocational training at all. I think it can be a positive thing for many people. What I react to is how I see schools and universities preferring vocational priorities for academic subjects, over going deep and exploring the ideas. In short it’s what Alan Kay would characterize as instrumental reasoning. It’s the idea that they’ll teach what’s perceived as contributing to the goal of advancing a career in particular sectors of the economy, and they won’t go into exploring the ideas, because it takes away from that goal. That’s the thinking, anyway. I disagree with the premise. There’s an emphasis on skills, and certain modes of thought, but not others.

As for me, I wouldn’t be satisfied with just theory. I love being hands-on with what I’m learning, and I like the idea of creating things that will be useful to people, but I like exploring the ideas at the same time. I’m not satisfied with just being given “how to” knowledge. I want to understand how things are the way they are, and I like creating a synthesis of ideas in order to create new ones. This is how I’ve been at least since I was a teenager. So I agree with his preference that abstract ideas should be combined with real world subject matter, artifacts, and materials. What I would emphasize is that exploration of these ideas and material things should be encouraged, getting into their “guts”. A lot of unplanned learning can take place this way, which to me is the best kind. 🙂

What I really like about Robinson’s philosophy of education is he says it’s a process of personal development, and that talents you will love can be buried very deep. You may not recognize them until you are exposed to a subject area, an activity, or an environment that brings it out of you. He emphasized that the point of his book is not so much about creativity as diversity of intelligence, and that when he talks about creativity he’s not just talking about the arts.

I was struck by Robinson’s criticism of “back to basics” movements. I haven’t totally liked the idea of “back to basics”, either, because I think it has some weak ideas in important areas. It’s just that every effort to reform public education that’s gotten away from the “back to basics” ideas has turned into something worse. Robinson, in a broad sense, expressed better than I have what I’d like to see our educational system recognize. The thing is I am skeptical that our school system would make a good transition to what he recommends. He has called for a transformation or revolution in education. The only way I see this happening is as a result of forces that come from outside the system. There have been some small movements in the last few years to try to do this using the internet, to bring important lessons to the masses for those who are willing to find them. I really don’t expect this movement to be accepted by the public school system. If anything it will be seen as a threat if it grows, and there will be efforts to change it or try to make people not pay attention to it. It’s going to take parents becoming aware that other possibilities exist, and pursuing them with their children. Private or home schooling is another avenue to pursue. It’s going to take people making the change. “The system” is not going to do it on its own.

I heard earlier this month that Google Wave was going to be shut down at the end of the year, because it was not a hit with academia (h/t to Mark Guzdial). I was surprised. What was interesting and rather shocking is one of the reasons it failed was that academics couldn’t figure out how to use it. They said it was too complex. In other words, the product required some training. I’ve used Wave and it’s about as easy to use as an e-mail application, though there are some extra concepts that need to be acquired to use it. I saw it as kind of a cross between e-mail and teleconferencing. Maybe if people had been told this they would’ve been able to pick up the concepts more easily. It’s hard for me to say.

I thought for sure Wave would be a hit somewhere. I assumed business and bloggers would adopt it. The local Lisp user group I’ve been attending has been using Wave for several months now, and we’ve made it an integral part of our meetings. I think we’ll get along without it, but we were sorry to hear that it’s going away.

As I’ve reflected on it I’ve realized that Wave has some significant shortcomings, though it was a promising technology. I first heard about it in a comment that was left on my blog a year ago in response to my post “Does computer science have a future?” Come to think of it, Google Wave’s fate is an interesting commentary on that topic. Anyway, I watched Google’s feature video where it was debuted. It reminded me a bit of Engelbart’s NLS from 1968, though it really didn’t hold a candle to NLS. It had a few similarities I could recognize, but its vision was much more limited. As the source article for this story reveals, the Google Wave team used the idea of extending the concept of e-mail as their inspiration, adding idioms of instant messaging to the metaphor. That explains some things. What I think is a shame is they could’ve done so much more with it. One thing I could think of right off the bat was having the ability to link between waves, and entries in different waves, so that people could refer back and forth to previous/subsequent conversations on related topics. I mean, how hard would that have been to add? In business terms wouldn’t this have “added value” to the product concept? What about bringing over an innovation from NLS and adding video conferencing? Maybe businesses would’ve found Wave appealing if it had some of these things. It’s hard to say, but apparently the Wave team didn’t think of them.

At our Lisp user group meeting last week we got to talking about the problems with Wave after we learned that it was going away. A topic that came up was that Google realized Wave was going to raise costs in computing resources, given the way it was designed, as a client/server model. All Waves originated on Google’s servers. An example I heard thrown out was that if one person had 10,000 friends all signed up on one wave, and they were all on there at the same time, every single keystroke made by one person would cause Google’s server to have to send the update to every one of the people signed up for the wave–10,000 people. There was something about how they couldn’t monetize the service effectively as well, especially for that kind of load.

As they talked about this it reminded me of what Alan Kay said about Engelbart’s NLS system at ETech 2003. NLS had a similar client/server system design to Google Wave. I remember he said that the scaling factor with NLS was 2N, because of its system architecture. This clearly was not going to scale well. It was perhaps because of this that several members of Engelbart’s team left to go work on the concept of personal computing at Xerox PARC. What they were after at PARC was a network scaling factor of N2, and the idea was they would accomplish this using a peer-to-peer architecture. I speculated that this tied in with the invention of Ethernet at PARC, which is a peer-to-peer networking scheme over TCP/IP. I remember Kay and a fellow engineer showed off the concept with Croquet at ETech. It was quite relevant to what I talk about here, actually, because the demo showed how updates of multiple graphical objects on one Squeak instance (Croquet was written in Squeak) were propagated very quickly to another instance over the network, without a mediating central server. And the scheme scaled to multiple computers on the same network.

Google Wave’s story is a sorry tale, a clear case where the industry’s collective ignorance of computer history has hurt technological progress. In this case it’s possible that one reason Wave did not go well is because the design team did not learn the lessons that had already been learned about 38 years ago.

As I’ve gone through SICP I’ve noticed a couple exercises that are very similar to programming problems we were given when I took Comparative Programming Languages in my sophomore year of college, when we were covering Lisp: 8 Queens (in Section 2.2.3 of SICP), and symbolic differentiation (in Section 2.3.2). I wonder if our professor got these problems out of this book, though they could’ve been classic computer science or AI problems. I’m going to focus on the symbolic differentiation exercises in this post.

The problem we were given in Comparative Programming Languages was to create a series of functions that would carry out all of the symbolic differentiation rules (for addition/subtraction, multiplication, division, and exponentiation) for expressions that had two, maybe a few more operands per operator (except for exponents), and simplify the resulting algebraic expressions. Our professor added, “I’ll give extra credit to anyone who implements the Chain Rule.” He gave us some helper functions to use, but we were expected to create the bulk of the code ourselves. In addition we could use no destructive operations (no set or setq). He wanted everything done in a pure functional style right off the bat. We had about a week or so to create a solution. We had only started covering Lisp the week before, and it was the first time in my life I had ever seen it. He never explained to us how a functional language worked. He was one of the hardest CS professors I had. What made it worse was he was terrible at teaching what he was trying to convey. He often came up with these really hard but interesting problems, though.

Creating the rules for addition/subtraction, and exponentiation were pretty easy once I had beaten my head against the wall for a while trying to understand how Lisp worked (I don’t think I ended up implementing the rules for multiplication and division). The hard part, which I didn’t even try, was simplifying the resulting expressions. I didn’t have the skill for it.

Having gone through that experience I was surprised by the treatment SICP gave to this exercise. On the first iteration it gave away almost everything I had tried to figure out myself for this assignment. I was wondering, “Gosh. This seemed like such a challenging book in the first chapter. It’s practically giving away the answers here!”

I’ll give the code for “deriv” as I think it’ll provide some clarity to what I’m talking about:

The other functions that are needed to make this work are in the book. I modified the “else” clause, because PLTScheme doesn’t implement an “error” function. I use “display” instead.

SICP doesn’t ask the student to implement the differentiation rule for division, or the Chain Rule, just addition/subtraction, multiplication, and one of the exponentiation rules. The point wasn’t to make the exercise something that was hard to implement. It wasn’t about challenging the student on “Do you know how to do symbolic differentiation in code, recognize patterns in the algebra, and figure out how to simplify all expressions no matter what they turn out to be?” It wasn’t about making the student focus on mapping the rules of algebra into the computing domain (though there is some of that). It was about realizing the benefits of abstraction, and what a realization it is!

SICP asked me to do something which I had not been asked to do in all the years that I took CS, and had only occasionally been asked to do in my work. It asked me to take an existing structure and make it do something for which it did not appear to be intended. It felt like hacking, almost a little kludge-ish. I can see why I wasn’t asked to do this in college. What CS generally tried to do at the time was create good and proper programmers, instilling certain best practices. Part of that was writing clear, concise code, which was generally self-explanatory. A significant part of it as well was teaching structured programming, and demanding that students use it, in order to write clear code. That was the thinking.

What amazed me is SICP had me using the same “deriv” function–making no changes to it at all, except to add abstractions for new operations (such as exponentiation and subtraction)–to operate on different kinds of expressions, such as:

(+ (+ (expt x 2) (* 2 x)) 3)

(+ (+ x 3) (* 2 x) 3)

(((x + 3) + (2 * x)) + 3)

(x + 3 + 2 * x + 3) — (with operator precedence)

It could deal with all of them. All that was required was for me to change the implementation beneath the abstractions “deriv” used for each type of expression.

It brought to mind what Alan Kay said about objects–that an object is a computer. The reason I made this connection is the exercises forced me to break the semantic mapping I thought “deriv” was implementing, so that I could see “deriv” as just a function that computed a result–a specialized computer. Kay said that the abstraction is in the messages that are passed between objects in OOP, not in the objects. Here, I could see that the abstraction was in the function calls that were being made inside of “deriv”, not the code of “deriv”. The code is a pattern of use which is structured to follow certain rules. I could look at the function algebraically. In reality, the function names don’t mean anything that’s hard and fast. I thought to myself, “If I changed the implementation beneath the abstractions yet again–still not changing ‘deriv’–I might be able to do useful computing work on a different set of symbols, ones that aren’t even related to classical algebra.”

I recalled a conversation I remember reading online several years ago where a bunch of programmers were arguing over what were the best practices for creating abstractions in OOP. The popular opinion was that the objects should be named after real world objects, and that their behavior should closely model what happened in the real world. One programmer, though, had a different opinion. Whoever it was said that the goal shouldn’t be to structure objects and their relationships according to the real world equivalents, virtualizing the real world. Rather the goal should be to find computational processes that happen to model the real world equivalents well. So in other words, the goal, according to the commenter, should be to find a computer (I use the term “find” broadly, meaning to create one) that does what you need to do, and does it well, not try to take any old computing model and force it into a fashion that you think would model the real world equivalents well. The computer world is not some idealized version of the real world. It is its own world, but there are places where computing and real world processes intersect. The challenge is in finding them.