Friday, October 29, 2010

code as content; code as a vector of change

First came symbolic speech. Thousands of languages and dialects blossomed, and the words of some, the shamans, those believed to have direct experience of a spirit world, seemed to possess magical potential.

Then came writing. The great variety of spoken language began to be replaced by preservation approaching permanence, joined shortly by the rigor of peer review and explicit criticism, and the magical potential of the words of the shamans, became invested instead in interpreters, the priests and scribes.

Perhaps presaging what was to follow, a variant of writing, plays, developed into instructions to be performed by acting companies.

Then came machine code, a variant of writing that controls the operation of hardware designed to process such instructions. Very early on that machine code gained conditional branching, the ability to perform different sets of instructions based on the value of some numerical/logical expression. At that point it must have already been apparent to a few that something like machine code would eventually surpass conventional writing, by virtue of its potential to directly control the actions performed by machines. At about the same time, a process of increasing abstraction began, whereby machine code was wrapped in assembler code, which was itself wrapped in higher languages, more closely resembling conventional writing.

Thus far, the impact of computer code on what these days passes for natural language (speech having already been molded by thousands of years of close association with writing) has been to facilitate its production, dissemination, and consumption, but that's only a small part of the whole story.

Computer code, embedded in machinery, has the potential to render meaning tangibly, as real physical performance, with real consequences, good or bad. Given that the design and production of machinery is itself becoming increasingly automated, the question becomes one of what you want the machines to do, and not do, and how those desires can be represented in code.

For example, I can say that I want to preserve what remains of Earth's original biological diversity, while at the same time reducing the dependence of agriculture on petroleum, but in that form it is merely a feeble wish, displaced by the next thought. I can write a treatise explaining why we ought to do what we can to preserve what remains of Earth's original biological diversity and free agriculture from dependence on petroleum, and it may stir others momentarily, but it takes more than that to make any real difference, and if I were to be asked exactly what I'm talking about in practical terms my answer isn't likely to satisfy those whose livelihoods would be effected by any such initiative.

If, on the other hand, I express my intention in the language of machine design and control logic (computer code), the implications, not only of the basic design but of various approaches to managing the system, can be explored through simulation, and that expression goes a long way towards constituting a detailed plan for its own implementation. It's all just code, even the design for the physical machinery, but in a form that makes the decision to go forward with it almost as easy as the decision to flip a switch, at least as compared with a vague call for the desired end results.

Such a project would be too big for any individual, of course, so tools that facilitate collaboration on such projects are needed. Some such tools already exist; others remain to be invented, and much effort is being expended in this direction, even if those involved don't see their work in such grand terms, with the potential to achieve change that could never be achieved through conventional political means alone.

Thursday, October 21, 2010

the parts of Lion which remain secret

I must confess some disappointment over yesterday's announcement, not because the stuff they showed wasn't cool - it was! - but because the stuff that interests me the most remains secret. What we saw of Lion were mainly user interface enhancements, a category that was famously, intentionally missing from Snow Leopard, which concentrated on bug fixes and lower level enhancements. It might even be that the pause in the introduction of new user interface features, represented by Snow Leopard, made possible the integration of such features seen in Lion's new Mission Control view.

But what's Lion got to compare with OpenCL and Grand Central Dispatch? Something, most likely, but that something remains secret. Does it have a new file system or file system abstraction layer? Does it bring true resolution independence? Are any technologies developed for Apple application software, like iPhoto's face recognition, moving into system code and becoming available to third party applications? Are there any important new APIs?

Patience, I try to tell myself, which of the major releases of Mac OS X has not brought such advancements? Maybe 10.1, which was primarily a bug fix and code efficiency update to 10.0. Are they out of ideas? Surely not! Are they underfunding lower level R&D? Not likely. What then?

A Mac OS X engineering position announcement awhile back stated quite plainly that a successful applicant could wind up working on something unprecedented and revolutionary. Sure, Apple spreads such verbiage a little thick at times, but the clear implication was there's something big happening in the wings, and the timing was such that it's likely to be included in Lion, which won't be released until next summer.

Moreover, in yesterday's collection of announcements, everyone on stage was careful to point out that only some of Lion's features were being shown. Clearly there's something else, something they aren't yet ready to talk about.

Something else Steve was careful about, in discussing touch input on Macs and how they've concluded that it just doesn't work on a vertical screen, was that he was talking about laptops, not necessarily all Macs. So, perhaps this recently revealed Apple patent is more than a design exercise. Time will tell.

Wednesday, October 13, 2010

Nice kitty!

The invitation for an Apple Event taking place one week from today strongly suggests that the primary topic of the day will be the next major version of Mac OS X, 10.7, and that the cat-name for this version will be "Lion". Cheetah, Puma, Jaguar (the first to be marketed as such), Panther, Tiger, Leopard, Snow Leopard, and now Lion.

Recent versions have brought, in no particular order, the Kernel Extension APIs, the Acceleration Framework, Spotlight, Core Animation, Core Data, OpenCL, Grand Central Dispatch, and Objective-C 2. What might 10.7 have in store to match these?

Something, no doubt. ;-)