Joseph 'Jay' Osako, more widely known as
Rev. First Speaker Schol-R-LEA;2 of the Last Eristic Church of Finagle and Holy Bisexuality
mailto:scholr1@comcast.net
A probable real-life victim of Science Related Memetic Disorder.
Also known to appear in the form of Reverend Pastor Re Union (a largish anthropomorphic panda), entitled The Reconciliation of Opposites
Do I contradict myself? Very well, then, I contradict myself, (I am large, I contain multitudes). - "Song of Myself", Walt Whitman
(Though the irony of someone so self-loathing and isolated quoting this particular poem is not lost on me. As for the 'large' part, I doubt that Whitman meant that in the sense of 'massing over 180kg'...)
I don't not claim to be perfect, nor inerrant, nor brilliant, nor knowledgeable, nor witty, nor consistent.
I'm not even sure that I claim to be myself. But for now, that will have to do.
One thing that I need to say up front (and in fact should have made clear earlier): I am not a Computer Scientist or Software Engineer, at least not in any formal sense. My formal higher education was in microbiology; I dropped out of college in my senior year for a variety of personal reasons (this was the second time; the first time, in 1989, was strictly due to financial difficulties). I have since been worked as an application programmer, a PC and network technician, and a web developer. Like so many others, my professional programming career was effectively ended in 2001; I am presently working primarily as a phone support tech, and taking freelance contracts on the side, but at the age of 35 I see little chance of ever getting back into the field full time.
My presence here on this Wiki is foremost to improve my own knowledge of the craft of programming, and out of intellectual interest in the theory of computation. I will admit that my knowledge is not very complete; I am a generalist by nature, and I rarely have the patience or focus to dig as deep into a subject as I ought. I have struggled to understand many of the basic concepts, such as the Lambda Calculus, Meta Object Protocols, Cellular Automata, Communicating Sequential Processes, and others (though not, up until now, the Capability Security Model), but I must admit that I have only a basic understanding of each. I have also tried, with somewhat more success, to learn the basics of most of the major programming paradigms, and have learned at least the rudiments of a large number of programming languages. While I am not an expert in any language (except perhaps HTML, but that is of course a markup language) I am reasonably proficient in C, Java, Perl, and Visual Basic; I have less experience in x86 assembly language, C++, Scheme, Fox Pro, ELisp, SQL, and Pascal. I have studied, but never used, Python, Common Lisp, Ada, Modula-2, Oberon, APL, Forth, Smalltalk and Self.
One of the areas of particular interest to me is the Xanadu Project; I have been in personal communication with Ted Nelson on and off since 1997, and while I have not been able to contribute directly to the project or it's spin-offs (e.g., Zig Zag, Cosmic Book), I think that the designs and concepts that Nelson, Miller, Gregory, et al., have developed over the past four decades still have things to add to the computer field, despite having been overlooked for so long.
My other great interests are in the design and implementation of operating systems, the design of programming languages, and compiler theory. I have tried to understand as many aspects of all three topics to the best of my ability, and have made several abortive attempts to design various languages. Despite this, I have not as of yet successfully written a compiler, nor done more than a few test programs related to OS implementation.
If I have posted on subjects I had no place to speak about, or which I have misunderstood, please let me know so that I might correct my errors. Thank you.
I used to be a Computer Programmer. Now that I'm a technician, most of my work involves removing viruses and spyware from other people's systems. Does this make me a Computer Deprogrammer?
I am very concerned about what others think of me, not so much because I want their approval (though like most mortals I do crave that) as because I am acutely aware of the need for feedback, to make certain that I am not adrift; I have little faith in my own judgement. Unfortunately, this brings up the question of how much the I can trust the judgement of others, and whether I can trust my own judgement in determining who to trust and how much... it's a losing game, but I seem to stuck in it. What happens to a person when Analysis Paralysis becomes a way of life?
Can you describe your ideas about UI design?
Not in any manner that would make sense, I'm afraid (this is not a snipe at you, but an admission of the rather inchoate and unrigorous nature of my speculations). In any case, they are quite derivative, being primarily taken from several sources most notably, Ted Nelson's work on Xanadu Project and Zig Zag, Jef Raskin's book Humane Interface, the Squeak Smalltalk system, and the Oberon Operating System. To these I mean to apply a strict minimalism - the default interface is a simple central window (which can be split as needed) as an environment for browsing and editing homogeneous visual data (heterogeneity is simulated through layering).
You really need to add a couple papers on Zoomable User Interfaces, and especially the original Morphic Interface in Self Language. For the latter, play with the Demo snapshot, see the Self movie from the website, and/or read the Naked Objects book available online. In particular, Self's Morphic did NOT have icons for actions. Icons should represent concrete objects (nouns) and NEVER abstract actions (verbs). It's the difference between OO and procedural.
I concur with the default/layered interface, though what it is is a default view provided natively by the object browser vs other views which are callbacks to registered plugins. (There are no windows.)
The primary command interface would be am executable text system similar to that of Oberon. A two (or more) button mouse would be used, with one button being the Select button and another being the Do button. If a user were to select a section of text, then click on it with the Do button, it would be then executed by a script-language processor (I have not yet settled on what the default language ought to be like, probably one similar to either Smalltalk or Python). It will be possible to invoke any operation in this manner. Menus would be constructed from 'fixed hot' text ('fixed' in that it is bound in place; 'hot' in that it can be activated by a single Do click, without first selecting it), while icons would of course be simply visual shortcuts (both in the sense of a link and in the sense of a representation) to a designated script function. In addition, one of the basic tools which a user can invoke would be a 'toolbox' function and object browser; there would be user-constructible 'toolcases' for organizing the tools, which could be shifted between as needed.
Hope you've seen Object Browser because other than the icons for commands, it's very similar. In Self, you can pin a context menu in place and then dynamically change that menu; a necessary reflective ability. I don't like toolcases but if you do, you should read up on See-Through tools (www2.parc.com )
Any tool can be applied to any kind of data which it is designed to accept. The role of applications would be filled by 'frameworks' - pre-designed combinations of menus, icons and toolcases to allow quick access to the operations appropriate to the dataset, similar to Emacs modes but (hopefully) more flexible and elegant. For heterogenous material, it would switch frameworks automatically when switching between layers or between datasets.
Yes, I have the exact same thing. However, I don't think in a procedural manner so instead of frameworks, I have plugins to the "window manager" Object Browser framework. Each plugin handles a specific data type registered with the OB so they can be recognized and dispatched upon.
Data would be saved in a non-destructive, Once And Only Once manner, with change tracking done by a system of links, as per Xanadu. While datasets - which are more like fields of an amorphous database than like files - would not inherently have names, it would be possible to assign a name to a link, which could be used to save and manipulate the link chain, or to summon the dataset it references. Dynamically updated data would be referenceable using link daemons - functions that create new links as the datasets are updated. Since the data is minimally formatted, it should be possible to use it to source a variety of tools - for example, a given dataset might be quoted in a text document, used as a record field in an RBDMS, or used as data for constructing a pie chart. Since the documents are generated dynamically from the links, it is equally a 'part' of each, without losing it's own identity. This is, of course, the straight Xanadu architecture, without the networking or the ownership tracking; while those would still be important (even necessary) for a practical system, I am not certain how they would be done, and how it would differ from Nelson's original.
These considerations are far too low-level to belong to any user interface. I have global logging and fine-grained versioning at the very lowest levels, so building an append-only referential editor on top of that functionality is trivial. Further, changesets shouldn't rely on an application, which is why I have changesets as one of the base data types.
I encourage you to take Alan Cooper's advice and stop thinking in terms of features and rather start talking about goals. I have a very hard time following what you're describing in this paragraph, let alone what you can do with it.
(I am aware of the current critique of Xanadu Project, but obviously I disagree with at least part of it. I do not know enough about capabilities and ACLs to judge the validity of that part of the argument, but I would mention that since Mark Samuel Miller was the principal designer of the Udanax Green and Udanax Gold security models, I would expect that he and Roger Gregory were well aware of the issues).
It's not a caps vs ACLs issue. ACLs are brain-dead and that's all there is to it. What it is is a Xanadu vs caps issue. You have only my word for it that Xanadu is incompatible with caps.
In the case of text, there would be an additional link index structure meant to track word usage in datasets, for use in text searching.
Case in point. Whether or not there's specific support for indexing is irrelevant. And what form that support takes (whether it's centralized near the search functionality or distributed within objects (it should be distributed), is irrelevant. Something like "searches are first class objects, so they can be stored and passed around" is far more informative. Goals, not features.
Mind you, this is only the foundation of the design. I mean to leave the overall virtuality as unrestricted as possible. Unfortunately, this is also the point where my own ideas tend to lose their cohesion; I have trouble fixing a particular direction. One idea I have considered - but which I think may prove impractical - a 'floating first person' system in which the 'central' default window is only an 'anchor point' for one of several two-dimensional panels (and three dimensional boxes) hanging freely in a simulated space. The user could set swap commands to switch between them, or 'disconnect' and roam through the space itself using the mouse like in many FPS games. However, in addition to sliding forward/back/left/right, it would also have rotations: holding Select would move you in roll and pitch, while holding Do would move you in yaw. You would also be able to manipulate the panels as needed, by selecting and moving them (given the possibility of conflicts between these two functions, and the desire not to conceptually overload the mouse buttons unnecessarily, this design is not fixed). Zoom in and zoom out would straightforward matters of disconnecting, moving, then re-anchoring; in the case of boxes, one could thus travel into the box itself, which could have it's own virtuality, with it's own world-rules, separate from the rest of the system (this would be the natural way of designing games, among other things). While it would have a certain visual appeal, and scales on the learning curve - a user can learn the basics of the system at anchored panels without having to learn the roaming system - it would present some serious issues for intermediate users, as there would be a sharp discontinuity in the learning curve when the user shifts from the 'fixed single window' model to the 'free roaming docuverse' model.
For unstructured navigation, you only want 5 degrees of freedom because the third rotation is redundant and confuses users. If you associate distinct functionality with the different rotations, THEN you need them all separate. In any case, navigation in 3D is best done with a 3D pointer, not a mouse. And rotations would require another 3D pointer, or some kind of 6 degree of freedom input device. Either that or mapping the functions to the keyboard like games do. Modal navigation is evil. Navigation that disables basic functionality like selection is very evil.
I agree, which is one of the reasons I have my doubts about the idea. I hadn't considered adding a separate 3D pointer; it is an excellent thought, though it does add to the system requirements. Mind you, I consider more than one mouse button a elaboration, but I am willing to use it so long as the buttons have distinct purposes, and I haven't thought of an acceptable way to get the desired result with only one button.
There's been quite a bit of experimentation with 3d pointing devices; I'm not sure what verdict the ergonomic studies ended up with, but I know most of them tend to be expensive. I haven't gotten around to reading it yet, but in case it's interesting e.g. because it's cheap, FYI: "Turn an ordinary wheel mouse into a 3D pointing device. All one needs is some string, some hot melt glue, and a lot of math. 3D mice have been floating around for a while, what will it take to get people to use them?" slashdot.org -- dm
Just looking at those mice, I'm convinced all of them have horrible ergonomics. Anything that weighs so much as a standard mouse that must be carried aloft the entire day is simply too heavy to be comfortable. And that's not to mention shapes which would slip out of your hand.
The best 3D pointer I've run across was Kantek's Spectrum's Wireless Ring Mouse (tm) which has been discontinued for some unfathomable reason. Probably because the resolution was poor.
Free floating 3D spaces are great ways to get lost. What's important to a user is the structure of the objects within a space, not the space itself. This is why I won't have arbitrary positioning of objects by users, in contradiction with most UI designs. The system positions objects according to their relationships and sort order (sort order can be either global to all users or local to a single user depending on whether the user can rename the objects).
Your boxes are my spaces in Object Browser. And yes, I saw the game connection. The thing is, I have more basic object types than just spaces.
serious issues for ???? ''Oops, lost the train of thought there. I'll go back and finish it.
Interesting point about oceans not having condensed by the time plates were formed. I've never studied the subject, but the model I was shown had continental shelves formed by volcanism. It also mentioned that massive volcanism happens beneath a subduction zone due to subducted water lowering the melting temperature of the surrounding rock. Put the two together and it seems the continental shelf was made by volcanos after the oceans condensed. I found this whole story surprising actually since I naively expected land to be formed by simple collisions between plates.
(I was very excited when I learned about a week ago that there was something new and worthwhile to learn in geology.)
Also, one of the refs you gave was (osnews.com ), do you know anything about Xen Virtual Machine Monitor?
Only that it is an x86 virtualizer. I had had the impression that it was a successor to the unfinished Plex86 project, but looking thing up I see I was mistaken.
From a conversation held elsewhere:
BBlalock: Isn't anyone else here enough of a cynic to realize that everyone always works for themselves???
Me: I'm enough of a cynic to realize that most of the time, people aren't working for themselves - that even the ~5% of regular activity that requires conscious thought (as opposed to following some pre-existing habit or behavior pattern) is mostly taken up with things done for 'the greater good' or 'a higher purpose', those being defined by whatever BS (belief system) the person been indoctrinated with.
And yes, that applies to me, and to you, too. Anyone who thinks they run their own brains is deluded.
The sad truth is that enlightened self-interest first requires you to reach Enlightenment so that you can really see what your self-interests are - and I can promise you that they aren't what you'd expect them to be. Not that I'd know from first-hand experience, not having reached satori myself (or having known anyone who had), but it seems the best explanation for the absurd things people do.
BBlalock: Ouch. You're a bigger cynic than I. The observation that Belief System is abbreviated BS had escaped me. Mind if I borrow it on occasion? (Even though it applies equally well to my BS.)
Me: Feel free; I borrowed that (and a lot of my cynicism) off of Robert Anton Wilson anyway, and I doubt he'd mind.
Notorious Quotations of Schol-R-LEA
"Which is more elegant, a limousine or a Formula One racer? The answer depends on whether your headed for the opera or for the finish line."
"I am a cynic, and one of the common faults of cynicism is the assumption that anyone who isn't an utter fool is just as cynical as you are."
"The terms 'liberal' and 'conservative' have no meaning, and anyone who uses them as if they do is a fool."
"Western society has worked so hard to avoid Orwell's future that no one noticed when we ended up with Huxley's instead."
"Objectivity is the scientific principle that an individual is never completely right. Objectivism is the religious belief that The Group is always completely wrong. Try not to confuse the two."
"The 'Religious Right', once you get beyond their rhetoric of personal 'salvation', is solidly collectivist and concerned primarily with social conduct."
Regarding marital fidelity, as espoused by US theocrats: "Conscientiously following a set of personal-relationship rules, set down by a society that existed for only two decades of this century (1940-1960), died out a long time ago, and never really followed them anyway, which a handful of idiots who claim to speak for the nation worship as 'family values' despite the fact that following them is more destructive to families than not following them."
"No, the human race is not extinct yet, much to my surprise. Still, I have a deep and abiding faith in the fundamental stupidity of all human beings (including myself), and doubtless we shall find a way to destroy ourselves soon."
"It is becoming clear that Economics is a topic without a subject... 'the market' is the luminiferous ether of the 20th century."
"Logic and Reason are the sharpest of intellectual scalpels, but a surgeon who operates without clamps, sutures, bandages and antiseptic will still lose the patient."
"People only really 'think' either when they are in a contemplative mood (where it usually has little lasting impact), or else in the midst of a situation which these scripts don't cover - emergencies, major life decisions, solving engineering problems, and so on - and even then the flow of thought tend to slip into the pre-existing channels. To put it into programming terms, critical thought is the brain's exception handling mechanism - and as such, has all the strengths and weaknesses that go with the idea of exception handling. The human brain simply isn't structured to be continuously self-aware, and it is possible that no 'intelligent' being (whatever 'intelligence' means) could be."
"This is the Golden Age; we are living at the pinnacle of human achievement to date. This is a realization which has left me awake at 3AM in a cold sweat on many nights."
"The majority of people are perfectly willing to wear The Man's collar in exchange for safe streets at night, a full belly and trains that run on time, and if some people suffer from it, they say 'they brought it on themselves by not going along'."
"A government, in the end, is nothing more than a mutual agreement about who can use coercive force, and when, backed up by a combination of custom and fear."
"If people stop thinking a government exists, then it doesn't."
"[M]aybe that's the real revolution we need - for people to realize that government is nothing more than a figment of their imaginations, and that so long as they trust their own judgement and don't back down from the wielders of force, the only one who can make them do or not do something is themselves... Interestingly, it is widely observed that the 'stand up against oppressors' part is easier for most people than the 'trust your own judgement' part is."
"Terrorism only works if people agree to be terrorized."
"[T]he main weapons of the French Revolution were the National Assembly, and later, the Committees of Public Safety and the Revolutionary Tribunal."
"[I] in politics, ideologies and religions are usually little more than tools of intrigue and self-aggrandizement, even among those who actually believe in them."
"The greatest strength of The Conspiracy is that it doesn't exist. The greatest weakness of The Conspiracy is that it does."
"Microsoft Foundation Classes isn't a programming tool, it's a psychological warfare agent that MS uses against their competitors. There's a reason why MS's in-house developers rarely use their own (waste) products."
"One of the great realizations of my life was that all mystical doctrines are unscientific, irrational, anti-materialist, subjective and insane. Another great realization was that science, reason, materialism, objectivity and sanity are themselves mystical doctrines."
"The social history of the US is just an extended remix of the English Civil War."
"Never think that what any politician says is a reflection of anything but a very carefully controlled marketing plan."
"Seen objectively, Marxism is really just a retread of primitive Christianity; while the theological terms may be different ('God' -> 'historical dialectic', 'Apocalypse' -> 'Revolution', 'Kingdom of Heaven' -> 'Worker's Paradise', etc.), the contents (and smug self-righteousness) are the same. And like other forms of Christianity, it inevitably devolves into hatemongering and dogmatism disguised as peace and brotherhood."
"Societies are defined as much by what they despise as by what they hold dear. The Omega members of the tribe are in some ways more important socially than the leader, because an accepted leader is, perforce, one which outwardly clings to convention, and is replaceable by any other equally acceptable leader - especially since the leaders themselves have little actual role in the course of events."
"The presidency is of little importance, because the president has little if any freedom of movement - the price of getting elected is a straitjacket."
[regarding recent US presidential elections] "If Gore had been in charge from 2000 to 2004, we would still be in the same wars. If Kerry had defeated Bush in 2004, Hurricane Katrina would have had the exact same devastating effects. if Mc Cain had won in 2008, the economy would be no better or worse than it is now, and the national insurance bill would have passed the same way it did. Even if one of the 'minor' or 'extremist' candidates such as Buchanan, Nader, or Le Rouche had won, they would have taken the exact same actions - justified differently, perhaps, but in all other ways identical in outcome."
[Feel free to add other statements of mine which you feel deserve to be memorialized, whether for their wisdom or their folly.]
Thanks for filling in some Scheme Idioms! Whute! -- Jonathan Arkell
Muahahahahahah!
But what did Top do to get into the club?
I took it to be because of his ambitious multi-year program to replace OO programming with table-oriented programming, which is unfortunately greatly understood by the world at large. -- dm (hmm, am I missing a "mis-" prefix in there somewhere? Oh well.)
The odd thing is, I actually agree, in part with his main premise - that many proponents of OO are dogmatic in their denial of OOPs weaknesses and their refusal to explore other paradigms, and that the Relational paradigm (and the Logical paradigm which it is a subset of) in particular has been undervalued. What earns him the sobriquet Mad Scientist is his fanaticism, lack of perspective, ideosyncratic and myopic approach towards programming problems, and insistence that his preferred approach is the One True Programming Paradigm (which is of course exactly what he accuses OO proponents of). -- Jay Osako
Yeah, that's pretty much how I see it, too. Parametric polymorphism isn't OO, with the most pragmatic example being that containers shouldn't inherit (a container-of-x isn't a kind of container-of-anything). Neither is it relational...
For the record, I DON'T believe that TOP is the One True Way. I suspect paradigms are subjective mind-fit things and TOP is a perfectly valid paradigm compared to the other claimants for One True Way, and deserves to stand side-by-side with OOP and FP (and probably others) in the pool of respectable choices when people are selecting or deciding which paradigm to use or focus on. -- top
[Oh, please, go get a following before you have the arrogance to claim your technique's consist a paradigm!]
Did apples fall up until enough people agreed with Newton?
See original on c2.com