I’m sitting on the Queen of Sannich, one of the older BC ferries, on its way to Vancouver from Victoria. A gentle fog envelopes the surrounding water, turning the small islands that we pass into abstract hills fading into the distance and the water itself into pale white sheets broken only slightly by the turbulence of our passing. Earlier, we had a spitting of snow, a last lingering reminder that winter gives up its presence only very reluctantly, even into these first days of March.

I usually enjoy these trips on the ferry, for all that they add considerably to the complexity of returning to the mainland. They are times for reflection, for helping to put things into perspective. Reflection, and the time for it, is becoming a rare commodity in this world. We move at “Internet Speeds”, twenty-four hours a day, caught up in the big now, yet in all of our trumpeting of technological advance we often lose sight of the fact that the truly profound discoveries and realizations of humanity did not come from the middle manager, from the hyperactive programmer or the driven politician. Instead, they came from people who sacrificed some or all of their worldly drive for goods and status in favor of spending time in reflection, for taking the time to truly think.

Recently, a set of studies looked at the aging brain and came up with what seems to be a fairly obvious conclusion, even though it flies in the face of folk wisdom everywhere. You use it or you lose it. The common wisdom says that cognitive ability declines with age, that as you get older, the brain slowly dries up and you lose memory and the ability to think. The term “senility” is a reflection of this, deriving as it does from the latin word for aging.

Yet for all that, there is a fairly startling amount of evidence to indicate that this lack of plasticity in the brain may in fact be due to a lack of exercise for that particular organ. As you get older, knowledge (and the wisdom of experience) means that rather than learning things anew, you really increasingly upon your stored knowledge - it is easier to access and of course it shapes the perceptions of how we think. Learning is hard … you know this when, after the end of a long day spent in studying an acquiring new knowledge, you are as physically exhausted as if you had climbed stairs all day. It is work, and unless we see the benefit of it (i.e., unless we recognize it as exercise) we tend to look for the easier solution - use what you know.

This is part of the reason that so many innovations come from the young - people in their twenties and early thirties. They are still putting together their view of reality, still spending the time learning, and as such they are willing to consider novel solutions because they do not have the preconceptions that tell them that what they are trying to do is impossible. We become more conservative as we get older (in general) because changing those mindsets becomes far harder when there are so many interdependencies deep down in the world view that we have created.

I see this, to a great extent, in computer languages. At its inception, a computer language can quite literally do anything, though most things it will do very, very badly. As people begin using it for certain things (depending upon the problem domains that are most pertinent at the time) the language begins to replace ad hoc structures with standardized ones - the language extrapolates from patterns to create the foundation libraries for the language. The language evolves, with the more commonly accepted things becoming ever more deeply buried in the foundational core, while new learning works on the periphery, and the language develops a memory. Yet this stored memory comes at a price - the language becomes less adaptable, it becomes more and more difficult to alter classes within the core without causing greater and greater amounts of pain. The language becomes increasingly used for certain specialized functions and avoided for other ones. It ages.

In time along come the new kids on the block, the ones who do not see the elegant structure of what the language has become (as the masters of the language do) but rather see a large crufty mess with huge memories that make little to no sense when viewed from the outside. Design decisions that made sense at the time because of the existence of certain technological needs seem oddly paradoxical to those people who’ve never been exposed to the technology because it was obsolete by the time they learned how to program. The degree of comprehensibility of a language to new programmers can significantly impact the long term survival of that language, because without technological evangelists, a language will whither and die as the people who use it enter into management or retire.

Yet the interesting thing is that this isn’t an inevitable process, either for human beings or for computer languages. Reflection or, to use a somewhat maligned term, meditation, can be thought of as periodically clearing out old assumptions before they become so ingrained that it becomes difficult to determine what it is exactly that constitutes reality. Eastern philosophies have a number of precepts that promote this type of reflection - Zen or Tao, to name two - that translate poorly to Western sensibilities. For instance, Zen is the art of thinking about nothing. Tao is the principle of ultimate balance. Both describe states of being, concepts fairly foreign to mindsets that put far more value in doing. One way of beginning to understand Zen, however, is to think of it in terms of those self-same computer languages. Zen can be thought of as the art of challenging assumptions, of constantly hacking away not only at the easily changed periphery of learning, the thin outer coat of a coral bed, but deep into the core of that bed.

Zen can be seen, perhaps, as an act of deliberate forgetfulness, of the careful shaping and reshaping of your reality so that what remains is that which is most salient to the needs of the time. In one of Arthur Conan Doyle’s Sherlock Holmes stories, Watson is rather astonished to discover that Holmes has almost no knowledge about the planets. Once Watson tells Holmes about them, the detective, annoyed, tells his doctor friend that he will do his best to immediately forget this piece of information. We talk about similar principles when invoking garbage collection within programs to clear up objects that are no longer in use, yet curiously this principle does not in fact extend to garbage collection within the language itself.

It is perhaps worrisome that JavaScript, a language which in many other ways has managed to remain relatively unpolluted with foundation classes, is now being subject to a barrage of “frameworks”. Frameworks are, in many cases, the first signs of senescence within a language. They indicate that the language has outgrown its original mandate and people are trying to push it to do things that it wasn’t originally designed to do. The frameworks often represent the linguistic equivalent of learning, of trying to adapt by pushing up into the language those things that normally would be done much lower down the abstraction stack.

This can be a good thing - it’s in fact the normal evolution of a language. However, what needs to happen now is not necessarily to accept the mandate of the various AJAX efforts and try to build up a super language, but rather to distill, down to the essence, those things which will make the language elegant and responsive to shape its environment. Formal integration of JSON and E4X seems like a good place to start, a cleaner binding and access layer, fixing some of the inherent problems with Array and perhaps introducing support for SMIL-based objects. Many of the changes that are being introduced now in the Mozilla JavaScript implementation (and with Adobe’s ActionScript) are both intriguing and fundamental, and are being done in such a manner as to minimize disruption of existing implementation. Overall, this effort has proved a very elegant job, it’s just worth making sure that this elegance doesn’t get sidetracked by the politics of larger movements (such as AJAX), and that such changes can be adopted elsewhere.

People who look at the average AJAX developer (someone in their twenties) forget that JavaScript as a language is the same age (to within a few months) of Java, and that it is considerably older than languages such as Ruby, PHP or C#. It’s a lot like zen masters who, despite having seen their 100th birthday, are still mentally agile and even physically healthy, if not quite as flexible as a twenty year old.  They’ve pared down what they don’t need in their lives, have understood that meditation, with the very occasional action, can be far more effective than relentless action with little thought.

Enlightenment does not come by becoming a vegetable. Rather, enlightenment comes when you’ve reached a balance, where you have within you that which you need and no more. One of my most precious belongings is an old eraser, given to me by my six (almost seven!) year old daughter, in the shape of a yin-yang symbol. It reminds me daily of the importance of balance in my personal life as well as my professional, and I will likely treasure it until I no longer am able to.

A friend of mine, and the mother of a close friend of my eldest daughter, passed away this week of a heart attack. She was my age. She was a talented architectural artist, a kind and caring woman, and a gracious hostess. I wish to dedicate this column to her memory.

Kurt Cagle is an author and technology evangelist living in Victoria, British Columbia.