I'd like to see a lot of those things exactly. Generics are coming in the next java version, I think 1.5. It started out as a research project apart from Sun, named Pizza or maybe it was GJ (Generic Java), and then got folded in. Sun definately needs to relinquish more control to its community process.
Many of the features you describe could still be done by compiling a Java++ superset language into the same bytecode or by translating to java code, like AT&T's cfront did for the original C++. The native-only stuff could be done directly on the byte code, or using something like GCJ to optimize java/java++ to machine code. Way back in java 1.0, SGI had a tool called javat which did almost that. It translated bytecode into machine code, but was not good at optimizing it. That's where GCJ/GCC would be very handy, since there's a full optimizing compiler in it. But my point is that these examples could still be done with the existing Java VM architecture. Language features, alternative syntaxes, and optimizers don't require reimplementing everything from scratch. IBM's jikes compiler is a very fast java compiler (written in C/C++) that adheres strictly to the Sun specifications, but it is buggy as hell. Reimplementing these things is not trivial.
Anyway, I agree that rapid innovation is definately easiest when all the source is available. Mozilla, Linux, and emacs (in the 90's) are great examples of that. Rapid innovation is great for applications because the end-users can benefit immediately, and if something changes, then they can change their habits.
However, for languages and APIs, standardization is very important. Many things depend on them: Documentation, applications, example code, tutorials, third-party books, training seminars, university courses, etc. which are all in the realm of developers. Developers suffer when source trees, APIs, or software practices become needlessly fractured. HTML and the Netscape/Internet Explorer browser wars is a great example of how web developers were saddled with two camps of HTML and zillions of incompatible dialects and implementations. We are still burdened by incompatibilities from those rapid innovation cycles.
My ideal scenario would be that I could take JAR files from GNU, Apache, Borland, Oracle, IBM, etc. and mix them together and get an optimized precompiled (maybe native-only) executable. But some standardization mechanism is needed so they can all talk to each other, (unlike the horrible linking incompatibilities between all C++ compilers). It doesn't have to be Sun; maybe it could be Sun/IBM/ECMA/ANSI. But it will likely be some company, since non-profit standards bodies usually move very slowly. Linux, for instance, has been standardized for the corporate world by RedHat primarily, not the UnitedLinux group or even Linus (who's focus is the kernel).
The important consideration is that there is a limited set of developer resources, even with thousands of open-source community eyeballs.
Microsoft is the prime competitor to java, and Sun, IBM, Apple, etc are not. They are closer to being corporate resources and allies. As long as they remain good supporters of a unified java and don't create obstacles to the future use of these APIs/VMs, then I don't see why we shouldn't use them as resources, and thereby build upon their work instead of duplicating it.
I think Eclipse is pretty damn good. If it could be sped up by precompiling critical parts using GCJ, and integrating with any good Java VM, then that would be great. However, reimplementing the entire (Java) API using "Free" code seems like an extraordinary waste of effort. Realistically, there would always be some mismatch between the official API and the free version, meaning that the Java API would be forked in a subtle way. That benefits Microsoft immensely.
I think that the Java libraries will be very difficult to control fully by Sun, because they do not have IBM and Oracle to push around. IBM will absolutely not be backed into a corner by one of their main competitors in hardware, Sun. Because of that, I'm not worried about the Java APIs turning into a controlled arena, as Microsoft has done with Windows.
Basically, I think the effort of the Open Source community, of those that like Java, would be much pretty spent on making GCJ integrate seemlessly with a compliant Java VM using JNI. GCJ could used to make a just-of-time optimizer. With C# and dotNet, I think there's an ahead-of-time compiler instead of a just-in-time compiler that can optimize the byte code for the target machine. Using GCJ/GCC, one could get that sort of performance boost, almost for free, if it were plugged into a compliant Java VM, meaning that it could integrate with DLL/DSOs using the Java Native Interface.
Anyway, I, for one, would probably not waste my time using a slightly out-of-date API, on a slightly behind-the-curve VM or compiler.
(BTW, I'm a heavy user of emacs, perl, mozilla, etc.) The java API, language and VM still has a LOT of room for improvement. I hope developers would rather innovate and improve the java standard than to fork off a clone.
Some of it could be done. I was very unimpressed with the video scrubing stuff that Cruise was doing (to decipher the precogs visions). He was wearing gloves that emitted lights. Using merely 2 cameras (but probably more), it would be EASY, even trivial, to determine where the hands are in space and how they are oriented by tracking the lights on the gloves. That could be done TODAY, and is done today in motion capture (MOCAP) setups for special effects work. One MOCAP company, Vicon, does something similar, using white ping-pong balls on black outfits and an array of cameras.
But fifty years in the future, even 10 years hence for some cases, one would not need special gloves or such obvious markers. Computer vision should certainly be able to track subtle hand movements in 3-D space, as well as facial expressions.
The rest of the video scrubing stuff just looked like advanced Avid nonlinear editing software. Now, the AI in Blade Runner and 2001 is still way, way cutting edge, perhaps beyond our lifetimes, assuming average body mileage.
Reputation over popularity
on
Google's new toys
·
· Score: 3, Insightful
I think you are being over-optimistic. Google or any other search engine is NOT going to replace most of the sites you mentioned. It seems to me that you are relying on at least 2 major assumptions:
(1) Cheaper will always win.
(2) More info is always better.
But in both shopping and in information, for me at least, trust and reputation matters a lot. For shopping, I'll spend a few bucks more by getting something from Amazon, or Dell, or Apple, or Toyota, because I've been screwed by getting cheaper alternatives. My time and lack of aggravation matter a lot more to me. I'm very wary of trying new brands, especially for anything online.
As for information, reputation and editors matter a lot. Google and any other sort of collaborative filtering depend primarily on mass voting or popularity; but credibility is a nuanced thing. Many national online newspapers might be highly ranked according to Google, but when I see a news headline, I want to know what the point-of-view of the news source is, and not just that it is popular. After all, if popularity mattered above all, Britney Spears would be winning all the Grammys, and Jerry Springer would be winning the Emmys.
I use Google news all the time, but I find that it gives a lot of very obscure news sites. Even Slashdot appears in the headlines, and Slashdot is very highly biased opinion and discussion, NOT news. Basically I use Google news to find and scan for headlines, but invariably I only spend my time on a few trusted news sources. For any other unknown site, I always have to check out the site to determine their bias and credibility. I don't have the spare cognitive cycles to waste on sites that are spinning an unknown agenda.
Basically my point is that news site quality and merchant reputation matter a great deal, and portals like Yahoo or pseudo-portals Google still rely on the human-directed quality control. They are an important part of an information eco-system, as aggregators or popularity filters, but they are not the gatekeepers or the final word.
What you describe is basically what is done for Command-and-Control speech systems. Grammars are built that try to describe all the possible ways that a user might say something. The problem is that it is very difficult to try to predict all the ways that people say things. Transcripts of people making commands can help, but there will still be lots of misses. e.g. "(I need gas)|(I'm outta gas)|(The tank is (almost)? dry|empty). (Where do I get some)|(Where's the closest station|Shell|Amoco)?" The choices multiply quickly, so today, you still need some help from the person to keep it simple and predictable.
It's especially difficult because people fragment their sentences, use pronouns (to refer to previous sentence fragments), use pauses, corrections, etc. and the grammar has to accomodate that, in most of today's systems. The more ways that the computer has to deal with, the harder it is to recognize, and the worse the accuracy.
I think the best speech recognition systems are hybrid Hidden Markov Model-Artificial Neural Network systems. The guy from the Swiss research lab, Bourlard, that just claimed that the latest Bin Laden tape could be a fake, is one of the originators of the hybrid approach, I think. The ANN does phoneme (or actually a smaller unit called a phone) recognition and those hypotheses are fed to an HMM that has the language model trained into it.
Also neural networks are algorithms, and actually most neural networks (by far) are 3 layer feedforward networks, with 1 input layer (for basically one slice of the speech spectrogram), 1 hidden layer and 1 output layer with a node for each hypothesis phone(me). The hidden and output layers have nonlinear activations. They are a mega-bitch to train because of the nonlinearity and they usually converge to non-global error minima. There are many ways to train an ANN, and most are iterative with random initial conditions, so that's why they are not algorithmically optimal.
But to run online, they are fast and deterministic (i.e. the non-recurrent variety), and can be done in a few lines of Matlab or page of C code.
Don't get your hopes up. There's still LOTS of corruption, especially with anything related to the bureacracy, regardless of the good intentions. I'm Indian, born there and raised here since I was 2. Our friends here and relatives there say that if
want to help some cause, do it yourself or
through a trusted NGO, but not through the
government.
Things are much better now, having improved over
the last 2 decades because of business reforms, but there's still a long way to go. So essentially, a company,
or any multi-national, could probably still make
lot of headway by buying off the right decision
makers.
The primary advantage that OSS has is primarily cost and the fuzzy feel-good mission of it. But they are pragmatists, so if the world wants MSFT, then they will oblige, especially if MSFT can
make concessions.
China has a much better shot of escaping the clutches of MSFT, because they benefit, ironically, from being authoritarian (or whatever
they've morphed into today). The Chinese government
mandate to pursue OSS is probably more effective
than the advocacy or advice of some groups in India. Because in the end, Indian software developers are free to pursue their business interests, just like American ones, so many will engage MSFT because of that.
It seems to me that if Microsoft can charge for enhanced security, then they are admitting that their non-enhanced versions are partially defective. From a legal standpoint, it sounds like they would be culpable for such security defects in their non-security enhanced versions, because they cannot then claim that such defects are intrinsic to the complexity of their software itself, and they cannot claim that they just didn't know how to fix it.
On the other hand, if a third-party adds security features, that company can claim that they have found ways to secure Windows, which Microsoft was not able to do.
I'm not a lawyer, but it seems that charging for security enhancement would be like charging extra for a car with a working airbag, instead of a cheaper model that works maybe 80% of the time.
How would this compare to a warranty on consumer products? It seems like a warranty is just like insurance, because you get cheaper repairs in case something goes wrong. Is this applicable to software?
BTW, I'm asking a legal question, not a ethical business question.
I just went to my eye doctor last week and asked about Lasik. HE wouldn't even recommend because he thought there was not enough case work on long term effects of Lasik. He was concerned about possible long-term corneal degeneration risks, since Lasik cuts away part of your cornea.
OTOH, I had previously thought that the biggest problem would be that some patients experience "halo" effects, especially at night. He said that was mainly due to other techniques based on RK, but not so much with Lasik.
BTW, as an optometrist, he was offered Lasiks for free, for himself, but didn't take it for these reasons.
I understood this as your point. I'm just suggesting that the overall efficiency of energy conversion is not the only proper metric. Another aspect is indeed the pollution produced to convert the energy, but even beyond that is the cost and energy to clean up the pollutants and where it happens.
For example, CO2 released deep underwater is not nearly as harmful as CO2 released near the surface. But the CO2 in the air is far more harmful. So the total CO2 (or other pollutants) output of a process is not the only consideration. For example, if hypothetically coal could produce energy in the form of hydrogen as an efficiency rate of only 10%, but could be done VERY cheaply and especially VERY cleanly to the air, then the net CO2 output to the air itself would be smaller than the net-output-to-the-air of CO2 from cars (or other energy consumer).
I don't know details about power production, but my father is an engineer that worked on modifying power plants to "scrub" pollutants from the factory emissions to comply with federal regulations. That was regarding ancient plants, but modern CO2 producing plants are far cleaner and more efficient to begin with.
But briefly, the emissions/pollutants of a chemical process don't go directly into the air. They are post-processed significantly. The degree that they are cleaned of course affects the overall efficiency and cost. But it's easier to upgrade the processes and reduce these cleanup costs centrally in a plant, than in a more distributed manner on the open road, as is done now, with catalytic converters on modern cars.
Fuel cells produce water when they are USED on the road in the open air. The hydrogen or other fuel could be produced anywhere, e.g. in a plant where the contaminants could be contained or scrubed somehow.
I would think that it's far easier and far more efficient to catch CO2 from the stacks of coal/oil/natural gas plant, than from the exhausts of hundreds of thousands of cars.
So even if the conversion of other energy to hydro fuel is difficult or polluting, the pollutants are much more easily contained.
A lot of live shows (broadcast in SF) are available here from all the usual trance/techno/electronica DJs, available as real audio. They are categorized and archived and the playlists are usually posted. Awesome site!
Quick theory on how Google Sets works
on
Google Experiments
·
· Score: 2, Interesting
I'm guessing that Google sets could work something like this.
Each query phrase produces a set of documents, i.e. web pages. The intersection of those sets gives a small set of docs which is pretty much the same thing that a normal google query (or any search engine) will return,
if all the queries are ANDed. Then the new feature is to find the intersection of all the terms from all the docs in the doc-intersection set. That is, return all the terms that are common to all the docs.
e.g. in pseudo-code: Assume
- G is the normal google search engine.
- G.query("search phrase") returns a set of references (URLs) to docs, e.g. {u1, u2, u3,...}.
- u.terms() returns a set of all the words contained in the doc referenced by u, e.g. if u=="http://slashdot.org", then u.terms() == {"news", "for", "nerds", "slashdot", etc.}.
- * is a set intersection operator.
s1 = G.query(q1); s2=G.query(q2); s3=G.query(q3);...
docSets = s1 * s2 * s3 *...;// so docSets contains the URLs of the docs that have all the query terms
ws = docSets[0].terms();// ws will contain the running intersection of the set of words in all the docs
forall url in docSets { ws = ws * url.terms(); }
return ws;
So my guess is that ws is the final set of terms returned by the google set. Of course, the words should be sorted by some meaningful metric, e.g. frequency.
This is all very easy to implement and can be done very quickly, because finding the document set intersection and the word set intersections can be done very quickly using sparse vectors to represent word or document vectors.
On a decent Unix system, it's not possible, or at least difficult, to destroy other peoples data. (Not counting, of course, buggy system call implementations.) But implemented properly, even things like "while (1) { fork(); }" will not kill the whole machine, because the OS will limit the consumption of virtual memory or CPU time, and then kill the errant process or swap it out.
So why couldn't executable code, like ActiveX or CORBA code, be sandboxed also? This should just require that the component be put into a restricted execution context, that perhaps has lower priveleges than the user's context. The component would operate like a GUEST user, and would not have access to the invoking user's priveleges and resources, like files, etc. This guest user could have it's own scheduling priorities and quotas for a subdirectory, and so on.
All the system calls, e.g. to DLL's or DSO's would be intercepted or remapped, or something like that, so that priveleges are checked and enforced, just like java does. Since modern CPU's can trap anything from illegal memory access to code or data, to illegal port access, it should be possible to fully isolate the code. Right?
Of course, the performance would be inferior because of the context switching between different privelege levels. But in a "safe" mode, this would be a fantastic way to run plugins for PDFs, Flash, a whole game, or some
downloadable application.
I'm not a kernel expert, but I thought that mainframes could do this forever. What about Linux? e.g. with Wine?
BTW, this would also make peer-to-peer style distributed computation (like the SETI project) safe and still fast.
Re: Robots and Aliens
on
Review: A.I.
·
· Score: 1
Most people don't get Kubrick movies, so what most people think is probably irrelevant. Since this is a Spielberg movie, then there's simply more people that will be confused. So what.
Re:But did Kubrick write the meta-science?
on
Review: A.I.
·
· Score: 1
I've read the spinach critique a few times now and I think it misses the point of David. Prof Hobby said it himself near the end of the movie, that David would dream and do things that were not rational. Thus David probably had the programming not to eat food. But he was learning from his environment and competing with his "brother" and those emotions overrided the rational programming. And this is similar to HAL in 2001. The whole journey of David to become human was itself irrational, but that was what Prof Hobby was so excited about. He was excited that David didn't do the rational robotic thing, but did the emotional human thing and created and followed a dream. He stated that really quickly when David first meets Hobby.
Yeah, I agree. I'm very sure that the movie stated that the future beings were the evolution of robots.
But the Mission to Mars look sucked.
But what mega-sucked was the father-knows-best
sit-down chat that one of them had with David, and the whole explanation of "memory-imprints" in space-time. That techno-babble is worse than Star Trek.
I disagree with the "doomed" part. It may not
take off as much as perl, but it is really a
beautiful, elegant language. I think LW criticized awk for being elegant, but awk was
limited in what it could do. Ruby seems to be both elegant and very complete, at all the same things that perl is good at.
I personally have used perl extensively, for larger and larger personal and work-related tools. Unfortunately, ALL of my large projects in perl have become so UGLY that I don't even want to maintain them, and I'm always milliseconds away from reimplementing them in java or even C++.
My point: Don't underestimate the lure of language simplicity, synactic sugar, and features that promote correctness. I think Visual Basic took off because of its simplicity, and I use java (over C++) because of language simplicity and correctness.
BTW, as for libraries. True, there are many perl libs, but they don't necessarily play-nice and plug together well. A language that has trivial-to-use OO features should promote reuse, meaning less people reinvent libraries.
Many of the features you describe could still be done by compiling a Java++ superset language into the same bytecode or by translating to java code, like AT&T's cfront did for the original C++. The native-only stuff could be done directly on the byte code, or using something like GCJ to optimize java/java++ to machine code. Way back in java 1.0, SGI had a tool called javat which did almost that. It translated bytecode into machine code, but was not good at optimizing it. That's where GCJ/GCC would be very handy, since there's a full optimizing compiler in it. But my point is that these examples could still be done with the existing Java VM architecture. Language features, alternative syntaxes, and optimizers don't require reimplementing everything from scratch. IBM's jikes compiler is a very fast java compiler (written in C/C++) that adheres strictly to the Sun specifications, but it is buggy as hell. Reimplementing these things is not trivial.
Anyway, I agree that rapid innovation is definately easiest when all the source is available. Mozilla, Linux, and emacs (in the 90's) are great examples of that. Rapid innovation is great for applications because the end-users can benefit immediately, and if something changes, then they can change their habits.
However, for languages and APIs, standardization is very important. Many things depend on them: Documentation, applications, example code, tutorials, third-party books, training seminars, university courses, etc. which are all in the realm of developers. Developers suffer when source trees, APIs, or software practices become needlessly fractured. HTML and the Netscape/Internet Explorer browser wars is a great example of how web developers were saddled with two camps of HTML and zillions of incompatible dialects and implementations. We are still burdened by incompatibilities from those rapid innovation cycles.
My ideal scenario would be that I could take JAR files from GNU, Apache, Borland, Oracle, IBM, etc. and mix them together and get an optimized precompiled (maybe native-only) executable. But some standardization mechanism is needed so they can all talk to each other, (unlike the horrible linking incompatibilities between all C++ compilers). It doesn't have to be Sun; maybe it could be Sun/IBM/ECMA/ANSI. But it will likely be some company, since non-profit standards bodies usually move very slowly. Linux, for instance, has been standardized for the corporate world by RedHat primarily, not the UnitedLinux group or even Linus (who's focus is the kernel).
The important consideration is that there is a limited set of developer resources, even with thousands of open-source community eyeballs. Microsoft is the prime competitor to java, and Sun, IBM, Apple, etc are not. They are closer to being corporate resources and allies. As long as they remain good supporters of a unified java and don't create obstacles to the future use of these APIs/VMs, then I don't see why we shouldn't use them as resources, and thereby build upon their work instead of duplicating it.
I think that the Java libraries will be very difficult to control fully by Sun, because they do not have IBM and Oracle to push around. IBM will absolutely not be backed into a corner by one of their main competitors in hardware, Sun. Because of that, I'm not worried about the Java APIs turning into a controlled arena, as Microsoft has done with Windows.
Basically, I think the effort of the Open Source community, of those that like Java, would be much pretty spent on making GCJ integrate seemlessly with a compliant Java VM using JNI. GCJ could used to make a just-of-time optimizer. With C# and dotNet, I think there's an ahead-of-time compiler instead of a just-in-time compiler that can optimize the byte code for the target machine. Using GCJ/GCC, one could get that sort of performance boost, almost for free, if it were plugged into a compliant Java VM, meaning that it could integrate with DLL/DSOs using the Java Native Interface.
Anyway, I, for one, would probably not waste my time using a slightly out-of-date API, on a slightly behind-the-curve VM or compiler. (BTW, I'm a heavy user of emacs, perl, mozilla, etc.) The java API, language and VM still has a LOT of room for improvement. I hope developers would rather innovate and improve the java standard than to fork off a clone.
But fifty years in the future, even 10 years hence for some cases, one would not need special gloves or such obvious markers. Computer vision should certainly be able to track subtle hand movements in 3-D space, as well as facial expressions.
The rest of the video scrubing stuff just looked like advanced Avid nonlinear editing software. Now, the AI in Blade Runner and 2001 is still way, way cutting edge, perhaps beyond our lifetimes, assuming average body mileage.
(1) Cheaper will always win.
(2) More info is always better.
But in both shopping and in information, for me at least, trust and reputation matters a lot. For shopping, I'll spend a few bucks more by getting something from Amazon, or Dell, or Apple, or Toyota, because I've been screwed by getting cheaper alternatives. My time and lack of aggravation matter a lot more to me. I'm very wary of trying new brands, especially for anything online.
As for information, reputation and editors matter a lot. Google and any other sort of collaborative filtering depend primarily on mass voting or popularity; but credibility is a nuanced thing. Many national online newspapers might be highly ranked according to Google, but when I see a news headline, I want to know what the point-of-view of the news source is, and not just that it is popular. After all, if popularity mattered above all, Britney Spears would be winning all the Grammys, and Jerry Springer would be winning the Emmys.
I use Google news all the time, but I find that it gives a lot of very obscure news sites. Even Slashdot appears in the headlines, and Slashdot is very highly biased opinion and discussion, NOT news. Basically I use Google news to find and scan for headlines, but invariably I only spend my time on a few trusted news sources. For any other unknown site, I always have to check out the site to determine their bias and credibility. I don't have the spare cognitive cycles to waste on sites that are spinning an unknown agenda.
Basically my point is that news site quality and merchant reputation matter a great deal, and portals like Yahoo or pseudo-portals Google still rely on the human-directed quality control. They are an important part of an information eco-system, as aggregators or popularity filters, but they are not the gatekeepers or the final word.
It's especially difficult because people fragment their sentences, use pronouns (to refer to previous sentence fragments), use pauses, corrections, etc. and the grammar has to accomodate that, in most of today's systems. The more ways that the computer has to deal with, the harder it is to recognize, and the worse the accuracy.
Also neural networks are algorithms, and actually most neural networks (by far) are 3 layer feedforward networks, with 1 input layer (for basically one slice of the speech spectrogram), 1 hidden layer and 1 output layer with a node for each hypothesis phone(me). The hidden and output layers have nonlinear activations. They are a mega-bitch to train because of the nonlinearity and they usually converge to non-global error minima. There are many ways to train an ANN, and most are iterative with random initial conditions, so that's why they are not algorithmically optimal.
But to run online, they are fast and deterministic (i.e. the non-recurrent variety), and can be done in a few lines of Matlab or page of C code.
Don't get your hopes up. There's still LOTS of corruption, especially with anything related to the bureacracy, regardless of the good intentions. I'm Indian, born there and raised here since I was 2. Our friends here and relatives there say that if want to help some cause, do it yourself or through a trusted NGO, but not through the government.
Things are much better now, having improved over the last 2 decades because of business reforms, but there's still a long way to go. So essentially, a company, or any multi-national, could probably still make lot of headway by buying off the right decision makers.
The primary advantage that OSS has is primarily cost and the fuzzy feel-good mission of it. But they are pragmatists, so if the world wants MSFT, then they will oblige, especially if MSFT can make concessions.
China has a much better shot of escaping the clutches of MSFT, because they benefit, ironically, from being authoritarian (or whatever they've morphed into today). The Chinese government mandate to pursue OSS is probably more effective than the advocacy or advice of some groups in India. Because in the end, Indian software developers are free to pursue their business interests, just like American ones, so many will engage MSFT because of that.
But that's just my opinion.
It seems to me that if Microsoft can charge for enhanced security, then they are admitting that their non-enhanced versions are partially defective. From a legal standpoint, it sounds like they would be culpable for such security defects in their non-security enhanced versions, because they cannot then claim that such defects are intrinsic to the complexity of their software itself, and they cannot claim that they just didn't know how to fix it.
On the other hand, if a third-party adds security features, that company can claim that they have found ways to secure Windows, which Microsoft was not able to do.
I'm not a lawyer, but it seems that charging for security enhancement would be like charging extra for a car with a working airbag, instead of a cheaper model that works maybe 80% of the time.
How would this compare to a warranty on consumer products? It seems like a warranty is just like insurance, because you get cheaper repairs in case something goes wrong. Is this applicable to software?
BTW, I'm asking a legal question, not a ethical business question.
I just went to my eye doctor last week and asked about Lasik. HE wouldn't even recommend because he thought there was not enough case work on long term effects of Lasik. He was concerned about possible long-term corneal degeneration risks, since Lasik cuts away part of your cornea.
OTOH, I had previously thought that the biggest problem would be that some patients experience "halo" effects, especially at night. He said that was mainly due to other techniques based on RK, but not so much with Lasik.
BTW, as an optometrist, he was offered Lasiks for free, for himself, but didn't take it for these reasons.
I understood this as your point. I'm just suggesting that the overall efficiency of energy conversion is not the only proper metric. Another aspect is indeed the pollution produced to convert the energy, but even beyond that is the cost and energy to clean up the pollutants and where it happens.
For example, CO2 released deep underwater is not nearly as harmful as CO2 released near the surface. But the CO2 in the air is far more harmful. So the total CO2 (or other pollutants) output of a process is not the only consideration. For example, if hypothetically coal could produce energy in the form of hydrogen as an efficiency rate of only 10%, but could be done VERY cheaply and especially VERY cleanly to the air, then the net CO2 output to the air itself would be smaller than the net-output-to-the-air of CO2 from cars (or other energy consumer).
I don't know details about power production, but my father is an engineer that worked on modifying power plants to "scrub" pollutants from the factory emissions to comply with federal regulations. That was regarding ancient plants, but modern CO2 producing plants are far cleaner and more efficient to begin with.
But briefly, the emissions/pollutants of a chemical process don't go directly into the air. They are post-processed significantly. The degree that they are cleaned of course affects the overall efficiency and cost. But it's easier to upgrade the processes and reduce these cleanup costs centrally in a plant, than in a more distributed manner on the open road, as is done now, with catalytic converters on modern cars.
Fuel cells produce water when they are USED on the road in the open air. The hydrogen or other fuel could be produced anywhere, e.g. in a plant where the contaminants could be contained or scrubed somehow.
I would think that it's far easier and far more efficient to catch CO2 from the stacks of coal/oil/natural gas plant, than from the exhausts of hundreds of thousands of cars.
So even if the conversion of other energy to hydro fuel is difficult or polluting, the pollutants are much more easily contained.
That's my amateur scientific guess.
A lot of live shows (broadcast in SF) are available here from all the usual trance/techno/electronica DJs, available as real audio. They are categorized and archived and the playlists are usually posted. Awesome site!
Each query phrase produces a set of documents, i.e. web pages. The intersection of those sets gives a small set of docs which is pretty much the same thing that a normal google query (or any search engine) will return, if all the queries are ANDed. Then the new feature is to find the intersection of all the terms from all the docs in the doc-intersection set. That is, return all the terms that are common to all the docs.
e.g. in pseudo-code: Assume ...}. ... ...; // so docSets contains the URLs of the docs that have all the query terms // ws will contain the running intersection of the set of words in all the docs
- G is the normal google search engine.
- G.query("search phrase") returns a set of references (URLs) to docs, e.g. {u1, u2, u3,
- u.terms() returns a set of all the words contained in the doc referenced by u, e.g. if u=="http://slashdot.org", then u.terms() == {"news", "for", "nerds", "slashdot", etc.}.
- * is a set intersection operator.
s1 = G.query(q1); s2=G.query(q2); s3=G.query(q3);
docSets = s1 * s2 * s3 *
ws = docSets[0].terms();
forall url in docSets { ws = ws * url.terms(); }
return ws;
So my guess is that ws is the final set of terms returned by the google set. Of course, the words should be sorted by some meaningful metric, e.g. frequency. This is all very easy to implement and can be done very quickly, because finding the document set intersection and the word set intersections can be done very quickly using sparse vectors to represent word or document vectors.
So why couldn't executable code, like ActiveX or CORBA code, be sandboxed also? This should just require that the component be put into a restricted execution context, that perhaps has lower priveleges than the user's context. The component would operate like a GUEST user, and would not have access to the invoking user's priveleges and resources, like files, etc. This guest user could have it's own scheduling priorities and quotas for a subdirectory, and so on.
All the system calls, e.g. to DLL's or DSO's would be intercepted or remapped, or something like that, so that priveleges are checked and enforced, just like java does. Since modern CPU's can trap anything from illegal memory access to code or data, to illegal port access, it should be possible to fully isolate the code. Right?
Of course, the performance would be inferior because of the context switching between different privelege levels. But in a "safe" mode, this would be a fantastic way to run plugins for PDFs, Flash, a whole game, or some downloadable application.
I'm not a kernel expert, but I thought that mainframes could do this forever. What about Linux? e.g. with Wine?
BTW, this would also make peer-to-peer style distributed computation (like the SETI project) safe and still fast.
Most people don't get Kubrick movies, so what most people think is probably irrelevant. Since this is a Spielberg movie, then there's simply more people that will be confused. So what.
I've read the spinach critique a few times now and I think it misses the point of David. Prof Hobby said it himself near the end of the movie, that David would dream and do things that were not rational. Thus David probably had the programming not to eat food. But he was learning from his environment and competing with his "brother" and those emotions overrided the rational programming. And this is similar to HAL in 2001. The whole journey of David to become human was itself irrational, but that was what Prof Hobby was so excited about. He was excited that David didn't do the rational robotic thing, but did the emotional human thing and created and followed a dream. He stated that really quickly when David first meets Hobby.
Yeah, I agree. I'm very sure that the movie stated that the future beings were the evolution of robots. But the Mission to Mars look sucked. But what mega-sucked was the father-knows-best sit-down chat that one of them had with David, and the whole explanation of "memory-imprints" in space-time. That techno-babble is worse than Star Trek.
I personally have used perl extensively, for larger and larger personal and work-related tools. Unfortunately, ALL of my large projects in perl have become so UGLY that I don't even want to maintain them, and I'm always milliseconds away from reimplementing them in java or even C++.
My point: Don't underestimate the lure of language simplicity, synactic sugar, and features that promote correctness. I think Visual Basic took off because of its simplicity, and I use java (over C++) because of language simplicity and correctness.
BTW, as for libraries. True, there are many perl libs, but they don't necessarily play-nice and plug together well. A language that has trivial-to-use OO features should promote reuse, meaning less people reinvent libraries.