The Philips Webcam driver above warns that the bandwidth of USB may not be enough for more than 5 cameras.
Now, The Philips is a USB 1 device, but USB 2 has MUCH more bandwidth than 1. Try sticking an external CDROM into a USB 1 port one day and you will see what I mean.
So a USB 2.0 camera would probably be better, but I do not know if there is any such thing. A USB 2.0 PCI card is quite cheap though, although on my Suse 8.2 box the !"! machine does not boot completely if there is nothing stuck into the USB card!
I know that I cannot rip out my CPU on my non-enterprise desktop, like all the other posters mentioned, but I am curious about this. I once saw a SUN dude at a show ripping out boards from his machines and pluggin them back and nothing changed on the screen as a demo.
But how does this work in practice? RAM support I can imagine, IF you have ECC rAM. The RAM detects that a chip is blown but still keeps the memory OK by ECC support, similar to RAID. It signals the OS WHICH NEVER USES THAT RAM AGAIN before you replace it hot pluggable. This I can deal with, but, like RAID, it works by having redundant components (mirrisos/RAID5 extra disks) which keeps the data intact (but less reliable) until the replacement arrives.
But how does this work in a CPU? The only way I can see this working is if there are redundant CPU's which execute the same instructions in parallel and compare the results. IBM mainframes do this. Is this is the case in fancy enterprise computers too?
Uh, the French government was recently severly criticized because their health system collapsed because lots of people got sick and died during a heat wave...
In fact I was in that heatwave and it was not pleasant. But while ice cold is certainly more dangerous heat does kill people. En masse, in fact.
True. And if there is ONE ting I want in both windoze and X, its a button on the keyboard tha simply switches all the windows between the two screens. I veryoften have one window open on my main display and something else (like a help text on the other). A quick-switch button would do wonders.
Leibnitz invented much of the calculus at the same time as Newton and there was some controversy about the credit. Nowadays calculus books credit both, and the notation d/dx and the integral sign is mostly Leibnitz's work, but the notation used in physics of a dot above a variable to indicate differentiation is Newton's.
Anyways, Newton would apparently go ballistic if someone even mentioned Leibnitz and when he was in the room he had turn around and people would write down "Leibnitz" not indicate who they were talking about not to mention the name in his presence.
Maintainability is not an asset to consider, it is by far the most important asset (that and a good user interface.)
I sometimes wish all these Python/PHP/Ruby/whatever dudes would learn that strong typing is an ASSET not a problem. Simply because the compiler checks a lot of structural integrity BEFORE the damn thing runs highlighting load of errors right there.
I know the argument that a type system is only in the way and is not really needed when the program is debugged in any case.
But a type system makes a hell of a difference when you (or your poor successor) needs to change anything later because many (if not most) of the conflicts caused by a change are IMMEDIATELY nailed down by the typechecker. This thing is, typeing bugs are bugs. If you send a number to a thing that expects a database connection Python will moan just as much as JAva. the difference is JAva will moan before you run. PYthon and PHP will not.
Don't get me wrong, I write loads of tings in Ruby and Python. Most of them are small things that do a specific task, adminstrative scripts that sort of things. But for large complex systems, don't get me on a non-typed language.
That said, I wish Java would move into a type system that is much more based on type inference, such as HAskell where the language IS stronlgy typed but you pretty much don't have to worry about it since it will infer almost everything. The parts you have to specify are not too much and you get teh best of both worlds. Strong typing as well as non-cluttered code.
>...travel to another country where they drive > backwards, you can still drive the cars. > Shouldn't computers?
No necessarily. Remember, not all people can drive all vehicles. Don't put the average driver into a large truck or a bulldozer or a tractor for that matter. Or even a motorcycle. They are somewhat different and you will have trouble starting, or even wreck the gearbox, despite the similarities.
This is more of an analogy to the average geek. Most of us drive servers and things all day which is quite remote from the experience of the average user. And they should not be able to drive them either.
Also, computers are required to do looooads more different things than a car. A car goes from place A to place B and sometimes parks. A computer plays games, processes words, spreads sheets, has lots of nice colors in the documents, makes sounds, browses the web, speaks, sometimes listens, shows videos, allows you to compose music, browses databases, connects with more devices than you can pack in the average car and does an altogether much more rich set of things than a car does. The idea of a unified UI for such a device is a bit of a difficult thing, I think. People continually talk about the whole "computer-as-simple-appliance" idea. Bill Gates himself thinks this is bunk. For once I agree with him.
But I agree, this whole geek-arrogance thing is really getting on my tits sometimes. I ust had a meeting with a customer where I had to put up a fight to get them to install a single goddamn mailbox on Netscape. Fortunately the CEO, who is somewhat scared of the bullying admin simply put his foot down and told them to fuckoff when I pointed out to him that he is the boss and if he wants hem to change 2 lines in their bloody script they might as well do it because he sayd the better do it.
Well, that depends on what you define as "functional programming". Programming languages, like political parties, have extremist sides. In politics it is usually the ultra left who are totally socialist and the ultra right who is totally individualist (although the Nazis and Sascists were pretty damn socialist too, with all the "All for one Nation" thing, but I digress).
Like politics, studying the extremes in programming languages makes you understand the center so much better. In programming languages the spectrum is defined by the amount of state that a language has. In assembly languages you have to manipulate every bit of state, in a functional language, there is none. They represent the two extremes here.
In procedural languages the end result is constructed by progressively making small changes to a state. In C the tate is basically an big array of words which closely mirror the computer's real model. In Java and other OO languages the state is more like a graph of more abstract objects.
In a pure functional language the end state is mostly constructed by simply specifiyng the state (recursively or non-recursively) in terms of simple compoenents and no commands to change it are allowed.
No real language (except to pure machine code on the one hand and theortical academic mini languages on the other hand) are totally purely stateful or stateless. Haskell and SML must make provision for things which are inheritely statful such as changing the underlying filesystem. LISP is a strange amalgam of the two ways of thinking.
ALL procedural languages have an expression based sublanguage where you state things ina stateless way. Let me illustrate using good old C:
x =(y+5)-7;
And in Python:
x = left( [1,2,3,4], 2 )
Those things after the x= part are FUNCTIONAL PROGRAMS. This is inheritely less efficient than buggering around with the registers yourself but geuss what? It does not matter. computers follow a 95/5 rule where the machine spends 95% of its time in 5% of the code (probably worse). Also, modern machines are spending 99% of their time waiting your you to move the mouse of for a network packet so the efficiency does not really matter.
Also, curiously, Python and Ruby and Perl are generally considered to be more expressive than C and its ilk. Why? Because the expression part of the language allows you to directly manipulate multi-valued things such as lists which C (and Java) patently does not. To put it differently, they are more functional than C.
Many ideas that are now slowly getting mainstreamish in procedural languages, such a generics in Java, Templates in C, higher-order functions in Python and inner classes in Jave came out of the functional programming language research community. So maybe they don't exactly produce what you would call usable tools but they have been in the past and will be in the future an extremely rich source of ideas and inspiration for all the nuts and bolts tools out there in the field.
Not only are functional languages used in a small or large way inside all the procedural languages you love, they are by far the most used programming languages in the world. Why? Because Excel is a functional language. So is the SQL query language to a large extent. You simply state the relations of the things what you want and you get it.
What people want from their tools is simple. They want to have a list of numbers or a table of names and add and sort and look at them WITHOUT specifying all the little intermediate steps to get the results. That is the computers problem.
You can have your webmail because Squirrel is VERY trivial to setup. Basically it takes 5 minutes. It does not make any assumptions about the mailbox format or so, it is basically a CGI script that uses IMAP to get its mails. That means that the Squirrel server can also be run on another machine if you want to offload it. Usually you run HTTP on the same machine and set squirrel to use the local IMAP server.
One problem with Squirrel I have had (Suse 8.2, not sure about the version but pretty recent) is that it sometimes fails with folders with boatloads (several thousand) of mail in it.
Also remember that courier already contains an webmail program which I have not run yet but which may also be interesting. Courier also contains an SMTP server (which nobody ever talks about) as well as a POP server. Actually courier could probably do everything you want to do in one fell swoop. If it will do a good job I do not know, I only use it for IMAP.
Courier also contains scripts to automatically setup SSL on IMAP (which is great boon because setting up SSL is a bitch) and works with both IMAP/SSL (which uses another port) as well as TLS (which is an extension to the standard IMAP protocol which uses the same port as IMAP). TLS, however is not supported by Netscape's mailer. The IMAP/SSL port is.
Again, setting up the SSL stuff on courier was a breeze. Plug and play.
Whats really cool is Joy's comments about the coming rise of bitmpped displays. It is quaint to think that a bitmapped display was certainly not a given at that time, it was quite revolutionary.
And he was responsible for vi. For this I cannot decide whether he should be praised as a computer great or be disgraced as the author of the greatest horrible-excuse-for-an-editor known to man.
http://www.cs.pdx.edu/~kirkenda/joy84.html
Re:64bit performance gains...
on
AMD64 Preview
·
· Score: 1
A somewhat off-topic question but since you seem to be a compiler guy...
How much more difficult is it to write a compiler backend for EPIC's VLIW architecture than for x86/64?
VLIW has always been very dependent on compiler optimizations to squeeze performance out of the chip. Is this realistic with modern optimization stages?
There are several games out there where you program a robot to do things.
Mindrover (which you can download a demo of, for both Linux and Windoze) is one where you have to build a robot. IBM has a program where you can program a Java robot but I suspect that is a bit above them.
Another possibility which is a visual programming language that uses video as a paradigm (I read that and I have not seen it) is Toontalk which you can find at www.toontalk.com. The object of the game is to write a program to control a robot that solves problems. Its aimed at kids. Demo at website too.
There are actually several visual programming languages done by university research projects aimed at kids. Try searching on Google. However, many of these things are mac based.
Also, maybe shoot for something that paints a picture based on a program. One thing that may also work is a dataflowish programming language (think Khoros, there is one on freshmeat as well but the name escapes me) that does image processing on a picture. For instance, you could have a picture of yourself and a flow with a control that changes the color of you hair, or better, even, get a webcam, do this live and squash the face of the teacher. I once did whits with two bored kids of a colleague of mine and it was a great hit with the girls.
Well I live in Germany and no, the beer isn't free but its very cheap. A litre of beer costs less than a litre of milk and also in some case than a litre of bottled water.
Actually checked exceptions are controversial in Java as well. Bruce Eickel who wrote a few Java books for instance argues that there should be no checked exceptions.
Personally I like that exceptions are checked. It does get annoying at times to write try catch things for small programs but I do not think this is any different from the Python/Perl/Ruby people who diss the idea of explicit types. Its all about the language enforcing some iscipline on the programmer which leads to more reliable software.
Back in 1982 on the Apple II there was Kabul Spy, an adventure game which alo had this multi-layer anti cracking thing. But instead of bailing out or giving you an error the game simply went on but in such a way that there was no way out.
Basically, you crossed a border, and if it detected a crack it threw you in prison but it looked like a normal part of the game and you would NEVER know this was copy protection.
The Philips Webcam driver above warns that the bandwidth of USB may not be enough for more than 5 cameras.
Now, The Philips is a USB 1 device, but USB 2 has MUCH more bandwidth than 1. Try sticking an external CDROM into a USB 1 port one day and you will see what I mean.
So a USB 2.0 camera would probably be better, but I do not know if there is any such thing. A USB 2.0 PCI card is quite cheap though, although on my Suse 8.2 box the !"! machine does not boot completely if there is nothing stuck into the USB card!
I know that I cannot rip out my CPU on my non-enterprise desktop, like all the other posters mentioned, but I am curious about this. I once saw a SUN dude at a show ripping out boards from his machines and pluggin them back and nothing changed on the screen as a demo.
But how does this work in practice? RAM support I can imagine, IF you have ECC rAM. The RAM detects that a chip is blown but still keeps the memory OK by ECC support, similar to RAID. It signals the OS WHICH NEVER USES THAT RAM AGAIN before you replace it hot pluggable. This I can deal with, but, like RAID, it works by having redundant components (mirrisos/RAID5 extra disks) which keeps the data intact (but less reliable) until the replacement arrives.
But how does this work in a CPU? The only way I can see this working is if there are redundant CPU's which execute the same instructions in parallel and compare the results. IBM mainframes do this. Is this is the case in fancy enterprise computers too?
You mean like this gizmo:
http://www.astronautix.com/craft/moose.htm
Uh, the French government was recently severly criticized because their health system collapsed because lots of people got sick and died during a heat wave...
In fact I was in that heatwave and it was not pleasant. But while ice cold is certainly more dangerous heat does kill people. En masse, in fact.
True. And if there is ONE ting I want in both windoze and X, its a button on the keyboard tha simply switches all the windows between the two screens. I veryoften have one window open on my main display and something else (like a help text on the other). A quick-switch button would do wonders.
Any bike with non-spoke wheels is going to be VERY expensive and have a big sign on it that says "Steal me!"
Maybe he is a big Hentai junkie
Leibnitz invented much of the calculus at the same time as Newton and there was some controversy about the credit. Nowadays calculus books credit both, and the notation d/dx and the integral sign is mostly Leibnitz's work, but the notation used in physics of a dot above a variable to indicate differentiation is Newton's.
Anyways, Newton would apparently go ballistic if someone even mentioned Leibnitz and when he was in the room he had turn around and people would write down "Leibnitz" not indicate who they were talking about not to mention the name in his presence.
> Don't overlook maintainability as an asset.
Bingo. Right on the Money. You are my hero.
Maintainability is not an asset to consider, it is by far the most important asset (that and a good user interface.)
I sometimes wish all these Python/PHP/Ruby/whatever dudes would learn that strong typing is an ASSET not a problem. Simply because the compiler checks a lot of structural integrity BEFORE the damn thing runs highlighting load of errors right there.
I know the argument that a type system is only in the way and is not really needed when the program is debugged in any case.
But a type system makes a hell of a difference when you (or your poor successor) needs to change anything later because many (if not most) of the conflicts caused by a change are IMMEDIATELY nailed down by the typechecker. This thing is, typeing bugs are bugs. If you send a number to a thing that expects a database connection Python will moan just as much as JAva. the difference is JAva will moan before you run. PYthon and PHP will not.
Don't get me wrong, I write loads of tings in Ruby and Python. Most of them are small things that do a specific task, adminstrative scripts that sort of things. But for large complex systems, don't get me on a non-typed language.
That said, I wish Java would move into a type system that is much more based on type inference, such as HAskell where the language IS stronlgy typed but you pretty much don't have to worry about it since it will infer almost everything. The parts you have to specify are not too much and you get teh best of both worlds. Strong typing as well as non-cluttered code.
> ...travel to another country where they drive
> backwards, you can still drive the cars.
> Shouldn't computers?
No necessarily. Remember, not all people can drive all vehicles. Don't put the average driver into a large truck or a bulldozer or a tractor for that matter. Or even a motorcycle. They are somewhat different and you will have trouble starting, or even wreck the gearbox, despite the similarities.
This is more of an analogy to the average geek. Most of us drive servers and things all day which is quite remote from the experience of the average user. And they should not be able to drive them either.
Also, computers are required to do looooads more different things than a car. A car goes from place A to place B and sometimes parks. A computer plays games, processes words, spreads sheets, has lots of nice colors in the documents, makes sounds, browses the web, speaks, sometimes listens, shows videos, allows you to compose music, browses databases, connects with more devices than you can pack in the average car and does an altogether much more rich set of things than a car does. The idea of a unified UI for such a device is a bit of a difficult thing, I think. People continually talk about the whole "computer-as-simple-appliance" idea. Bill Gates himself thinks this is bunk. For once I agree with him.
But I agree, this whole geek-arrogance thing is really getting on my tits sometimes. I ust had a meeting with a customer where I had to put up a fight to get them to install a single goddamn mailbox on Netscape. Fortunately the CEO, who is somewhat scared of the bullying admin simply put his foot down and told them to fuckoff when I pointed out to him that he is the boss and if he wants hem to change 2 lines in their bloody script they might as well do it because he sayd the better do it.
Hmmm. G5...Wife...
Difficult choice.
Who suicided? Your wife or the box? Or both?
You might be surprised at the amount of effort people would put up with in pursuit of their Pron :)
Reminds me of the time Windows NT4 persisted in creating a Swap file on my 100 MB ZIP disk which it though to be a hard disk.
I was really wondering why my !"!" machine was suddenly to totally slow. Fortunately they fixed this in some later SP.
God Help Us....
Well, that depends on what you define as "functional programming". Programming languages, like political parties, have extremist sides. In politics it is usually the ultra left who are totally socialist and the ultra right who is totally individualist (although the Nazis and Sascists were pretty damn socialist too, with all the "All for one Nation" thing, but I digress).
Like politics, studying the extremes in programming languages makes you understand the center so much better. In programming languages the spectrum is defined by the amount of state that a language has. In assembly languages you have to manipulate every bit of state, in a functional language, there is none. They represent the two extremes here.
In procedural languages the end result is constructed by progressively making small changes to a state. In C the tate is basically an big array of words which closely mirror the computer's real model. In Java and other OO languages the state is more like a graph of more abstract objects.
In a pure functional language the end state is mostly constructed by simply specifiyng the state (recursively or non-recursively) in terms of simple compoenents and no commands to change it are allowed.
No real language (except to pure machine code on the one hand and theortical academic mini languages on the other hand) are totally purely stateful or stateless. Haskell and SML must make provision for things which are inheritely statful such as changing the underlying filesystem. LISP is a strange amalgam of the two ways of thinking.
ALL procedural languages have an expression based sublanguage where you state things ina stateless way. Let me illustrate using good old C:
x =(y+5)-7;
And in Python:
x = left( [1,2,3,4], 2 )
Those things after the x= part are FUNCTIONAL PROGRAMS. This is inheritely less efficient than buggering around with the registers yourself but geuss what? It does not matter. computers follow a 95/5 rule where the machine spends 95% of its time in 5% of the code (probably worse). Also, modern machines are spending 99% of their time waiting your you to move the mouse of for a network packet so the efficiency does not really matter.
Also, curiously, Python and Ruby and Perl are generally considered to be more expressive than C and its ilk. Why? Because the expression part of the language allows you to directly manipulate multi-valued things such as lists which C (and Java) patently does not. To put it differently, they are more functional than C.
Many ideas that are now slowly getting mainstreamish in procedural languages, such a generics in Java, Templates in C, higher-order functions in Python and inner classes in Jave came out of the functional programming language research community. So maybe they don't exactly produce what you would call usable tools but they have been in the past and will be in the future an extremely rich source of ideas and inspiration for all the nuts and bolts tools out there in the field.
Not only are functional languages used in a small or large way inside all the procedural languages you love, they are by far the most used programming languages in the world. Why? Because Excel is a functional language. So is the SQL query language to a large extent. You simply state the relations of the things what you want and you get it.
What people want from their tools is simple.
They want to have a list of numbers or a table of names and add and sort and look at them WITHOUT specifying all the little intermediate steps to get the results. That is the computers problem.
And that is how it should be.
You can have your webmail because Squirrel is VERY trivial to setup. Basically it takes 5 minutes. It does not make any assumptions about the mailbox format or so, it is basically a CGI script that uses IMAP to get its mails. That means that the Squirrel server can also be run on another machine if you want to offload it. Usually you run HTTP on the same machine and set squirrel to use the local IMAP server.
One problem with Squirrel I have had (Suse 8.2, not sure about the version but pretty recent) is that it sometimes fails with folders with boatloads (several thousand) of mail in it.
Also remember that courier already contains an webmail program which I have not run yet but which may also be interesting. Courier also contains an SMTP server (which nobody ever talks about) as well as a POP server. Actually courier could probably do everything you want to do in one fell swoop. If it will do a good job I do not know, I only use it for IMAP.
Courier also contains scripts to automatically setup SSL on IMAP (which is great boon because setting up SSL is a bitch) and works with both IMAP/SSL (which uses another port) as well as TLS (which is an extension to the standard IMAP protocol which uses the same port as IMAP). TLS, however is not supported by Netscape's mailer. The IMAP/SSL port is.
Again, setting up the SSL stuff on courier was a breeze. Plug and play.
Whats really cool is Joy's comments about the coming rise of bitmpped displays. It is quaint to think that a bitmapped display was certainly not a given at that time, it was quite revolutionary.
Here is a cool 20 year old interview with him, written as far as I can see just after the first Mac came out. It makes for interesting reading:
http://www.cs.pdx.edu/~kirkenda/joy84.html
And he was responsible for vi. For this I cannot decide whether he should be praised as a computer great or be disgraced as the author of the greatest horrible-excuse-for-an-editor known to man.
http://www.cs.pdx.edu/~kirkenda/joy84.html
A somewhat off-topic question but since you seem to be a compiler guy...
How much more difficult is it to write a compiler backend for EPIC's VLIW architecture than for x86/64?
VLIW has always been very dependent on compiler optimizations to squeeze performance out of the chip. Is this realistic with modern optimization stages?
There are several games out there where you program a robot to do things.
Mindrover (which you can download a demo of, for both Linux and Windoze) is one where you have to build a robot. IBM has a program where you can program a Java robot but I suspect that is a bit above them.
Another possibility which is a visual programming language that uses video as a paradigm (I read that and I have not seen it) is Toontalk which you can find at www.toontalk.com. The object of the game is to write a program to control a robot that solves problems. Its aimed at kids. Demo at website too.
There are actually several visual programming languages done by university research projects aimed at kids. Try searching on Google. However, many of these things are mac based.
Also, maybe shoot for something that paints a picture based on a program. One thing that may also work is a dataflowish programming language (think Khoros, there is one on freshmeat as well but the name escapes me) that does image processing on a picture. For instance, you could have a picture of yourself and a flow with a control that changes the color of you hair, or better, even, get a webcam, do this live and squash the face of the teacher. I once did whits with two bored kids of a colleague of mine and it was a great hit with the girls.
Well I live in Germany and no, the beer isn't free but its very cheap. A litre of beer costs less than a litre of milk and also in some case than a litre of bottled water.
And its very good too!
Actually checked exceptions are controversial in Java as well. Bruce Eickel who wrote a few Java books for instance argues that there should be no checked exceptions.
Personally I like that exceptions are checked. It does get annoying at times to write try catch things for small programs but I do not think this is any different from the Python/Perl/Ruby people who diss the idea of explicit types. Its all about the language enforcing some iscipline on the programmer which leads to more reliable software.
Back in 1982 on the Apple II there was Kabul Spy, an adventure game which alo had this multi-layer anti cracking thing. But instead of bailing out or giving you an error the game simply went on but in such a way that there was no way out.
Basically, you crossed a border, and if it detected a crack it threw you in prison but it looked like a normal part of the game and you would NEVER know this was copy protection.