SimHacker
"Both James Gosling and I currently work for SUN and the reason for my wanting to talk before he does is that I am talking about the past and James is talking about the future. I have been connected with eight window systems as a user, or as an implementer, or by being in the same building! I have been asked to give a historical view and my talk looks at window systems over ten years and features: the Smalltalk, DLisp (Interlisp), Interlisp-D, Tajo (Mesa Development Environment), Docs (Cedar), Viewers (Cedar), SunWindows and SunDew systems. The talk focuses on key ideas, where they came from, how they are connected and how they evolved." -Warren Teitelman
http://www.chilton-computing.org.uk/inf/literature/books/wm/...
It's a wonderful book with many interesting articles and working group discussions about window management and user interface architecture, that gives great perspective on a wide variety of approaches. I'm glad that it's finally available online!
http://www.chilton-computing.org.uk/inf/literature/books/wm/...
Preface
This volume is a record of the Workshop on Window Management held at the Rutherford Appleton Laboratory's Cosener's House between 29 April and 1 May 1985. The main impetus for the Workshop came from the Alvey Programme's Man-Machine Interface Director who was concerned at the lack of a formal definition of window management and the lack of focus for research activities in this area. Window Management per se is not the complete problem in understanding interaction. However, the appearance of bitmap displays from a variety of vendors enabling an operator to work simultaneously with a number of applications on a single display has focussed attention on what the overall architecture for such a system should be and also on what the interfaces to both the application and operator should be.
The format of the Workshop was to spend the first day with presentations from a number of invited speakers. The aim was to get the participants aware of the current state of the art and to highlight the main outstanding issues. The second day consisted of the Workshop participants splitting into three groups and discussing specific issues in depth. Plenary sessions helped to keep the individual groups working on similar lines. The third day concentrated on the individual groups presenting their results and interacting with the other groups to identify main areas of consensus and also a framework for future work.
Part I of this volume gives the background to the Workshop, its scope and goals.
Part II consists of position papers, the invited presentations and an edited version of the discussion following each. The set of speakers covers a significant part of the expertise currently available. This section provided a useful summary of the state-of-the-art for the Workshop and highlighted the issues.
Each participant was asked to identify his major areas of concern prior to the Workshop. These have been condensed and integrated to give a view of the problems prior to the Workshop. Lists of issues were also generated from these contributions and the invited presentations. These formed an initial basis for the Working Group discussions reported in the next part.
Part III concentrates on the work carried out in the Working Groups with particular attention focussed on the Working Group conclusions and questions requiring further study.
Part IV presents the main conclusions of the Workshop and includes an Open List of questions requiring further study. This list indicates the current limits to the understanding achieved at the Workshop. As always, more questions were raised than conclusions reached. This part also includes a bibliography of the area and a glossary of terms used in the book.
The discussion sessions have been heavily edited. The Editors hope that no remarks have been attributed to individuals incorrectly. Copies of the typescript were sent to all participants for comment prior to publication.
The contents of this volume should not be considered as definitive conclusions but as a contribution to the study of methodology in human-computer interaction particularly with respect to single user workstations.
This book should be of interest to anybody with an interest in graphics and interaction in general. Many of the issues discussed have a more general applicability than the particular area under discussion. However, the primary audience is those directly involved in the area of the human factors and design of systems on high-powered single user workstations.
https://github.com/mcarlson/rheses
Oliver Steele, another of OpenLaszlo's architects, has written some great stuff about "Instance First Development", a declarative, prototype and constraint based approach to programming modular components that OpenLaszlo supports.
http://blog.osteele.com/posts/2004/03/classes-and-prototypes
http://c2.com/cgi/wiki?InstanceFirstDevelopment
http://lua-users.org/lists/lua-l/2007-10/msg00379.html
http://www.donhopkins.com/drupal/node/124
http://don.fed.wiki.org/view/prototype-based-programming
https://ssl.weepee.org/lps-5.0.x/docs/developers/introductor...
And of course the granddaddy of all constraint based user interface systems is Ivan Sutherland's Sketchpad:
http://www.donhopkins.com/drupal/node/69
Constraints and Prototypes in Garnet and Laszlo
Garnet is an advanced user interface development environment written in Common Lisp, developed by Brad Meyers (the author of the article). I worked for Brad on the Garnet project at the CMU CS department back in 1992-3.
http://www-2.cs.cmu.edu/~garnet/
One thing I like about Brad Meyers is that he's a strong programmer, as well as an excellent researcher, so he had a first-hand understanding of the real-world issues involved in programming languages and user interface architecture, unlike many academics who talk a lot of theory but never get their hands dirty. Brad Meyers understands where the rubber hits the road, and how important it is to have good tires.
At the time I worked on it, Garnet didn't have pretty graphics like Flash, but the underlying programming system had some advanced features that are sorely lacking from most modern user interface development environments.
Laszlo is an modern open source GUI programming system, with many of Garnet's advanced "natural programming" features like prototypes and constraints. Laszlo currently uses Flash as its virtual machine, but it's a much higher level way to program dynamic interactive web based applications, without using the proprietary Flash authoring tool.
Garnet had a true prototype based OOP system (somewhat like Self), which is great for gui programming, because guis have so many objects that look and behave like each other except for a few little customizations (like the layout, graphical style, data source and call-back behavior).
Garnet also had an automatic constraint system, which enabled you to simply define any attribute as a formula that depend on other attributes, without needing to worry about how and when the values were calculated. Garnet's constraint system automatically figured out the dependences of each formula, and automatically and efficiently recalculated and cached any values that needed to be updated, but only when necessary.
With constraints, you can make a button inside a window, and define its left edge to be ((parent.width - self.width) / 2), and it will automatically remain horizontally centered in the window from then on, without you (the programmer) having to worry about what to do when the parent window's size changes.
Without constraints, you have to manually write all the code that changes the button position whenever the window size changes, which results in code scattered all over the place in different classes and handlers and intermediate objects.
Constraints are much easier to use and more general purpose than resize handlers, springs and struts, complex MVC updating schemes, and other Rube Goldberg devices.
Constraints are especially useful for user interface programming, because they save you from having to write lots of annoying boiler plate and error prone code for handling updates (registering, chasing down dependencies, detecting changes, notifying updates, all happens automatically).
Constraints make GUI programming much easier, but they're also useful anywhere in your program where one value is defined in terms of other values that might change at any time.
Once you've tasted a programming language with constraints, you will not want to go back. Programming without constraints is like writing in machine language: error prone, low level, tedious, inefficient and mind numbing.
Constraints are like structured programming for variables: In the same way that it's better to use loops and conditionals instead of gotos, it's also better to use declarative programming that says what you mean, instead of imperative peeks and pokes and side effects.
Constraints let you write easy to read code, and concentrate on the interesting high level stuff that matters. You can go back later and change the layout of a complex GUI, without rewriting lots of fragile layout and event hanling code. Look at any MFC program to see how bad it can get without constraints.
Constraints are natural and close to the way you think, because they let you declare a variable and the formula that defines its value in one place, instead of scattered all around the code. They off-load the tedious task of tracking down and maintaining all the dependencies from the programmer to the computer, which is much better at that kind of stuff.
Garbage collection is like constraints: the computer can do a much better job than the human at performing the task perfectly, so spending some cpu time on automatic garbage collection and constraint maintenance is well worth the significant increase in programmer productivity and software reliability.
Garnet had a prototype based object system. It was implemented in Lisp with a system called KR (Knowledge Representation, classic AI "frames" with slots and inheritance). KR was extended with an automatic constraint system that parsed the formula expressions (written in Lisp macros), figured out the dependences, wired up and maintained the dependency graph.
An expression like "((parent.width - self.width) / 2)" would depend on self's width slot, self's parent slot, and parent's width slot. If any of them changed, then that formula would be automatically invalidated, and only recalculated on demand when it (or something that depended on it) is required.
The cool thing was that you can make a prototype object, like a button, which has sub-structures like a label, border, drop shadow, etc. The sub-structures can be constrained to the button's dimensions, the label is centered in the border, and the drop shadow floats below and to the right, so the button's layout is automatically updated when it moves or resizes.
The text color and border fill can depend on the button's "hilight" variable, so they automatically switch between bright and dark when you press the button (the input handler just toggles the "highlight" variable, and the graphics that depend on it are automatically updated).
Now that you've composed and constrained a button to look and feel how you want, you can use it as a prototype to make other similar customizable buttons instances. Each instance can itself override the prototype's graphical properties, label text, action, etc.
Instances of a prototype all magically inherit (instances of) the sub-structure of the prototype! It all just works the way you'd expect it to (with a lot of plumbing going on automatically behind the scenes). There's no need to make a separate class for each different style of button or action - prototypes let you customize any instance itself!
Like Garnet, Laszlo is an advanced open source user interface development environment that supports prototype based OOP with constraints.
Unlike Garnet, Laszlo deeply integrates recent trendy technologies like XML, JavaScript, Flash, data binding, networking, XML/RPC, SOAP, ReST, Java and Tomcat.
Laszlo has a class/prototype based object system, and it (currently) uses the JavaScript runtime in Flash as its virtual machine. But it's more than just another way to program Flash.
Unlike raw Flash, The Laszlo language is easy to learn and Laszlo programs are easy to read and write thanks to prototypes, constraints, declarative programming, and instance-first development.
used PostScript code instead of JavaScript for programming.
used PostScript graphics instead of DHTML and CSS for rendering.
used PostScript data instead of XML and JSON for data representation.
http://stackoverflow.com/questions/13738141/blacklist-filter...
(I'm not endorsing anyone's behavior here, just pointing out how low the right hand side of modern American politics has degenerated, to provide some perspective.)
He looked at me funny, but I couldn't tell if he got the reference to Bizarre Sex #10: http://silezukuk.tumblr.com/post/3151672333 [NSFW]
If you have the stomach, google yourself up some Pat Buchanan quotes -- it's really vile and disgusting stuff, and he absolutely and without question qualifies as an archetypal "bigot".
In fact, the Guardian article that recently outed him as contributing money to Pat Buchanan and Ron Paul happened between the short time that he announced in an interview he was NOT going to resign, and between when he DID resign, so it may have been a factor, the straw (or rather the bay of straw) that broke the camel's back.
http://www.theguardian.com/technology/2014/apr/02/controvers...
http://www.theguardian.com/commentisfree/2014/apr/04/brendan...
Just because you were a bigot 15 years ago doesn't mean you should respect bigots who haven't changed their opinions yet. You deserve some respect for changing your views, but Brendan only deserves contempt for failing to do that himself, not respect.
Why do you think human rights should be put up for a vote? Are you against mixed race marriage because it was so unpopular at the time the "activist court" struck it down?
https://en.wikipedia.org/wiki/Paradox_of_tolerance
Michael Walzer asks "Should we tolerate the intolerant?". He notes that most minority religious groups who are the beneficiaries of tolerance are themselves intolerant, at least in some respects. In a tolerant regime, such people may learn to tolerate, or at least to behave "as if they possessed this virtue". Philosopher Karl Popper asserted, in The Open Society and Its Enemies Vol. 1, that we are warranted in refusing to tolerate intolerance. Philosopher John Rawls concludes in A Theory of Justice that a just society must tolerate the intolerant, for otherwise, the society would then itself be intolerant, and thus unjust. However, Rawls also insists, like Popper, that society has a reasonable right of self-preservation that supersedes the principle of tolerance: "While an intolerant sect does not itself have title to complain of intolerance, its freedom should be restricted only when the tolerant sincerely and with reason believe that their own security and that of the institutions of liberty are in danger."
It's ironic that bigots of Brendan's ilk strongly believe that it's possible for gays to change their sexual preference, while they continue to cling to what they believe in the face of all the facts that prove them wrong.
Why don't you let Brendan Eich play the victim and feel sorry for himself, he doesn't need any of your help.
This guy:
"Also, how are yo, pretty lady? :)"
"I will kiss you on the vagina if you do"
"Ill still kiss your vagina"
"Let me know if you need a penis for anything in the meae future *near"
"Like. My penis. For your vagina"
[Too explicit for me to feel comfortable leaving readable]
http://img.gawkerassets.com/img/19d66708hxa9zpng/original.pn...
http://kotaku.com/she-was-harassed-by-a-games-reporter-now-s...
https://en.wikipedia.org/wiki/Paradox_of_tolerance
Michael Walzer asks "Should we tolerate the intolerant?" He notes that most minority religious groups who are the beneficiaries of tolerance are themselves intolerant, at least in some respects. In a tolerant regime, such people may learn to tolerate, or at least to behave "as if they possessed this virtue". Philosopher Karl Popper asserted, in The Open Society and Its Enemies Vol. 1, that we are warranted in refusing to tolerate intolerance. Philosopher John Rawls concludes in A Theory of Justice that a just society must tolerate the intolerant, for otherwise, the society would then itself be intolerant, and thus unjust. However, Rawls also insists, like Popper, that society has a reasonable right of self-preservation that supersedes the principle of tolerance: "While an intolerant sect does not itself have title to complain of intolerance, its freedom should be restricted only when the tolerant sincerely and with reason believe that their own security and that of the institutions of liberty are in danger."
A lot of people disagree with you, because they believe financially supporting Proposition 8 is prima facia evidence of homophobia, just as donating money to the KKK is evidence of racism.
But you're performing logical backflips, and parroting implausible straw man arguments usually proffered by dyed in the wool homophobes to justify their hatred, without actually having any knowledge of Brendan's beliefs, in an attempt to counter arguments and testimonial from people who DO know him and HAVE been negatively affected by his beliefs.
That's why it's my belief that you're being an apologist for bigots. Your "maybe he's against all marriages" argument has been shot down -- don't try it again.
Of course maybe I'm misinterpreting you. If by "it is not the truth," you mean the religions that people use to justify their hate are not the truth, then I agree with you.
I know him. You're wrong. He's an unrepentant homophobic bigot.
The Paradox of Tolerance is a resolved philosophical debate, so the idea that it's ironic or wrong to be intolerant of intolerance is an unoriginal and misguided idea. Philosopher Karl Popper asserted, in The Open Society and Its Enemies Vol. 1, that we are warranted in refusing to tolerate intolerance: https://en.wikipedia.org/wiki/Paradox_of_tolerance
I do know Brendan, since the time I interviewed with him at Netscape in the 90's, and I know people who work with him and know him much better than I do, who say he has a lot of insane hateful beliefs that he doesn't like to share with people (except by paying money to other people to fund making TV commercials demonizing gays, destroying existing gay married families, and preventing future ones until the Supreme Court stepped in, of course), and that he refuses to change or justify his unjust beliefs.
Mozilla has tried to recruit me on numerous occasions, and I've turned them down because of Brendan, sending them and Brendan my explanation of why, but I've never heard anything back from Brendan or Mozilla about it. And I'm not the only person who refuses to work with Mozilla because of Brendan, so he's already harmed the Mozilla project as well as the people he hates.
So I DID tell him how his donation has caused harm, both to me and my friends, and the Mozilla project, and he ignored it. Now what do you suggest?
----
There remains an huge elephant in the room, Brendan, which causes your message of inclusivity to fall flat.
"I'm sorry." "I was wrong." These are the words abusers never say; you want our forgiveness without actually promising to stop harming people, or explaining what was going through your head when you DID harm people before.
You're not sorry. You refuse to mention you were wrong, and apologize for the tangible harm you caused. You skirt around the well known fact that you donated money to destroy the existing and potential marriages of gay families. Everyone knows that. It's on the record.
Your verbal gymnastics to avoid addressing that fact overshadowed your message. Why didn't you mention that YOU PERSONALLY are the cause of people mistrusting Mozilla's commitment to equality, and explain WHAT you did and WHY you did it, as you have always refused to do.
If you learned anything, and changed your bigoted beliefs, then you should ADMIT to making a mistake, EXPLAIN why you made it, and APOLOGIZE for the harm you caused.
But no, you're still an abuser, because:
You refuse to admit you were wrong.
You refuse to explain what the fuck you were thinking when you donated money to support Proposition 8.
You refuse to explain why you intended and succeeded in destroying the existing and potential marriages of gay families.
You refuse to explain what you learned from being wrong, so other bigots like yourself can learn from your mistakes, and hopefully change their ways.
Brendan: You are a bigot, and an abuser. Not just because of your beliefs, which you have kept to yourself because they are so unjustifiable that you are ashamed to discuss them, but because of your ACTIONS, which tangibly contributed to the success of Proposition 8, thus destroying the existing gay marriages in California and preventing others. That was your intent, and that was the result of your actions, so you deserve credit for destroying those marriages, and you should be ashamed of yourself.
The Supreme Court finally ruled that Proposition 8 was wrong. Can you finally admit that YOU were wrong?
But I am sure you won't, because as a religious bigot, you think you're better than everyone else, and that you have a right to tell other people how to live their lives.
You've so much as proven that with your latest cowardly statement, a non-apology apology, which dances around the fact that you did what you did, that brought shame to the company that you direct, and blatantly avoids saying you're sorry and that you're wrong.
This is how your non-apology apology sounds:
Heads are so funny, and there are a thousand laughs in store for you in the new, improved HEAD. Everyone enjoys a talking HEAD, from young to old. Taste, see, smell, and "pain" with a HEAD. Experience every emotion known to the HEAD. And if you already have a HEAD, remember what the HEADS say: "Two HEADS are better than one!"
Everyone enjoys a talking HEAD. Every minute is different from the next minute in incredible thought-chaos of a HEAD. And every single HEAD is different!
HEADS are so funny. Listen to the limbless talking HEAD talk about "Freedom," "Death," "Beauty," and "God-Father." Make the HEAD fall in "Love" with you. Any HEAD can be made to "Love," if training manual instructions are carefully observed. Watch the worn-out HEAD die, talking, talking, talking till the moment in decays. Indeed, it is not an exaggeration to say HEADS are so funny.
Taste, see, smell, and "pain" with a HEAD. Every HEAD purchaser receives absolutely free a "Life-time" supply of "Food." Put "Food" in the HEAD's Mouth, then insert consensual Apparat into Left Collarbone. You will taste every molecule of the Mouth's "Food." Only those who have "eaten" with a Mouth can understand the incredible sensations of "Food."
Left Collarbone is likewise Input/Output source for Right Eye and Left Eye. See the strange little world of the Right Eye, looking at you! See through the Left Eye too! Then see through both the Right Eye and th eLeft Eye together. Every Exo-Export HEAD has two eyes. Don't accept less!
Left Collarbone is likewise Input/Output source for Nose. Now, with the new, improved HEAD you can experience the disconcerting primeval world of "Sex," as the center of the new HEAD's sex-tropic response is removed from obsolete and unsightly sacral area and redirected to the graceful Nose. Just one more reason why two HEADS are better than one!
Left Collarbone is likewise Input/Output source for "pain"-sensitive Chin. Throughout the galaxies there are creatures, often the most insignificant, that can experience the famous "Negative Pleasure," and now with a HEAD you can too! The new, improved HEAD is thirty percent more sensitive to "pain," thanks to refinements in the Chin.
Left Collarbone is likewise Input/Output source and control center for Adam's Apple. Nothing is easier than to take over your HEAD's talking- function. Amuse your friends by talking through your own HEAD! What could be funnier than to talk to another HEAD that thinks you are just a HEAD too?
Everyone enjoys a talking HEAD, from young to old. Even more fun than talking-function of the HEAD is thought-function. Insert compassional Apparat into Right Collarbone, and experience every emotion known to the HEAD. You will feel the HEAD's amazing "Love." You will be paralyzed with the HEAD's consuming "Fear" of pain and of its own inescapable death. You will hate your own self -- perhaps the most exciting sensation of all.
HEADS are educational. Everyone should have his own HEAD to grow up with. HEADS provide an easy and stimulating introduction to basic concepts of xeno-language and xeno-culture. Each HEAD is given a thorough grounding in the astonishing cultural traditions of its autochthonous planet. A third of a lifetime is devoted to the education of every Exo-Export HEAD.
HEADS are perfectly safe for the young. The sharp, skeletal teeth are extracted from each HEAD's Mouth at the time of assembly and refitted with harmless, hydraulic pseudo-teeth.
Many designers consider HEADS to be an attractive addition to the decor of one's environment, especially in arrangements with contrasting xeno-flora and xeno-fauna. For the fashion-conscious HEADS are available now in a range of natural tincts from brown through pink. When treated with new, special-formula Fungi-X, HEADS can also be cultivated in more agreeable colors, though fungifying processes will abbreviate markedly the lifetime of the HEADS so treated.
Everyone should have his own HEAD, and now everyone can! Thanks to the diminished Chest volume of the new, improved HEAD, the result of recent advances in biominiaturization, HEADS are cheaper than every before. They eat less and take up less space too! So why don't you buy your new HEAD today?
Any HEAD you buy from Exo-Export is guaranteed to be the native handicraft of its autochthonous planet, where bioengineering has long been practiced by the wild-four-limbed progrnitors and manufacturers of the HEADS.
There are a thousand laughs in store for you in the new, improved HEAD. Why don't you buy your new HEAD today? Why don't you buy your new HEAD today? Why don't you buy your new HEAD today?
Only 49.95 from Exo-Export Monopolies.
Copyright 1968 by Thomas M. Disch An earlier version of this story, entitled "Cephalotron," originally appeared in Playboy Magazine, copyright 1966 by HMH Publishing Co., Inc.