Domain: berkeley.edu
Stories and comments across the archive that link to berkeley.edu.
Comments · 3,539
-
"Calm Technology" and the "Dangling String"Calm Technology
Author: Jim Harris
Posted: 11/6/2000; 4:57:21 PM
Topic: Calm Technology
[Illustration of the Dangling String display]
Calm Technology is what I call the goal of creating technology that truly honors the full model of human beings. I like this name because it begins with a word, "calm", that points us inward to the domain where we are truly human, and only secondarily mentions technology. Unlike ubiquitous computing, calm technology does not name a method, but a goal. Calm technology stands in sharp contrast to the enfranticing PC of today.
More from Mark Weiser.
Weiser comments on Dangling String: "Created by artist Natalie Jeremijenko, the "Dangling String" is an 8 foot piece of plastic spaghetti that hangs from a small electric motor mounted in the ceiling. The motor is electrically connected to a nearby Ethernet cable, so that each bit of information that goes past causes a tiny twitch of the motor. A very busy network causes a madly whirling string with a characteristic noise; a quiet network causes only a small twitch every few seconds. Placed in an unused corner of a hallway, the long string is visible and audible from many offices without being obtrusive."
Check out The Coming of Age of Calm Technology, by Mark Weiser and John Seely Brown.
========
-Don
-
"Calm Technology" and the "Dangling String"Calm Technology
Author: Jim Harris
Posted: 11/6/2000; 4:57:21 PM
Topic: Calm Technology
[Illustration of the Dangling String display]
Calm Technology is what I call the goal of creating technology that truly honors the full model of human beings. I like this name because it begins with a word, "calm", that points us inward to the domain where we are truly human, and only secondarily mentions technology. Unlike ubiquitous computing, calm technology does not name a method, but a goal. Calm technology stands in sharp contrast to the enfranticing PC of today.
More from Mark Weiser.
Weiser comments on Dangling String: "Created by artist Natalie Jeremijenko, the "Dangling String" is an 8 foot piece of plastic spaghetti that hangs from a small electric motor mounted in the ceiling. The motor is electrically connected to a nearby Ethernet cable, so that each bit of information that goes past causes a tiny twitch of the motor. A very busy network causes a madly whirling string with a characteristic noise; a quiet network causes only a small twitch every few seconds. Placed in an unused corner of a hallway, the long string is visible and audible from many offices without being obtrusive."
Check out The Coming of Age of Calm Technology, by Mark Weiser and John Seely Brown.
========
-Don
-
Re:waste of time and electricity?
-
Re:Dnet had this figured out from the beginning
SETI has more users than it needs, last time I checked, the same data was being tested over and over again, simply because they have more volunteers than they need.
Wrong. Learn, before you speak.
From one of the FAQ pages:
If a signal is observed two or more times, and it's not RFI or a test signal, the SETI@home team will ask another group to take a look. This other group will be using different telescopes, receivers, computers, etc. This will hopefully rule out a bug in our equipment or our computer code
Need you still wonder why the same Work Unit is processed by 2 or 3 machines?
Didn't think so. -
With respect to what?
Call me crazy, but I'd guess that demand on seti's servers grows linearly with the number of users.
However, the number of users grows exponentially with respect to time. Grandparent specified only that "the demand will grow exponentially" and that it will increase as the number of users increases. A colloquial meaning of "grow exponentially" is to grow following the early exponential-like stages of a logistic model, a model designed to model the spread of information such as a web site URL or a Warhol worm.
-
Re:Implementing the bear
we just want to bias the network towards the desired form. For example...New nodes pick a random twenty+ bit ID...New nodes connect up to whoever then can find.
Except that you describe routing based on Hamming distance (which won't work because of looping issues) rather than shared prefix/suffix, this sounds a lot like Tapestry.
-
Re:Ironic/NBIO
But they've also found that anything that hits the disk, or hits other slow services (e.g. back-end databases, transaction processing) works better in a multithreaded mode.
I don't think you're understanding it. Things that hit slow services (like databases) do not run better in a multithreaded server; they run better in an event-driven server, the same as for a cached workload. Why on earth would MP/MT be better just because the tasks were slow?The reason that highly disk-bound workloads do well in a multiprocessed or multithreaded (kernel threads, not user threads) server is actually because very few operating systems provide non-blocking IO for disks. Nonblocking disk IO is more challenging for a kernel to implement, since you have to keep track of buffers and states outside the kernel call stack. For network IO, the buffers are all already there in the kernel, so NBIO is relatively trivial: just let the application know when data has arrived. Therefore, you can't write a pure event-driven server that does lots of disk IO under most OSes, because your server will block (which violates the prime directive of event-driven programming). That is why Flash spawns helper processes to handle disk IO.
If you're working with "back-end databases or transaction processing" (which occurs over the network), then NBIO is no problem, and you should write a pure event-driven server. If you're writing a server that involves the disk, then you should use a hybrid scheme like what is proposed in SEDA.
The main point that we get from these papers (particularly the more recent SEDA), though, is that, if you have to use threads, your hybrid design should use a thread pool of a fairly small number of threads, and you should use events and event queues for the rest. The poster I was replying to said that "three to four hundred threads could be running at any given moment inside the server." I don't need to know anything about the particulars of his application to know that he's going to lose with his "large-scale" implementation: look at figure 2 in the SEDA paper from SOSP. Notice how the throughput starts to seriously degrade when you get past 8 threads?! And how, by the time you get to 128 threads, the throughput is as bad as when you have 1 thread! What does the graph say when we reach the 300-400 threads that our subject's server had? Notice how the throughput has dropped to well below half the single-thread throughput, and the latency is a factor of five greater than the linear latency? This ungraceful service degradation under load is inherent to thready servers, and is largely independent of whether your threads are blocking for the disk or twiddling their thumbs--there is no reason to ever have this many threads. The only point of multiple kernel threads in disk-bound workloads is to give the disk enough work to do to make its read batching and arm scheduling efficient. For this purpose, you don't get any additional returns for having more than about a dozen outstanding reads at any time. Notice how SEDA's webserver caps the number threads in the thread pool of each of its three stages at 20, and the thread pool controller keeps the optimal size far below this on average.
Please read your own citations and call out the domain of applicability of such comments.
Please understand the content of the citations before presuming to school me on them.So please don't slam someone for having used an approach that is superior in many domains
So, in conclusion, having 400 threads in your server isn't superior in any domain. And I wasn't "slamming" him at all: 1) most servers in the world are multithreaded, so I hardly have reason to be particularly critical of him, and 2) Java didn't even have NBIO when he wrote the server a year ago, so the event-driven design wasn't an option anyway (although you should probably have a much lower cap on the size of your thread pool; Apache won't spawn endless processes until it kills your machine). -
Re:It's a big step up, but there is still distance
It's worth noting that the Berkeley NBIO package was part of the research that led to the 1.4 java.nio package.
Also, using their package, and a very interesting partitioned, event-based coding style, they wrote, in Java, a web server that out performs Apache (written in C).
-
Re:It's a big step up, but there is still distance
It's worth noting that the Berkeley NBIO package was part of the research that led to the 1.4 java.nio package.
Also, using their package, and a very interesting partitioned, event-based coding style, they wrote, in Java, a web server that out performs Apache (written in C).
-
Ironic/NBIO
I used to write large-scale multithreaded network servers, where somthing like three to four hundred threads could be running at any given moment inside the server. Java's class library made this really quite easy, and it's syntax is pleasant enough to work with.
It's kinda ironic that you should say this, since threads are the wrong way to write "large-scale" network servers, and since Java 1.4 finally gives us non-blocking IO APIs to implement things the right way. (The NBIO APIs in 1.4 are, incidentally, largely a product of the work of the fellow behind the second link I gave.) -
Re:It's a big step up, but there is still distance
"I've been working on a server that takes a lot of connections in Java, and you can finally do it with the support of "select" in Java 1.4."
I've been using NBIO (Non-Blocking IO) for quite some time, getting very good results. Been waiting for Java 1.4 to go final so I can start working with java.nio -
somewhat disappointed...
I thought the title meant a warhol worm at first.
World-wide worm propagation in 15 minutes. Finally something worth the attention given to not-so-well designed worms such as code red. -
NOT a "Warhol Worm", just topologically aware
Warhol style worms are purely active worms, which require no human intervention to spread. This worm sounds like an intervention-required worm/trojan (like a mailworm) but which spreads through MSN instead of email.
It would be a warhol-like worm if the message sent automatically opened the web page, making it a purely autonomous worm. I sorta wish it was, because that would be an interesting validation of the speed of topologically aware active worms. Then again, I don't use MSN Messenger.
For those who are interested, a more formal analysis is available Here, a paper I submitted to Usenix Security on the subject.
-
Half a picture
As happens too often, this proposal concentrates entirely too much on distributed computation, and pretty much ignores the problem of distributed storage. They're quite different problems, each requiring its own solution, even though it's intuitively obvious that any true "Internet Scale Operating System" would have to deal with both.
If you're interested in this "other half of the problem" here are some links:
- Farsite (Microsoft; focus on many nodes, not long distances, but still relevant)
- OceanStore (UC Berkeley)
- CFS (MIT)
- Publius (ATT/NYU)
- Intermezzo
There are many more. The bibliographies for the above will mention many earlier systems, while a quick Google search for these project names will show more recent ones.
-
Re:Scalability problems, anyone?
Surely there will be major scalability problems with something like this, a la Gnutella
That's why it's research. I've met and talked to Bill Bolosky (Farsite project lead); he's very clueful wrt scalability in general, and well aware of the problems that networks like Gnutella (an unusually naive protocol, BTW) have run into. However, like the folks working on OceanStore or CFS or many other projects, the Farsite folks have a fairly formidable arsenal of innovative techniques they can apply to the problem. The details are still being worked out, of course, because that's what research is all about, but the people working in this area do seem to be making real progress toward solutions that could scale to such levels.
-
Re:Oh good God!
What next? A device that runs Linux so that their toilet flushes?
:-)
Hmmm... will you settle for one running slackware here -
http://tbp.berkeley.edu/~harlan/projects/ToiletPap er.html -
Counterpoint
1958 - TheThe integrated circuit
I bet even your toaster has an IC in it :) (and don't say "how useless is that?", because my toaster makes some pretty good toast exactly how I like it every time). Most of your modern conveniences owe their existence to this fantastic idea. One thing you're failing to mention are advances on those pre-1946 concepts (IC is an extrapolation on the transistor).
1983 - PCR
It's rather difficult to study genetics without large quantities of DNA. Along with this tech there is gel electrophoresis that you use to analyze your strands.
1984 - RouterNeed I say more? Would we be on the 'Net right now without it?
There is just too much to list, but these were some of my favorites. You get the picture. There are some others, like the Operating System, where would you be without that? Or the C Programming Language as another, or high level languages in general.
I think an important point here is that the presentation talked about advances in areas where there's not much room for advancement. Trying to make any major improvements in "word processor technology" is pretty futile.
Mike -
Re:Excellent!!BTW, does anyone know if any of the original Ingres code made it into postgres? My understanding was that it was supposed to be the "next" Ingres...
INGRES and POSTGRES were two separate projects at Berkeley that shared no code. PostgreSQL is based on the latter.
See also the POSTGRES FAQ. -
Re:a measly 2%
That reminds me of a SETI@home poll I ran across recently. In this case a full 92.70% of respondents were male(ie 7.3% female). Does anyone have any statistics of involvement in internet communities of women as opposed to men. From experience I believe that women are more sociable among themselves than men. Perhaps this makes them less likely to activly participate in inpersonal internet communities such as open source development or
/. -
Re:QuestionThere's always PRCS:
PRCS, the Project Revision Control System, is the front end to a set of tools that (like CVS) provide a way to deal with sets of files and directories as an entity, preserving coherent versions of the entire set.
-
Re:You knowI checked the web out for sites about taking video footage from RC helicopters a few weeks ago. It looks like people are doing it for way less than money these MIT folks.
I wanted to build an unmanned RC heli with the ability to track a target but I don't think I have the cash to fund that project.
here are some of the sites that i found about RC helicopter photography:
RC Helicam - with videos flying an RC heli, pictures taken by the RC heli
remote controlled aerial photography - lots of links, basic info
hovercame - these guys are actually doing commercials
cyberflyer DIY guide to rc heli cams!enjoy, this was a solid 3 hours of browsing
.kite photography had some great pictures too. -
Re:Macroevolution myh? Explain this:
You seem to think vestigial means useless and by showing a use for an organ you show that it is not vestigial. Vestigial means trace. All organs in the body connect to other organs and vestigial organs and structures are the same. The point is they are traces of earlier, more pronounced features and are further evidence that organisms have evolved instead of being created.
Male mammae - serve as an erogenous zone in many males. But they aren't primarily errogenous zones just as ears may support earrings but they aren't primarily earring holders.
Wisdom teeth - got mine (age 47), work great. What you are saying is that you don't have impacted wisdom teeth, that is, teeth that have failed to emerge. If they don't emerge, chewing hard stuff won't help. Impacted wisdom teeth are evidence of the vestigial nature of the 3rd molar.
Coccyx
... Several pubic muscles have their major attachment point there. So what? It's still a vestigial tail. It's composed of four fused rudimentary vertebrae, which is what you would expect if it was a vestigial tail instead of simply an anchor point for muscles."hind limbs" in whales
... they're not hind limbs at all. According to cetologists, they're limbs. Older whale fossils have more pronounced hind limbs than modern whales, as the theory of evolution would predict.wings on flightless birds - these are frequently used in defense. Wings of flying birds are also used for defense but the wings weren't developed for defense. They were developed for flight. Wings on flightless birds are vestiges of flight, not structures whose primary purpose is defense, like claws.
embryonic organs - these are necessary for development. Which is to say they are vestigial. QED.
-
SETI@Home
Perhaps SETI@Home can use some help?
They seem to have been heavily overtaxed recently... -
Hell No, Just the Beginning
Lest this newsbyte starts another great flame-war of evilution vs. theo-crap, I'll avoid giving an opinion.
We are now evolving our species (Homo Sapiens Sapiens) by using pre-birth DNA screening and genetic reengineering. Ova can be frozen, analyzed and modified before implantation (assuming in-vitro fertilization). Sounds like a Brave New World don't it?
I suggest everyone, of whatever viewpoint, read this fine Cal Berkeley site.
Btw, I suggest you read the book Ever Since Darwin by Stephen Jay Gould. -
Shameless plugs
I am working in the MEMs area these days. So here are some shameless plugs.
Here
is an general interest article from the group in which I work with some details oriented towards these types of mesoscopic MEMs.
Here
is a neat picture of a Mesoscopic MEMs device (an acceleratometer resting on top the middle part of the "8" in a 1998 penny.
And though my research at Berkeley wasn't MEMS oriented, Berkeley MEMS is pretty active. Here is a link to that.
As the article points out, MEMS are finding applications in cell phones because it is easy to make very small RF filters using inertial effects to provide inductive-like impedences. (In the past, the inductive like parts of a cell-phone filter would either be done with spiral inductors, which are unwieldly or via other microwave circuit voodoo.)
However, beyond cell phones is a grab bag of MEMs applications already at or beyond the prototype stage:
- Car air bag detectors (the above accelerometer)
- Laser gyroscopes
- Projection displays (pixel mirrors arrays)
- Optical fiber switches
- Medical applications (microfluidics, bio-chips, ...)
- Remote sensing (minaturized microphones, or in the future, smart dust)
Enjoy
Kevin -
infoEUVE Archive
EUVE Home (UCal. Berkeley)Info on satellite tracking here. Track the orbit, and place bets on where it will land. (note, the farthest north is someplace in florida.)
-
infoEUVE Archive
EUVE Home (UCal. Berkeley)Info on satellite tracking here. Track the orbit, and place bets on where it will land. (note, the farthest north is someplace in florida.)
-
Process migrationI know it's not exactly what you're after, but transparent process migration was part of the Sprite operating system (developed between '84 and '92). Anyone planning to implement single-process hibernation/suspension/whatever-you-want-to-call-
i t might want to check out their papers.Other cool features of Sprite included a log-structured file system (yeah, everybody has one now, but they didn't 10+ years ago) and RAID.
-
Process migrationI know it's not exactly what you're after, but transparent process migration was part of the Sprite operating system (developed between '84 and '92). Anyone planning to implement single-process hibernation/suspension/whatever-you-want-to-call-
i t might want to check out their papers.Other cool features of Sprite included a log-structured file system (yeah, everybody has one now, but they didn't 10+ years ago) and RAID.
-
Process-saving is known, but not what you wantThe idea of saving the state of a process is very well-known. Take a look at anything from emacs dumping to the gcore(1) program. It's been used in everything from saved games of Rogue to saved states of PERL.
But isn't it overkill for a data-crunching operation? As many other people have noted, it would seem you're much better off checkpointing your data to disk, rather than relying on low-level OS process wizardry.
Sig: What Happened To The Censorware Project (censorware.org)
-
Re:Reminds me of Cuckoo's Egg
I read the book a year ago, and it was one hell of a read !!! I started reading and I didnt stop for two or three days until I finnished it.. I can recomend this book for every computer lover out there, the admin ( Cliff Stoll ) is a absolute hero =)
-
I'll be impressed...
...when someone begins to develop a truly original interface, instead of immitating Windows. Don't get me wrong -- Gnome and KDE are monumental achievements, and I congratulate their programmers. But what about all the really new and interesting ideas out there? Isn't creativity and exploration a goal of "free" software?How about:
- Berkeley's Group for User Interface Research
- Semiotic Approaches to User Interface Design
- Xerox PARC, User Interface Research Group
While chasing Microsoft, let's not forget to stop and smell the alternative roses...
-
Re:Reminds me of Cuckoo's Egg, and a link
That was Clifford Stoll. That piece of detective work was also done on a Mac. Great book. Clifford Stoll is a creative genius, weirdo, outrageous madman, and lover of thought.
Clifford Stoll's webpage -
World Energy Demand Solved...
...but, it's old news...
It's called the Integral Fast Reactor (IFR). It can run for years on a single supply of fisile material, augmented by uranium filtered from sea water. Not only is it, "an energy source that is unlimited," to quote its head of the project, Dr. Charles Till, but it is possibly the safest nuclear reactor ever designed. Unfortunately, anti-nuclear power activists bringing false claims before Congress in 1994 lead to the decommissioning of the project by then President Clinton.
The unofficial IFR site
A wonderful interview with Dr. Charles Till -
How little has changed
Read The Jungle, a book by Upton Sinclair, written in early 1900.
-
Anti-Cheat CS Program
Here at UCD, one of my fav professors, Sean Davis, uses a program called "MOSS" to do the same. It's not open-source, and will probably remain "security-through-obscurity." He said it was based on a fuzzy matching system that basically did a "diff" on all programs and ran them against each other and possibly other databases of code.
also check out: EVE2
-
Re:Varying audio sample rates
Realistically, you start getting diminishing returns at around (IIRC) 1/4 the sampling rate.
That's not true. The whole point is that if a signal is sampled at frequency f, then it can be reconstructed perfectly if its bandwidth is less than f/2. Go learn the maths instead of making vague statements that you think must be right intuitively, but which you actually don't know about. -
Re:Depends on what you've got.
if you want to run your machine all night, try this here.
-
Re:Shannon and chess programming
How to program a computer to play chess: ($0.10 version)
The underlying idea: you try an build an exhaustive tree of every possible move, and every possible response to that move, and every possible response to that response, and so on. This gives you a full tree of all possible games; You then choose a branch on the tree which results in you winning.
The problem: This tree is huge. After just a few moves, there are literally billions of potential board positions which must be considererd. Even Deep Blue (the recent Kasparov killer) wasn't able to perform full board evaluation, even with all it's specialised chess-playing hardware.
The solution: Rather than trying to exhaustively search the entire possible move tree, only search those branches which "look promising". This is assessed using a scoring system of some kind.
It is this scoring system (called a heuristic) which is the source of all the research. This is a source of interest to information theorists as the problem of finding a chess heuristic is easy to understand, but non-trivial to solve. Essentially, the problem is to reduce the "information" describing a board position into a single boolean "this is a winning position"/"this is a losing position".
If you're interested, seek out an introductory AI textbook (or website), and look up alpha-beta pruning. I can recommend "Artificial Intelligence: A modern approach" by Russell and Norvig. The website for the book is here
Russ %-) -
Re:Neat, now how about my box...?
-
Re:Raytheon and reality
I am always surprised by the knee-jerk, emotional response public transit issues evokes, from both sides of the fence, but particuarly the 'anti' side. I didn't know about points (1) and (3) - very interesting. However, the poster has clearly not read my original post very carefully, since I mostly focus on the grim economic reality for innovative public transit.
Although it is true that transportation engineering circles view this with sceptiscism (I hold a masters from the transportation engineering program at Berkeley,), I think that points (2) and (4) are grossly overstated. I think that much of the transportation engineering comminity is (understandably) biased toward 'civil engineering' approaches to problems, which emphasize rules of thumb and history over innovation and modelling. I tend to believe that much of our failure to innovate in public transit can be ascribed to this prevailing attitude. I have seen no convincing academic literature that suggests that these systems are 'failures' from an engineering perspective, but I would be interested if the poster could point to some.
As I stated in my post, however, these technologies are not necessarily economically efficient. There are not good stats availible on track costs for PRT since the systems are so rare (there is the WV system, a defunct system in Hamburg, and a proposed-but-never-built system in Chicago). However, a reasonable rule of thumb is that road lanes cost ~$100K/km and light rail lanes cost ~$10M/km. PRT rails would cost somewhere between $1M/km and $10M/km; clearly, replacing enough roads to make a viable network is a huge investment and - again - subway-like throughput has never been demonstrated. But, this is not = to any sort of 'failure of engineering.'
-
vt uses MOSS
-
Old news
People ahve been doing this for years. we use MOSS (measurment of software similarity) which was writen by alex aiken at berkeley. As for the editorial comment I think that there's a little difference between asking a coworker (or another student) for help and copying code directly from another source. But everyone's entitled to their opinion.
-
Cheating
I must have gone to the most enlightened university in North America going by the responses by most of the crowd here.
First of all, go look at MOSS before you call all cheat-detection tools copies of diff. For my university's more rigourous classes, they've set scores VERY low (I've been told about 20-30% of a perfect match) and only 5-10% of the class meet that. The majority of that group were dumb as a rock - cut and pasting ALL code, INCLUDING comments, etc. There was even a case where twins were in the same program, same class, and they used the SAME code in a major assignment. Didn't even change the documentation to reflect the "new" author. There have been false positives, but they are rare and the department errs on the side of the student if there is reasonable doubt.
Like a few have said - these are tools and should be used accordlingly. No one who wields a scapel is qualified to perform surgery, nor should one tool be used to perform cheating tests. A school of any size gets lawsuits for everything. Students can appeal just about anything. Why would they suddenly trust one source of error when students can be ejected from school?
Consider the alternative argument: many students ARE cheating. Hmmm - a course forced on most students, CS degree or not. Many prior students take the course, probably got away with quite a bit.
Collaboration is one thing. Cheating because you think you can get away with it - oops, not anymore - is another thing. Flag the code matches, look at it with your eyes and ASK THE STUDENT. If they can't answer a single question about a 200 line program they wrote, the odds are slim that they wrote it. (maybe we can finally use drinking as a defense though!)
Make sure punishment is swift, certain and (relatively) severe and in a few years, students will either a) do their own work or b) the manditory course's workload will be reduced. -
how we use such systemsI'm a graduate student at a major computer science department. I've both been a TA and lectured the introductory computer science classes.
We have been using a system to detect cheating for years---it started before I got here. The one we use is Moss (from Berkeley). How Moss works? I'm not sure, except that it does examine program structure, at least to an extent. I can comment on how it's used.
In an intro-sized course, 200-400 students, it's impossible to check the programs by hand, especially when they are graded by different TAs. Moss is very useful as a first pass in detecting cheating. When Moss flaggs a pair of assignments that are very similar, we examine them by hand and make a judgement.
If there's any error the process errors on the side of the student. If there was plagarism that is not caught by Moss, then the students will probably get away with it, since the chance that the TAs will discover it is small (although it does happen). No accusation of plagarism relies on Moss---Moss is only used as a tool to narrow the manual comparison process.
-
Re:I hadn't realized...
I wish I could find that bleeding link again!
See Richard Fateman's home page, where you'll find, among other essays:
(1) Fast Floating-Point Processing in Common Lisp.
(2) Software Fault Prevention by Language Choice: Why C is Not my Favorite Language.
Or see Gerald Sussman's home page for a paper on the use of Lisp in performing astronomical calculations. -
Re:I hadn't realized...
I wish I could find that bleeding link again!
See Richard Fateman's home page, where you'll find, among other essays:
(1) Fast Floating-Point Processing in Common Lisp.
(2) Software Fault Prevention by Language Choice: Why C is Not my Favorite Language.
Or see Gerald Sussman's home page for a paper on the use of Lisp in performing astronomical calculations. -
Re:I hadn't realized...
I wish I could find that bleeding link again!
See Richard Fateman's home page, where you'll find, among other essays:
(1) Fast Floating-Point Processing in Common Lisp.
(2) Software Fault Prevention by Language Choice: Why C is Not my Favorite Language.
Or see Gerald Sussman's home page for a paper on the use of Lisp in performing astronomical calculations. -
Another Cheating Detector
(free; for instructors only)
Measure Of Software Similarity -
Prior artThey've had this at Berkeley for a while too, and it has been written about extensively. You can even sign up to use the service online if you are a programming teacher or TA at another school.
I used it as a TA for a lower division class at Cal and it really was quite impressive--color coding similar sections, etc. A human review is necessary or course, but there was never really any doubt that the top few catches were cheating.
See MOSS and the 1998 Wired article about it.
-- Chris