Garbage collection isn't well matched to C++, because C++ has destructors. Reference counting, like Perl and Python, is more appropriate. Microsoft did retrofit garbage collection to C++, in their "Managed C++ for.NET", but the result is horrible. Calling destructors from the garbage collector results in concurrency problems, locking problems, and indeterminism in otherwise deterministic programs. There are even some awful cases in Managed C++ where "re-animation" occurs and a destructor is executed twice.
With reference counts, you get consistent behavior. You do need weak pointers (in the Perl sense, not the Java sense) to make it work. There are "smart pointer" classes for C++ which attempt to do all this, but they all flounder on the problem that at some point, you have to expose a raw pointer to use the object properly. This makes the reference counting system too fragile.
Fixing the "safety problem," as you call it, would involve an increase in execution time.
That's a common belief, because the safe languages we have now are mostly inefficient ones, but it's wrong. Subscript checking is cheap if done right, in the compiler with appropriate optimization, because most subscript checks can be hoisted out of inner loops. This was done in a British Pascal compiler in the 1980s, but I don't have the reference handly.
The problem in C and C++ is that there are too many cases where the compiler doesn't even know how big an array is, so the compiler can't check. If you try to do subscript checking in collection classes, the checking is inefficient because the compiler doesn't know enough to optimize it.
Here's the general idea of how to do it right:
float sumarray(size_t n, float tab[n])/* C99-type array size notation */ { float sum = 0.0; for (size_t i=0; i<n; i++) { sum += tab[i]; } return(sum); }
That code implies a test for i < n at tab[i]. That would seem to add overhead. But if we allow the compiler to hoist checks upwards, that test floats to the top of the FOR statement. We then have the test of the FOR statement, i < n. So we have "i < n implies i < n, as the test, which symbolically evaluates to TRUE at compile time and can be eliminated. The compiler can thus this do this subscript check with zero overhead.
That's how you get safety without overhead.
Certainly there are situations where the checks can't be performed entirely at compile time, but usually, they can be pulled out of an inner loop by standard compiler hoisting and strength reduction techniques. So the overhead is quite low in code hot spots, where it matters.
Note the syntax float sumarray(size_t n, float tab[n]).
That's C99 variable array syntax. Instead of writing float tab[], or worse,
float* tab, you actually give the array length. This doesn't cost anything, because the length isn't actually being passed. It just tells the compiler where the length information is to be found, should it be needed.
At a call to sumarray, checking is also possible. Consider
float tab nums[1000]; ... float tot = sumarray(tab, 1000);
The compiler has the declaration of "sumarray" available, as float sumarray(size_t n, float tab[n]). So, given this, the compiler can check the call. It needs to check that lengthof(tab) >= 1000. No problem there; that can be evaluated at compile time.
I've suggested that C99 array syntax be generalized to give parameters the scope of the entire declaration, allowing float sumarray(float tab[n], size_t n), where n is referenced before its declaration. This allows standard C idioms like int write(int fd, char buf[n], size_t n).
Microsoft R&D is working in this direction for C#. Check out the "Spec#" effort. The trouble with C++ is that the language is so broken that you can't use such technologies.
We had much of this technology working in the early 1980s, but machines were too slow back then to tolerate the compile times.
With the 3000x improvement in CPU speed since then, that's no longer a problem.
The problem with C++ is Stroustrup. Specifically, it's that, as what's now called "C++0x", the next revision, got underway, Strostrup insisted that C++ had no major problems - it just needed some cleanup. This was after a decade of trouble with buffer overflows and related safety issues.
C++ is unique in that it has hiding without safety. No other major language is in that space. C has neither hiding nor safety; Java has hiding with safety, as do almost all languages which postdate C++. This is not fundamental to a compiled language; Modula 2 and 3, and Ada, had hiding with safety. Nor is it related to garbage collection, inherent problems of an efficient, compiled language, or the needs of systems programming. Providing backwards compatibility with C while bolting objects onto the language led to safety issues that were never overcome.
Most of the problems with C stem from the "pointer equals array" model, the basic source of buffer overflow bugs. C doesn't even have a way to talk about the size of array arguments (well, C99 does). Dangling pointers are also a problem but a secondary one. C++ tries to paper this problem over with collections, but far too often, collections have to expose a C pointer to get something done. At that point, size information is lost. Right there is the biggest single problem with C and C++.
The C++ revision committee is dominated by people who want to do l33t things with templates, things nobody will ever do in production code but, they think, are really cool. There's a whole "generic programming" cult of abusing the template mechanism to do computation at compile time. Millions of users suffer from unnecessary program crashes, and the US is more vulnerable to malware and cyber-terrorism because of this focus. It's as if the IEEE committee on power transmission standards was dominated by people who were into making big sparks.
Stroustrup could have insisted on actually fixing the safety problems. But he didn't.
(I'm writing this as someone with over ten years of experience in C++, doing everything from protocol stacks to game physics engines to real-time programming. And after ten years, I'm fed up with the mess. This should have been fixed years ago.)
So we have an press release about a supposed Apple patent. The article doesn't identify the patent or give the patent number. Then we have a blog entry about the press release about the supposed patent. That doesn't identify the patent. Then we have the Slashdot article about the blog entry about the press release. Which doesn't identify the patent either. The end result is a clueless Slashdot article.
The actual patent is US# 5,864,868 (Contois, January 26, 1999), "Computer control system and user interface for media playing devices". The main claim is:
1. A computer user interface menu selection process for allowing the user to select music to be played on a music device controlled by a computer, comprising the steps of:
a) simultaneously displaying on a display device, at least two individual data fields selected from music categories, composers, artists, and songs;
b) selecting at least one item from at least one of the data fields;
c) in response to step b), redisplaying all data fields not having an item selected therefrom with data related only to the at least one item selected in step b), and simultaneously maintaining all items originally displayed in the data fields with at lest one item selected therefrom;
d) selecting an item in the songs data field in response to step c), and
e) playing the selected song item from step d) on the computer responsive music device.
So it's an interface for a specific format of playlist interaction. Some players might have to change their interfaces a bit. Big deal.
Wikipedia's problem is bloat. Most of the articles about anything important were created before article 500,000. At 1.5 million, most of the articles are junk.
It's bottom-feeder stuff now.
Popular culture is a significant problem. There are far too many Star {Wars|Trek|Gate} articles. There's a Wikipedia article for every Star Wars comic book. For a while, someone was trying to create one for each character in each story in each comic book, but that was beaten back.
Then there's the ongoing effort to put every musical composition available in Wikipedia. A wiki is the wrong tool for that job. CDDB/Gracenote and IMDB have real databases for that sort of information, with useful linking and searching, but Wikipedia doesn't have the structure for that.
Wikipedia bloat impacts quality. It takes a huge number of contributors just to undo vandalism and clean up messes. Those contributors are now stuck cleaning up a mountain of dreck. They're falling behind.
That's hard on a volunteer effort. There are a few editors for whom Wikipedia is their day job, but the only one known to be full time is a political lobbyist.
The thing just isn't staffed to deal with all the dreck.
Back when Rudy Giuliani was a US attorney and the FBI was taking down the New York Mafia, the FBI had wiretaps put in by New York Telephone. These were all billed to the FBI as leased lines, and the FBI had a leased line bill of over a million dollars a year. This was a real budget problem for them; they weren't budgeted for that kind of thing.
One month, the FBI didn't pay one of their leased line bills. New York Telephone's billing software dealt with the problem by billing the other end of the leased line. By sending a bill to the party being wiretapped.
That episode was what got the FBI into lobbying for CALEA.
What idiot at Apple put a giant hole like this in?
An automatic URL loads as a movie is playing at the exact frame specified by a text descriptor timestamp in the HREF track. With automatic URLs, you can create a narrated tour of a website, use web pages as slides in a presentation, activate a JavaScript command, or do anything else that requires loading movies or web pages in a predetermined sequence.
That's got to come out of Quicktime players. They're a huge security hole now. That's just unacceptable.
SCO's stock went into a screaming dive today. It's down 40% today on heavy trading, about 20x the normal volume. The mainstream business press has picked up the story, and, this time, there's no ambiguity.
"SCO Gets TKO'ed" - Forbes "The judges seem to be growing frustrated with SCO. For years, the company has gone around making outlandish claims--including many to Forbes--about IBM stealing huge amounts of code from Unix. Yet SCO has never shown any evidence to back up its claims."
"Investors Abandon SCO" "Investors fled SCO Group's stock on Friday, voting with their feet after a federal judge gutted its lawsuit against IBM. "
Forbes seems to have really had it with SCO. Much of SCO's early FUD appeared in Forbes articles, which now makes Forbes look bad.
Some months back, I saw some people working on the phone lines outside my house. They knocked off my DSL connection, so I went out to see what they were doing.
They didn't have an SBC truck, so I asked to see their ID. Classically, telcos were very careful about issuing picture IDs to all employees authorized to meet the public or work on plant. There's even a notice in most telephone directories about it, telling customers that all telephone employees are required to carry a telco photo ID.
They didn't have SBC IDs. So I called SBC repair service via a cell phone. They didn't have a clue. So I called 911 and had the local cops come out. They ask the guys for phone company ID, and the techs don't have it. Twenty minutes of confusion as the techs and the cops are calling various parties.
Turned out that SBC had quietly been "outsourcing" some routine outside plant work, and had been sloppy about issuing credentials to the outsourcing contractor. Tied up four techs and two cops for half an hour to straighten that out.
That's what happens when you do it right. Annoys everybody.
This is a problem with anything that focuses on winning, rather than doing good work.
Winning is inherently inefficient in an economic sense. The inputs required increase until resources are saturated, rather than stopping at the point of maximum cost-effectiveness. This has serious financial implications in a marketing-oriented culture. Classical economic theory is predicated on the assumption that the cost of production dominates the cost of goods. But, in fact, there are many goods where marketing cost now dominates. Telephone service, for example. The result is frantic overmarketing efforts to achieve a monopoly, in hopes that then, finally, it will be possible to raise prices and make some money.
Jock culture has the same issues. If you play to win, playing becomes all-consuming. In pro sports, that's been the case for decades. It's a modern phenomenon, created by TV. Pre-TV, local teams had roughly the same revenues, win or lose. Today, winning boosts revenues and matters economically. The big sports used to have off-seasons. Now, players train year round. The Olympics was once an "amateur" event, but that hasn't been true in a long time.
Now that you can make money in an MMORPG, that bit of economics intrudes there. And it doesn't matter if you're playing for money; as long as some people are, you have to play as well to stay in the game.
Again, this is a relatively modern concept. Rent The Hustler, which is about pool halls and pool sharks. Modern viewers find it wierd that anyone would consider it unfair for a really good player to win over the sort-of-good players. That's life, right? But the dynamics in that movie are different; the pool shark is attacked and crippled for being a winner. The movie views this somewhat favorably. That seems so strange today.
The implications of winner-take-all culture are insidious. Watch for them.
Modern magnets are so powerful there are real hazards. When magnets were iron or,
at the high end, AlNiCo, they couldn't retain a strong enough field to make much trouble, so people thought of magnets as safe. Neodymium magnets, though, can be made strong enough to be dangerous.
The Magnetix building set killed several kids when magnets came loose from the plastic parts and were ingested. The CPSC had to order a recall.
That's a deceptive misquote of the statute, which actually reads
This chapter supersedes any statute, regulation, or rule of a
State or political subdivision of a State that expressly regulates
the use of electronic mail to send commercial messages,
except to the extent that any such statute, regulation,
or rule prohibits falsity or deception in any portion of a
commercial electronic mail message or information attached
thereto.
The judge then took a narrow view of that language. His reading of the CAN-SPAM act is that "falsity or deception" above must rise to the level of a tort, and that the false information must constitute a "material deception". He then looks at the language of the CAN-SPAM act's criminal provisions, which prohibit the initiation of a "transmission to a protected computer of a
commercial electronic mail message if such person has actual knowledge,
or knowledge fairly implied on the basis of objective circumstances,
that a subject heading of the message would be likely to
mislead a recipient, acting reasonably under the circumstances, about
a material fact regarding the contents or subject matter of the message". Applying that language to divine the intent of Congress, the judge then rules that deceptive material in a spam e-mail must be believed by the recipient, and about a material fact, to be actionable.
Now, given the facts in this case, that's not totally unreasonable. The e-mails bore a return address of "cruisedeals@cruise.com", which was non-functional. But the messages were, in fact, advertising "cruise.com" and were in fact initiated by the operators of "cruise.com". So this is not an anonymous spammer.
This is key. The CAN-SPAM act protects spammers who properly identify themselves. (Those are today routinely caught by spam filters.) That was the clear intent of Congress, based on lobbying by the Direct Marketing Association. There was no willful obfusication by the sender here; it was clear that "cruise.com" was behind all this.
This decision doesn't provide any relief for anonymous spammers and scammers.
More rugged products are available.
on
Why Do Gadgets Break?
·
· Score: 2, Informative
There's good hardware out there. You can buy more rugged phones, especially for Nextel's network. The Motorola i530 meets the MIL-STD-810F ruggedness specification. It has all the usual stuff (camera, Bluetooth, web browser, etc.), it's much tougher than most phones, it's about the same price as most phones, and it's not much thicker. Available in black or bright yellow.
Shuttle PCs, the little breadbox units, are very well made mechanically, with good internal rigidity, support for cards on multiple sides, and a liquid cooling heat pipe system that really works in high ambient temperature environments.
This is an old idea, and it's usually not worth the trouble. The paper says they achieved a 2% energy saving with the system, and might get 4% with improvements. Not a big deal. If the hull jets crud up and have to be cleaned or replaced, the costs of doing that will eat up the savings.
If somebody gets this up to 20% or so, it might start to pay off, but at 2-4%, no.
No. Fifty years, period. That's all the TRIPS agreement (the WTO's requirement for national copyright laws) requires. If you haven't invested your fifty years of royalties, tough.
Now we have to push for "copyright harmonization" in the US to cut back US copyright to the TRIPS standards. It's time for the Copyright Term Reduction Act.
Fifty years and it's free. It's a law we can live with.
It's all data, no action. You can query the 'fridge, but you can't order food and have it show up in the fridge. Combine Webvan with a pass-through refrigerator the delivery service can access, and you'd have something. Maybe even within-building robotic delivery, which would work for apartment blocks.
There's no automated cleaning. iRobot's Roomba vacuum is a joke, but there are units around $2000 that almost work. Get those into production. An apartment that cleans itself while you're out would actually be useful.
The computer-in-the-fridge thing and the control-via-power-outlet thing have been done to death over the last decade. They're just not that useful.
The big thing in building control today is Demand Control Ventilation. Instead of thermostats, you have little sensor boxes that sense temperature, humidity, CO2, CO, and air pressure. Crunching on that data, the HVAC system works to maintain a comfortable environment at minimum cost. When CO2 is no higher than outdoor ambient, the room is empty and airflow can be cut way down. When the number of people in the room increases, the higher CO2, temperature, and humidity readings cause the HVAC system to be cranked up accordingly. Of course, you also have a sensor at the outside air intake, so the system knows when to use outside air and when to recirculate. There's also the little trick of watching the air pressure as the fan speed changes. If the indoor air pressure doesn't change with fan speed, there's a door or window open, and the HVAC system shouldn't try too hard to fight that.
Releasing nanoparticles of an elemental metal into water may not be a good idea. Unless there's some chemical or biological process in the ecosystem that reliably prevents this stuff from building up over time, it's not good.
The form of the tubes matters. Toxicity comes from the loose carbon bonds at the ends. This can't be treated casually; it needs to be better understood.
At first I thought this was something for transmitting MP3 files around, but it's just a low-power FM audio transmitter to transmit to nearby FM radios. Those things have been around for decades, all the way back to 8-track players and drive-in movie theaters. All the TVs at my gym have one, transmitting on different frequencies.
If you're in a major metropolitan area where all the FM broadcast slots are in use, you may not have much success with one of these things.
Garbage collection isn't well matched to C++, because C++ has destructors. Reference counting, like Perl and Python, is more appropriate. Microsoft did retrofit garbage collection to C++, in their "Managed C++ for .NET", but the result is horrible. Calling destructors from the garbage collector results in concurrency problems, locking problems, and indeterminism in otherwise deterministic programs. There are even some awful cases in Managed C++ where "re-animation" occurs and a destructor is executed twice.
With reference counts, you get consistent behavior. You do need weak pointers (in the Perl sense, not the Java sense) to make it work. There are "smart pointer" classes for C++ which attempt to do all this, but they all flounder on the problem that at some point, you have to expose a raw pointer to use the object properly. This makes the reference counting system too fragile.
Fixing the "safety problem," as you call it, would involve an increase in execution time.
That's a common belief, because the safe languages we have now are mostly inefficient ones, but it's wrong. Subscript checking is cheap if done right, in the compiler with appropriate optimization, because most subscript checks can be hoisted out of inner loops. This was done in a British Pascal compiler in the 1980s, but I don't have the reference handly.
The problem in C and C++ is that there are too many cases where the compiler doesn't even know how big an array is, so the compiler can't check. If you try to do subscript checking in collection classes, the checking is inefficient because the compiler doesn't know enough to optimize it.
Here's the general idea of how to do it right:
That code implies a test for i < n at tab[i]. That would seem to add overhead. But if we allow the compiler to hoist checks upwards, that test floats to the top of the FOR statement. We then have the test of the FOR statement, i < n. So we have "i < n implies i < n, as the test, which symbolically evaluates to TRUE at compile time and can be eliminated. The compiler can thus this do this subscript check with zero overhead.
That's how you get safety without overhead.
Certainly there are situations where the checks can't be performed entirely at compile time, but usually, they can be pulled out of an inner loop by standard compiler hoisting and strength reduction techniques. So the overhead is quite low in code hot spots, where it matters.
Note the syntax float sumarray(size_t n, float tab[n]). That's C99 variable array syntax. Instead of writing float tab[], or worse, float* tab, you actually give the array length. This doesn't cost anything, because the length isn't actually being passed. It just tells the compiler where the length information is to be found, should it be needed.
At a call to sumarray, checking is also possible. Consider
The compiler has the declaration of "sumarray" available, as float sumarray(size_t n, float tab[n]). So, given this, the compiler can check the call. It needs to check that lengthof(tab) >= 1000. No problem there; that can be evaluated at compile time.I've suggested that C99 array syntax be generalized to give parameters the scope of the entire declaration, allowing float sumarray(float tab[n], size_t n), where n is referenced before its declaration. This allows standard C idioms like int write(int fd, char buf[n], size_t n).
Microsoft R&D is working in this direction for C#. Check out the "Spec#" effort. The trouble with C++ is that the language is so broken that you can't use such technologies.
We had much of this technology working in the early 1980s, but machines were too slow back then to tolerate the compile times. With the 3000x improvement in CPU speed since then, that's no longer a problem.
C# isn't bad as a language, but it's Microsoft-only and too closely tied to Microsoft's run-time environment, which is too limiting.
The problem with C++ is Stroustrup. Specifically, it's that, as what's now called "C++0x", the next revision, got underway, Strostrup insisted that C++ had no major problems - it just needed some cleanup. This was after a decade of trouble with buffer overflows and related safety issues.
C++ is unique in that it has hiding without safety. No other major language is in that space. C has neither hiding nor safety; Java has hiding with safety, as do almost all languages which postdate C++. This is not fundamental to a compiled language; Modula 2 and 3, and Ada, had hiding with safety. Nor is it related to garbage collection, inherent problems of an efficient, compiled language, or the needs of systems programming. Providing backwards compatibility with C while bolting objects onto the language led to safety issues that were never overcome.
Most of the problems with C stem from the "pointer equals array" model, the basic source of buffer overflow bugs. C doesn't even have a way to talk about the size of array arguments (well, C99 does). Dangling pointers are also a problem but a secondary one. C++ tries to paper this problem over with collections, but far too often, collections have to expose a C pointer to get something done. At that point, size information is lost. Right there is the biggest single problem with C and C++.
The C++ revision committee is dominated by people who want to do l33t things with templates, things nobody will ever do in production code but, they think, are really cool. There's a whole "generic programming" cult of abusing the template mechanism to do computation at compile time. Millions of users suffer from unnecessary program crashes, and the US is more vulnerable to malware and cyber-terrorism because of this focus. It's as if the IEEE committee on power transmission standards was dominated by people who were into making big sparks.
Stroustrup could have insisted on actually fixing the safety problems. But he didn't.
(I'm writing this as someone with over ten years of experience in C++, doing everything from protocol stacks to game physics engines to real-time programming. And after ten years, I'm fed up with the mess. This should have been fixed years ago.)
So we have an press release about a supposed Apple patent. The article doesn't identify the patent or give the patent number. Then we have a blog entry about the press release about the supposed patent. That doesn't identify the patent. Then we have the Slashdot article about the blog entry about the press release. Which doesn't identify the patent either. The end result is a clueless Slashdot article.
The actual patent is US# 5,864,868 (Contois, January 26, 1999), "Computer control system and user interface for media playing devices". The main claim is:
1. A computer user interface menu selection process for allowing the user to select music to be played on a music device controlled by a computer, comprising the steps of:
a) simultaneously displaying on a display device, at least two individual data fields selected from music categories, composers, artists, and songs;
b) selecting at least one item from at least one of the data fields;
c) in response to step b), redisplaying all data fields not having an item selected therefrom with data related only to the at least one item selected in step b), and simultaneously maintaining all items originally displayed in the data fields with at lest one item selected therefrom;
d) selecting an item in the songs data field in response to step c), and
e) playing the selected song item from step d) on the computer responsive music device.
So it's an interface for a specific format of playlist interaction. Some players might have to change their interfaces a bit. Big deal.
Wikipedia's problem is bloat. Most of the articles about anything important were created before article 500,000. At 1.5 million, most of the articles are junk. It's bottom-feeder stuff now.
Popular culture is a significant problem. There are far too many Star {Wars|Trek|Gate} articles. There's a Wikipedia article for every Star Wars comic book. For a while, someone was trying to create one for each character in each story in each comic book, but that was beaten back.
Then there's the ongoing effort to put every musical composition available in Wikipedia. A wiki is the wrong tool for that job. CDDB/Gracenote and IMDB have real databases for that sort of information, with useful linking and searching, but Wikipedia doesn't have the structure for that.
Wikipedia bloat impacts quality. It takes a huge number of contributors just to undo vandalism and clean up messes. Those contributors are now stuck cleaning up a mountain of dreck. They're falling behind.
That's hard on a volunteer effort. There are a few editors for whom Wikipedia is their day job, but the only one known to be full time is a political lobbyist. The thing just isn't staffed to deal with all the dreck.
Start the video at 00:34 to avoid the blithering asshat.
Who pays for the airtime?
Back when Rudy Giuliani was a US attorney and the FBI was taking down the New York Mafia, the FBI had wiretaps put in by New York Telephone. These were all billed to the FBI as leased lines, and the FBI had a leased line bill of over a million dollars a year. This was a real budget problem for them; they weren't budgeted for that kind of thing.
One month, the FBI didn't pay one of their leased line bills. New York Telephone's billing software dealt with the problem by billing the other end of the leased line. By sending a bill to the party being wiretapped.
That episode was what got the FBI into lobbying for CALEA.
What idiot at Apple put a giant hole like this in?
An automatic URL loads as a movie is playing at the exact frame specified by a text descriptor timestamp in the HREF track. With automatic URLs, you can create a narrated tour of a website, use web pages as slides in a presentation, activate a JavaScript command, or do anything else that requires loading movies or web pages in a predetermined sequence.
That's got to come out of Quicktime players. They're a huge security hole now. That's just unacceptable.
Your 1km time today: 6:31
Last week: 6:28
You need Red Bull!
SCO's stock went into a screaming dive today. It's down 40% today on heavy trading, about 20x the normal volume. The mainstream business press has picked up the story, and, this time, there's no ambiguity.
Forbes seems to have really had it with SCO. Much of SCO's early FUD appeared in Forbes articles, which now makes Forbes look bad.
Some months back, I saw some people working on the phone lines outside my house. They knocked off my DSL connection, so I went out to see what they were doing. They didn't have an SBC truck, so I asked to see their ID. Classically, telcos were very careful about issuing picture IDs to all employees authorized to meet the public or work on plant. There's even a notice in most telephone directories about it, telling customers that all telephone employees are required to carry a telco photo ID.
They didn't have SBC IDs. So I called SBC repair service via a cell phone. They didn't have a clue. So I called 911 and had the local cops come out. They ask the guys for phone company ID, and the techs don't have it. Twenty minutes of confusion as the techs and the cops are calling various parties.
Turned out that SBC had quietly been "outsourcing" some routine outside plant work, and had been sloppy about issuing credentials to the outsourcing contractor. Tied up four techs and two cops for half an hour to straighten that out.
That's what happens when you do it right. Annoys everybody.
It's so much fun when you have your foot on the other guy's air hose.
This is a problem with anything that focuses on winning, rather than doing good work.
Winning is inherently inefficient in an economic sense. The inputs required increase until resources are saturated, rather than stopping at the point of maximum cost-effectiveness. This has serious financial implications in a marketing-oriented culture. Classical economic theory is predicated on the assumption that the cost of production dominates the cost of goods. But, in fact, there are many goods where marketing cost now dominates. Telephone service, for example. The result is frantic overmarketing efforts to achieve a monopoly, in hopes that then, finally, it will be possible to raise prices and make some money.
Jock culture has the same issues. If you play to win, playing becomes all-consuming. In pro sports, that's been the case for decades. It's a modern phenomenon, created by TV. Pre-TV, local teams had roughly the same revenues, win or lose. Today, winning boosts revenues and matters economically. The big sports used to have off-seasons. Now, players train year round. The Olympics was once an "amateur" event, but that hasn't been true in a long time.
Now that you can make money in an MMORPG, that bit of economics intrudes there. And it doesn't matter if you're playing for money; as long as some people are, you have to play as well to stay in the game.
Again, this is a relatively modern concept. Rent The Hustler, which is about pool halls and pool sharks. Modern viewers find it wierd that anyone would consider it unfair for a really good player to win over the sort-of-good players. That's life, right? But the dynamics in that movie are different; the pool shark is attacked and crippled for being a winner. The movie views this somewhat favorably. That seems so strange today.
The implications of winner-take-all culture are insidious. Watch for them.
This is the hangover from Extreme Programming and downsizing. Welcome to deferred costs.
Modern magnets are so powerful there are real hazards. When magnets were iron or, at the high end, AlNiCo, they couldn't retain a strong enough field to make much trouble, so people thought of magnets as safe. Neodymium magnets, though, can be made strong enough to be dangerous. The Magnetix building set killed several kids when magnets came loose from the plastic parts and were ingested. The CPSC had to order a recall.
That's a deceptive misquote of the statute, which actually reads
This chapter supersedes any statute, regulation, or rule of a State or political subdivision of a State that expressly regulates the use of electronic mail to send commercial messages, except to the extent that any such statute, regulation, or rule prohibits falsity or deception in any portion of a commercial electronic mail message or information attached thereto.
The judge then took a narrow view of that language. His reading of the CAN-SPAM act is that "falsity or deception" above must rise to the level of a tort, and that the false information must constitute a "material deception". He then looks at the language of the CAN-SPAM act's criminal provisions, which prohibit the initiation of a "transmission to a protected computer of a commercial electronic mail message if such person has actual knowledge, or knowledge fairly implied on the basis of objective circumstances, that a subject heading of the message would be likely to mislead a recipient, acting reasonably under the circumstances, about a material fact regarding the contents or subject matter of the message". Applying that language to divine the intent of Congress, the judge then rules that deceptive material in a spam e-mail must be believed by the recipient, and about a material fact, to be actionable.
Now, given the facts in this case, that's not totally unreasonable. The e-mails bore a return address of "cruisedeals@cruise.com", which was non-functional. But the messages were, in fact, advertising "cruise.com" and were in fact initiated by the operators of "cruise.com". So this is not an anonymous spammer.
This is key. The CAN-SPAM act protects spammers who properly identify themselves. (Those are today routinely caught by spam filters.) That was the clear intent of Congress, based on lobbying by the Direct Marketing Association. There was no willful obfusication by the sender here; it was clear that "cruise.com" was behind all this.
This decision doesn't provide any relief for anonymous spammers and scammers.
There's good hardware out there. You can buy more rugged phones, especially for Nextel's network. The Motorola i530 meets the MIL-STD-810F ruggedness specification. It has all the usual stuff (camera, Bluetooth, web browser, etc.), it's much tougher than most phones, it's about the same price as most phones, and it's not much thicker. Available in black or bright yellow.
Shuttle PCs, the little breadbox units, are very well made mechanically, with good internal rigidity, support for cards on multiple sides, and a liquid cooling heat pipe system that really works in high ambient temperature environments.
You don't have to buy the crap.
Bypassing the blogodreck, here's the actua paper.
This is an old idea, and it's usually not worth the trouble. The paper says they achieved a 2% energy saving with the system, and might get 4% with improvements. Not a big deal. If the hull jets crud up and have to be cleaned or replaced, the costs of doing that will eat up the savings.
If somebody gets this up to 20% or so, it might start to pay off, but at 2-4%, no.
No. Fifty years, period. That's all the TRIPS agreement (the WTO's requirement for national copyright laws) requires. If you haven't invested your fifty years of royalties, tough.
Now we have to push for "copyright harmonization" in the US to cut back US copyright to the TRIPS standards. It's time for the Copyright Term Reduction Act.
Fifty years and it's free. It's a law we can live with.
Look at the coverage map. They've just wired a few small cities alongside I-15. They don't even have service in Salt Lake City.
It's all data, no action. You can query the 'fridge, but you can't order food and have it show up in the fridge. Combine Webvan with a pass-through refrigerator the delivery service can access, and you'd have something. Maybe even within-building robotic delivery, which would work for apartment blocks.
There's no automated cleaning. iRobot's Roomba vacuum is a joke, but there are units around $2000 that almost work. Get those into production. An apartment that cleans itself while you're out would actually be useful.
The computer-in-the-fridge thing and the control-via-power-outlet thing have been done to death over the last decade. They're just not that useful.
The big thing in building control today is Demand Control Ventilation. Instead of thermostats, you have little sensor boxes that sense temperature, humidity, CO2, CO, and air pressure. Crunching on that data, the HVAC system works to maintain a comfortable environment at minimum cost. When CO2 is no higher than outdoor ambient, the room is empty and airflow can be cut way down. When the number of people in the room increases, the higher CO2, temperature, and humidity readings cause the HVAC system to be cranked up accordingly. Of course, you also have a sensor at the outside air intake, so the system knows when to use outside air and when to recirculate. There's also the little trick of watching the air pressure as the fan speed changes. If the indoor air pressure doesn't change with fan speed, there's a door or window open, and the HVAC system shouldn't try too hard to fight that.
Releasing nanoparticles of an elemental metal into water may not be a good idea. Unless there's some chemical or biological process in the ecosystem that reliably prevents this stuff from building up over time, it's not good.
It's a real problem. Carbon nanotubes are both toxic and non-biodegradable. Yet their Material Safety Data Sheet doesn't recognize this at all.
The form of the tubes matters. Toxicity comes from the loose carbon bonds at the ends. This can't be treated casually; it needs to be better understood.
At first I thought this was something for transmitting MP3 files around, but it's just a low-power FM audio transmitter to transmit to nearby FM radios. Those things have been around for decades, all the way back to 8-track players and drive-in movie theaters. All the TVs at my gym have one, transmitting on different frequencies.
If you're in a major metropolitan area where all the FM broadcast slots are in use, you may not have much success with one of these things.
He's BAACK! Roland the Plogger, at it again, flogging his blog.