One idea that springs to mind is that such P2P systems use caches. If you could generate enough requests to flood the cache system, you can force any computer to query nearby computers, where the latency will be roughly equal to the number of hops along the critical path. It then becomes similar to the game of "Black Box", where you try to map particles by throwing rays in and seeing what happens. If you have a sufficiently large latency map from a sufficiently large number of entrance points, you should be able to derive the whole of the exposed topology of the P2P network and be able to identify which of those servers carry what data.
Nice idea, but it wouldn't work on Tor. The topology of the router network depends on who is using it, as routing paths are decided by the machines using the Tor network to remain anonymous, not by the routers themselves. In the case of a hidden service on Tor, a directory server is used to associate a.onion TLD with several routing paths the clients can use to contact to the server. Little information can be derived from the routing paths themselves, as the address of each router in the sequence is encrypted with the public key of the previous router. Because there are only a finite set of routes published that can lead to the server, and because none of the routes can be dissected due to the encryption on them, testing their latency would tell you relatively little.
Your system would work fine on a decentralized P2P system not designed for anonymity, but none of the anonymous P2P systems I can think of would be caught out by your flooding attack.
(Think about it. Those of us in Open Source have all done reverse engineering, we have all tried to wrest the secrets of some black box we can't see the inside of, and eventually we have all succeeded in doing so. Our interpretation may not 100% match the internals literally, but they WILL 100% match the internals logically. And in the end, that's all that matters.)
In order to reverse engineer a black box, one needs to gather a sufficient amount of information. Tor limits what information you can gather. You can know that there are N routes that lead to a hidden service; you can know that M routers make up a particular route; you can know that the total latency of those M routers at any one time is L; and finally you can know that a particular route starts with the router R. This is the sum total of the information you have access to, and from this you have to work out what single server on the entire net is the one you're searching for. Good luck!
Of course citing an isolated example is sufficient evidence to back up his claim (Linux can be hard to install => not Ready For The Desktop.) How many claims like that do you think a user will need to hear to decide not to try this Linux thing? The one bad story will stand out a lot more than the $how_many good stories.
But if we apply that same line of reasoning to Windows XP, then the logical conclusion is either:
There have never been any problems with installing Windows XP by anyone, anywhere in the world, ever.
Windows XP is not ready for the desktop.
When people say "Linux is ready for the desktop", I suspect what most mean by that is, "Linux is at least as good an desktop OS as Windows XP". I'm not sure I can agree with that, but an isolated installation problem does not sufficient evidence to support or discredit that hypothesis, as both Windows and Linux have suffered from problems in their installation processes.
You people think you live in Camelot with your peasants and your nobility. I'm not a big fan of the USians but at least they had the wherewithall to kick your collective arses and free themselves from your tyranny.
I've seen some old trolls in my time, but never one that appears to originate straight from the 18th century. Maybe it's time you updated your posts to make them a little more modern?
It Linux isn't easy to install, my 12 year old near computer iliterate sister can install windows XP (she also can install the sims.) It was only my desire to see Ubunutu and three solid days of browsing forums which got a semi working version of linux on my machine.
On the other hand, when I put the Ubuntu CD in my machine, it booted perfectly and installed flawlessly. Simply citing an isolated example is not sufficient evidence to back up your claim. From my own experience, I could claim that the Ubuntu installation system is utterly perfect, whilst from your own you could claim it is utterly broken. The reality is likely somewhere inbetween.
However, in my experience, the installation procedure in Linux is rather better than Windows. When installing XP, I cannot simultaneously surf the net on the same PC that is performing the installation; on Ubuntu, I can. Most of the problems that Linux install programs run into revolve around hardware incompatibilities, and this is an area where Linux could improve. Of course, Windows has somewhat of an advantage here, as manufacturers tend to only write drivers for Windows.
Also, it's generally better to install the NVidia drivers from a package repository, rather than install them manually from the NVidia site.
Mathematics may be pure, but it's not a science. Science deals with explanations of natural events, known as theories, which can never be proven. Mathematics deals with logical deductions from a set of axioms. Science attempts to understand the axioms of the Universe through observations, whilst mathematics is about making observations about a base set of axioms. In many respects, mathematics works the opposite way around to science.
Meaning he knows all, everything, and there is no limit to his knowledge. He is also merciful, more than any other living being.
I'm curious. Given all this, do you believe in hell? That is, do you believe that God condemns some people to be tortured for eternity? Also, do you believe that non-believers will go to hell?
The proposal to jail people who committed crimes is now entering (even if does not pass) the consiousness of the mainstream.
By Jove! No-one's ever thought of that before! Usually we just give criminals a jolly good talking to, but this "Jail" idea of yours might just do the trick!
Real programmers apparently didn't like it, because the product died shortly after being ported from DOS to Windows. But as a non-programmer, I loved it. I still wish it were here, because there would be a lot of GUI admin tools today written by sysadmins.
That's something I hadn't considered. One of the advantages of code is that it's informationally very dense, making it the perfect medium for professional programmers. But for non-programmers, perhaps a system that displaying information more sparsely, though in an easier to visualize fashion, would be more suitable for their needs.
That's just for starters, of course. I'm unclear what a virtual landscape for control of the computer would look like, but I'm guided by the novel Head Crash by Bruce Bethke. In it, Bethke's main character is a software engineer for a near-future multinational corporation. He doesn't write code: instead, he essentially drives a virtual forklift, moving around and connecting virtual objects to create virtual programs for users to interact with.
Whilst it may sound cool on paper, the system you describe is not a good environment in which to program. Driving a forklift truck around has visual appeal, but stringing together a line of text is both more efficient, and easier to evaluate at a single glance.
I don't know whether idea of a VRUI is more effective an interface for other types of software; but I do know that there is little benefit to using such a system to program in.
One could class the UK military in the same category as well. After all, there are UK troops in Iraq and in Afghanistan.
My point was not that the UK isn't in the same position as the US, more that US military spending considerably outclasses UK military spending. So if you're going to class the military as being the largest waste of taxpayers money, then the US has the UK beat by a considerably margin.
Basically what I'm saying is, the proof of the pudding is in the tasting, and if the UK is not better at wasting money, why are the taxes higher?
It depends on what you class as a waste of money. A lot of money is spent on the NHS, and on subsidising students, whilst the US seems to spend proportionally less in both areas.
So, grant an AI the right to vote and suddenly he forkbombs, and makes 87 trillion of himself before the next election. HK-47 (instance 00000001a) for the win! The winner of every election ever after is the AI with the best hardware on which to execute instances of himself, and the lowest process spawning overhead.
If an AI has enough processing power to run a human-equivalent intellect 87 trillion times, then forkbombing is the very least of humanity's problems.
The antibiotics we have are losing effectiveness. Hospital infections are becoming more and more dangerous. My generation is probably going to be the only generation in human history to live its life mostly free of the mortal fear of dying from bacterial infection. There are virtually no new antibiotics in development.
It's true that anti-biotic resistant bacteria are one of the greatest modern threats to the human species. However, it's unlikely that this generation will be the last generation with the capability to effectively combat most bacterial infections. Bacteria adapt frighteningly fast to new threats, and in terms of evolutionary adaptability, they're top of their game; but humanity simply isn't playing by the same rules any more. Bacteria combat anti-biotics and immune system defences via an evolutionary feedback loop. The effectiveness of this response is approximately proportional to the number of existing bacteria; the more bacteria there are, the more likely one strain will prove successful.
So in a sense it comes down to processing power. Bacteria represent a large distributed, lossy P2P network designed to self-propagate itself. It's effectiveness is governed by its size, and the distance between local node systems. The problem with this approach is that whilst large and extremely robust, its considerably inefficient, and has reached the limits of its growth. Humanity's communications and processing network, is, on the other hand, growing at an exponential rate with considerably less noise, and in terms of capability is already proving far more effective. The only thing the bacterial network has going for is its existing information content.
So whilst I think it's naive to dismiss the dangers of bacteria out of hand, I don't think they're due for a comeback.
But working in a statically, strongly typed language can feel very constraining and idiomatic. I think C strikes a fairly reasonable compromise.
I can see why some people prefer static typing, and others dynamic; however, I can't think of many benefits to weak typing over strong typing, aside from improving efficiency by cutting down runtime overhead. Could you enlighten me as to why you prefer a weak/static language like C over a strong/static language?
As others have said, the only thing JS has going for it is ubiquity.
And it's flexibility. Most people, yourself included I suspect, don't realise just how flexible and extensible the Javascript syntax actually is. It's also one of the few languages that bases an object system around prototyping, which is interesting in itself.
I repeat myself again. Javascript and the entire web development stack is seriously broken. Just look at how long it takes to put together a decent, functional website and you will understand. The interaction between all of the components is seriously chaotic at best.
- using the same lang both server and client side is easier on the coder (applies to python too, and might apply to js, if it ever becomes widespread server side) The majority of developers (or, at the very least, a large proportion), do not use PHP. They'd receive no benefit from it, and would have the disadvantage of learning a new language.
- huge set of functions in the interpreter core: I really miss a lot of them when coding in javascript Why not just extend the existing standard library in Javascript?
- the object model, albeit more restrictive than the prototype based model, makes a lot more sense to people used to C++, java, php et al I'm not so sure. Compare:
class Foo {
public function __construct($name) {
$this->name = $name;
}
public greet() {
return "Hello " . $name;
} }
To this:
Foo = Class.create()
Foo.prototype = {
initialize: function(name) {
this.name = name
},
greet: function() {
return "Hello " + name
} }
I'm not really sure there's too much difference in practise, except, as you say, the prototype model is somewhat more flexible (and more difficult to optimize).
The thing that makes it messy in C is C's strong typing, you would have to pass and return everything as strings, but this is to be expected since the problem is contrived to demonstrate the brevity possible with weak-typing. The trade off is that you don't know exactly what your dealing with. In well written scripts that's no big deal, in a system with thousands of source files written by dozens of programmers it will quickly turn your brain to mush.
It used to be that weak typing in a language was a BadThing(TM), now it's a "feature".
You're confusing weak typing with dynamic typing. C is not strongly typed; it has static weak typing. Languages like Java have static strong typing, Python and Ruby have dynamic strong typing, and PHP and Javascript have dynamic weak typing.
In what bizarro world do you live where having a DOM interface means "a very reach featureset"?
I said, "As a language". Javascript's standard library is small, but the functionality the language itself supports is quite advanced. Closures, prototyping, mutable objects, and consistent OO (i.e. everything is an object), make Javascript rather flexible; just look at the additions Prototype has added in.
Javascript has no threads, the lack of thread control structure therefore doesn't matter much.
Ah, you're quite correct; Javascript is singled threaded. However, considering the amount of asynchronous callbacks from setTimeout, setInterval and XMLHttpRequest, one has to wonder whether the very lack of threading could not be construed as a disadvantage on its own. Since each Javascript function is axiomic, one would have to split up complex functionality to run across several functions.
I strongly disagree: Javascript has no standard library.
What do you mean by "Javascript"? Are you referring to the ECMAScript dialect (which, so far as I'm aware, does have a standard library), or are you using "Javascript" to mean "Any ECMAScript browser implementation" (in which case you are technically correct)?
Regardless, the standard libraries of JScript and Javascript overlap considerably, so although you can point out, quite correctly, that ECMAScript does not define a standard library per se (so far as I am aware), from a practical standpoint the major browsers have a number of EMCAScript objects in common, which mounts to the same thing as a standard library in practise.
For proof, [re]read Revenge of the Nerds. Search for "Appendix: Power" on the page, look at the problem. Try doing that in Python, Ruby, PHP, Java, C of any kind. Okay. In Javascript:
function foo(n) { return function (i) { return n += i } }
In Ruby:
def foo(n) lambda { |i| n += i } end
I'm not sure how that qualifies as proof Javascript is superior. If anything, it's somewhat more verbose.
Wouldn't the web be a nicer place if you could script the browser using Ruby or Python? Can you imagine the fun you could have working with constructs like:
@page.findById( "myID" ).each do |ajaxReturn|... end You underestimate how flexible Javascript is. Whilst not as concise as Ruby, it has similar capabilities when backed up with a library like prototype. For instance, take the following Ruby code fragment:
a = (1..10).select { |x| x % 2 == 0 }.collect { |x| x * x }
And the equivalent Javascript:
a = $R(1, 10, false).select(function (x) { return x % 2 == 0 }).collect(function(x) { return x * x })
Not really that different, is it? Ruby has some syntactic sugar to make things more concise, but the two statements are extremely similar. Javascript is far more powerful than most people think.
It sounds like you want a standardized version of Javascript. There is one; it's called ECMAScript. Where the problem lies is that different browsers may have different standard libraries, so a standard function in IE, may not exist in Firefox and vice versa.
However, as far as I know, most browsers adhere to the EMCAScript spec fairly closely in terms of syntax, even in IE. So the language is a fixed standard, and certain libraries (such as the W3C DOM model) are standards, but that doesn't stop individual browsers either extending the standard libraries, or screwing up the implementation of the libraries they support.
But this has brought up the thing that really really needs fixing, suppose i want that onclick function to pass some info to myFunction when i call it i have to do this
This makes 'this' refer to the object that created the function, rather than the object the function is attached to.
next is the scope issue i've talked about suppose i'm dynamically creating objects on the fly and want the callback to reflect the id thus
for( i=0 ; i<10 ; i++ ) {
someObject[i] = new SomeObject();
someObject[i].onclick = function(){ myFunction( i ) } }
This doesn't have a neat solution. However, there are various ways to get around the problem you descript. For instance, under prototype, one could write:
Nice idea, but it wouldn't work on Tor. The topology of the router network depends on who is using it, as routing paths are decided by the machines using the Tor network to remain anonymous, not by the routers themselves. In the case of a hidden service on Tor, a directory server is used to associate a .onion TLD with several routing paths the clients can use to contact to the server. Little information can be derived from the routing paths themselves, as the address of each router in the sequence is encrypted with the public key of the previous router. Because there are only a finite set of routes published that can lead to the server, and because none of the routes can be dissected due to the encryption on them, testing their latency would tell you relatively little.
Your system would work fine on a decentralized P2P system not designed for anonymity, but none of the anonymous P2P systems I can think of would be caught out by your flooding attack.
(Think about it. Those of us in Open Source have all done reverse engineering, we have all tried to wrest the secrets of some black box we can't see the inside of, and eventually we have all succeeded in doing so. Our interpretation may not 100% match the internals literally, but they WILL 100% match the internals logically. And in the end, that's all that matters.)In order to reverse engineer a black box, one needs to gather a sufficient amount of information. Tor limits what information you can gather. You can know that there are N routes that lead to a hidden service; you can know that M routers make up a particular route; you can know that the total latency of those M routers at any one time is L; and finally you can know that a particular route starts with the router R. This is the sum total of the information you have access to, and from this you have to work out what single server on the entire net is the one you're searching for. Good luck!
But if we apply that same line of reasoning to Windows XP, then the logical conclusion is either:
When people say "Linux is ready for the desktop", I suspect what most mean by that is, "Linux is at least as good an desktop OS as Windows XP". I'm not sure I can agree with that, but an isolated installation problem does not sufficient evidence to support or discredit that hypothesis, as both Windows and Linux have suffered from problems in their installation processes.
I've seen some old trolls in my time, but never one that appears to originate straight from the 18th century. Maybe it's time you updated your posts to make them a little more modern?
On the other hand, when I put the Ubuntu CD in my machine, it booted perfectly and installed flawlessly. Simply citing an isolated example is not sufficient evidence to back up your claim. From my own experience, I could claim that the Ubuntu installation system is utterly perfect, whilst from your own you could claim it is utterly broken. The reality is likely somewhere inbetween.
However, in my experience, the installation procedure in Linux is rather better than Windows. When installing XP, I cannot simultaneously surf the net on the same PC that is performing the installation; on Ubuntu, I can. Most of the problems that Linux install programs run into revolve around hardware incompatibilities, and this is an area where Linux could improve. Of course, Windows has somewhat of an advantage here, as manufacturers tend to only write drivers for Windows.
Also, it's generally better to install the NVidia drivers from a package repository, rather than install them manually from the NVidia site.
Mathematics may be pure, but it's not a science. Science deals with explanations of natural events, known as theories, which can never be proven. Mathematics deals with logical deductions from a set of axioms. Science attempts to understand the axioms of the Universe through observations, whilst mathematics is about making observations about a base set of axioms. In many respects, mathematics works the opposite way around to science.
I'm curious. Given all this, do you believe in hell? That is, do you believe that God condemns some people to be tortured for eternity? Also, do you believe that non-believers will go to hell?
By Jove! No-one's ever thought of that before! Usually we just give criminals a jolly good talking to, but this "Jail" idea of yours might just do the trick!
That's something I hadn't considered. One of the advantages of code is that it's informationally very dense, making it the perfect medium for professional programmers. But for non-programmers, perhaps a system that displaying information more sparsely, though in an easier to visualize fashion, would be more suitable for their needs.
Whilst it may sound cool on paper, the system you describe is not a good environment in which to program. Driving a forklift truck around has visual appeal, but stringing together a line of text is both more efficient, and easier to evaluate at a single glance.
I don't know whether idea of a VRUI is more effective an interface for other types of software; but I do know that there is little benefit to using such a system to program in.
My point was not that the UK isn't in the same position as the US, more that US military spending considerably outclasses UK military spending. So if you're going to class the military as being the largest waste of taxpayers money, then the US has the UK beat by a considerably margin.
Basically what I'm saying is, the proof of the pudding is in the tasting, and if the UK is not better at wasting money, why are the taxes higher?It depends on what you class as a waste of money. A lot of money is spent on the NHS, and on subsidising students, whilst the US seems to spend proportionally less in both areas.
If an AI has enough processing power to run a human-equivalent intellect 87 trillion times, then forkbombing is the very least of humanity's problems.
It's true that anti-biotic resistant bacteria are one of the greatest modern threats to the human species. However, it's unlikely that this generation will be the last generation with the capability to effectively combat most bacterial infections. Bacteria adapt frighteningly fast to new threats, and in terms of evolutionary adaptability, they're top of their game; but humanity simply isn't playing by the same rules any more. Bacteria combat anti-biotics and immune system defences via an evolutionary feedback loop. The effectiveness of this response is approximately proportional to the number of existing bacteria; the more bacteria there are, the more likely one strain will prove successful.
So in a sense it comes down to processing power. Bacteria represent a large distributed, lossy P2P network designed to self-propagate itself. It's effectiveness is governed by its size, and the distance between local node systems. The problem with this approach is that whilst large and extremely robust, its considerably inefficient, and has reached the limits of its growth. Humanity's communications and processing network, is, on the other hand, growing at an exponential rate with considerably less noise, and in terms of capability is already proving far more effective. The only thing the bacterial network has going for is its existing information content.
So whilst I think it's naive to dismiss the dangers of bacteria out of hand, I don't think they're due for a comeback.
I can see why some people prefer static typing, and others dynamic; however, I can't think of many benefits to weak typing over strong typing, aside from improving efficiency by cutting down runtime overhead. Could you enlighten me as to why you prefer a weak/static language like C over a strong/static language?
And it's flexibility. Most people, yourself included I suspect, don't realise just how flexible and extensible the Javascript syntax actually is. It's also one of the few languages that bases an object system around prototyping, which is interesting in itself.
Perhaps you could give an example of this?
Cumbersome? In what way?
Only if implemented incorrectly; but then you could say the same thing about any piece of code.
The thing that makes it messy in C is C's strong typing, you would have to pass and return everything as strings, but this is to be expected since the problem is contrived to demonstrate the brevity possible with weak-typing. The trade off is that you don't know exactly what your dealing with. In well written scripts that's no big deal, in a system with thousands of source files written by dozens of programmers it will quickly turn your brain to mush.
It used to be that weak typing in a language was a BadThing(TM), now it's a "feature".
You're confusing weak typing with dynamic typing. C is not strongly typed; it has static weak typing. Languages like Java have static strong typing, Python and Ruby have dynamic strong typing, and PHP and Javascript have dynamic weak typing.
I said, "As a language". Javascript's standard library is small, but the functionality the language itself supports is quite advanced. Closures, prototyping, mutable objects, and consistent OO (i.e. everything is an object), make Javascript rather flexible; just look at the additions Prototype has added in.
Javascript has no threads, the lack of thread control structure therefore doesn't matter much.Ah, you're quite correct; Javascript is singled threaded. However, considering the amount of asynchronous callbacks from setTimeout, setInterval and XMLHttpRequest, one has to wonder whether the very lack of threading could not be construed as a disadvantage on its own. Since each Javascript function is axiomic, one would have to split up complex functionality to run across several functions.
I strongly disagree: Javascript has no standard library.What do you mean by "Javascript"? Are you referring to the ECMAScript dialect (which, so far as I'm aware, does have a standard library), or are you using "Javascript" to mean "Any ECMAScript browser implementation" (in which case you are technically correct)?
Regardless, the standard libraries of JScript and Javascript overlap considerably, so although you can point out, quite correctly, that ECMAScript does not define a standard library per se (so far as I am aware), from a practical standpoint the major browsers have a number of EMCAScript objects in common, which mounts to the same thing as a standard library in practise.
@page.findById( "myID" ).each do |ajaxReturn|
It sounds like you want a standardized version of Javascript. There is one; it's called ECMAScript. Where the problem lies is that different browsers may have different standard libraries, so a standard function in IE, may not exist in Firefox and vice versa.
However, as far as I know, most browsers adhere to the EMCAScript spec fairly closely in terms of syntax, even in IE. So the language is a fixed standard, and certain libraries (such as the W3C DOM model) are standards, but that doesn't stop individual browsers either extending the standard libraries, or screwing up the implementation of the libraries they support.
This doesn't have a neat solution. However, there are various ways to get around the problem you descript. For instance, under prototype, one could write: