The Null Device
A modest proposal for a much needed new rendering model for X, from X11 veteran Keith Packard: (via Slashdot)
As application development has advanced, the X protocol has devolved into little more than an image transport mechanism. Applications perform rendering in client-side buffers and transport the result to the screen. A shared memory mechanism for delivering images to the X server exists when the application is running on the same machine as the display, but performance suffers when attempting to run these applications over the network.
The strongest argument for building a new rendering model is in evidence on almost every Linux machine these days. The combination of KDE, Gnome, and Enlightenment demonstrate that the world of 2D graphics is rapidly leaving the X Window System behind. These applications use sophisticated rendering primitives like outlined text and cubic splines. They improve image quality with anti-aliasing and blend images together with alpha compositing.
Scam of the Day: A lot of online "personal ads" are really scams for phone sex services: (WIRED News)
In that case, the FTC alleged that ITA falsely advertised itself as a free dating service that matched customers with local singles. In fact, the "singles" were paid telephone operators who left customers with enormous phone bills. ... For example, "Lisa" is both a blonde Caucasian and a brunette Asian who share the same voice box number.
<RANT> Annoyance of the day: Web pages which don't render in Netscape (like this one) due to sloppy tables or whatever. And web designers who assume that everyone uses Microsoft Internet Exploiter anyway. After all, everyone runs Windows, don't they? </RANT>
Thought-provoking article on object-oriented programming and its discontents: (via RobotWisdom)
"You have your 'isa' hierarchy all thought out - let's say you have a "mammals" class and a "reptiles" class and so on - and you start to implement it, and along comes a platypus, a fur-bearing, egg-laying, duck-billed creature, which doesn't appear to fit in any of the classifications you've created. So what you often end up having to do is rethink your entire hierarchy, refactoring into a different set of basic categories, or maintaining several categorizations along different axes. A lot of your thinking ends up getting thrown out, as well as any implementation you've done up to that point."
I've heard a number of experts proclaim that the reason for the widespread popularity of OO design is "that's how the world really works." But the piece of paper on my desk doesn't have discrete methods. If I decide for example, to burn it for fuel, or fold it into a paper airplane, does that mean that there is a "burn" or "fly" operation that's somehow built into the paper, and that it inherits these operations from a superclass of "flat things"? ... Object Orientation is more of a statement about how our minds work than it is about how the world works. One of my favorite Buckminster Fuller quotes is "There are no things", which means that the division of the world into discrete "things" is due to the way we parse our visual input stream.
The C++ operator overloading feature is especially good at tricking programmers into mis-estimating performance impacts. For example, I've seen "smart pointer" classes which do mind-bogglingly large amounts of work (like acquiring/releasing a semaphore for thread-safe code) each time a pointer is assigned or a dereference is made. And I've seen other programmers who blithely use these smart pointers as if they were actually real C++ pointers...
What I've learned from this is that the re-use of the idea of hash tables is far more important than the re-use of actual written code.