I’d not have spent time making the Adj framework unless I badly wanted it – and couldn’t get it.
As a prerequisite, I’d not want it unless it were an essential communication tool for work I’m doing.
Here is a little exploration into whether this work is part of a tradition, how much I am building on the work of others, whether I am doing this to have means to express myself, whether this is about enabling others.
Most of all I have been writing this post because I have been thinking about why this had mattered to me enough to do something about it. Having written it down, now I can forget about those aspects, and go back to focusing on things to do instead.
And there is a tiny dose of humor, when I keep exploring whether I could accuse myself of selfishness. I’ve been traumatized about not starting a sentence with the word “I”– either our grade school teacher rubbed it in, or kids at grade school picked up her comments and amplified it, either way I am painfully aware that a sentence starting with the word “I” is a telltale sign of selfishness.
Maybe it isn’t a worthwhile effort to explore whether original creators of tools have been selfish or altruistic. Then maybe this post merely establishes historic context.
While Europe is known for individuals capable of speaking more than one language, one formative experience I had was early exposure to different notations in math and physics books from the US, France, West and East Germany, and Russia (in German translations). My interest in machine assisted multiple representations of (engineering) information led to a time of collaboration with Alan Kay – we agreed on the importance of points of view yet ironically we were preferring sufficiently different tools respectively to part ways without a significant result.
Another formative experience was early exposure to and use of large format schematics and diagrams. For process control and electronic circuits, many schematics were tabloid (A3) size and up, with varying density of information. I used them, and I made them when needed (e.g. reverse engineering defective equipment, hooking up incompatible devices, etc., all teenage activities). Recently I’ve seen those size sheets only in architecture and on construction sites, and in my diesel loader’s service manual.
One could argue in software engineering large format illustrations aren’t necessary. Keeping with my late maternal grandmother, one could argue nothing is necessary, as she knew how to reject suggestions: “The only thing I have to do is die.”
I did, however, translate my experience with large schematics into software engineering. Whether I was reverse engineering code for a digital tape recorder for some teenage cost cutting, or whether I put all the pieces of the register machine of Structure and Interpretation of Computer Programs onto a single large sheet, I had fun and I am told I was outstandingly productive. Not to mention the depth of understanding I gained.
It wasn’t all self-centered, not all about how “I” could write better software. There was an element of applying user interface principles to software developer tools for anyone, for productivity.
I did code what became Apple DocViewer, in my spare time, before Dr. John Warnock wrote his original vision for PDF and Adobe Acrobat. Even that one could interpret as an act of selfishness: Part of my motivation was I wanted all documentation on my Mac Portable, so I could work anywhere. I wanted to make use of a Macintosh Two-Page Monochrome Display which the late Eagle Berns was gracious enough to provide at my workplace. I had a vision of an empty desk at work, except the computer screen, being digital. Looking up stuff would be much faster too, and one could copy lengthy funny spelled class and method names right out of the books.
Another of my projects was MicNotePad. It was meant to facilitate the conversion of talk, which would pass into time and be forgotten, into written documents. It isn’t as visual and not as software developer focused as the remainder of this post. The point though is, I have tied together different media, speech and text in that case, for the goal of intellectual productivity.
In those years the Macintosh Human Interface Guidelines were an authoritative book. Earlier though, a semester or two of courses at Professor Robert Trappl‘s institute, including Cognitive Science, had opened my mind to consciously think about human thinking, which influenced not only my design of tools for engineering and other disciplines, but more generally observations about the way people are thinking, communicating, creating and consuming information, and about productivity.
While I have a copy of Edward Tufte’s Envisioning Information I don’t have a copy of his The Cognitive Style of PowerPoint: Pitching Out Corrupts Within. I think I agree with him in many ways without being a follower.
After that much theory
With this much theory, can a person get anything done? The proof of the pudding is in the eating:
The code actually works.
Unselfishly, the Adj framework code is open source, Modified BSD License.
Not enough metathinking yet? Open sourcing can be a selfish act too – the possibility exists.
More concrete technical reasons for making and using Adj are in its informal announcement.