You have Jaron Lanier confused with Mark Pesche. Jaron didn't have anything to do with VRML (in fact he has a lot of disdain for it), and his work with VR at VPL predates VRML by many years. The stuff Jaron did was actually quite creative and ground breaking, and led to some interesting patents, while the VRML crowd, who came along much later, were a bunch of posers and cargo cult imitators.
It has everything to do with you being unprofessional for using PHP in the first place. You SHOULD have known PHP sucks, and you WOULD have known PHP sucks and there are much better alternatives, if you had done you research.
-Don
You're totally wrong. There's a huge benefit to pushing mouse tracking and drawing to the server, instead of spreading it out over the network or between processes running in different address spaces.
You may be confused, because the terms "client" and "server" have switched place between the NeWS or X11 window server and client application, and the web server and web browser client. The web server is like a NeWS or X11 client application, and the web browser is like the NeWS or X11 server.
Most people run X clients locally, and don't take advantage of its network ability. The direct rendering and hardware access stuff certainly doesn't operate over the network.
The problem still exists, even more so than before, but the solution has moved up a layer on the stack to the web browser instead of the window server, because of X's failure to provide an extensible network efficient protocol. Instead of sending pure PostScript to the window server, you send an amalgamate of JavaScript, JSON, XML, HTML and CSS to the web browser.
The web browser IS a graphics server. If there is no value sending executable code to the graphics server, then why is AJAX so popular and powerful?
Compared to the purity and simplicity of NeWS's use of PostScript for programming, rendering an data represention, today's piebald AJAX solution is a shotgun marriage of inelegant competing technologies that weren't designed to work together.
Case in point: Why is JSON so popular, when we have XML? Answer: Because XML HTTP Request won't let you download XML from sites other than the one you downloaded the web page from, even though XML is not executable, although you CAN download executable JavaScript and JSON from different sites. So why the pointless restriction? Purely a historical accident. The executable content cat's already out of the bag, and JSON's just working around stupid design flaws in Microsoft's XML HTTP Request.
Multi player voting on important issues and expensive zones.
Voting dialogs require unanimous vote of all players to do important things like change tax rate, build expensive buildings, quit the game (although anyone can quit themselves, everyone must agree to shut the whole game down). Any person can dissent by pressing cancel button. OK button requires each person to press it. The beveled edges are extra thick: as many times thicker than usual, as there are yes votes required. As each person votes "yes" it lowers one normal thickness down deeper, until the last vote fully depresses it.
Bouncing building gets closer to ground as more people vote for them., Finally falls "down to earth" as the last person votes for it. Any person can cancel a vote since they require unanimous consent. Bouncing buildings also display a parallel multi player voting dialog, and the bouncing building is a shortcut to the dialog. To vote yes, you just place the same building in the same place. To change the proposed location, you place the same building somewhere else, and it resets to only having your vote.
TomTom's HD Traffic system combines the standard (and spurious) traffic reports, roadway sensors, and other information with real-time data collected from cell phone towers, and it's continuously monitored 24/7 in the HD Traffic Control Center to filter out misinformation and prevent abuse.
So not only would there be no point to hacking TomTom HD Traffic, but it would be very difficult to hack without resorting to all kinds of felonious, easily detected activities.
The problem with using your cell phone as a personal navigation device, is that when the batteries run out quickly, you can't call for help. You're lost AND disconnected at the same time.
TomTom's HD Traffic and IQ Routes (which I described in a message above) works well because it runs on a separate device that has its own dedicated cell phone and SIM card, which plugs into your car charger for power. Plus it has a big touch screen, a loud speaker, and a dashboard mount, which makes it much more safe to use hands free while driving. So you don't have to stop talking on your phone, use your phone's batteries, or use your phone's data plan, to download real time traffic updates.
TomTom's "HD Traffic" gets information on traffic speed from all drivers who have a Vodaphone cell phone in their car.
It does not require each of those drivers to have TomTom devices. It does not require the cell phones to have GPS trackers. It does not require the cell phones to use air time or have unlimited data plans, or even have the ability to connect to the internet.
[Disclosure: I work for TomTom. Whenever I go down to the lunch room, I walk by the HD traffic control center where they collect and distribute all the traffic information -- it has a glass wall like a fish tank with a big screen in front displaying the live traffic feeds.]
The "chicken and egg" and "critical mass" problems are solved by combining traffic data from several different source, and getting a lot more data points than we would get if we only collected data from drivers who have a TomTom that's always connected to the internet with an unlimited data plan.
The other question is how to TomTom users receive this real time traffic information. The TomTom devices that support HD traffic have their own cell phones with built-in SIM cards, whose cost is covered by the HD traffic subscription, so it can download traffic reports in real time. It does not require you to drain the batteries and increase the bill of your own cell phone. The TomTom device is usually plugged into the car charger.
There's another feature called "IQ Routes" that enables TomTom to plan intelligent routes even when they're not connected to the internet, based on historical time sensitive information. Traffic on different roads has different speeds at different times of day and different weekdays, so IQ Routes measures that, and takes it into account when planning routes. Then HD traffic can add another layer of real time traffic information to make the routes even more accurate.
TomTom devices (even if they're not connected to the internet live) can record the speed you drive along the roads you travel, and if you choose to opt in, they anonymize and upload that data when you hot-sync your device to your PC or Mac (using your computer's internet connection instead of requiring a wireless data plan). Then they download the aggregation of all other TomTom user's traffic speed information. So each time you hot-sync, you get fresh traffic data based on the latest measurements of many other TomTom users.
All this data is also fed back into improving the maps, correcting mistakes, and tracking changes. Since the roads are always changing, you can get a discount by subscribing to map updates, to get fresh maps and points of interest updated regularly. We also offer traffic camera (speed trap) subscriptions, so the TomTom can warn you to slow down before you get speeding tickets.
WHAT IS YOUR DISPLAY? display = XOpenDisplay("unix:0");
WHAT IS YOUR ROOT? root = RootWindow(display, DefaultScreen(display));
AND WHAT IS YOUR WINDOW? win = XCreateSimpleWindow(display, root, 0, 0, 256, 256, 1, BlackPixel(display, DefaultScreen(display)), WhitePixel(display, DefaultScreen(display)));
OH ALL RIGHT, YOU CAN GO ON.
WHAT IS YOUR DISPLAY? display = XOpenDisplay("unix:0");
WHAT IS YOUR COLORMAP? cmap = DefaultColormap(display, DefaultScreen(display));
AND WHAT IS YOUR FAVORITE COLOR? favorite_color = 0;/* Black. */ /* Whoops! No, I mean: */ favorite_color = BlackPixel(display, DefaultScreen(display)); /* AAAYYYYEEEEE!! */
(client dumps core & falls into the chasm)
WHAT IS YOUR DISPLAY? display = XOpenDisplay("unix:0");
WHAT IS YOUR VISUAL? struct XVisualInfo vinfo; if (XMatchVisualInfo(display, DefaultScreen(display), 8, PseudoColor, &vinfo) != 0) visual = vinfo.visual;
AND WHAT IS THE NET SPEED VELOCITY OF AN XConfigureWindow REQUEST? /* Is that a SubStructureRedirectMask or a ResizeRedirectMask? */
WHAT??! HOW AM I SUPPOSED TO KNOW THAT? AAAAUUUGGGHHH!!!! (server dumps core & falls into the chasm)
Has X-Windows solved the essential problem of having a fixed protocol, so clients are not able to download code into the server, to implement application specific protocols and local interaction without network traffic?
HTML+AJAX is doing now what NeWS (originally known as SunDew) was doing 23 years ago:
Gosling, James (1986). "Article 5 - SunDew", in F.R.A. Hopgood, D.A. Duce...: Methodology of Window Management (Eurographics Seminars) Proceedings of an Alvey Workshop at Cosener's House, Abingdon, UK, April 1985. UK: Springer-Verlag. ISBN 3-540-16116-3.
The ICCCM is unbelievably dense, it must be followed to the last letter, and it still doesn't work. ICCCM compliance is one of the most complex ordeals of implementing X toolkits, window managers, and even simple applications. It's so difficult, that many of the benefits just aren't worth the hassle of compliance. And when one program doesn't comply, it screws up other programs. This is the reason cut-and-paste never works properly with X (unless you are cutting and pasting straight ASCII text), drag-and-drop locks up the system, colormaps flash wildly and are never installed at the right time, keyboard focus lags behind the cursor, keys go to the wrong window, and deleting a popup window can quit the whole application. If you want to write an interoperable ICCCM compliant application, you have to crossbar test it with every other application, and with all possible window managers, and then plead with the vendors to fix their problems in the next release.
In summary, ICCCM is a technological disaster: a toxic waste dump of broken protocols, backward compatibility nightmares, complex nonsolutions to obsolete nonproblems, a twisted mass of scabs and scar tissue intended to cover up the moral and intellectual depravity of the industry's standard naked emperor.
Using these toolkits is like trying to make a bookshelf out of mashed potatoes.
- Jamie Zawinski
As a result, one of the most amazing pieces of literature to come out of the X Consortium is the "Inter Client Communication Conventions Manual," more fondly known as the "ICCCM", "Ice Cubed," or "I39L" (short for "I, 39 letters, L"). It describes protocols that X clients ust use to communicate with each other via the X server, including diverse topics like window management, selections, keyboard and colormap focus, and session management. In short, it tries to cover everything the X designers forgot and tries to fix everything they got wrong. But it was too late -- by the time ICCCM was published, people were already writing window managers and toolkits, so each new version of the ICCCM was forced to bend over backwards to be backward compatible with the mistakes of the past.
Are you old enough to remember the Beta 2 version of Landru?
Kirk says "where is the damn computer room?" This man, named Marplon, shows him. Now kirk and Spock see Landru's face on a video on the wall and hear him, but WAIT. it is a computer voice. he is fake. Kirk says "I am going to pull the plug on him." He explodes a hole in the wall with his phaser, and there is the computer, still talking nonstop. He cannot shoot it, the computer has a self defense screen. But he will outTHINK it. He says "Landru, you are for the good of the body?" Landru says yes. Kirk says "The body is dying. Young girls are being raped and beaten. How is that good for the body?" Landru does not know, and then he explodes. Spock says to Kirk "Logical. Flawlessly logical."
The nice thing about X10 is that you could print out the manual, take it with you to the bathroom, and read all the way through it in the time it takes to have a nice leisurely bowel movement.
X-Windows:...A mistake carried out to perfection. X-Windows:...Dissatisfaction guaranteed. X-Windows:...Don't get frustrated without it. X-Windows:...Even your dog won't like it. X-Windows:...Flaky and built to stay that way. X-Windows:...Complex nonsolutions to simple nonproblems. X-Windows:...Flawed beyond belief. X-Windows:...Form follows malfunction. X-Windows:...Garbage at your fingertips. X-Windows:...Ignorance is our most important resource. X-Windows:...It could be worse, but it'll take time. X-Windows:...It could happen to you. X-Windows:...Japan's secret weapon. X-Windows:...Let it get in *your* way. X-Windows:...Live the nightmare. X-Windows:...More than enough rope. X-Windows:...Never had it, never will. X-Windows:...No hardware is safe. X-Windows:...Power tools for power fools. X-Windows:...Putting new limits on productivity. X-Windows:...Simplicity made complex. X-Windows:...The cutting edge of obsolescence. X-Windows:...The art of incompetence. X-Windows:...The defacto substandard. X-Windows:...The first fully modular software disaster. X-Windows:...The joke that kills. X-Windows:...The problem for your problem. X-Windows:...There's got to be a better way. X-Windows:...Warn your friends about it. X-Windows:...You'd better sit down. X-Windows:...You'll envy the dead.
PostScript is more like Lisp with three stacks: operand, return and dictionary (scope). And as you point out, it's easy to use the dictionary stack to implement an object oriented programming system, like Smalltalk.
Owen Densmore wrote "object.ps" in about two pages of code, which implemented Smalltalk's object oriented programming model in PostScript.
It was eventually extended to support multiple inheritance and other features, and used to implement several user interface toolkits and many applications, utilities and components.
I think the OLPC project has chosen a great software stack that has all the advantages of NeWS/PostScript.
Python is a great substitute for the PostScript programming language, and Cairo is a great substitute for the PostScript rendering model.
At that level, you can basically ignore all the stuff underneath, whether it's X-Windows and GTK, Microsoft Windows and DirectX or Mac OS/X and Cocoa. Python+Cairo also runs on "headless" web servers, for generating dynamic graphics.
Actually, the world ended up adopting NeWS's architecture -- it's just called AJAX now.
NeWS was just like AJAX, except that it used PostScript instead of JavaScript for programming, PostScript instead of DHTML for rendering, and PostScript instead of XML for data representation.
Virtual desktops have been around a lot longer than since 1996. Stan Switzer wrote a virtual desktop ("recursive window manager") called "winwin" in PostScript for the NeWS window system in 1989.
At Sun in the early 90's, we wrote a combined X11/NeWS window manager that supported scrolling over a big virtual desktop space as well as separate rooms, and it seamlessly managed both X11 windows and NeWS windows, supporting customizable window frames with tabs and pie menus for window management commands. It consisted of about 9000 lines of PostScript. Because it ran in the same address space as the window system itself (like "AJAX" architecture, handling input events locally, avoiding client/server round trips, context switching, race conditions and network overhead), it performed much better than external window managers like OLWM.
You have Jaron Lanier confused with Mark Pesche. Jaron didn't have anything to do with VRML (in fact he has a lot of disdain for it), and his work with VR at VPL predates VRML by many years. The stuff Jaron did was actually quite creative and ground breaking, and led to some interesting patents, while the VRML crowd, who came along much later, were a bunch of posers and cargo cult imitators.
You need Old Glory Robot Insurance, endorsed by Sam Waterson!
It has everything to do with you being unprofessional for using PHP in the first place. You SHOULD have known PHP sucks, and you WOULD have known PHP sucks and there are much better alternatives, if you had done you research. -Don
Linux is only free if your time is worthless.
-Don
You're totally wrong. There's a huge benefit to pushing mouse tracking and drawing to the server, instead of spreading it out over the network or between processes running in different address spaces.
You may be confused, because the terms "client" and "server" have switched place between the NeWS or X11 window server and client application, and the web server and web browser client. The web server is like a NeWS or X11 client application, and the web browser is like the NeWS or X11 server.
Most people run X clients locally, and don't take advantage of its network ability. The direct rendering and hardware access stuff certainly doesn't operate over the network.
The problem still exists, even more so than before, but the solution has moved up a layer on the stack to the web browser instead of the window server, because of X's failure to provide an extensible network efficient protocol. Instead of sending pure PostScript to the window server, you send an amalgamate of JavaScript, JSON, XML, HTML and CSS to the web browser.
The web browser IS a graphics server. If there is no value sending executable code to the graphics server, then why is AJAX so popular and powerful?
Compared to the purity and simplicity of NeWS's use of PostScript for programming, rendering an data represention, today's piebald AJAX solution is a shotgun marriage of inelegant competing technologies that weren't designed to work together.
Case in point: Why is JSON so popular, when we have XML? Answer: Because XML HTTP Request won't let you download XML from sites other than the one you downloaded the web page from, even though XML is not executable, although you CAN download executable JavaScript and JSON from different sites. So why the pointless restriction? Purely a historical accident. The executable content cat's already out of the bag, and JSON's just working around stupid design flaws in Microsoft's XML HTTP Request.
-Don
M.U.L.E. is one of the greatest cooperative multi player games of all time. Totally classic and ingenious!
-Don
Some more notes on the multi player SimCity user interface from a talk I gave about pie menus at Xerox PARC in 1998:
Natural Selection: The Evolution of Pie Menus
-Don
Oops -- forgot to log in!
-Don
TomTom's HD Traffic system combines the standard (and spurious) traffic reports, roadway sensors, and other information with real-time data collected from cell phone towers, and it's continuously monitored 24/7 in the HD Traffic Control Center to filter out misinformation and prevent abuse.
So not only would there be no point to hacking TomTom HD Traffic, but it would be very difficult to hack without resorting to all kinds of felonious, easily detected activities.
-Don
The problem with using your cell phone as a personal navigation device, is that when the batteries run out quickly, you can't call for help. You're lost AND disconnected at the same time.
TomTom's HD Traffic and IQ Routes (which I described in a message above) works well because it runs on a separate device that has its own dedicated cell phone and SIM card, which plugs into your car charger for power. Plus it has a big touch screen, a loud speaker, and a dashboard mount, which makes it much more safe to use hands free while driving. So you don't have to stop talking on your phone, use your phone's batteries, or use your phone's data plan, to download real time traffic updates.
-Don
TomTom's "HD Traffic" gets information on traffic speed from all drivers who have a Vodaphone cell phone in their car.
It does not require each of those drivers to have TomTom devices. It does not require the cell phones to have GPS trackers. It does not require the cell phones to use air time or have unlimited data plans, or even have the ability to connect to the internet.
[Disclosure: I work for TomTom. Whenever I go down to the lunch room, I walk by the HD traffic control center where they collect and distribute all the traffic information -- it has a glass wall like a fish tank with a big screen in front displaying the live traffic feeds.]
The "chicken and egg" and "critical mass" problems are solved by combining traffic data from several different source, and getting a lot more data points than we would get if we only collected data from drivers who have a TomTom that's always connected to the internet with an unlimited data plan.
The other question is how to TomTom users receive this real time traffic information. The TomTom devices that support HD traffic have their own cell phones with built-in SIM cards, whose cost is covered by the HD traffic subscription, so it can download traffic reports in real time. It does not require you to drain the batteries and increase the bill of your own cell phone. The TomTom device is usually plugged into the car charger.
There's another feature called "IQ Routes" that enables TomTom to plan intelligent routes even when they're not connected to the internet, based on historical time sensitive information. Traffic on different roads has different speeds at different times of day and different weekdays, so IQ Routes measures that, and takes it into account when planning routes. Then HD traffic can add another layer of real time traffic information to make the routes even more accurate.
TomTom devices (even if they're not connected to the internet live) can record the speed you drive along the roads you travel, and if you choose to opt in, they anonymize and upload that data when you hot-sync your device to your PC or Mac (using your computer's internet connection instead of requiring a wireless data plan). Then they download the aggregation of all other TomTom user's traffic speed information. So each time you hot-sync, you get fresh traffic data based on the latest measurements of many other TomTom users.
All this data is also fed back into improving the maps, correcting mistakes, and tracking changes. Since the roads are always changing, you can get a discount by subscribing to map updates, to get fresh maps and points of interest updated regularly. We also offer traffic camera (speed trap) subscriptions, so the TomTom can warn you to slow down before you get speeding tickets.
-Don
WHAT IS YOUR DISPLAY?
/* Black. */
/* Whoops! No, I mean: */
/* AAAYYYYEEEEE!! */
/* Is that a SubStructureRedirectMask or a ResizeRedirectMask? */
display = XOpenDisplay("unix:0");
WHAT IS YOUR ROOT?
root = RootWindow(display, DefaultScreen(display));
AND WHAT IS YOUR WINDOW?
win = XCreateSimpleWindow(display, root, 0, 0, 256, 256, 1,
BlackPixel(display, DefaultScreen(display)),
WhitePixel(display, DefaultScreen(display)));
OH ALL RIGHT, YOU CAN GO ON.
WHAT IS YOUR DISPLAY?
display = XOpenDisplay("unix:0");
WHAT IS YOUR COLORMAP?
cmap = DefaultColormap(display, DefaultScreen(display));
AND WHAT IS YOUR FAVORITE COLOR?
favorite_color = 0;
favorite_color = BlackPixel(display, DefaultScreen(display));
(client dumps core & falls into the chasm)
WHAT IS YOUR DISPLAY?
display = XOpenDisplay("unix:0");
WHAT IS YOUR VISUAL?
struct XVisualInfo vinfo;
if (XMatchVisualInfo(display, DefaultScreen(display),
8, PseudoColor, &vinfo) != 0)
visual = vinfo.visual;
AND WHAT IS THE NET SPEED VELOCITY OF AN XConfigureWindow REQUEST?
WHAT??! HOW AM I SUPPOSED TO KNOW THAT?
AAAAUUUGGGHHH!!!!
(server dumps core & falls into the chasm)
Has X-Windows solved the essential problem of having a fixed protocol, so clients are not able to download code into the server, to implement application specific protocols and local interaction without network traffic?
Also known these days as "AJAX".
-Don
HTML+AJAX is doing now what NeWS (originally known as SunDew) was doing 23 years ago:
Gosling, James (1986). "Article 5 - SunDew", in F.R.A. Hopgood, D.A. Duce ...: Methodology of Window Management (Eurographics Seminars) Proceedings of an Alvey Workshop at Cosener's House, Abingdon, UK, April 1985. UK: Springer-Verlag. ISBN 3-540-16116-3.
-Don
The ICCCM is unbelievably dense, it must be followed to the last letter, and it still doesn't work. ICCCM compliance is one of the most complex ordeals of implementing X toolkits, window managers, and even simple applications. It's so difficult, that many of the benefits just aren't worth the hassle of compliance. And when one program doesn't comply, it screws up other programs. This is the reason cut-and-paste never works properly with X (unless you are cutting and pasting straight ASCII text), drag-and-drop locks up the system, colormaps flash wildly and are never installed at the right time, keyboard focus lags behind the cursor, keys go to the wrong window, and deleting a popup window can quit the whole application. If you want to write an interoperable ICCCM compliant application, you have to crossbar test it with every other application, and with all possible window managers, and then plead with the vendors to fix their problems in the next release.
In summary, ICCCM is a technological disaster: a toxic waste dump of broken protocols, backward compatibility nightmares, complex nonsolutions to obsolete nonproblems, a twisted mass of scabs and scar tissue intended to cover up the moral and intellectual depravity of the industry's standard naked emperor.
-Don
http://www.art.net/~hopkins/Don/unix-haters/x-windows/disaster.html
-Don
Uglier than goatse.cx:
http://www.donhopkins.com/home/catalog/unix-haters/x-windows/XCalc.gif
That's what used to happen when you resize XCalc several times in a row. No wonder they call it the X-Stoolkit!
-Don
The X approach to device independence is to treat everything like a MicroVAX framebuffer on acid.
-Don
PS: I do like the stuff that's been done pulling the good code out of X and developing decent libraries like Cairo!
Are you old enough to remember the Beta 2 version of Landru?
-Don
The nice thing about X10 is that you could print out the manual, take it with you to the bathroom, and read all the way through it in the time it takes to have a nice leisurely bowel movement.
-Don
X: The First Fully Modular Software Disaster:
...A mistake carried out to perfection. X-Windows: ...Dissatisfaction guaranteed. X-Windows: ...Don't get frustrated without it. X-Windows: ...Even your dog won't like it. X-Windows: ...Flaky and built to stay that way. X-Windows: ...Complex nonsolutions to simple nonproblems. X-Windows: ...Flawed beyond belief. X-Windows: ...Form follows malfunction. X-Windows: ...Garbage at your fingertips. X-Windows: ...Ignorance is our most important resource. X-Windows: ...It could be worse, but it'll take time. X-Windows: ...It could happen to you. X-Windows: ...Japan's secret weapon. X-Windows: ...Let it get in *your* way. X-Windows: ...Live the nightmare. X-Windows: ...More than enough rope. X-Windows: ...Never had it, never will. X-Windows: ...No hardware is safe. X-Windows: ...Power tools for power fools. X-Windows: ...Putting new limits on productivity. X-Windows: ...Simplicity made complex. X-Windows: ...The cutting edge of obsolescence. X-Windows: ...The art of incompetence. X-Windows: ...The defacto substandard. X-Windows: ...The first fully modular software disaster. X-Windows: ...The joke that kills. X-Windows: ...The problem for your problem. X-Windows: ...There's got to be a better way. X-Windows: ...Warn your friends about it. X-Windows: ...You'd better sit down. X-Windows: ...You'll envy the dead.
http://www.art.net/~hopkins/Don/unix-haters/x-windows/disaster.html
X-Windows:
PostScript is more like Lisp with three stacks: operand, return and dictionary (scope). And as you point out, it's easy to use the dictionary stack to implement an object oriented programming system, like Smalltalk.
Owen Densmore wrote "object.ps" in about two pages of code, which implemented Smalltalk's object oriented programming model in PostScript.
It was eventually extended to support multiple inheritance and other features, and used to implement several user interface toolkits and many applications, utilities and components.
-Don
I think the OLPC project has chosen a great software stack that has all the advantages of NeWS/PostScript.
Python is a great substitute for the PostScript programming language, and Cairo is a great substitute for the PostScript rendering model.
At that level, you can basically ignore all the stuff underneath, whether it's X-Windows and GTK, Microsoft Windows and DirectX or Mac OS/X and Cocoa. Python+Cairo also runs on "headless" web servers, for generating dynamic graphics.
-Don
Yay! I agree!
Actually, the world ended up adopting NeWS's architecture -- it's just called AJAX now.
NeWS was just like AJAX, except that it used PostScript instead of JavaScript for programming, PostScript instead of DHTML for rendering, and PostScript instead of XML for data representation.
-Don
Virtual desktops have been around a lot longer than since 1996. Stan Switzer wrote a virtual desktop ("recursive window manager") called "winwin" in PostScript for the NeWS window system in 1989.
At Sun in the early 90's, we wrote a combined X11/NeWS window manager that supported scrolling over a big virtual desktop space as well as separate rooms, and it seamlessly managed both X11 windows and NeWS windows, supporting customizable window frames with tabs and pie menus for window management commands. It consisted of about 9000 lines of PostScript. Because it ran in the same address space as the window system itself (like "AJAX" architecture, handling input events locally, avoiding client/server round trips, context switching, race conditions and network overhead), it performed much better than external window managers like OLWM.
-Don