if (it's raining) then (don't go to park) else (go to park, or whatever).
the function is a simple conditional, an if-then. the lambda expression is the (it's raining) predicate, which gets bound to a variable before the if executes. then the appropriate clause of the conditional executes. if you're worried about actually making something happen, there are a number of ways to do it. You can make the branch of the conditional return a state variable that is executed on later, or you can call a continuation with the proper value indicated, or you can cause a side effect by setting a reference variable that's monitored by another thread, or you could thread a monadic side-effect-execution-with-state through the thing. sorry if this is unclear. let me know and i'll explain more.
well, it is of course true that few people have always on data and voice streams. this reduces the amount of data-to-filter considerably. but your comments on deep analysis and other forms of intelligence are less obviously correct, to me. certainly a filtering process can be used to bring the most interesting candidates to the top, but the basic lowest-level scanning process still has to be done to convert the continuous speech to text, overcome encryption, etc. and this is definitely not an easy task. the number-of-workstations idea is just to give an idea of the kind of computing power needed. special purpose DSPs could probably help out a lot on the voice processing part, but there is still a huge amount of higher level processing going on just to convert the digitized voice to phonemes and recognizable words. i don't know how much of this could be optimized for special purpose hardware. again, this is all very generalized to give us an idea of the feasibility of such a thing. most variations and specific exceptions can be swept under the rug of -this-is-an-average-estimate-and-i-hope-it-doesn't -suck-too-bad-. it still seems orders of magnitude too much work to be worthwhile...
how effective do slashdotters think echelon really is? and do you think they feed any data to U.S. commercial concerns? I've been thinking a bit about this recently; some simple calculations demonstrate that the amount of material they have to look through is simply phenomenal. The rumors say that the system has links to telephone lines, faxes, email systems, satellite links, and who knows what else. So, some extremely quick and dirty estimates:
I live in Boston with three other people and their respective girlfriends; most of us have cell phones. Our house has two phone lines, DSL, and ten computers hooked up behind a firewall. My roommate has a Palm V with an omnisky. That's eight or nine voice streams and as many data streams. The data streams are going all the time, and are all multiplexed through our single DSL connection. Now, admittedly we're a little more wired than most. So we'll scale this down a bit. Assume the government only is interested in monitoring large cities and a few out of the way enclaves dotted around the map. Maybe the ten largest US cities and 150 known subversive groups. Including the greater metro area, each city has maybe 4 million people on average, implying about 1.6 million families per city, giving 16 million families total. We can guess that (plus or minus a few kooks) nearly every family has at least one phone line and 2 out of 5 have at least one cell phone. Probably 60% have an internet connection. This gives us 32 million data streams, to monitor in real time, and at odd hours. Now given the current state of speech-to-text software, and assuming the NSA is 15-20 years ahead of the state-of-the-art (a very dubious assumption, these days), we'll also figure that with their software they can decrypt 200 voice streams per second with a pentium III. That still implies that they need the equivalent computing power of 160,000 high-end workstations.
Ok, this is not outside the realm of possibility. But it's right on the edge! Add in the complexity of understanding and dealing with different accents and different languages, static, spread spectrum cell phones, demultiplexing LANs, tapping who knows how many switches, debugging the monitoring software and releasing (secret!) updates into the field, dealing with code words and both simple and complex black box and white box encryption, and dealing with the noise of slashdotters putting in things like "kill the president" and "natalie portman is trafficking in hot grits disguised as cocaine to pay off communist subversives," and we see that if Echelon exists, it's probably close to useless. And a horrible waste of taxpayers' money. Though I guess developing such a omprehensive system could be valuable for use in targeted situations, like focusing on transmissions in a limited geographic area during high-tension conflicts.
These estimates are very much back-of-the-envelope, but does anybody see anything fundamentally wrong with them?
I live in Massachusetts. Where can I get a look at a Stokke chair?
you could write something analogous to:
if (it's raining) then (don't go to park)
else (go to park, or whatever).
the function is a simple conditional, an if-then.
the lambda expression is the (it's raining)
predicate, which gets bound to a variable
before the if executes. then the appropriate
clause of the conditional executes. if you're
worried about actually making something happen,
there are a number of ways to do it. You can
make the branch of the conditional return a
state variable that is executed on later, or
you can call a continuation with the proper
value indicated, or you can cause a side effect
by setting a reference variable that's monitored
by another thread, or you could thread a monadic
side-effect-execution-with-state through the
thing. sorry if this is unclear. let me know and i'll explain more.
Haskell has CGI and animation libraries, as well as a system for writing music. There are foreign library interfaces and highly optimizing compilers, database interfaces and graph visualizers.
Libraries and Tools in Haskell
Haskell in Practice
Here are some books and papers about how to program in Haskell and functional languages in general.
I particularly recommend Hudak's book; Paul himself is a very clear teacher and lecturer, as is Zhong Shao, who does research in ML (Standard ML of NJ). I think SML is the only functional language around whose semantics are completely specified.
Follow these links and learn about Erlang (in massive production use at Ericsson), high level abstraction through functions defined via structural induction over datatypes, monads, layered functionality used to build parsers (via parser combinators), and a type theory for object-oriented programming.
well, it is of course true that few people have always on data and voice streams. this reduces the amount of data-to-filter considerably. but your comments on deep analysis and other forms of intelligence are less obviously correct, to me. certainly a filtering process can be used to bring the most interesting candidates to the top, but the basic lowest-level scanning process still has to be done to convert the continuous speech to text, overcome encryption, etc. and this is definitely not an easy task. the number-of-workstations idea is just to give an idea of the kind of computing power needed. special purpose DSPs could probably help out a lot on the voice processing part, but there is still a huge amount of higher level processing going on just to convert the digitized voice to phonemes and recognizable words. i don't know how much of this could be optimized for special purpose hardware. again, this is all very generalized to give us an idea of the feasibility of such a thing. most variations and specific exceptions can be swept under the rug of -this-is-an-average-estimate-and-i-hope-it-doesn't -suck-too-bad-. it still seems orders of magnitude too much work to be worthwhile...
how effective do slashdotters think echelon really is? and do you think they feed any data to U.S. commercial concerns? I've been thinking a bit about this recently; some simple calculations demonstrate that the amount of material they have to look through is simply phenomenal. The rumors say that the system has links to telephone lines, faxes, email systems, satellite links, and who knows what else. So, some extremely quick and dirty estimates:
I live in Boston with three other people and their respective girlfriends; most of us have cell phones. Our house has two phone lines, DSL, and ten computers hooked up behind a firewall. My roommate has a Palm V with an omnisky. That's eight or nine voice streams and as many data streams. The data streams are going all the time, and are all multiplexed through our single DSL connection. Now, admittedly we're a little more wired than most. So we'll scale this down a bit. Assume the government only is interested in monitoring large cities and a few out of the way enclaves dotted around the map. Maybe the ten largest US cities and 150 known subversive groups. Including the greater metro area, each city has maybe 4 million people on average, implying about 1.6 million families per city, giving 16 million
families total. We can guess that (plus or minus a few kooks) nearly every family has at least one phone line and 2 out of 5 have at least one cell phone. Probably 60% have an internet connection.
This gives us 32 million data streams, to monitor in real time, and at odd hours. Now given the current state of speech-to-text software, and assuming the NSA is 15-20 years ahead of the state-of-the-art (a very dubious assumption, these days), we'll also figure that with their software they can decrypt 200 voice streams per second with a pentium III. That still implies that they need the equivalent computing power of 160,000 high-end workstations.
Ok, this is not outside the realm of possibility. But it's right on the edge! Add in the complexity of understanding and dealing with different accents and different languages, static, spread spectrum cell phones, demultiplexing LANs, tapping who knows how many
switches, debugging the monitoring software and releasing (secret!) updates into the field, dealing with code words and both simple and complex black box and white box encryption, and dealing with the noise of slashdotters putting in things like "kill the president" and "natalie portman is trafficking in hot grits disguised as cocaine to pay off communist subversives," and we see that if Echelon exists, it's probably close to useless. And a horrible waste of taxpayers'
money. Though I guess developing such a omprehensive system could be valuable for use in targeted situations, like focusing on transmissions in a limited geographic area during high-tension conflicts.
These estimates are very much back-of-the-envelope, but does anybody see anything fundamentally wrong with them?
--
neil