On a large project a key to getting anything done right is to have a standard and check that people stick to it. Code reviews are a Good Thing in any case. Checking that the comments say useful stuff should be part of this.
Every file should start with a preamble giving module name, version, author, and maybe revision history. Most of this can be generated automatically by your version control system.
Then there should be anything from a few sentences to a few paragraphs saying what problem this module solves and how it does it. Refer to any other documentation (e.g. UML diagrams, textbook for the algorithm) that might help illuminate what is going on.
Each function or data structure should have a similar comment explaining what it does.
Avoid comments that say "this routine is used by the Foo Function to update the Bar structure". Instead just say "This routine updates the Bar structure such that...". If the routine makes no sense on its own then it probably shouldn't be on its own.
They are happy to go to court. A judge's denial of a humouse patent would probably bar patents on all human-animal hybrids and possibly on human embryos. And even if they win a patent in court, they expect a public outcry that also could force Congress to act.
This would be an abuse of process. The courts (rightly) take a dim view of people manufacturing a controversy and then coming to court aiming to lose. Imagine if the 2600 case over DeCSS had not happened. Instead suppose the MPAA had created a small company to host a copy of DeCSS and then sued that company. The front company would put up a lawyer who would make a very weak case, and the MPAA would have gotten a binding precedent set without giving the real opponents of the DMCA a day in court to argue their corner.
These guys are proposing exactly the same abuse. They want a broad precedent against organisms with human cells in, and they propose to get it by creating a court case that does not give the proponents of patenting such organisms a chance to argue against it.
Incidentally, check out Friday by Robert Heinlein for more on this subject.
There are two problems with a software-based echo canceller
Its seriously compute intensive. You need two buffers: a circular echo buffer containing the last N samples where N is the sample frequency times the longest echo you want to cancel, and another buffer of N samples which describes the echos you are hearing. The echo cancellation to be applied to each sample is the sum of the products of the elements in the two buffers. For radio you want to be sampling at 20KHz (giving a 10KHz Nyquist cut-off), so if you want to cancel a 0.1 second echo then you are having to do 2K multiplications per sample, at 20KHz, giving 40e6 multiplications per second. Conference phones (the kind of thing that sits on a table) can do this more cost effectively by handling only 8k samples/sec, which gives much saner numbers. In parallel to this you have to be doing a much slower (say, 10 or 20 times per second) bit of DSP to tell you what the echos are as people move around and change the acoustic properties of the room. I'm not sure about how thats done, but it probably involves an FFT somewhere.
The whole thing is the hardest of hard real time. The echo correction for each sample has to be fed back into the audio at exactly the right time to be out of phase with the original echo. If you get the time wrong then you will be in phase for at least one frequency in the echo, and that frequency will be amplified around the loop.
This is simply not a job for stock hardware on stock OS. It needs dedicated DSP. Also I suspect you can save on the DSP by doing the buffers and multiplication in analogue hardware, but I don't know if that is cost effective in practice.
Unfortunately QC has some pretty fundamental limitations:
No amplification. Modern fibre optic networks use Erbium Doped Fibre Amplifiers (EDFAs) to boost the signals, especially on large networks using multiple wavelengths. Unfortunately the quantum entanglement can't withstand amplification.
Point to point only. A corollary of the above is that you can only have QC between one point and another which is not too far away (typically 100km of fibre).
This is not One Time Pad. For OTP you need key generation and distribution with the same bandwidth as your signal: for each bit of data you need one bit of key. QC is more suitable for key distribution for conventional symmetric cryptography. You might have a 10Gb link, and encrypt it with a 512-bit key that is changed once a second. Of course you can use the key data in OTP mode, but then your bandwidth is limited to your key distribution rate, which is usually several orders of magnitude lower than your potential data rate.
No authentication. Ultimately with QC you send photons down a fibre and receive photons from the other end. The only way that Alice knows that Bob is at the other end of the fibre is that she was told so. The only way around this is for Alice and Bob to share a secret authentication key before they start, which rather begs the question of how to distribute secret keys in the first place.
I can imagine televised video games, but it would have to be done right. (And "Pong" isn't doing it right).
Most attempts to do it give you the players POV, which for most games sucks just as much as, say, head mounted cameras in conventional sports. The player dashes here and there, looks left, looks right, and from the players point of view its very straightforward, but from the viewer's point of view its a confusing jerky mess.
What is needed is multi-player games with customised clients that act like camera positions. Put a "cameraman" in charge of the client with pan and zoom controls, and maybe smooth 3d traverse as well, and you would have a pleasant viewing experience.
You also need games that can do well given such a gods-eye view. Quake capture the flag games in fairly open terrain could work very well indeed.
He found that the model was *very* sensitive to a single parameter--I think it was pollution per capita. If that parameter was set above certain value, then the model predicted environmental catastrophy, pretty much independently of everything else.
Which is an interesting result. It suggests that this is the key thing for society to concentrate on in order to prevent disaster.
Of course you don't want to embark on such a course based purely on Limits to Growth, but the value of such simulations is that they tell you where the hidden levers are, even if they can't give precise predictions about what happens when you pull them.
Conway's Law states that the organisation of a software project will be congruent with the organisation of the people who built it. Commercial software is generally built by putting everyone together in a single location and treating all the developers as roughly equivalent and able to work on any part of the system. The result is a monolithic heap of code.
Open source software OTOH is built by widely separated people with narrow bandwidth links between each other and only a shared vision of the Right Thing to guide them. The result, as predicted by Conway's law, tends to be highly modular architectures focussed around a few core protocols or APIs that capture the vision.
Modular systems are inherently more flexible and reusable than monolithic systems because they exhibit low coupling between the modules. In contrast the monolithic software is more likely to have high coupling between modules, even though they are supposedly independent.
(There is also a related concept of "cohesion", which is the extent to which the features of each module hang together as conceptual wholes. I suspect that OSS will show higher cohesion than closed source software)
It would be interesting to get some statistics to test this theory. Does anyone know of any good software for measuring coupling in C code? I'd like to run some commercial and OSS software through it and see what it says.
The authority was not referanced to add weight. It was refferanced because I was quoting my source and that is how you avoid plagerism.
Not quite.
The reasons for quoting your source are:
To give credit where it is due, although in this case it doesn't matter. Even if you had omitted to mention NASA in that post nobody could have accused you of stealing their work.
To allow your readers to follow up on the information. For this your reference is useless. NASA is a huge organisation and publishes an awful lot. Who in NASA? Where are these experiments documented?
Without the details your reference to NASA is worse than useless. It makes the source sound authoritative, but doesn't let anyone verify your claims. In fact its got all the makings of an urban myth.
After all, it's not your fault they didn't read it
Actually it can be. I don't know how US law works, but over here in the UK the basic principle is that there must be some "meeting of minds": both sides must understand the same things about the agreement. The writing is evidence about what was agreed, but it is not absolute.
Normally this works to help the little guy. If you are in dispute with some company and they point out some clause you didn't read written in Flyspec 3 on the back of the invoice, you can reply that you didn't know about that clause, didn't agree to it, and therefore it isn't part of the contract. If its routine stuff like promising to pay within a certain time then they can still claim that you must have expected that such a clause would be there. But if its "unusual or onerous" (such as punitive charges for returning hired goods late) then they have to draw your attention to it, e.g. by putting a bold print warning on the front of the contract.
However in this case the rules are reversed. If you hide a modification to a contract in the middle of several pages of legalese and don't draw their attention to it, they can reasonably claim not to have known about your changes, and therefore not to have agreed to them. At this point things become seriously murky. In a dispute the Judge might decide there was no contract since there was no meeting of minds, and hence the default rules apply. Or s/he might decide that you were being deliberately deceptive and rule against you.
Maybe the time has come for an Open Source web blocking program which provides for finer control, and maybe a selection of which blocking list to subscribe to.
The software side is pretty simple. A perl script tied to MySQL will do the job. All that is needed is for the people who say they want children protected from this stuff to list the sites that they need to be protected from.
Personally I'm more on the side of logging and dealing with infractions rather than trying to create a padded cell. But even that approach would benefit from a list of sites to watch for.
Paul.
I did Project Management last week
on
Do You Like Your Job?
·
· Score: 3, Insightful
Part of my MSc (which also has a chunk of MBA-ish stuff thrown in).
One of the key things is this: there is always a trade-off between cost, time and functionality (including quality). Furthermore in most cases it is better to be 50% over budget or missing 50% of your functionality than 10% over schedule. This varies according to situation of course, and there are plenty of counter-examples (e.g. air traffic control). But most project managers know that the success of their project rests in getting it in on time regardless of cost and quality.
And they are right.
If you miss a market window your potential market share starts to drop exponentially as competitors take the lead. But of course all your competitors know that too, and are desperately trying to hit the market window defined by your launch date.
So when the PM comes down and tells you to get it shipped by Friday no matter how buggy it is, its not because he doesn't know his business, its because he does.
Why would using animals free you from ethical concerns?
It wouldn't. It would considerably ease them though. I regard the use of animals in medical research as an unfortunate necessity. I eat meat, and I can see little ethical difference between killing an animal for food and killing it as part of a research programme.
I do not believe medical research is "arbitrary". It serves the important goal of preserving and improving human life.
The work reported is fine and dandy, but why go through the ethical and legal troubles of using human embryos? Why not start with animals like the cloners did?
A sheep conceived and gestated through entirely artificial means seems to me just as amazing as a cloned sheep, and you can then start working on humans once you have the bugs out of the system.
Is the data honest? Mostly this is a matter of someone testifying that they are certain that nothing has been altered. But technology can certainly help with this. Ideally the cameras would put a digital signature on every frame they take, but that may not be available. Failing that have a box under lock and key which provides a secure timestamping service to the rest of the network.
Is the data correct? This is the issue that someone mentioned with JPEG compression. Whilst I'm no expert I would think that as long as the image doesn't have obtrusive compression artifacts you will be OK. With luck you will get several images of a criminal, so a claim that the image compression had messed up their features consistently several times will fall flat. Where admissability becomes a serious issue is where image enhancement techniques are used to try to pull information out of low-res noise.
A particularly relevant paragraph from chapter 3 reads:
To date, no hacker has come out shooting, though they do sometimes brag on boards that they will do just that. Threats of this sort are taken seriously. Secret Service hacker raids tend to be swift, comprehensive, well-manned (even overmanned); and agents generally burst through every door in the home at once, sometimes with drawn guns. Any potential resistance is swiftly quelled. Hacker raids are usually raids on people's homes. It can be a very dangerous business to raid an American home; people can panic when strangers invade their sanctum. Statistically speaking, the most dangerous thing a policeman can do is to enter someone's home. (The second most dangerous thing is to stop a car in traffic.) People have guns in their homes. More cops are hurt in homes than are ever hurt in biker bars or massage parlors.
In addition to having allegedly broken some pretty straighforward computer misuse laws this guy was advocating violence against the state. I think that going in with guns drawn was a perfectly reasonable approach.
It takes maybe a month to locate new premises, buy new equipment, wire everything up and get people moved in. Maybe less if you are a small organisation or have someone talented doing it. The costs of doing this are paid by your fire insurance (which you have, of course). This is still not free because you are not running your business at the time so your cash flow situation may get tight.
But if you lose your data you lose your business, and no insurance is going to cover that. Years of work goes up in smoke.
Check out Amanda. You give it a backup cycle of D days and a tape cycle of T tapes where T is usually 2D+3 or so. Drives to be backed up from around the network are listed in a config file. Over a period of D days the system will (if it can) schedule a level 0 (full) backup of everything and also do a level 1 (diff against last level 0) backup of every drive every day. Sometimes it has to drop to level 2 (diff against last level 1) to make it all fit.
When you want to recover something a browser lets you traverse the directory tree and tag the files you want. Then Amanda tells you which tapes to mount to recover them. Cool!
Err, me, as I mentioned in another post in this thread. My wife and I realised some years ago that we had an awful lot of our lives on disk. Since I have tape backups, taking a tape set to work to keep in my desk seems a trivial precaution.
Sorry, I just noticed a thinko in the discussion of IDE drive costs. The DLT costing assumed 2:1 compression. The disk cost didn't. Assuming compression we can squash 120GB onto a 60GB drive, requiring only 9 drives for a full backup, and 20 drives overall (a couple of spares is always a good idea). Thats £2200 for IDE backup, which is actually cheaper than the DLT solution.
Does anyone out there actually use IDE drives like this? It seems a pretty obvious thing to do.
Absolutely. And to those who say "Just build another one" / "RAID doesn't need backup", I have only one thing to say:
FIRE!
Any serious data store needs to include a backup system which allows for copies off-site. Fire is the obvious risk of course, but floods, vandalism and lightning strikes are all possibilities.
AFAIK the only generally available tape backup for something this big is DLT, which IIRC can now do around 40GB per tape before compression. With the 2:1 compression usually quoted thats 80GB per tape, or around 13-14 tapes for a full backup. So you really need about 30 tapes for a double cycle, and maybe more if lots of the data is non-compressible (like movies). But this stuff ain't cheap. DLT drives start at around £1000 and the tapes cost £55 each. So thats around £2500 = $4200 to back this beastie up.
Having said that, the possibility of using hot-swappable IDE drives as backup devices is intriguing. Just point your backup program at/dev/hdx3 or whatever. One big advantage is that if your tape drive gets cooked in the server-room fire you don't have the risk of tapes that can only be read on the drive that wrote them. A Seagate 5400RPM 60GB drive costs £110, which is only a third more per megabyte than a bare DLT tape. Two cycles-worth of backup (34 drives) would be £3,700. And you can probably do better by shopping around. For servers with only a few hundred GB on line this might well be more cost-effective than buying a DLT drive.
We use Amanda to do backups here. Its a useful program, but it can't back up a partition bigger than a tape. So you need to think carefully about your partition strategy. (Side note: you can use tar rather than dump to break up over-large partitions, but its still a pain).
Suddenly that terabyte starts looking a bit more expensive.
I can see a whole new collection of risks here, especially if there are any curved surfaces involved. At various times of the day a transparent product would focus the sun's rays into various hotspots. Some of these might be intense enough to cause burns or even fire. The lenses would not be terribly efficient, but they would be very large.
Have you sent email to the DOJ about this? I think they should have it formally bought to their attention that MS is engaged in astroturfing on this issue.
Of course there is nothing illegal, and probably not even unethical about such activity: this/. story is an attempt at exactly the same thing. But the MS effort is considerably better funded and organised, and this should be mentioned when the results are summarised.
Every file should start with a preamble giving module name, version, author, and maybe revision history. Most of this can be generated automatically by your version control system.
Then there should be anything from a few sentences to a few paragraphs saying what problem this module solves and how it does it. Refer to any other documentation (e.g. UML diagrams, textbook for the algorithm) that might help illuminate what is going on.
Each function or data structure should have a similar comment explaining what it does.
Avoid comments that say "this routine is used by the Foo Function to update the Bar structure". Instead just say "This routine updates the Bar structure such that...". If the routine makes no sense on its own then it probably shouldn't be on its own.
Paul.
This would be an abuse of process. The courts (rightly) take a dim view of people manufacturing a controversy and then coming to court aiming to lose. Imagine if the 2600 case over DeCSS had not happened. Instead suppose the MPAA had created a small company to host a copy of DeCSS and then sued that company. The front company would put up a lawyer who would make a very weak case, and the MPAA would have gotten a binding precedent set without giving the real opponents of the DMCA a day in court to argue their corner.
These guys are proposing exactly the same abuse. They want a broad precedent against organisms with human cells in, and they propose to get it by creating a court case that does not give the proponents of patenting such organisms a chance to argue against it.
Incidentally, check out Friday by Robert Heinlein for more on this subject.
Paul.
Paul.
- Its seriously compute intensive. You need two buffers: a circular echo buffer containing the last N samples where N is the sample frequency times the longest echo you want to cancel, and another buffer of N samples which describes the echos you are hearing. The echo cancellation to be applied to each sample is the sum of the products of the elements in the two buffers. For radio you want to be sampling at 20KHz (giving a 10KHz Nyquist cut-off), so if you want to cancel a 0.1 second echo then you are having to do 2K multiplications per sample, at 20KHz, giving 40e6 multiplications per second. Conference phones (the kind of thing that sits on a table) can do this more cost effectively by handling only 8k samples/sec, which gives much saner numbers. In parallel to this you have to be doing a much slower (say, 10 or 20 times per second) bit of DSP to tell you what the echos are as people move around and change the acoustic properties of the room. I'm not sure about how thats done, but it probably involves an FFT somewhere.
- The whole thing is the hardest of hard real time. The echo correction for each sample has to be fed back into the audio at exactly the right time to be out of phase with the original echo. If you get the time wrong then you will be in phase for at least one frequency in the echo, and that frequency will be amplified around the loop.
This is simply not a job for stock hardware on stock OS. It needs dedicated DSP. Also I suspect you can save on the DSP by doing the buffers and multiplication in analogue hardware, but I don't know if that is cost effective in practice.Paul.
Paul.
Most attempts to do it give you the players POV, which for most games sucks just as much as, say, head mounted cameras in conventional sports. The player dashes here and there, looks left, looks right, and from the players point of view its very straightforward, but from the viewer's point of view its a confusing jerky mess.
What is needed is multi-player games with customised clients that act like camera positions. Put a "cameraman" in charge of the client with pan and zoom controls, and maybe smooth 3d traverse as well, and you would have a pleasant viewing experience.
You also need games that can do well given such a gods-eye view. Quake capture the flag games in fairly open terrain could work very well indeed.
Paul.
I haven't actually used their IDE-RAID cards, but everyone I've heard from speaks very highly of them.
Paul.
Which is an interesting result. It suggests that this is the key thing for society to concentrate on in order to prevent disaster.
Of course you don't want to embark on such a course based purely on Limits to Growth, but the value of such simulations is that they tell you where the hidden levers are, even if they can't give precise predictions about what happens when you pull them.
Paul.
Open source software OTOH is built by widely separated people with narrow bandwidth links between each other and only a shared vision of the Right Thing to guide them. The result, as predicted by Conway's law, tends to be highly modular architectures focussed around a few core protocols or APIs that capture the vision.
Modular systems are inherently more flexible and reusable than monolithic systems because they exhibit low coupling between the modules. In contrast the monolithic software is more likely to have high coupling between modules, even though they are supposedly independent.
(There is also a related concept of "cohesion", which is the extent to which the features of each module hang together as conceptual wholes. I suspect that OSS will show higher cohesion than closed source software)
It would be interesting to get some statistics to test this theory. Does anyone know of any good software for measuring coupling in C code? I'd like to run some commercial and OSS software through it and see what it says.
Paul.
Not quite.
The reasons for quoting your source are:
To give credit where it is due, although in this case it doesn't matter. Even if you had omitted to mention NASA in that post nobody could have accused you of stealing their work.
Without the details your reference to NASA is worse than useless. It makes the source sound authoritative, but doesn't let anyone verify your claims. In fact its got all the makings of an urban myth.
Paul.
Actually it can be. I don't know how US law works, but over here in the UK the basic principle is that there must be some "meeting of minds": both sides must understand the same things about the agreement. The writing is evidence about what was agreed, but it is not absolute.
Normally this works to help the little guy. If you are in dispute with some company and they point out some clause you didn't read written in Flyspec 3 on the back of the invoice, you can reply that you didn't know about that clause, didn't agree to it, and therefore it isn't part of the contract. If its routine stuff like promising to pay within a certain time then they can still claim that you must have expected that such a clause would be there. But if its "unusual or onerous" (such as punitive charges for returning hired goods late) then they have to draw your attention to it, e.g. by putting a bold print warning on the front of the contract.
However in this case the rules are reversed. If you hide a modification to a contract in the middle of several pages of legalese and don't draw their attention to it, they can reasonably claim not to have known about your changes, and therefore not to have agreed to them. At this point things become seriously murky. In a dispute the Judge might decide there was no contract since there was no meeting of minds, and hence the default rules apply. Or s/he might decide that you were being deliberately deceptive and rule against you.
Disclaimer: I am not a laywer.
Paul.
The software side is pretty simple. A perl script tied to MySQL will do the job. All that is needed is for the people who say they want children protected from this stuff to list the sites that they need to be protected from.
Personally I'm more on the side of logging and dealing with infractions rather than trying to create a padded cell. But even that approach would benefit from a list of sites to watch for.
Paul.
One of the key things is this: there is always a trade-off between cost, time and functionality (including quality). Furthermore in most cases it is better to be 50% over budget or missing 50% of your functionality than 10% over schedule. This varies according to situation of course, and there are plenty of counter-examples (e.g. air traffic control). But most project managers know that the success of their project rests in getting it in on time regardless of cost and quality.
And they are right.
If you miss a market window your potential market share starts to drop exponentially as competitors take the lead. But of course all your competitors know that too, and are desperately trying to hit the market window defined by your launch date.
So when the PM comes down and tells you to get it shipped by Friday no matter how buggy it is, its not because he doesn't know his business, its because he does.
Paul.
It wouldn't. It would considerably ease them though. I regard the use of animals in medical research as an unfortunate necessity. I eat meat, and I can see little ethical difference between killing an animal for food and killing it as part of a research programme.
I do not believe medical research is "arbitrary". It serves the important goal of preserving and improving human life.
Paul.
A sheep conceived and gestated through entirely artificial means seems to me just as amazing as a cloned sheep, and you can then start working on humans once you have the bugs out of the system.
Paul.
Paul.
A particularly relevant paragraph from chapter 3 reads:
In addition to having allegedly broken some pretty straighforward computer misuse laws this guy was advocating violence against the state. I think that going in with guns drawn was a perfectly reasonable approach.
Paul.
But if you lose your data you lose your business, and no insurance is going to cover that. Years of work goes up in smoke.
Paul.
When you want to recover something a browser lets you traverse the directory tree and tag the files you want. Then Amanda tells you which tapes to mount to recover them. Cool!
Paul.
Paul
Over the years we have put so much of our lives on to the PCs that we would be seriously lost without the archive.
Paul.
Does anyone out there actually use IDE drives like this? It seems a pretty obvious thing to do.
Paul.
FIRE!
Any serious data store needs to include a backup system which allows for copies off-site. Fire is the obvious risk of course, but floods, vandalism and lightning strikes are all possibilities.
AFAIK the only generally available tape backup for something this big is DLT, which IIRC can now do around 40GB per tape before compression. With the 2:1 compression usually quoted thats 80GB per tape, or around 13-14 tapes for a full backup. So you really need about 30 tapes for a double cycle, and maybe more if lots of the data is non-compressible (like movies). But this stuff ain't cheap. DLT drives start at around £1000 and the tapes cost £55 each. So thats around £2500 = $4200 to back this beastie up.
Having said that, the possibility of using hot-swappable IDE drives as backup devices is intriguing. Just point your backup program at /dev/hdx3 or whatever. One big advantage is that if your tape drive gets cooked in the server-room fire you don't have the risk of tapes that can only be read on the drive that wrote them. A Seagate 5400RPM 60GB drive costs £110, which is only a third more per megabyte than a bare DLT tape. Two cycles-worth of backup (34 drives) would be £3,700. And you can probably do better by shopping around. For servers with only a few hundred GB on line this might well be more cost-effective than buying a DLT drive.
We use Amanda to do backups here. Its a useful program, but it can't back up a partition bigger than a tape. So you need to think carefully about your partition strategy. (Side note: you can use tar rather than dump to break up over-large partitions, but its still a pain).
Suddenly that terabyte starts looking a bit more expensive.
Paul.
Paul.
Please go ahead.
Paul.
Of course there is nothing illegal, and probably not even unethical about such activity: this /. story is an attempt at exactly the same thing. But the MS effort is considerably better funded and organised, and this should be mentioned when the results are summarised.
Paul.