As someone who's worked on game physics technology, I agree with this article. Modern game development is really hard. And the people who do it are some of the best programmers I've ever met. Go to the Game Developers' Conference and sit in on a physics or AI session. Watch punked-out twentysomethings fill up whiteboards with advanced math. Those guys are really good.
The game development community used to take algorithms from other fields. Now they've gone beyond academia in graphics, physics simulation, and AI. Games are a tough, competitive market, and the stuff has to work, or you get trashed in reviews. That makes for real progress.
It's quite common to do the 2D GUI of a game in Flash. That's how all those cool effects you see in game GUIs are often done. The authoring is usually done with Macromedia tools, but the player is usually one specifically designed for game use.
Doing the game itself in Flash, though, is far too limiting. See Battleon for a reasonably elaborate Flash-based game.
We have a sleazy TLD already. It's called ".biz". The reputation of ".biz" is so bad that there are spam filters that reject anything related to a ".biz" domain.
Read The Deltoid Pumpkin Seed by John McPhee, for the story of the last time somebody tried to combine an airplane and an airship. That actually flew. But not very well. Rate of climb was something like 50 feet per minute, which is well below any useful aircraft. On a windy day, it had major problems.
The inherent problem with airships is that the huge surface area combined with low weight means they get blown around easily and handle badly. Adding wings doesn't help. It's been tried.
Adding power does help. Adding steerable power helps even more.
For an idea of what a successful modern lighter-than-air craft looks like, see Zeppelin
Luftschifftechnik GmbH, which has built several large rigid airships in the last few years. But even with carbon fibre and Kevlar, the load capacity is small.
I've run into software that made this assumption in the past. Yeah, it's nice when its assumptions make it look smart, and it gets it right 90, 95, even 99.9% of the time. However, there will ALWAYS, and I mean ALWAYS, be some unexpected corner case where the device it's talking to gives it wrong info, or something, and what it thinks about the hardware it's talking to is WRONG. 100% wrong.
When that happens, the software is broken, and you complain, loudly, to the vendor if you paid for it, or to the appropriate newsgroup if you didn't.
"Tweaking" is for wannabe sysadmins, which is a dinky market.
If it could always know if it was in an inconsistent state, or would be going into an inconsistent state, then you would be able to solve the halting problem. However, go take a course that covers finite state automata - you will learn about the halting problem, and why a program cannot always know if it's going to end up in an inconsistent state. Expecting the machine to just know these things is ridiculous, no matter how much sense it makes to someone who's not familiar with the nuts and bolts of the technology.
Determining whether a finite state system is in an inconsistent state is not equivalent to solving the halting problem. Consistency is defined by a set of invariants which must remain true at all times. If you evaluate the invariants after the change, and they're not true, you have to back out the change. Database systems do this routinely.
Much to my surprise, ESR is exactly right, as others have pointed out. Here's how to fix it.
First, if you have't read the original Macintosh user interface guide, do so. There are some strict rules, which today even Apple forgets, but which all competent programmers must know.
One of the basic rules in that manual is this:
You should never have to tell the computer something it already knows.
What this means, in terms a programmer can understand, is this:
If a program needs some piece of information, and there's some way the program can find it out without asking the user, the program MUST find it out by itself. Even if it's more work for the programmer. Asking the user is not an option.
Period. If you don't like that, you shouldn't be programming for end users, and somebody in Bangalore will be taking your job next month.
Please clean out your cubicle when you leave.
If a program needs some piece of information from the user which it cannot find out by itself, but which must be consistent with something the computer already knows, the system must present a set of valid options to the user. Providing a blank which the user must fill in correctly is grounds for dismissal.
If the system is in an inconsistent state, it must detect that it is in an inconsistent state. It's not the user's job to validate the internal consistency of the system's tables.
From a design perspective, it's useful to divide information the system knows into "definitions", "references", and "caches". "This printer is called FOO" is a definition. "BAR normally prints on FOO" is a reference. "FOO is a PostScript printer" on BAR is a cache item. Caches must be regeneratable. References must be checkable. Definitions should be protected against inadvertent change.
One of the big problems of the Windows registry is that it mixes all three types of information. This is also true of the contents of "/etc" in the UNIX world.
Once you start thinking of the problem in these terms, it's much clearer what to do. For the printer case, it's obvious that the system should find the printers in the neighborhood by itself, and should probe them to find out what they are and whether they will let you use them. It's also clear that if something changes (a printer is replaced, for example), the system must notice this and do something reasonable.
Once all the heavy machinery for that is in place, the user interface for "configuring a printer" should go away entirely. The ordinary print dialog can do the work. It might need a "search for more printers" button. But there's no real reason from a user perspective to have to configure printers at all.
We will now hear from the "just edit the/etc/xxx file with 'vi' and send a SIGHUP signal to the daemon" people. You guys are dinosaurs. Give it up.
The Alto was a neat machine. I've programmed one in Mesa, and I visited PARC in 1975, long before Jobs.
The Alto's computer was a rack-mounted Data General minicomputer with some special microcode. Xexox built the mouse, Ethernet adapter, and CRT, but manufacture of the computer was outsourced.
The real history of the GUI is that the first GUI appeared on the SAGE air defense system. The SAGE pointing device was a light gun. After light guns came light pens and the "RAND tablet", the first tablet input device. Doug Engelbart invented the mouse in the late 1960s, and put together an impressive GUI demo, but he had to tie up an entire mainframe to make it work. The Alto was basically an attempt to squeeze down the technology into a useful size.
Alan Kay referred to the Alto as the "Interim Dynabook". What he had in mind was a laptop. The original Dynabook paper has a picture of a woman sitting on grass using a laptop. It's a cardboard mockup. Todays laptops are less bulky and about a thousand times more powerful than what Kay had in mind. Cheaper, too; Kay wanted to reach the price point of a grand piano. He had a clear vision on the hardware front.
The Xerox PARC approach was to create technology that was futuristic but not cost effective, with the idea that progress in electronics would bring the cost down. That was exactly right.
What wasn't right was the emphasis on closed systems. The PARC idea was that it all should just work, and the end user shouldn't have to worry about how it works. Just like Xerox copiers.
Out of this mindset came the Xerox Star, Xerox's commercial product. The Star was a networked word processor/office computer networked to file servers and printers. Think of a computer that runs nothing but Microsoft Office and you'll have the right picture. No user-serviceable parts inside.
That wasn't the way things went. The CP/M - Apple DOS - PCDOS end of computing won out over PARC elegance. Mostly for cost reasons.
As Michael Moore likes to point out, the kids who did the Columbine massacre went bowling at 6 AM the morning before shooting up their school. Only a few hours after practicing knocking down groups of wooden pins, they moved up to knocking down their fellow students with firepower. That demonstrates a clear cause and effect relationship.
The American Bowling Congress, with their promotions that use violent images, is clearly responsible for those deaths. The blood of America's children is on their hands.
Microsoft tried to shut the NSA Secure Linux effort down once before. The result was amusing.
For about a year, NSA stopped talking about SELinux. Then one day there was an announcement in the Linux kernel mailing list that SELinux had been updated to the current kernel version and was becoming part of the mainstream kernel.
This incoming object was detected by GEODSS, the Ground-based Electro-Optical Deep Space Surveillance System. This is one of those once-secret Cold War developments that really worked.
GEODSS first came up in 1982. It consisted of four sites (three today, budget cuts) worldwide, each with three 1-meter telescopes. The whole system is computer-run and reports to NORAD automatically. This was the beginning of automated astronomy.
The telescopes scan the whole sky every night, subtract out everything in the star catalog, and report unknown objects. New satellites and space junk are found this way. Even dark objects that occult stars are noted. There's also a more elaborate USAF site on Maui with even bigger computer-controlled telescopes.
Some of the sites have lasers (Maui definitely does) and can illuminate their targets using one telescope while looking at it with another. This allows time-of-flight ranging, photography of dark objects, and determining whether a satellite has cameras. But illumination is only useful for near earth satellites; it doesn't help with asteroid search.
Asteroid search is a spare-time activity of one of the GEODSS sites. They continue their real job for the USAF, looking for anything near the Earth that shouldn't be there.
The GEODSS hardware was updated in 1999, with better sensors, new computers (the 20 racks of PDP-11 hardware had to go), better positioning accuracy, and some infrared capability for working around cloud cover. The original main optics remain in use.
Unless the hosting service itself is involved in criminal acts, it is unlawful for the FBI to request a search or seizure of "work product materials possessed by a person reasonably believed to have a purpose to disseminate to the public a newspaper, book, broadcast, or other similar form of public communication, in or affecting interstate or foreign commerce". This includes hosting services; that was established in the Steve Jackson Games case. The service itself, not its users, has to be
engaged in criminal activities before search and seizure can take place.
The FBI is usually quite careful about this, having been publicly embarassed in the Steve Jackson Games case. So the question is whether there are criminal charges against the hosting service.
Hard real-time embedded Linux is still something of a hack. RTLinux isn't protected mode; the real-time code is loaded into kernel space. (Neither is VxWorks. QNX runs user programs, networking, and drivers as protected mode programs.)
The preemptive kernel work has made the user-space real time variants of Linux, like Hard Hat Linux from MonteVista, more competitive. Vendors now claim worst-case interrupt latencies under 1ms, which is far better than it used to be. But they usually mean interrupt latency for kernel-mode drivers, not response time for user programs. QNX can provide worst case hard real time interrupt response to a user program in well under 1ms. Direct interrupt response is far better. See this benchmark in Dr. Dobbs Journal, demonstrating worst case 8 microsecond (not millisecond) latency over hours of testing on a 200MHz computer.
Linux is getting better at real time. Two years ago it was a joke.
You can
download the free version of QNX here. This is for desktop PCs. The cross-compilers and kernels for embedded systems cost money. It's a cute little desktop OS. Even runs Mozilla.
First off, Windows needs to get rid of the 16-bit subsystem. You could run NT 3.51 without the 16-bit subsystem, and I used to do so as early as 1997. In NT 4, there's no obvious way to turn it off, although I'm sure there's some obscure registry key you can alter.
You don't want a version control system to use OS-level primitives like that, if it's going to track renaming, sharing, and unsharing events. The version control system has to do its own namespace management.
Apparently Subversion 1.0 doesn't support "sharing", where the same file appears in more than one place in the source tree. That's a lack. Microsoft SourceSafe does that, and it helps avoid those annoying situations that result in long include paths.
Respondent is, in order to avoid
- an administrative fine from EUR 5 up to EUR 250.000,
- and, in the case that
this cannot be collected, administrative detention or
- administrative detention of up to six months
to be enforced in the person of the managing director
in each case of contravention
prohibited
in business relations from claiming and distributing the assertions
1. that the software "Linux" contains SCO's intellectual property that has been
unlawfully obtained,
2. that end users who apply Linux are liable for intellectual property
infringements towards SCO,
and/or
3. that LINUX is an unauthorized derivative of UNIX,
as far as such assertions are not proven to be true.
That's clear enough. No more threats by SCO in Germany, or Darl goes to jail.
SCO isn't fighting this. If they had a case, they would.
I visited There in the early days. They were trying to recruit me. I was impressed.
I felt, though, that they should have gone broadband only. Trying to squeeze the experience through 56Kb is too limiting. In There, 56Kb users can only type to each other. Broadband users can talk.
While only 18% of all US online users are on broadband, 50% of online time and hits are from broadband users. So half the target market for There, heavy users, is already on DSL or cable.
MSN TV list price is only $99. It's even cheaper on eBay.
The game development community used to take algorithms from other fields. Now they've gone beyond academia in graphics, physics simulation, and AI. Games are a tough, competitive market, and the stuff has to work, or you get trashed in reviews. That makes for real progress.
Doing the game itself in Flash, though, is far too limiting. See Battleon for a reasonably elaborate Flash-based game.
Is that true? Can anyone write a WM9 codec? Are there any restrictions whatsoever on the technology? If so, what are they?
This guy will be a venture capitalist when he grows up.
Now watch them go after Whitehouse.com, which is a porno site.
Or Whitehouse.net, which is an anti-government site.
Or Whitehouse.org, the satire site run by Landover Baptist Church ("Unsaved Unwelcome, as Jesus Commanded").
We have a sleazy TLD already. It's called ".biz". The reputation of ".biz" is so bad that there are spam filters that reject anything related to a ".biz" domain.
The inherent problem with airships is that the huge surface area combined with low weight means they get blown around easily and handle badly. Adding wings doesn't help. It's been tried. Adding power does help. Adding steerable power helps even more.
For an idea of what a successful modern lighter-than-air craft looks like, see Zeppelin Luftschifftechnik GmbH, which has built several large rigid airships in the last few years. But even with carbon fibre and Kevlar, the load capacity is small.
When that happens, the software is broken, and you complain, loudly, to the vendor if you paid for it, or to the appropriate newsgroup if you didn't. "Tweaking" is for wannabe sysadmins, which is a dinky market.
-
If it could always know if it was in an inconsistent state, or would be going into an inconsistent state, then you would be able to solve the halting problem. However, go take a course that covers finite state automata - you will learn about the halting problem, and why a program cannot always know if it's going to end up in an inconsistent state. Expecting the machine to just know these things is ridiculous, no matter how much sense it makes to someone who's not familiar with the nuts and bolts of the technology.
Determining whether a finite state system is in an inconsistent state is not equivalent to solving the halting problem. Consistency is defined by a set of invariants which must remain true at all times. If you evaluate the invariants after the change, and they're not true, you have to back out the change. Database systems do this routinely.What they mean by "9 part article" is "9 sets of banner ads, one per page".
First, if you have't read the original Macintosh user interface guide, do so. There are some strict rules, which today even Apple forgets, but which all competent programmers must know.
One of the basic rules in that manual is this:
-
You should never have to tell the computer something it already knows.
What this means, in terms a programmer can understand, is this:From a design perspective, it's useful to divide information the system knows into "definitions", "references", and "caches". "This printer is called FOO" is a definition. "BAR normally prints on FOO" is a reference. "FOO is a PostScript printer" on BAR is a cache item. Caches must be regeneratable. References must be checkable. Definitions should be protected against inadvertent change.
One of the big problems of the Windows registry is that it mixes all three types of information. This is also true of the contents of "/etc" in the UNIX world.
Once you start thinking of the problem in these terms, it's much clearer what to do. For the printer case, it's obvious that the system should find the printers in the neighborhood by itself, and should probe them to find out what they are and whether they will let you use them. It's also clear that if something changes (a printer is replaced, for example), the system must notice this and do something reasonable.
Once all the heavy machinery for that is in place, the user interface for "configuring a printer" should go away entirely. The ordinary print dialog can do the work. It might need a "search for more printers" button. But there's no real reason from a user perspective to have to configure printers at all.
We will now hear from the "just edit the /etc/xxx file with 'vi' and send a SIGHUP signal to the daemon" people. You guys are dinosaurs. Give it up.
Yes, one does get the feeling that Wired today is a front for The Sharper Image.
Wearing headphones in a crowded environment gets you run over from behind.
The Alto's computer was a rack-mounted Data General minicomputer with some special microcode. Xexox built the mouse, Ethernet adapter, and CRT, but manufacture of the computer was outsourced.
The real history of the GUI is that the first GUI appeared on the SAGE air defense system. The SAGE pointing device was a light gun. After light guns came light pens and the "RAND tablet", the first tablet input device. Doug Engelbart invented the mouse in the late 1960s, and put together an impressive GUI demo, but he had to tie up an entire mainframe to make it work. The Alto was basically an attempt to squeeze down the technology into a useful size.
Alan Kay referred to the Alto as the "Interim Dynabook". What he had in mind was a laptop. The original Dynabook paper has a picture of a woman sitting on grass using a laptop. It's a cardboard mockup. Todays laptops are less bulky and about a thousand times more powerful than what Kay had in mind. Cheaper, too; Kay wanted to reach the price point of a grand piano. He had a clear vision on the hardware front.
The Xerox PARC approach was to create technology that was futuristic but not cost effective, with the idea that progress in electronics would bring the cost down. That was exactly right.
What wasn't right was the emphasis on closed systems. The PARC idea was that it all should just work, and the end user shouldn't have to worry about how it works. Just like Xerox copiers. Out of this mindset came the Xerox Star, Xerox's commercial product. The Star was a networked word processor/office computer networked to file servers and printers. Think of a computer that runs nothing but Microsoft Office and you'll have the right picture. No user-serviceable parts inside.
That wasn't the way things went. The CP/M - Apple DOS - PCDOS end of computing won out over PARC elegance. Mostly for cost reasons.
The American Bowling Congress, with their promotions that use violent images, is clearly responsible for those deaths. The blood of America's children is on their hands.
For about a year, NSA stopped talking about SELinux. Then one day there was an announcement in the Linux kernel mailing list that SELinux had been updated to the current kernel version and was becoming part of the mainstream kernel.
Now it's mainstream.
GEODSS first came up in 1982. It consisted of four sites (three today, budget cuts) worldwide, each with three 1-meter telescopes. The whole system is computer-run and reports to NORAD automatically. This was the beginning of automated astronomy.
The telescopes scan the whole sky every night, subtract out everything in the star catalog, and report unknown objects. New satellites and space junk are found this way. Even dark objects that occult stars are noted. There's also a more elaborate USAF site on Maui with even bigger computer-controlled telescopes.
Some of the sites have lasers (Maui definitely does) and can illuminate their targets using one telescope while looking at it with another. This allows time-of-flight ranging, photography of dark objects, and determining whether a satellite has cameras. But illumination is only useful for near earth satellites; it doesn't help with asteroid search.
Asteroid search is a spare-time activity of one of the GEODSS sites. They continue their real job for the USAF, looking for anything near the Earth that shouldn't be there.
The GEODSS hardware was updated in 1999, with better sensors, new computers (the 20 racks of PDP-11 hardware had to go), better positioning accuracy, and some infrared capability for working around cloud cover. The original main optics remain in use.
Your tax dollars at work.
Unless the hosting service itself is involved in criminal acts, it is unlawful for the FBI to request a search or seizure of "work product materials possessed by a person reasonably believed to have a purpose to disseminate to the public a newspaper, book, broadcast, or other similar form of public communication, in or affecting interstate or foreign commerce". This includes hosting services; that was established in the Steve Jackson Games case. The service itself, not its users, has to be engaged in criminal activities before search and seizure can take place.
The FBI is usually quite careful about this, having been publicly embarassed in the Steve Jackson Games case. So the question is whether there are criminal charges against the hosting service.
The preemptive kernel work has made the user-space real time variants of Linux, like Hard Hat Linux from MonteVista, more competitive. Vendors now claim worst-case interrupt latencies under 1ms, which is far better than it used to be. But they usually mean interrupt latency for kernel-mode drivers, not response time for user programs. QNX can provide worst case hard real time interrupt response to a user program in well under 1ms. Direct interrupt response is far better. See this benchmark in Dr. Dobbs Journal, demonstrating worst case 8 microsecond (not millisecond) latency over hours of testing on a 200MHz computer.
Linux is getting better at real time. Two years ago it was a joke.
You can download the free version of QNX here. This is for desktop PCs. The cross-compilers and kernels for embedded systems cost money. It's a cute little desktop OS. Even runs Mozilla.
First off, Windows needs to get rid of the 16-bit subsystem. You could run NT 3.51 without the 16-bit subsystem, and I used to do so as early as 1997. In NT 4, there's no obvious way to turn it off, although I'm sure there's some obscure registry key you can alter.
You don't want a version control system to use OS-level primitives like that, if it's going to track renaming, sharing, and unsharing events. The version control system has to do its own namespace management.
Apparently Subversion 1.0 doesn't support "sharing", where the same file appears in more than one place in the source tree. That's a lack. Microsoft SourceSafe does that, and it helps avoid those annoying situations that result in long include paths.
Indeed. Compare the current FCC enforcement page with the enforcement page from a few months ago. Look at what's at the top of "What We Do" in each case.
- an administrative fine from EUR 5 up to EUR 250.000,
- and, in the case that this cannot be collected, administrative detention
or
- administrative detention of up to six months to be enforced in the person of the managing director
in each case of contravention
prohibited
in business relations from claiming and distributing the assertions
as far as such assertions are not proven to be true.
That's clear enough. No more threats by SCO in Germany, or Darl goes to jail.
SCO isn't fighting this. If they had a case, they would.
I felt, though, that they should have gone broadband only. Trying to squeeze the experience through 56Kb is too limiting. In There, 56Kb users can only type to each other. Broadband users can talk.
While only 18% of all US online users are on broadband, 50% of online time and hits are from broadband users. So half the target market for There, heavy users, is already on DSL or cable.