So this is the only sort of development that we do. A team with 20 engineers is actually pretty small here.
The first thing to do is to divide the functionality among engineers and have the engineers work in their own modules, talking with other engineers to find out what their needs are. That way, one person is responsible for changes to any given file. In addition, make sure that files are *locked* while somebody has them checked out -- ie you can't change it while I do.
Next, people should know about what they're going to do to a module before they check it out -- if it's checked out for more than 1-2 days, it's too long.
And, finally, there needs to be a mechanism to group changes together. So, if you're making a change in the code that requires changes in modules A, B and C, you check out A, B and C, and then you check them back in. That way, later on when somebody wants to compile the entire thing, they know they're getting your full change and not just your changes to A & B.
In any sufficiently-large software project, 10% of the code will receive 90% of the changes. The key is to find a way to serialize changes to that 10% -- the other 90% of the code will probably never be an issue.
Your boss has obviously taken a bunch of buzzwords with no clue what they mean and is making them requirements.
For example: "simplified GUI design and event handling;" Simplified compared to *what*? Xt is simpler design and event handling than Xlib. Tk is (imo) simpler than X.
Why does he know that he's going to need garbage collection or operator overloading?
The real thing he needs to do is look at the requirements of the project, the skills of the available designers, budget and time and go from there. I'd be really annoyed if my boss came to me and said "You're not supposed to be using C++ because it doesn't have garbage collection built-on."
Hmm... So, in the US, there are all sorts of liability suits about things like "The bartender knew I was drunk, but he let me drive myself home anyway," and there's always the occasional bar fight to respond to. Don't know how they handle that in this bar. Or, how does the bartender respond to the suicidal guy whose wife just left him? Bartenders do a lot more than just serve drinks.
I wonder if they have electronic "Norm"s and "Cliff"s as well....
This is commonly known as overselling, and it's common in utilities in general and telecom in specific. Depending on where in the network you are anywhere from 10-to-1 to 1000-to-1 overselling may be happening. Cell phones, for example, are closer to the 100-to-1 mark: if even 1/10th of the people with cellphones in this country were to make a call at the same time, the cell system would be overwhelmed. Similarly, if everybody in a neighborhood were to try to place a long-distance call, the phone system would be overwhelmed. Or, if everybody turned their dryer and A/C on at the same time, the electrical system probably wouldn't be able to handle it.
The fact is that they depend on the fact that most people are not on constantly, and they run statistical models to figure out what capacity they need to run to generate a certain level of service.
Note that 50% of the people are going to be above average users. So, saying "We're going to charge you more because you're using more than your share" is farcical -- they're pretending like they're surprised that some people aren't just using their $50/mo broadband connection to check the weather every other day.
It's really just "Discriminatory Pricing" -- a way to eke out a few more bucks from their capacity, by finding the people who get more value from it and trying to get them to pay more. Airlines have been doing it for years by charging business customers more.
So, WRT the OSDN "Carrier Grade Linux" thread, I work for one of those companies that has 'Other' in there. Here are the some of the main things that general-purpose OS's tend to lack:
1. Redundant processors -- there are always two processors running. When one fails, control switches to the other processor. Meanwhile, the failed processor (actually, the entire board) can be replaced and brought back to life. Without affecting any application running on the system, heck typically without their even being aware.
2. Ability to add and remove peripheral cards in a running system -- so, you have a system that has a card with 8 T1 lines going into it, and you want to add another card -- just stick it in, configure it, and away you go.
3. Redundant links -- things like "If one lan interface drops, I'll switch to the other one and keep any connections up." (this requires support from your network), etc....
4. Seamless software upgrade -- if you have two processors, you run the current software on one, get the new software running on the other one, sync them up and then the new software takes control and doesn't lose track of what was going on.
5. Related to #4, above -- "Cutover". If you're running on system 'A' that's obsolete, you need to be able to switch over to using newer system 'B' and not lose anything that's going on. This isn't necessarily an OS thing.
All these requirements come from age-old regulatory requirements that said that ma bell could set her rates based on the quality of service that it provides, and which forced the bell companies to keep extensive records of outages and downtimes. So, not only were there the above software requirements, but there are also a bunch of hardware requirements (boards have to be hot-swappable, for example), and power requirements as well -- telephony companies have multiple connections to the power grid with battery backup and generators, and so on...
With all that in place, it's amazing that they still bury the redundant cable right next to the primary cable so some yutz on a backhoe can come along and take out the phone system.
Sam's clum in the area recently had a WD 100GB dide hard drive on sale for $120 after rebate. 1TB at that rate is ~$1320, plus a few hundred for the Motherboard, processor memory and extra controller cards, and a TB server is within reach of an 18-year-old who saved his paper-route money.
The real question is: how long will it take to listen to all those mp3s? At some point, extra storage just isn't practical because you can't fill it fast enough.
1. Keeping old records around can be expensive -- not only do you have to keep the media it's on, but you have to make sure you have the ability to read that media, and once you do, that you have the appropriate software and hardware to understand the message itself. Destroying them after you don't really need them any more saves a lot of expense. And, that doesn't even begin to talk about deteriorating backup media.
2. Similarly, part of the problem is in making sure that you have a *complete* record -- you don't want to have a partial record, where the mail to the CFO says "Hey! Let's screw the employees out of their pension," but not the corresponding mail from the CFO that says "That's illegal and immoral. You're fired." So, the idea is not so much to cover up past wrongs, as it is to make sure that you have a true archive.
3. The other thing is that there are some things that are embarassing, but not illegal -- the fact that the CEO didn't retire for health reasons, but was forced out because he got his secretary pregnant, for example.
I don't know about everybody else, but I use my e-mail as a record of what *I've* done, and 9 months (as somebody mentioned earlier) is not far enough back -- heck, every year we have performance reviews, and how am I going to say "This is what I did 11 months ago" if I don't have any record of what I did 11 months ago.
So, when I was the head grader for the first hard cs couse at CMU, I wrote a similar program -- it does't need to be very complicated because cheaters are, by definition, lazy. Change some variable names, comments, whitespace, move some code around and maybe break a function into two smaller ones, and that's it. My code just counted the numbers of braces, 'if' statements, parentheses, equal signs, etcc, producing a set of numbers for each program. Then, sort them and pick out the ones that are really close to each other. Those get picked out for hand checks.
As for why: everybody was supposed to do their own work -- this was not one of the courses where people were supposed to collaborate on their programming assignments (those courses came later.) Some students went overboard on the restrictions -- there was never anything wrongg with discussing the assignments (that's part of the learning process as well), but everybody needed to do their own work to prove that they understood the material.
Now that I'm out in the "real world," this makes sense -- I can tell the people who cheated and slacked their way through school, because they don't last long without understanding what they're doing.
One of the problems with this method is that it assumes that you know in advance how everything works -- all too often, this isn't the case, and so you end up iterating over your design. For some projects, it may work well, but for others.... ick.
On the other hand, you definately want to have a basic plan-of-attack (ie "this is how I think it's going to work, more-or-less. Here are the key abstractions and here's how I plan to manipulate them") in a format that other people can look at and review -- the point here is to allow other people to catch problems in your approach *before* you commit all the time putting it in code.
As far as how to write documents -- I do as much documentation in *emacs* as I possibly can. (*Gasp* they say). I draw out diagrams long-hand. Once all that's done, I put it into the tool (Adobe FrameMaker in our case). The point here is that it prevents me from being distracted by formatting (ie "how it looks") and concentrate on content ("what it says.")
Well, yeah. It's basic discrete math, the pigeon-hole principle. You can't map a large set into a smaller set without having some overlap. And, since you have overlap, then you won't be able to tell how to decompress your compressed data.
The differences in the degrees is easy enough to find out -- just look at the differences in the cirriculum. As far as what you can do with each once you get out...
Generally, the MIS people work in (or sometime are) the IS/IT departments of a company -- they're the people who keep the computers running, and develop the software used to keep the business running, often by starting with a known package and tweaking it to meet the company's needs. These folks are responsible for things like the payroll systems, purchasing, employee tracking and so on.
On the other hand, the CS people are generally on the product development side -- they're the ones writing the control systems for the satellites, writing the DSP code for en/de-coding MP3 files, designing missile control systems, writing compilers or designing operating systems. THere's a big research side to CS.
There's certainly some cross-over and the two sides are not exclusive -- you'll often find a bunch of old physics guys doing the CS-type work, for example.
My experience has been that the CS side pays better in industry.
I don't totally understand this. First of all, why wire anything, when wireless networks now provide or will soon provide all the bandwidth anybody could want? If you are going to wire the network, at least use home-run wiring and conduit so you can pull the cable you'll need when the next networking technology comes along.
Secondly, exactly what are you going to be doing on these servers? If they're going to be file servers, remember that you easily get 1TB across 2 normal mid-tower cases now. Even if you're serving video, that should be more than enough.
Now, if you happen to have a PDP-8 lying around that you want to install, then all bets are off. But, for anything inside of a typical person's budget, I don't think you have much to worry about.
If you're really concerned, though, get one of the whole-house generators that take over when your power goes out. Use that and local UPSs to keep everything going.
What's so stinking funny about this is that Mailboxes Etc is *OWNED* by UPS. If they can't figure out how to pack something so UPS won't break it, who will?
(see the 'about MBE' link at www.mbe.com if you don't believe me....)
So, I understand that your customer wants 24x7 30fps. Part of the job of the engineer is to extract what the real requirements are from the "wishes." I'd argue that your customer likely wouldn't mind 15fps, for example. And, I'd argue that (assuming this is a surveillance system) you could add motion sensors or delete the scenes that aren't any different from the background, vastly decreasing the amount of data. Also, the 'stored indefinately' thing is a bit silly -- can't you put a 10 year window on it? Otherwise, your data will eventually fill every warehouse in the world, and your customer won't be able to afford the rent. It seems to me that this is really your initial job -- shrinking the amount of data that actually needs to be stored.
The question implied some sort of centralized storage area. I think this is a dumb idea, because you're going to spend huge bucks on the centralized equipment for storing it, compression, decompression and so on. Instead, I'd locate storage with each camera or some small (3-5 camera) subset of the cameras on something manageable (like a few tape jukeboxes or similar), and pay somebody to go around swapping tapes every few days or week or whatever. If you want to run a network, make it cheap -- low-speed ethernet or serial. Sure, it'll take a while to download any given thing, but so what? If you really want it quickly, you can always go get the tapes.
The WWW as well as Gopher, FTP, Telnet, WAIS, Archie and Veronica before it have been based on free tools that have come out of university environments -- anybody with enough technical know-how has access to the standards by which these tools operate, and can thus write programs that communciate via these standards. Many of these programmers are in educational settings where they work with little or no financial support. In addition, some of the most predominant software for the Web today is available without licensing fees -- take Apache for example.
It seems to me that adding royalties to the cost of writing software that interoperates with other W3C software is a specific threat to this sort of development, because what may be "reasonable and non-discriminatory" to a $100M business may be thoroughly out-of-reach and prohibitively expensive for 4 college students working on their senior project. As a result, rather than invigorating development, adding royalties would seem to slow it down by denying the ability to develop to the very people who have gotten us to where we are today. What mechanisms are there in the proposal to protect the ability of those who have been producing high-quality freeware to continue to do so?
So, assuming that the device has a NIC with a unique MAC address, the IP address does not need to be assigned to the NIC -- it ought to be determinable by the network number on which the machine sits -- the right 48 bits of the 128-bit IPv6 address are intended for the MAC address.
IPv6 does a lot more than quadruple the address space -- it makes things like mobility and redundant routers much easier. In doing so, it actually wastes a large percentage of the address space.
Also, while it's true that IPv4 theoretically has 2^32 addresses, we need to remember that there's a lot of deliberate underuse there as well -- for example, the multi-cast range, the numbers reserved for private subnets & so on.
In addition, just the way in which addresses have been doled out (class A addresses, for example) has yielded a lot of waste. But, I don't think that the right solution is to "undo" those things -- "Ok, MIT, we need a bunch of those addresses back, and we don't care how much you have to spend to do it." Not only does this cost money, but it means that your central routing tables get really messed up -- now you can't just say "55.something..." Ok, gotta route that to Boeing. Instead, you replace that one entry with 65,000 entries. (Assuming class C addressing.) Ick.
NAT works reasonably well if you're operating in client/server mode -- ie your client is behind a firewall and the only time the NAT host receives something for the client, it's in response to a different client message. If you're peer-to-peer or running servers, NAT really gets in the way. Ever try running two web servers at port 80 behind a NAT server? Doesn't work.
So, it seems to me that GWB was true to his anti-abortion views while at the same time recognizing that the important thing was to prevent future 'harvesting' of embryos.
The Nazis performed a lot of barbaric research on the Jews (and others) during WWII, producing a lot of useful data. Among the medical and scientific community, for 55+ years, there's been an on-going debate about whether it's right to use that data, considering the source it came from. A prevelent side of the argument is "Yes, because it allows us to produce some good from these horrible experiments" -- it isn't "The end justifies the means," as much as "It's already happened, what is our response?"
Similarly, the President feels that destroying these embryos, particularly to perform research on them, is wrong. However, for the ones that have already been destroyed and have already produced lines of stem cells, what do we do? He's recognized that the end does not justify the means by deciding against funding any more harvesting. But, then the question is "What do we do with the ones we have now?" I think GWB's response to that is "It's better to do good than to do nothing."
So, the letter said that ac3dec infringed on Dolby'd intellectual property rights, but didn't specify what rights that was -- it said that AC3 had been registered with the patent and trademark office, but didn't list a patent number.
I think I would send a letter back asking exactly which patent or copyright work was being infringed. As it is, it sounds like the letter is just a scare tactic with no meat behind it.
Phooey. Telephone-quality voice in 3k/sec? I don't think so.
ITU rec G.723.1 is the common low-bandwidth codec in use, and it goes down to 5.6 kb/s, but the 6.4 kb/s varient is more common. G.729, at 8 kb/s, begins to approximate the quality you'd see on a voice call. G.711 is what's commonly used in telephony systems, and that's 64 kb/s. (kb=kilobits).
So, companies like Cisco (and Nortel, who I work for) have been working on this for a while. It's one of the reasons that Lucent isn't doing so well -- all the telcos decided that VoIP was the wave of the future, and stopped buying traditional telephony switches. Lucent didn't pick up on that fact and so they're playing catch-up.
The primary problem with the net2phone box is that it uses the Internet as transport, and there is no end-to-end management of the internet. So, the packets that contain your voice have to compete on an equal footing with other peoples packets, despite the fact that yours are much more time-sensitive.
The delay is likely due to the amount of buffering that needs to be done because of this. And, the fuzzy audio is because the audio still needs to be compressed, despite the high-bandwidth connection. Most home broadband connections can transport much more data coming down than going back up, so the outgoing voice stream needs a lot of compression.
There are other problems: What services does this box do? Can it handle 3-way calls, call-waiting, call-forwarding, etc.... What happens when you plug a modem or fax into it?
What I think you'll see is the broadband service provider putting in a home gateway (Analog phone-to-VoIP Gateway, not the ubquitous linksys box), then routing that VoIP over their private network, instead of feeding it straight to the internet. Cable-modem folks are especially eager to get into that market, because while VoIP doesn't use up that much bandwidth, phone-calls are a high-dollar business.
It's possible that they're being good guys here...
We all recognize that they have to protect their trademark -- maybe they're saying "We have to protect our trademark, but we don't particularly want to be jerks to the Linux community, SOOO how about we sell you the right to use the name for a relatively small sum of money.
As far as the "Common words can't be trademarked" argument -- phooey. Wouldn't Dodge complain if another car maker started selling a "Viper," VW if somebody started to make a "Beetle" or NBC if ABC started a TV show called "Friends"?
Common words can be trademarked as long as you're not trying to trademark an existing usage -- to my knowledge, computer drawing programs had never been called "Illustrators" prior to Adobe/Aldus, just as there had never been a TV show called "Friends" prior to the ABC show. However, nobody would rationally be able to trademark the term "6 o'clock news" for their evening newscast, because it had been common to use that phrase to generically describe the local news that happens at 6pm. Presumably, however, if somebody wanted to obtain a trademark on a computer program named "6 o'clock news," that would be legitimate.
Hmmm. If this is true, then could somebody
sue Microsoft for not including the source for their software?
Microsoft would need to defend itself, presumably by saying "The GPL doesn't say that we have to," which would necessarily go against their public stance of the GPL being "Virulent."
In the US, the Constitution is regarded as the "Supreme Law of the Land," changes to which must undergo an amendment process. So, any treaty entered into just has the weight of an act of Congress, and may thus be found unconstitutional. No treaty may take away the rights recognized by the constitution. (IANAL)
So this is the only sort of development that we do. A team with 20 engineers is actually pretty small here.
The first thing to do is to divide the functionality among engineers and have the engineers work in their own modules, talking with other engineers to find out what their needs are. That way, one person is responsible for changes to any given file. In addition, make sure that files are *locked* while somebody has them checked out -- ie you can't change it while I do.
Next, people should know about what they're going to do to a module before they check it out -- if it's checked out for more than 1-2 days, it's too long.
And, finally, there needs to be a mechanism to group changes together. So, if you're making a change in the code that requires changes in modules A, B and C, you check out A, B and C, and then you check them back in. That way, later on when somebody wants to compile the entire thing, they know they're getting your full change and not just your changes to A & B.
In any sufficiently-large software project, 10% of the code will receive 90% of the changes. The key is to find a way to serialize changes to that 10% -- the other 90% of the code will probably never be an issue.
Your boss has obviously taken a bunch of buzzwords with no clue what they mean and is making them requirements.
For example: "simplified GUI design and event handling;" Simplified compared to *what*? Xt is simpler design and event handling than Xlib. Tk is (imo) simpler than X.
Why does he know that he's going to need garbage collection or operator overloading?
The real thing he needs to do is look at the requirements of the project, the skills of the available designers, budget and time and go from there. I'd be really annoyed if my boss came to me and said "You're not supposed to be using C++ because it doesn't have garbage collection built-on."
Hmm... So, in the US, there are all sorts of liability suits about things like "The bartender knew I was drunk, but he let me drive myself home anyway," and there's always the occasional bar fight to respond to. Don't know how they handle that in this bar. Or, how does the bartender respond to the suicidal guy whose wife just left him? Bartenders do a lot more than just serve drinks.
I wonder if they have electronic "Norm"s and "Cliff"s as well....
This is commonly known as overselling, and it's common in utilities in general and telecom in specific. Depending on where in the network you are anywhere from 10-to-1 to 1000-to-1 overselling may be happening. Cell phones, for example, are closer to the 100-to-1 mark: if even 1/10th of the people with cellphones in this country were to make a call at the same time, the cell system would be overwhelmed. Similarly, if everybody in a neighborhood were to try to place a long-distance call, the phone system would be overwhelmed. Or, if everybody turned their dryer and A/C on at the same time, the electrical system probably wouldn't be able to handle it.
The fact is that they depend on the fact that most people are not on constantly, and they run statistical models to figure out what capacity they need to run to generate a certain level of service.
Note that 50% of the people are going to be above average users. So, saying "We're going to charge you more because you're using more than your share" is farcical -- they're pretending like they're surprised that some people aren't just using their $50/mo broadband connection to check the weather every other day.
It's really just "Discriminatory Pricing" -- a way to eke out a few more bucks from their capacity, by finding the people who get more value from it and trying to get them to pay more. Airlines have been doing it for years by charging business customers more.
So, WRT the OSDN "Carrier Grade Linux" thread, I work for one of those companies that has 'Other' in there. Here are the some of the main things that general-purpose OS's tend to lack:
1. Redundant processors -- there are always two processors running. When one fails, control switches to the other processor. Meanwhile, the failed processor (actually, the entire board) can be replaced and brought back to life. Without affecting any application running on the system, heck typically without their even being aware.
2. Ability to add and remove peripheral cards in a running system -- so, you have a system that has a card with 8 T1 lines going into it, and you want to add another card -- just stick it in, configure it, and away you go.
3. Redundant links -- things like "If one lan interface drops, I'll switch to the other one and keep any connections up." (this requires support from your network), etc....
4. Seamless software upgrade -- if you have two processors, you run the current software on one, get the new software running on the other one, sync them up and then the new software takes control and doesn't lose track of what was going on.
5. Related to #4, above -- "Cutover". If you're running on system 'A' that's obsolete, you need to be able to switch over to using newer system 'B' and not lose anything that's going on. This isn't necessarily an OS thing.
All these requirements come from age-old regulatory requirements that said that ma bell could set her rates based on the quality of service that it provides, and which forced the bell companies to keep extensive records of outages and downtimes. So, not only were there the above software requirements, but there are also a bunch of hardware requirements (boards have to be hot-swappable, for example), and power requirements as well -- telephony companies have multiple connections to the power grid with battery backup and generators, and so on...
With all that in place, it's amazing that they still bury the redundant cable right next to the primary cable so some yutz on a backhoe can come along and take out the phone system.
Sam's clum in the area recently had a WD 100GB dide hard drive on sale for $120 after rebate. 1TB at that rate is ~$1320, plus a few hundred for the Motherboard, processor memory and extra controller cards, and a TB server is within reach of an 18-year-old who saved his paper-route money.
The real question is: how long will it take to listen to all those mp3s? At some point, extra storage just isn't practical because you can't fill it fast enough.
So, there are two other things to consider:
1. Keeping old records around can be expensive -- not only do you have to keep the media it's on, but you have to make sure you have the ability to read that media, and once you do, that you have the appropriate software and hardware to understand the message itself. Destroying them after you don't really need them any more saves a lot of expense. And, that doesn't even begin to talk about deteriorating backup media.
2. Similarly, part of the problem is in making sure that you have a *complete* record -- you don't want to have a partial record, where the mail to the CFO says "Hey! Let's screw the employees out of their pension," but not the corresponding mail from the CFO that says "That's illegal and immoral. You're fired." So, the idea is not so much to cover up past wrongs, as it is to make sure that you have a true archive.
3. The other thing is that there are some things that are embarassing, but not illegal -- the fact that the CEO didn't retire for health reasons, but was forced out because he got his secretary pregnant, for example.
I don't know about everybody else, but I use my e-mail as a record of what *I've* done, and 9 months (as somebody mentioned earlier) is not far enough back -- heck, every year we have performance reviews, and how am I going to say "This is what I did 11 months ago" if I don't have any record of what I did 11 months ago.
So, when I was the head grader for the first hard cs couse at CMU, I wrote a similar program -- it does't need to be very complicated because cheaters are, by definition, lazy. Change some variable names, comments, whitespace, move some code around and maybe break a function into two smaller ones, and that's it. My code just counted the numbers of braces, 'if' statements, parentheses, equal signs, etcc, producing a set of numbers for each program. Then, sort them and pick out the ones that are really close to each other. Those get picked out for hand checks.
As for why: everybody was supposed to do their own work -- this was not one of the courses where people were supposed to collaborate on their programming assignments (those courses came later.) Some students went overboard on the restrictions -- there was never anything wrongg with discussing the assignments (that's part of the learning process as well), but everybody needed to do their own work to prove that they understood the material.
Now that I'm out in the "real world," this makes sense -- I can tell the people who cheated and slacked their way through school, because they don't last long without understanding what they're doing.
Now that I'm out in the work
I'm not sure if this was tongue-in-cheek or not.
One of the problems with this method is that it assumes that you know in advance how everything works -- all too often, this isn't the case, and so you end up iterating over your design. For some projects, it may work well, but for others.... ick.
On the other hand, you definately want to have a basic plan-of-attack (ie "this is how I think it's going to work, more-or-less. Here are the key abstractions and here's how I plan to manipulate them") in a format that other people can look at and review -- the point here is to allow other people to catch problems in your approach *before* you commit all the time putting it in code.
As far as how to write documents -- I do as much documentation in *emacs* as I possibly can. (*Gasp* they say). I draw out diagrams long-hand. Once all that's done, I put it into the tool (Adobe FrameMaker in our case). The point here is that it prevents me from being distracted by formatting (ie "how it looks") and concentrate on content ("what it says.")
Well, yeah. It's basic discrete math, the pigeon-hole principle. You can't map a large set into a smaller set without having some overlap. And, since you have overlap, then you won't be able to tell how to decompress your compressed data.
The differences in the degrees is easy enough to find out -- just look at the differences in the cirriculum. As far as what you can do with each once you get out...
Generally, the MIS people work in (or sometime are) the IS/IT departments of a company -- they're the people who keep the computers running, and develop the software used to keep the business running, often by starting with a known package and tweaking it to meet the company's needs. These folks are responsible for things like the payroll systems, purchasing, employee tracking and so on.
On the other hand, the CS people are generally on the product development side -- they're the ones writing the control systems for the satellites, writing the DSP code for en/de-coding MP3 files, designing missile control systems, writing compilers or designing operating systems. THere's a big research side to CS.
There's certainly some cross-over and the two sides are not exclusive -- you'll often find a bunch of old physics guys doing the CS-type work, for example.
My experience has been that the CS side pays better in industry.
I don't totally understand this. First of all, why wire anything, when wireless networks now provide or will soon provide all the bandwidth anybody could want? If you are going to wire the network, at least use home-run wiring and conduit so you can pull the cable you'll need when the next networking technology comes along.
Secondly, exactly what are you going to be doing on these servers? If they're going to be file servers, remember that you easily get 1TB across 2 normal mid-tower cases now. Even if you're serving video, that should be more than enough.
Now, if you happen to have a PDP-8 lying around that you want to install, then all bets are off. But, for anything inside of a typical person's budget, I don't think you have much to worry about.
If you're really concerned, though, get one of the whole-house generators that take over when your power goes out. Use that and local UPSs to keep everything going.
What's so stinking funny about this is that Mailboxes Etc is *OWNED* by UPS. If they can't figure out how to pack something so UPS won't break it, who will?
(see the 'about MBE' link at www.mbe.com if you don't believe me....)
So, I understand that your customer wants 24x7 30fps. Part of the job of the engineer is to extract what the real requirements are from the "wishes." I'd argue that your customer likely wouldn't mind 15fps, for example. And, I'd argue that (assuming this is a surveillance system) you could add motion sensors or delete the scenes that aren't any different from the background, vastly decreasing the amount of data. Also, the 'stored indefinately' thing is a bit silly -- can't you put a 10 year window on it? Otherwise, your data will eventually fill every warehouse in the world, and your customer won't be able to afford the rent. It seems to me that this is really your initial job -- shrinking the amount of data that actually needs to be stored.
The question implied some sort of centralized storage area. I think this is a dumb idea, because you're going to spend huge bucks on the centralized equipment for storing it, compression, decompression and so on. Instead, I'd locate storage with each camera or some small (3-5 camera) subset of the cameras on something manageable (like a few tape jukeboxes or similar), and pay somebody to go around swapping tapes every few days or week or whatever. If you want to run a network, make it cheap -- low-speed ethernet or serial. Sure, it'll take a while to download any given thing, but so what? If you really want it quickly, you can always go get the tapes.
Basic stamp microcontroller (www.parallaxinc.com).
Gotta get your feet a little dirty with both hardware and software.
PC/104 embedded processors and modules. www.pc104.org.
The WWW as well as Gopher, FTP, Telnet, WAIS, Archie and Veronica before it have been based on free tools that have come out of university environments -- anybody with enough technical know-how has access to the standards by which these tools operate, and can thus write programs that communciate via these standards. Many of these programmers are in educational settings where they work with little or no financial support. In addition, some of the most predominant software for the Web today is available without licensing fees -- take Apache for example.
It seems to me that adding royalties to the cost of writing software that interoperates with other W3C software is a specific threat to this sort of development, because what may be "reasonable and non-discriminatory" to a $100M business may be thoroughly out-of-reach and prohibitively expensive for 4 college students working on their senior project. As a result, rather than invigorating development, adding royalties would seem to slow it down by denying the ability to develop to the very people who have gotten us to where we are today. What mechanisms are there in the proposal to protect the ability of those who have been producing high-quality freeware to continue to do so?
So, assuming that the device has a NIC with a unique MAC address, the IP address does not need to be assigned to the NIC -- it ought to be determinable by the network number on which the machine sits -- the right 48 bits of the 128-bit IPv6 address are intended for the MAC address.
IPv6 does a lot more than quadruple the address space -- it makes things like mobility and redundant routers much easier. In doing so, it actually wastes a large percentage of the address space.
Also, while it's true that IPv4 theoretically has 2^32 addresses, we need to remember that there's a lot of deliberate underuse there as well -- for example, the multi-cast range, the numbers reserved for private subnets & so on.
In addition, just the way in which addresses have been doled out (class A addresses, for example) has yielded a lot of waste. But, I don't think that the right solution is to "undo" those things -- "Ok, MIT, we need a bunch of those addresses back, and we don't care how much you have to spend to do it." Not only does this cost money, but it means that your central routing tables get really messed up -- now you can't just say "55.something..." Ok, gotta route that to Boeing. Instead, you replace that one entry with 65,000 entries. (Assuming class C addressing.) Ick.
NAT works reasonably well if you're operating in client/server mode -- ie your client is behind a firewall and the only time the NAT host receives something for the client, it's in response to a different client message. If you're peer-to-peer or running servers, NAT really gets in the way. Ever try running two web servers at port 80 behind a NAT server? Doesn't work.
Has a much shorter range (~90ft vs ~300ft.)
So, it seems to me that GWB was true to his anti-abortion views while at the same time recognizing that the important thing was to prevent future 'harvesting' of embryos.
The Nazis performed a lot of barbaric research on the Jews (and others) during WWII, producing a lot of useful data. Among the medical and scientific community, for 55+ years, there's been an on-going debate about whether it's right to use that data, considering the source it came from. A prevelent side of the argument is "Yes, because it allows us to produce some good from these horrible experiments" -- it isn't "The end justifies the means," as much as "It's already happened, what is our response?"
Similarly, the President feels that destroying these embryos, particularly to perform research on them, is wrong. However, for the ones that have already been destroyed and have already produced lines of stem cells, what do we do? He's recognized that the end does not justify the means by deciding against funding any more harvesting. But, then the question is "What do we do with the ones we have now?" I think GWB's response to that is "It's better to do good than to do nothing."
So, the letter said that ac3dec infringed on Dolby'd intellectual property rights, but didn't specify what rights that was -- it said that AC3 had been registered with the patent and trademark office, but didn't list a patent number.
I think I would send a letter back asking exactly which patent or copyright work was being infringed. As it is, it sounds like the letter is just a scare tactic with no meat behind it.
Phooey. Telephone-quality voice in 3k/sec? I don't think so.
ITU rec G.723.1 is the common low-bandwidth codec in use, and it goes down to 5.6 kb/s, but the 6.4 kb/s varient is more common. G.729, at 8 kb/s, begins to approximate the quality you'd see on a voice call. G.711 is what's commonly used in telephony systems, and that's 64 kb/s. (kb=kilobits).
So, companies like Cisco (and Nortel, who I work for) have been working on this for a while. It's one of the reasons that Lucent isn't doing so well -- all the telcos decided that VoIP was the wave of the future, and stopped buying traditional telephony switches. Lucent didn't pick up on that fact and so they're playing catch-up.
The primary problem with the net2phone box is that it uses the Internet as transport, and there is no end-to-end management of the internet. So, the packets that contain your voice have to compete on an equal footing with other peoples packets, despite the fact that yours are much more time-sensitive.
The delay is likely due to the amount of buffering that needs to be done because of this. And, the fuzzy audio is because the audio still needs to be compressed, despite the high-bandwidth connection. Most home broadband connections can transport much more data coming down than going back up, so the outgoing voice stream needs a lot of compression.
There are other problems: What services does this box do? Can it handle 3-way calls, call-waiting, call-forwarding, etc.... What happens when you plug a modem or fax into it?
What I think you'll see is the broadband service provider putting in a home gateway (Analog phone-to-VoIP Gateway, not the ubquitous linksys box), then routing that VoIP over their private network, instead of feeding it straight to the internet. Cable-modem folks are especially eager to get into that market, because while VoIP doesn't use up that much bandwidth, phone-calls are a high-dollar business.
It's possible that they're being good guys here...
We all recognize that they have to protect their trademark -- maybe they're saying "We have to protect our trademark, but we don't particularly want to be jerks to the Linux community, SOOO how about we sell you the right to use the name for a relatively small sum of money.
As far as the "Common words can't be trademarked" argument -- phooey. Wouldn't Dodge complain if another car maker started selling a "Viper," VW if somebody started to make a "Beetle" or NBC if ABC started a TV show called "Friends"?
Common words can be trademarked as long as you're not trying to trademark an existing usage -- to my knowledge, computer drawing programs had never been called "Illustrators" prior to Adobe/Aldus, just as there had never been a TV show called "Friends" prior to the ABC show. However, nobody would rationally be able to trademark the term "6 o'clock news" for their evening newscast, because it had been common to use that phrase to generically describe the local news that happens at 6pm. Presumably, however, if somebody wanted to obtain a trademark on a computer program named "6 o'clock news," that would be legitimate.
Hmmm. If this is true, then could somebody
sue Microsoft for not including the source for their software?
Microsoft would need to defend itself, presumably by saying "The GPL doesn't say that we have to," which would necessarily go against their public stance of the GPL being "Virulent."
In the US, the Constitution is regarded as the "Supreme Law of the Land," changes to which must undergo an amendment process. So, any treaty entered into just has the weight of an act of Congress, and may thus be found unconstitutional. No treaty may take away the rights recognized by the constitution. (IANAL)