Although it wasn't clear from my original post, VC++ is significantly better than PGCC. Standard GCC on x86 is a dog.
Even so, PGCC is probably not the answer either since I've heard that there are problems compiling some kernels with some versions of PGCC (but maybe that's fixed now)...
Currently the VC++ from microsoft produces far superior x86 code than GCC. I'm surprized that nobody has commented on this fact yet.
Although GCC is one of the most portable compilers, the RTL generation routines aren't well suited to the register-poor x86 architecture. The main difference, however, is the code scheduler. GCC doesn't do much P6 style optimization, where VC++ in conjuction with Vtune from intel is quite an effective optimization tool for the x86...
It would interesting (but unfortunatly impossible task) to find out how much of the difference is due to simply the difference in compilers...
Of course you can always transmit more crummy compressed digital audio than uncompressed digital audio over a given channel, but why would you want to?:-)
BUT, I'm sorry, I can't let your off the cuff analysis of FM go unchallenged...:-) The simple analysis you did only applies to AM radio. FM radio bandwidth is another beast...
Back in the old days, some guys at the FCC made this mistake you just did. FM radio is a funny thing, w/o going into much detail, you can trade bandwidth for S/N in FM (unlike AM).
With FM (or any phase modulation scheme), the more SNR you have, the smaller the FM frequency deviation you can use and still transmit the same info. Since the frequency deviation is smaller it will (following Carson's rule) also occupy a smaller bandwidth.
So the 44kHz -> 88kHz BW analysis is sorta bogus for FM, it depends on the moduation scheme. FM radio was designed to work in low SNR environments so it has pretty wide BW. But if you had 1000:1 SNR, you could redesign it to take up lot less bandwidth:-)
Start a company, decide you want to take it public. The first time you sell shares to the public is called an Initial Public Offering (IPO).
Hire a experienced CFO (chief financial officer)to select an investment banker to lead your underwriting syndicate. The underwriter(s) are securities brokers that help you take your company public.
In exchange for money (usually shares in the company) they do the paper work and introduce you to institutional investors and pay for the road show. They also can serve as "market makers" for your stock after you go public. A "market maker" owns enough stock to facilitate trades. (Stocks are trades, so if there is no-one to trade with, the stock is not very liquid).
The reason you want institutional investors (mutual funds, banks, pension funds, etc) rather than small investors is for several reasons. Because your offering is required to be fair, you want your IPO all at the same time so that things don't change (price, market, company info). Also, institutional investors give the company feedback on price support (to select a stable price). Also institutional investors will hold the stock for a while which prevents the shares from being too volatile.
Because of this institutional investor focus, the only way to get in on this is have a good account with a brokerage that is involved with the IPO. Usually brokerages only allow their best customers access to IPO shares.
Investment banker and CFO will tell you how screwed up your books are.
Fix them. If they are really screwed up, this could take a while. The ownership, debt, stake holders, assets, contracts, etc, etc, need to be clear. In a small company this can be a mess.
You negociate the lock-up period for officers and employees (the lock-up period is how long after the IPO that you aren't allowed to trade in your own stock), this is usually 6 months. For key employees with lots of shares, some stock could be locked up as long as 2 years.
The executive management team along with the Investment bankers will change your biz plan. (your plan needs to be investor friendly)
You usually talk to a few other investment bankers about your biz plan to clean it up.
You write a S-1/Red herring which will become a prospectus which says what you're about, who owns the company and what the all the risks are. You can't add to this later w/o refiling so you have to get this right. Ommitions are considered lies so you put the kitchen sink into this. (BTW, it is called a red herring because all the red colored warning bars and text)
You file this with the SEC, at this point you are in a quiet period and can't say anything about your company unless it is in your filing.
After some informal shopping around the red herring, you either decided to fix it or go ahead. This is the "cooling down" period.
You select an pricing range.
Schedule a road show with institutional investors to formally present your red herring. You say exactly the same thing to everyone (it's the law).
Since you want diversified investors, you generally do New York, Chicago, Denver, Dallas, San Francisco, Los Angeles, all in 1 day (that's why they call it a road show) and a few conference calls overseas to boot.
Since you can't offer to sell and they can't buy, you get "subscriptions" which indicate interest in buying. (Usually IPOs are oversubscribed)
You select the actual price.
You pull the trigger and go public. Then the subscribers are allowed to buy (they can always back out). The amount of stock is usually allocated because of over-subscription. For instance if somebody subscribes for 100,000 shares, they may only get to buy 10,000 if it is 10x over-subscribed.
From road show to IPO is usually less than 2 days to prevent the possibility of things changing when you talk to two different people. This is the reason for the roadshow and why it is impossible for anyone, except good broker customers to get IPO shares.
SEC rules require everyone to be qualified (IPOs are considered risky) and that everyone have the same info. If you only talk to qualified investors and talk to everyone in the same day that you sell the shares, this satisfies the requirement.
Now except for the lock-up, the stock is free game for everyone.
In the bumpy road version, repeat steps as often as necessary. Sometimes you can't even hire an investment banker or a CFO. This could be considered a bad sign:)
It goes w/o saying if you want to take your company public, you'd better start planning on day 1.
Although it is true that between filing and the effective date is usually over 1 month, under current SEC rules it is possible to fast-track and do things in weeks if everything is clean.
The old "cool down" period was part of a regulation to protect the price of the IPO from manipulation, but nowdays if you follow the rules, things can happen much faster.
The red-herring (which is usually similar to the filing) doesn't have a share price or an effective date because when you print it, it has to be true (so they don't until they are 100% sure which is usually the day before the effective date). They just have fill-in the blank spots for this info.
There is no way to know for sure the effective date until it happens (or you are an insider). However, many companies schedule their road show the week before the effective date. The investor services that list upcoming IPOs key off the fact that a company has scheduled a road show to tell everyone that an IPO is coming the following week.
They can pretty much pull the trigger at any time... keep your eyes open
For big guys, IPO (initial public offering) shares are sold by this arcane process called subscription. For small guys like us, an IPO isn't any different than any other stock offering.
Just get a stock broker and put in an order to by a certain number of shares at a certain price.
Unfortunately, for an IPO there isn't a price history until it the IPO happens (remember the I is for initial). There is a range usually given in the filing, but these are just guidelines and can be changed at any time (and usually up and at midnight before a hot IPO).
If you are daring, just pick a price above the range and put in an order and hope for the best. If your bid is too low, no shares are available to match what people are asking, and you get nothing. What you shouldn't do is put in a market price bid for an IPO. You would be pretty much assured of paying the highest asking price and shortly after an IPO, the price usually drops.:-(
Stock transactions are trades, so a buy order has to be matched with a sell order. To facilitate trading, stocks are usually handled by one or more "market makers" (usually the stock underwriter for IPOs). The "market makers" usually own enough shares to put in sell orders to match random buys and to net out transactions at the market price. This gives them some power to manipulate the price.
In an IPO, the sells come from either the underwriter, the company's investors, or the subscription shares which you probably won't get because who would sell them to you at such a low price:) (although it is possible)
The buy orders come from the gullible speculators trying to get IPO shares. To increase their odds of getting shares, people put in high price/share limits. This of course bumps up the stock price since the market makers look at the orders and of course pick the highest prices;-)
Usually the day of a hot IPO, the people with shares hold on to them (don't sell) until they see a few orders. The market maker can put in a few buy/sell orders to test the waters and then things usually get going (and ususally up). There's a small chance if you put in an order during the testing stage, the it will get traded but don't count on it! (everyone else has the same idea)
Unless you know what you are doing, or are just looking for token shares, I wouldn't suggest planning on investing in an IPO.
Although this sounds like a great idea, I think for the amount of $$ they are planning to raise it would be crazy to hand this over to computer model that has very little experience.
Also, I'm sure they thought twice about handing over their company to a closed source bidding program. Would that be their style?
If you are raising $10 mil and you are unknown, that might be ok. If you are raising $100 mil...
OpenIPO isn't that different from just a regular online broker. The only magic they have is that they allow smaller investors to get a random crack at IPO shares (like playing the lottery).
The small guys still get screwed. You can't see the Road Show presentation unless you have $1 mil. You need to have lots of money available to get shares because you need to bid high for a large number of shares to increase your odds to a reasonable levels.
For a hot IPO like Red Hat, I image that they would be 20x over subscribed. That means if you bid for 2000 shares at say $30/share, you would have pretty good odds at getting 100 shares and paying $20/share. This means you have to be able to afford $60,000 to get $2,000 worth of stock. If you bid less than that, you probably will have better luck in the lottery.
For all those people that are complaining about the rest of the world misunderstanding them, I suggest that they realize that golfers used the terms "hacker" and "hack" long before computer hackers.
Computer hackers are already guilty of misusing the word as much as the media. What goes around, comes around...
As with most things in life there is a trade-off. For a given size RAM, the more cells you put on a bit line, the fewer levels of block mux logic it has to traverse. There will be a sweet spot between cells/bit line and the number of blocks to mux.
On most designs, there are pass-gates to partition out segments of the bit-sense line. For DRAM the magic number is usually around 32 cells on a bit-sense line (to keep the DRAM cap bigger than the bit-line wire cap). For SRAM it's usually a bit more. This is basically the small block idea. But for each partition, is just like a small block of memory...
However, in modern designs, fast SRAM and DRAM sense amps are not all that different...
For DRAMs, each bit cell is a capacitor which are charged to hold a bit. Each bit is connected to a bit line by a pass transistor. Since the pass transistor isn't a perfect insulator, after a while, the bit cell (being just capacitors) tended to leak and usually take on whatever value was on the bit line (this is why refresh is required). To make the bit retention time symmetric, usually the bit line is kept at V/2 volts as much time as possible (although there are other capacitor leakage paths...).
In the old days, the pass transistor was just opened and the voltage sensed by an amplifier. The read is destructive (discharged the capacitor) so it had to be re-written after it was read. Usually the amplifier reads and re-writes in one step. The problem with this was that it took a while for the voltage to stabilize and cross a voltage detection threshold (to be certain it was a 1 or a zero stored in the original bit cell).
For fast modern DRAMs, a dummy row of bits is made on each DRAM which is always charged to V/2 volts (during the precharge cycle). The dummy row is read at the same time as the real row. The sense amp just amplifies the difference between the dummy row's bit-sense line and the real row's bit-sense line. This is much faster than waiting for the capacitor to charge up the bit wire to cross a voltage threshold. As soon as a small voltage difference occurs between the dummy bit-line and the real bit-line, the differential sense amp just amplifies it and feeds it back. This is about as fast as you can get!
The reason for the dummy row instead of a reference voltage is that it is just like a real row (same performance/timing). Sensing a differential value is more independent of manufacturing variations than a fixed voltage threshold. Also the capacitors discharge just like the real row so that prop-delay effects of caps charging/discharging are minimized. They also have neat techniques of getting exactly V/2 volts into the dummy row (charge a cap to V volts charge an identical cap to 0 volts and short them together:-).
For SRAMs, each bit cell is two inverters in a feedback loop. The bit cell is connected to a bit line by a pass transistor. To write a value, you just open the pass transistor and stuff in a big enough signal to flip the bit. For slow SRAMs you open up the pass transistor to read the value. Note the inherent conflict: the stronger you make the bit cell drivers, the harder it is to flip it:-)
For fast SRAMs, you usually bring out 2 bit lines (bit and bit-bar). The differential lines are hooked to a differential sense amp. This is done for 4 reasons:
1. The bit cell transistors and power supply wires are usually sized really small. This means they have high resistance. This effectively means that in most dense SRAM designs, the bit cell transistors are slow and can't even drive the bit-sense line w/o the help of the sense amp. The inverters in an SRAM are just amplifiers. When you hang too much load (C & R) on the output of any amp, it will stop working by either oscillating or never reaching the voltage rails.
2. The sense amp in an SRAM feeds back the value so as to improve the SNR in the bit cell. When the pass gate opens, all of a sudden the bit cell inverter feedback loop sees this big load and the internal signal level drops. The sense amp quickly feeds back the value so that the internal signal level is restored ASAP so the SRAM won't forget! Otherwise you have to wait until the small bit-cell transistors stabilize the feed back loop again. This makes your memory cycle time long (because if you didn't wait to stabilize or rewrite the cell value, multiple back-to-back reads could erase the cell!).
3. Having a differential (rather than a single ended) way to flip a bit cell makes write cycles faster (fast is good!).
4. Just like in DRAMs, differential detection is more tolerant of manufacturing variations than a fixed voltage threshold.
Since the sense amp is shared, it makes more sense to have lots of small weedy bit-transistors and 1 big sense amp than lots of big bit-transistors. You could carry this idea forward and say why not have lots of sense amps, but since sense amps are much bigger (say 10x) the size...
Another benefit of differential detection is in today's CMOS technology, the P-channel N-channel transistors have different characteristic which means pull up and pull down strenght is different (faster to pull to down). If you precharge to high voltage and have transistors pull down, N-channel transistors can pull down faster and the access time is faster. If you precharge to V/2, and let transistors pull up or down, the cells that have to pull up will be slower.
To summarize, in both fast SRAM and DRAM, the differential sense amp is used to compare two bit-lines, which are usually precharged to voltage above the high detection threshold. After a short while after opening the pass gates, the amplifier senses and amplify the voltage difference between the bit-lines and drive the signal back on to the bit line. Usually the logic to turn on and off the sense-amp and the pass gates are the most critical part of the design of fast RAMs (must make sure two pass gates aren't turned on at the same time, must wait a short time after the pass gate is open before feeding back the sense amp, and of course there isn't a clock to drive a state machine:-). Today, there is not much difference between fast SRAM and DRAM control logic...:-)
Of course slow, big, async SRAMs use single ended amps which are always on and drawing power (which is why the ususally have OE controls), have no precharge, and have only one bit-sense wire per cell. Of course these designs take less area, but are usually much too slow for today's 100MHz+ designs.
Given the greed-for-speed and manufacturing tolerance considerations, I doubt that any new memory technology would do away with the differential sense amp idea in the near future. Differential sense-amps are a very elegent solution to a whole mess of problems...
"...It's also faster, as you don't have the whole precharge/amplify readout cycle to deal with. "
This is probably not true. Precharge and amplify has less to do with nature of the memory cell, but are used to speed up the access time of a RAM device. Even today's fast static-RAMs use precharge and amplify circuits to speed things up. (DRAMs also use the sense amps to restore the capacitor charge on read cycles, but SRAMs usually don't need this function, but still have amps for speed).
The precharge is to put the bit sense lines into a known state (as opposed to an unknown state). Once the bit cell starts driving the bit sense line the sense-amp, senses the small change from the known state and amplifies it. If you don't precharge, you have to wait a while for the data to stabilize. But if the bit sense lines are precharged to a known state, as soon as it starts to change one way or the other, the amp kicks in and bam!
Also in a large (eg, Gbit arrays) the poor little super-small transistor that is attached to a bit of the memory in the middle the array has little hope of driving a big long piece of bit-sense wire out to the edge of the array without the help of an amplifier:-)
DRAM is a funny thing. You read these wide rows out of the DRAM array (usually 2K bits) using what is called the row address by an amplifier (called a sense-amp). This takes a long time. After reading, all 2K bits are fed-back on the sense amp (kinda like a cache for the row). Now once the row is read, you can just switch out the data for a column address really fast (say 6ns). But, if you need a new row, you have to go back to the slow row access.
But you really don't get 6ns column access time either. To top it off, today's SDRAMs are pipelined (the S is for syncronous). This means you have to send in the address 2-3 clock cycles ahead to get the data. You can still get new data every 6 ns in a burst, but you have to figure out things a couple clocks in advance (i.e. random access will suck).
Trac -> access time from new row address (or SDRAM activate command) say 50-100ns Tcac -> access time from column address (or SDRAM read command) say 5-20ns
R/W times have always been slow to DRAM arrays, but DRAM architects have been pretty good at hiding it:-)
Although the fabrication technology for the chips inside the Sony PS2 hasn't been finalized, they are going to use what is called a hybrid process (logic and DRAM on the same die) to make an chip with embedded DRAM. Today's technology allows about 4Mbytes of DRAM to be put on a chip with the left over space used for logic. Yes, hybrid processes are a bit less efficient than all logic or all DRAM processes, but are catching up (about 1 generation behind)...
Hybrid processes are currently the state of the art and allow cool things such as embedded DRAM. (which allow really wide busses and fast access) However, the memory is still capacitors and transistors, for standard DRAM not this wacky new stuff (but one of these days...).
(oh, and -yes- I know what I'm talking about here...:)
Without copyrights there would be no reason why somebody couldn't take an article, modify a few words so as to make it appear the author had the exactly opposite viewpoint, change the name slightly post it somewhere and sit back and laugh...
Or steal a 1/2 finished work from somebody, finish it quickly and publish it before the original somebody got the chance.
It is clear that there are parts of the copyright law that are useful, that don't benefit the distributors, but the original author/creator.
But of course, the time span of the copyright is directly related to the amount of money that can be made which is (somewhat) related to the amount of money that the original author would receive. (if someone stole everything you wrote and it got published before you could finish, I think there would be a slight impact on the amount of money people would pay you...)
IP laws (in the US anyways) were designed to promote innovation in both industry and the arts. Others have cited the constitutional basis so I won't repeat them here.
In this area, they have been surprizingly effective. In industry, IP laws have served to level the playing field between small and large companies. Although many./ reader tend to think of the impact on individuals, the real effectiviness of IP laws is to prevent large companies from dominating small companies in techinical areas that require a strong pace of innovation.
Just think how hard it would be for the internet to progress if IBM/AT&T/BBN/Berkeley/DOD were the only people working on it? The fact that IP protection is granted allowed capital intensive businesses (like SW development and IC development) receive the funding pursue new and innovative technical advances. Without such protection, small companies would no be able to fund their ideas and their ideas could be stolen by larger companies which could torpedo them to prevent competition. This happens today with IP protection, imagine how bad it would be w/o...
On the artistic side, aren't things better off if talented people could spend their time improving our culture by the development of artistic things than working only in their spare time.
I think that many people can agree that there are some benefits to IP law. Let's now look at another benefit that is not at all obvious. IP law helps to keep the people who play to both continue to contribute and to play fair.
In industry, patents are routinely violated until someone complains. If someone complains, a cross license is usually obtained. This tends to make it so that to play the game, you have to bring something to the table. It's all about fair play. If you don't have anything to bring to the table, nobody want you to play. The only time people change money is when somebody's stuff is more valuable than someone elses stuff. That's life, if your stuff isn't that valuable, you get less.
Of course there are injunctions and seemingly oppressive royalties, but I think these are rare except between direct competitors. In the US anyways, damages for patent violations are limited so there really isn't any way to charge oppressive royalties. In addition, most patents are deliberately vague so the holders don't want them clarified by submiting them to a court (which would happen if you actually brought the case to court). For real players in the industry, they usually have some patents themselves that are valuable or necessary and reverse leverage is easy to apply.
So in reality, things are not at all as bad as some people make them out to be. Sure, 20 years is too long for the internet, but I think this is a temporary situation. When radio was first created, a flurry of patents ensued. Then when things got too complicated, patent pool companies were formed. The formation of patent pools essentially eliminated the patents from the game. Since everyone sort of paid them, they eventually just became a tax on the industry.
Many economists agree that this is the only way a complex industry can remain stable so these types of things signal the maturity of an industry. When an industry is growing fast, patents help. When growth stabilizes, patents hurt so companies are motivated to pool the patents to take them out of the game and to provide an industry wide defense against people who don't play fair.
Companies that don't want to play fair will now have to work against this huge patent pool that is controlled by multiple companies all of which have some sort of veto power. That means this rogue company probably can't cut a side deal with one of them and screw everyone else. This is why big conservative companies join the pool: mutual defense.
The IC industry is heading that way. Although almost everything is patented, almost all the "standards" are royalty-free licenced for those companies willing to cross-licence necessary patents for implementing the standard also for free. If you play fair, we play fair... The fact that a patent exists is now immaterial since it is presumed that if you want to play, you will contribute any "required" patents that you hold to the pool.
The SW industry will probably head that way eventually too. Open source is only an indication of what is to come. Patent pooling (either for free or with a uniform "tax") has happened in all big industries. Patent pools for companies is similar to the Open Source idea. Companies contribute to patent pools to strengthen the industry against other companies that don't play fair. Companies will eventually contribute to Open Source to guard against companies that don't play fair.
I consistenty surprizes me when people claim that "today" things are really different and the old rules don't apply, when they don't even know what happened in the past.
Home electricity, the radio, the telephone, the car, the television, the VCR. Just look at the history of these inventions before claiming that the old rules just don't apply anymore...
Usually the suits hire consultants to tell them what they want to hear. If the suits want Linux, they hire themselves a Linux consultant to tell them Linux is the best thing since sliced bread. If the suits want M$FT, they hire a MS consultant to tell them the appropriate thing.
In the consultant biz, you are hired for what you'll say, not what you'll do. The suits want to know what you'll say before they hire you. Consultants that spring surprises don't last very long.
In contrast, you are paid for what you'll do, not what you say you'll do. Consultants who forget this often end up spending too much time on a project making their $$/hour drop like a rock. If you want to be a consultant, be pretty sure you can do what you say you can do.
That's why many consultants still recommend M$FT. This is what the suits want you to say, and the consultants know this is what they can do. Until the suits are convinced they want Linux, consultants have no choice but to offer M$FT or they won't get hired in the first place.
It may surprise some/.-ers, but not all suits are M$FT backers. In a big company you will have some suits behind every possibility (no matter how wacky). It's just up to now, they were ignored. However, it only takes a few converts before the tide switches the other way (as we have seen lately).
This reminds me of a situation that a co-worker of mine got into several years ago.
He was an ex-pat working in the States with a green-card, but his girlfriend was in the States with him and didn't have a green-card. She was getting kinda bored (when he was at work) so she decided to try to volunteer to work at a gift shop for no pay (so that she wouldn't actually be employed), no free-bees, in fact no compensation at all.
It turned out it was impossible for her to volunteer her time to work at this store.
I thought this was ridiculous at the time, but now that I look back, this is exactly what the problem was.
$133.20/day x 5days/week = $666.00/week $666.00/week x 52weeks/year = $34,632/year
Maybe a little high, but $30K seems about right... If I remember right, for people >= BS is about $48K Not entry level, but you do get raises every once in a while, even 2% a year adds up after 20 years... Remember minimum wage gets you about $10K/year... and even McDs pays more than minimum. For computer geeks employed full-time? $30K entry-level doesn't even buy you the time of day. In silicon valley, it doesn't even buy time...
Since the earliest days of computer "cracking", it has always been against the law to use one iota of cpu cycles on someone-else's computer in an unauthorized way. If this guy wrote a program that intentionally did this, he broke the law as soon as one cpu cycle got used to open the address book on the infected computer. The legal theory is that you are stealing the cpu cycles.
This is how people got procecuted in the '80's. This is the same legal theory that protects FAX machines against SPAM, and you against telemarketers.
Proving that actions were unauthorized was kinda tough (you did open the attachement after all) so they passed new laws making this easier to prove. Now prosecuters only need to show intent in that you knew that your program would do this.
BTW: 1. unsolicited email is now illegal in several states in the US. 2. any time things cross US state lines, the feds get involved (interstate commerce clause). 3. public disruption laws have always existed (illegal to yell "fire" in a crowded room).
How many people do you think installed Win95/98 on a machine without plunking down $89.95? How many people do you think installed Solaris on a machine without plunking down $109.95? How many people do you think installed DOS on a PC w/o buying it?
Let's face it, SW piracy rates are huge. Having a free, legal alternative is less of an impact than you might think. Any way you measure units will be controversial, it's usually just better to be consistent.
The target market for people who sell marketing reports is small (probably 1 per company). For medium sized companies, paying $1.5K to a company is a lot better than hiring a marketing guy/gal for $250K and spending another $250K gathering statistics from competitors that won't give you the time of day and hoping you can believe the report.
All the info in these marketing reports eventually spill out to the public, but by investing your $1.5K, you get the report before it spills out (which might be worth $1.5K to you... or not).
Marketing reports from companties like IDC and DataQuest, although are not considered accurate, usually include both "top-down" reports (what your competitors expect) and "bottom-up" reports (what your customers expect). As we know, expectation often creates reality. A small or medium sized company has no hope of producing such a report.
In a way marketing reports are just like/. They tell the people who buy their story what's important. After a while, by definition what they say is important actually is important (think about it)... If you (and enough people like you) invest enough time reading it, it in a sense creates a reality.
Although GC is pretty helpful in RAD applications, so many people misuse GC that it has gotten a bad name. Usually the same people who misuse GC also misuse pointers.
The main form of GC misuse in OO-land is to avoid properly designing object destructors. As things get more complicated and multiple people start working on things this is often the place of the first design failure.
Selecting the right time to destroy persitent objects is the biggest problem for real-time/ multi-threaded/retentrant code. Subtle bugs (like the TCP listen-timeout bugs) usually live here. Defering these problems to a generic GC is probably the wrong thing to do in most cases.
Using GC to free nodes on a recursive traversal is great, but using GC to solve buffer deadlock is probably a horrible thing to do.
Remember that most GC algorithms are only faster in that they essentially defer free() calls and process them in bulk reducing overhead. Ref-count and mark-sweep type algorithms require that more work be done than simply marking unused on a call to free().
As far as I know, Cyrix never had a license...
Cyrix got use of the IBM x86 cross-license (back from the IBM/PC days) when Cyrix had their chips
fabbed there, but no Slot 1 coverage.
Cyrix got use of the SGS-Thomson (originally from Mostek) cross-license when they (almost) had their
chips fabbed there, also no Slot 1 coverage.
After they were purchased by National, they got the use of National's broad cross-license (both
x86 and Slot 1 are covered).
Via is in cross-licensing hell and they just bought Cyrix who never even had a license.
Although it wasn't clear from my original post, VC++ is significantly better than PGCC.
Standard GCC on x86 is a dog.
Even so, PGCC is probably not the answer either since I've heard that there are problems
compiling some kernels with some versions of PGCC (but maybe that's fixed now)...
Currently the VC++ from microsoft produces far superior x86 code than GCC. I'm surprized that
nobody has commented on this fact yet.
Although GCC is one of the most portable compilers, the RTL generation routines aren't well suited
to the register-poor x86 architecture. The main difference, however, is the code scheduler.
GCC doesn't do much P6 style optimization, where VC++ in conjuction with Vtune from intel is quite
an effective optimization tool for the x86...
It would interesting (but unfortunatly impossible task) to find out how much of the difference is
due to simply the difference in compilers...
Just my 2cents worth...
Of course you can always transmit more crummy compressed digital audio than :-)
:-)
:-)
;-)
uncompressed digital audio over a given channel, but why would you want to?
BUT, I'm sorry, I can't let your off the cuff analysis of FM go unchallenged...
The simple analysis you did only applies to AM radio. FM radio bandwidth is another beast...
Back in the old days, some guys at the FCC made this mistake you just did. FM radio is a funny
thing, w/o going into much detail, you can trade bandwidth for S/N in FM (unlike AM).
With FM (or any phase modulation scheme), the more SNR you have, the smaller the FM frequency
deviation you can use and still transmit the same info. Since the frequency deviation is smaller
it will (following Carson's rule) also occupy a smaller bandwidth.
So the 44kHz -> 88kHz BW analysis is sorta bogus for FM, it depends on the moduation scheme.
FM radio was designed to work in low SNR environments so it has pretty wide BW.
But if you had 1000:1 SNR, you could redesign it to take up lot less bandwidth
SW guys, stick to SW
NPR in NJ... http://www.npr.org/member s/stations/states/newjersey.html.
There are currently 4 major airline resevation systems:
1. WorldSpan
2. Sabre
3. SystemOne/Amadeus
4. Apollo
The non-bumpy road version...
:)
Start a company, decide you want to take it public. The first time you sell shares to the
public is called an Initial Public Offering (IPO).
Hire a experienced CFO (chief financial officer)to select an investment banker to lead your
underwriting syndicate. The underwriter(s) are securities brokers that help you take your
company public.
In exchange for money (usually shares in the company) they do the paper work and introduce
you to institutional investors and pay for the road show. They also can serve as "market makers"
for your stock after you go public. A "market maker" owns enough stock to facilitate trades.
(Stocks are trades, so if there is no-one to trade with, the stock is not very liquid).
The reason you want institutional investors (mutual funds, banks, pension funds, etc) rather
than small investors is for several reasons. Because your offering is required to be fair,
you want your IPO all at the same time so that things don't change (price, market, company info).
Also, institutional investors give the company feedback on price support (to select a stable price). Also institutional investors will hold the stock for a while which prevents the shares from being too volatile.
Because of this institutional investor focus, the only way to get in on this is have a good account
with a brokerage that is involved with the IPO. Usually brokerages only allow their best customers
access to IPO shares.
Investment banker and CFO will tell you how screwed up your books are.
Fix them. If they are really screwed up, this could take a while. The ownership, debt, stake
holders, assets, contracts, etc, etc, need to be clear. In a small company this can be a mess.
You negociate the lock-up period for officers and employees (the lock-up period is how long
after the IPO that you aren't allowed to trade in your own stock), this is usually 6 months.
For key employees with lots of shares, some stock could be locked up as long as 2 years.
The executive management team along with the Investment bankers will change your biz plan.
(your plan needs to be investor friendly)
You usually talk to a few other investment bankers about your biz plan to clean it up.
You write a S-1/Red herring which will become a prospectus which says what you're about,
who owns the company and what the all the risks are. You can't add to this later w/o refiling so
you have to get this right. Ommitions are considered lies so you put the kitchen sink into this.
(BTW, it is called a red herring because all the red colored warning bars and text)
You file this with the SEC, at this point you are in a quiet period and can't say anything about
your company unless it is in your filing.
After some informal shopping around the red herring, you either decided to fix it or go ahead.
This is the "cooling down" period.
You select an pricing range.
Schedule a road show with institutional investors to formally present your red herring. You say
exactly the same thing to everyone (it's the law).
Since you want diversified investors, you generally do New York, Chicago, Denver, Dallas,
San Francisco, Los Angeles, all in 1 day (that's why they call it a road show) and a few
conference calls overseas to boot.
Since you can't offer to sell and they can't buy, you get "subscriptions" which indicate interest
in buying. (Usually IPOs are oversubscribed)
You select the actual price.
You pull the trigger and go public. Then the subscribers are allowed to buy (they can always
back out). The amount of stock is usually allocated because of over-subscription.
For instance if somebody subscribes for 100,000 shares, they may only get to buy
10,000 if it is 10x over-subscribed.
From road show to IPO is usually less than 2 days to prevent the possibility of things changing
when you talk to two different people. This is the reason for the roadshow and why it is
impossible for anyone, except good broker customers to get IPO shares.
SEC rules require everyone to be qualified (IPOs are considered risky) and that everyone have the
same info. If you only talk to qualified investors and talk to everyone in the same day
that you sell the shares, this satisfies the requirement.
Now except for the lock-up, the stock is free game for everyone.
In the bumpy road version, repeat steps as often as necessary. Sometimes you can't even hire
an investment banker or a CFO. This could be considered a bad sign
It goes w/o saying if you want to take your company public, you'd better start planning
on day 1.
Although it is true that between filing and the effective date is usually over 1 month, under
current SEC rules it is possible to fast-track and do things in weeks if everything is clean.
The old "cool down" period was part of a regulation to protect the price of the IPO from
manipulation, but nowdays if you follow the rules, things can happen much faster.
The red-herring (which is usually similar to the filing) doesn't have a share price or an effective
date because when you print it, it has to be true (so they don't until they are 100% sure which is
usually the day before the effective date). They just have fill-in the blank spots for this info.
There is no way to know for sure the effective date until it happens (or you are an insider).
However, many companies schedule their road show the week before the effective date.
The investor services that list upcoming IPOs key off the fact that a company has scheduled a
road show to tell everyone that an IPO is coming the following week.
They can pretty much pull the trigger at any time... keep your eyes open
For big guys, IPO (initial public offering) shares are sold by this arcane process called
:-(
:) (although it is possible)
;-)
subscription. For small guys like us, an IPO isn't any different than any other stock offering.
Just get a stock broker and put in an order to by a certain number of shares at a certain price.
Unfortunately, for an IPO there isn't a price history until it the IPO happens (remember the I
is for initial). There is a range usually given in the filing, but these are just guidelines
and can be changed at any time (and usually up and at midnight before a hot IPO).
If you are daring, just pick a price above the range and put in an order and hope for the best.
If your bid is too low, no shares are available to match what people are asking, and you get nothing.
What you shouldn't do is put in a market price bid for an IPO. You would be pretty much assured
of paying the highest asking price and shortly after an IPO, the price usually drops.
Stock transactions are trades, so a buy order has to be matched with a sell order. To facilitate
trading, stocks are usually handled by one or more "market makers" (usually the stock underwriter for
IPOs). The "market makers" usually own enough shares to put in sell orders to match random buys
and to net out transactions at the market price. This gives them some power to manipulate the price.
In an IPO, the sells come from either the underwriter, the company's investors, or the
subscription shares which you probably won't get because who would sell them to you at such a
low price
The buy orders come from the gullible speculators trying to get IPO shares. To increase their odds
of getting shares, people put in high price/share limits. This of course bumps up the stock price
since the market makers look at the orders and of course pick the highest prices
Usually the day of a hot IPO, the people with shares hold on to them (don't sell) until they see
a few orders. The market maker can put in a few buy/sell orders to test the waters and then things
usually get going (and ususally up). There's a small chance if you put in an order during the
testing stage, the it will get traded but don't count on it! (everyone else has the same idea)
Unless you know what you are doing, or are just looking for token shares, I wouldn't suggest
planning on investing in an IPO.
Although this sounds like a great idea, I think for the amount of $$ they are planning to raise it
would be crazy to hand this over to computer model that has very little experience.
Also, I'm sure they thought twice about handing over their company to a closed source bidding
program. Would that be their style?
If you are raising $10 mil and you are unknown, that might be ok. If you are raising $100 mil...
OpenIPO isn't that different from just a regular online broker. The only magic they have is
that they allow smaller investors to get a random crack at IPO shares (like playing the lottery).
The small guys still get screwed. You can't see the Road Show presentation unless you have $1 mil.
You need to have lots of money available to get shares because you need to bid high for a large
number of shares to increase your odds to a reasonable levels.
For a hot IPO like Red Hat, I image that they would be 20x over subscribed. That means if you
bid for 2000 shares at say $30/share, you would have pretty good odds at getting 100 shares and
paying $20/share. This means you have to be able to afford $60,000 to get $2,000 worth of stock.
If you bid less than that, you probably will have better luck in the lottery.
Just goes to show how most people think on /.
For all those people that are complaining about the rest of the world misunderstanding them,
I suggest that they realize that golfers used the terms "hacker" and "hack" long before computer
hackers.
Computer hackers are already guilty of misusing the word as much as the media.
What goes around, comes around...
-slew (computer -and- golf hacker)
As with most things in life there is a trade-off. For a given size
:-).
:-)
:-). :-)
RAM, the more cells you put on a bit line, the fewer levels of block
mux logic it has to traverse. There will be a sweet spot between
cells/bit line and the number of blocks to mux.
On most designs, there are pass-gates to partition out segments
of the bit-sense line. For DRAM the magic number is usually around
32 cells on a bit-sense line (to keep the DRAM cap bigger than
the bit-line wire cap). For SRAM it's usually a bit more. This is
basically the small block idea. But for each partition, is just like
a small block of memory...
However, in modern designs, fast SRAM and DRAM sense amps are not
all that different...
For DRAMs, each bit cell is a capacitor which are charged to hold a bit.
Each bit is connected to a bit line by a pass transistor.
Since the pass transistor isn't a perfect insulator, after a while,
the bit cell (being just capacitors) tended to leak and usually take
on whatever value was on the bit line (this is why refresh is required).
To make the bit retention time symmetric, usually the bit line is
kept at V/2 volts as much time as possible (although there are other
capacitor leakage paths...).
In the old days, the pass transistor was just opened and the voltage
sensed by an amplifier. The read is destructive (discharged the
capacitor) so it had to be re-written after it was read. Usually the
amplifier reads and re-writes in one step. The problem with this was that
it took a while for the voltage to stabilize and cross a voltage
detection threshold (to be certain it was a 1 or a zero stored in the
original bit cell).
For fast modern DRAMs, a dummy row of bits is made on each DRAM which
is always charged to V/2 volts (during the precharge cycle). The dummy
row is read at the same time as the real row. The sense amp just
amplifies the difference between the dummy row's bit-sense line and the
real row's bit-sense line. This is much faster than waiting for the
capacitor to charge up the bit wire to cross a voltage threshold.
As soon as a small voltage difference occurs between the dummy bit-line
and the real bit-line, the differential sense amp just amplifies it and
feeds it back. This is about as fast as you can get!
The reason for the dummy row instead of a reference voltage is that it is
just like a real row (same performance/timing). Sensing a differential
value is more independent of manufacturing variations than a fixed voltage
threshold. Also the capacitors discharge just like the real row so that
prop-delay effects of caps charging/discharging are minimized. They
also have neat techniques of getting exactly V/2 volts into the dummy row
(charge a cap to V volts charge an identical cap to 0 volts and short
them together
For SRAMs, each bit cell is two inverters in a feedback loop. The
bit cell is connected to a bit line by a pass transistor. To write
a value, you just open the pass transistor and stuff in a big enough
signal to flip the bit. For slow SRAMs you open up the pass transistor
to read the value. Note the inherent conflict: the stronger you make
the bit cell drivers, the harder it is to flip it
For fast SRAMs, you usually bring out 2 bit lines (bit and bit-bar).
The differential lines are hooked to a differential sense amp.
This is done for 4 reasons:
1. The bit cell transistors and power supply wires are usually sized
really small. This means they have high resistance. This effectively
means that in most dense SRAM designs, the bit cell transistors are slow
and can't even drive the bit-sense line w/o the help of the sense amp.
The inverters in an SRAM are just amplifiers. When you hang too much
load (C & R) on the output of any amp, it will stop working by either
oscillating or never reaching the voltage rails.
2. The sense amp in an SRAM feeds back the value so as to improve the SNR
in the bit cell. When the pass gate opens, all of a sudden the bit cell
inverter feedback loop sees this big load and the internal signal level
drops. The sense amp quickly feeds back the value so that the internal
signal level is restored ASAP so the SRAM won't forget! Otherwise you
have to wait until the small bit-cell transistors stabilize the feed
back loop again. This makes your memory cycle time long (because if you
didn't wait to stabilize or rewrite the cell value, multiple back-to-back
reads could erase the cell!).
3. Having a differential (rather than a single ended) way to flip a
bit cell makes write cycles faster (fast is good!).
4. Just like in DRAMs, differential detection is more tolerant of
manufacturing variations than a fixed voltage threshold.
Since the sense amp is shared, it makes more sense to have lots of small
weedy bit-transistors and 1 big sense amp than lots of big bit-transistors.
You could carry this idea forward and say why not have lots of sense
amps, but since sense amps are much bigger (say 10x) the size...
Another benefit of differential detection is in today's CMOS technology,
the P-channel N-channel transistors have different characteristic which
means pull up and pull down strenght is different (faster to pull to down).
If you precharge to high voltage and have transistors pull down, N-channel
transistors can pull down faster and the access time is faster.
If you precharge to V/2, and let transistors pull up or down, the
cells that have to pull up will be slower.
To summarize, in both fast SRAM and DRAM, the differential sense amp is
used to compare two bit-lines, which are usually precharged to voltage
above the high detection threshold. After a short while after opening
the pass gates, the amplifier senses and amplify the voltage difference
between the bit-lines and drive the signal back on to the bit line.
Usually the logic to turn on and off the sense-amp and the pass gates
are the most critical part of the design of fast RAMs (must make sure
two pass gates aren't turned on at the same time, must wait a short
time after the pass gate is open before feeding back the sense amp,
and of course there isn't a clock to drive a state machine
Today, there is not much difference between fast SRAM and DRAM control
logic...
Of course slow, big, async SRAMs use single ended amps which are always
on and drawing power (which is why the ususally have OE controls), have
no precharge, and have only one bit-sense wire per cell. Of course these
designs take less area, but are usually much too slow for today's 100MHz+
designs.
Given the greed-for-speed and manufacturing tolerance considerations,
I doubt that any new memory technology would do away with the
differential sense amp idea in the near future. Differential sense-amps
are a very elegent solution to a whole mess of problems...
The RISC processor called the Emotion Engine will use rambus for main memory storage.
:-)
RDRAM is high bandwidth, very high latency.
The Graphic Synthesizer has 4Mbytes of embedded DRAM for the RGBA-buffer/Z-buffer.
Embedded DRAM is high bandwidth, lower latency and on chip.
So the PS2 will have both
As to the statement...
:-)
"...It's also faster, as you don't have the whole precharge/amplify readout cycle to deal with. "
This is probably not true. Precharge and amplify has less to do with nature of the memory cell,
but are used to speed up the access time of a RAM device. Even today's fast static-RAMs use
precharge and amplify circuits to speed things up. (DRAMs also use the sense amps to restore the
capacitor charge on read cycles, but SRAMs usually don't need this function, but still have amps
for speed).
The precharge is to put the bit sense lines into a known state (as opposed to an unknown state).
Once the bit cell starts driving the bit sense line the sense-amp, senses the small change from
the known state and amplifies it. If you don't precharge, you have to wait a while for the data
to stabilize. But if the bit sense lines are precharged to a known state, as soon as it starts
to change one way or the other, the amp kicks in and bam!
Also in a large (eg, Gbit arrays) the poor little super-small transistor that is attached to
a bit of the memory in the middle the array has little hope of driving a big long piece of
bit-sense wire out to the edge of the array without the help of an amplifier
DRAM is a funny thing. You read these wide rows out of the DRAM array (usually 2K bits) using
:-)
what is called the row address by an amplifier (called a sense-amp). This takes a long time.
After reading, all 2K bits are fed-back on the sense amp (kinda like a cache for the row). Now
once the row is read, you can just switch out the data for a column address really fast (say 6ns).
But, if you need a new row, you have to go back to the slow row access.
But you really don't get 6ns column access time either. To top it off, today's SDRAMs are
pipelined (the S is for syncronous). This means you have to send in the address 2-3 clock cycles
ahead to get the data. You can still get new data every 6 ns in a burst, but you have to figure out
things a couple clocks in advance (i.e. random access will suck).
Trac -> access time from new row address (or SDRAM activate command) say 50-100ns
Tcac -> access time from column address (or SDRAM read command) say 5-20ns
R/W times have always been slow to DRAM arrays, but DRAM architects have been pretty good at
hiding it
Although the fabrication technology for the chips inside the Sony PS2 hasn't been finalized,
:)
they are going to use what is called a hybrid process (logic and DRAM on the same die) to make
an chip with embedded DRAM. Today's technology allows about 4Mbytes of DRAM to be put on a chip
with the left over space used for logic. Yes, hybrid processes are a bit less efficient than all
logic or all DRAM processes, but are catching up (about 1 generation behind)...
Hybrid processes are currently the state of the art and allow cool things such as embedded DRAM.
(which allow really wide busses and fast access) However, the memory is still capacitors and
transistors, for standard DRAM not this wacky new stuff (but one of these days...).
(oh, and -yes- I know what I'm talking about here...
Without copyrights there would be no reason why somebody couldn't take an article, modify a few
words so as to make it appear the author had the exactly opposite viewpoint, change the name
slightly post it somewhere and sit back and laugh...
Or steal a 1/2 finished work from somebody, finish it quickly and publish it before the original
somebody got the chance.
It is clear that there are parts of the copyright law that are useful, that don't benefit the
distributors, but the original author/creator.
But of course, the time span of the copyright is directly related to the amount of money that can
be made which is (somewhat) related to the amount of money that the original author would receive.
(if someone stole everything you wrote and it got published before you could finish, I think there
would be a slight impact on the amount of money people would pay you...)
IP laws (in the US anyways) were designed to promote innovation in both industry and the arts.
./ reader tend to think
Others have cited the constitutional basis so I won't repeat them here.
In this area, they have been surprizingly effective. In industry, IP laws have served to
level the playing field between small and large companies. Although many
of the impact on individuals, the real effectiviness of IP laws is to prevent large companies
from dominating small companies in techinical areas that require a strong pace of innovation.
Just think how hard it would be for the internet to progress if IBM/AT&T/BBN/Berkeley/DOD were the
only people working on it? The fact that IP protection is granted allowed capital intensive
businesses (like SW development and IC development) receive the funding pursue new and innovative
technical advances. Without such protection, small companies would no be able to fund their
ideas and their ideas could be stolen by larger companies which could torpedo them to prevent
competition. This happens today with IP protection, imagine how bad it would be w/o...
On the artistic side, aren't things better off if talented people could spend their time improving
our culture by the development of artistic things than working only in their spare time.
I think that many people can agree that there are some benefits to IP law. Let's now look at another
benefit that is not at all obvious. IP law helps to keep the people who play to both continue to
contribute and to play fair.
In industry, patents are routinely violated until someone complains. If someone complains, a cross
license is usually obtained. This tends to make it so that to play the game, you have to bring
something to the table. It's all about fair play. If you don't have anything to bring to the table,
nobody want you to play. The only time people change money is when somebody's stuff is more
valuable than someone elses stuff. That's life, if your stuff isn't that valuable, you get less.
Of course there are injunctions and seemingly oppressive royalties, but I think these are rare
except between direct competitors. In the US anyways, damages for patent violations are limited
so there really isn't any way to charge oppressive royalties. In addition, most patents are deliberately
vague so the holders don't want them clarified by submiting them to a court (which would happen
if you actually brought the case to court). For real players in the industry, they usually have
some patents themselves that are valuable or necessary and reverse leverage is easy to apply.
So in reality, things are not at all as bad as some people make them out to be. Sure, 20 years
is too long for the internet, but I think this is a temporary situation. When radio was first
created, a flurry of patents ensued. Then when things got too complicated, patent pool companies
were formed. The formation of patent pools essentially eliminated the patents from the game.
Since everyone sort of paid them, they eventually just became a tax on the industry.
Many economists agree that this is the only way a complex industry can remain stable so these types
of things signal the maturity of an industry. When an industry is growing fast, patents help.
When growth stabilizes, patents hurt so companies are motivated to pool the patents to take them
out of the game and to provide an industry wide defense against people who don't play fair.
Companies that don't want to play fair will now have to work against this huge patent pool that
is controlled by multiple companies all of which have some sort of veto power. That means this
rogue company probably can't cut a side deal with one of them and screw everyone else. This is why
big conservative companies join the pool: mutual defense.
The IC industry is heading that way. Although almost everything is patented, almost all the
"standards" are royalty-free licenced for those companies willing to cross-licence necessary
patents for implementing the standard also for free. If you play fair, we play fair...
The fact that a patent exists is now immaterial since it is presumed that if you want to play, you
will contribute any "required" patents that you hold to the pool.
The SW industry will probably head that way eventually too. Open source is only an indication
of what is to come. Patent pooling (either for free or with a uniform "tax") has happened in all
big industries. Patent pools for companies is similar to the Open Source idea. Companies contribute
to patent pools to strengthen the industry against other companies that don't play fair. Companies
will eventually contribute to Open Source to guard against companies that don't play fair.
I consistenty surprizes me when people claim that "today" things are really different and the old
rules don't apply, when they don't even know what happened in the past.
Home electricity, the radio, the telephone, the car, the television, the VCR. Just look at the
history of these inventions before claiming that the old rules just don't apply anymore...
Usually the suits hire consultants to tell them what they want to hear. If the suits want Linux,
/.-ers, but not all suits are M$FT backers. In a big company you will have some
they hire themselves a Linux consultant to tell them Linux is the best thing since sliced bread.
If the suits want M$FT, they hire a MS consultant to tell them the appropriate thing.
In the consultant biz, you are hired for what you'll say, not what you'll do. The suits want
to know what you'll say before they hire you. Consultants that spring surprises don't last very long.
In contrast, you are paid for what you'll do, not what you say you'll do. Consultants who forget
this often end up spending too much time on a project making their $$/hour drop like a rock.
If you want to be a consultant, be pretty sure you can do what you say you can do.
That's why many consultants still recommend M$FT. This is what the suits want you to say,
and the consultants know this is what they can do. Until the suits are convinced they want Linux,
consultants have no choice but to offer M$FT or they won't get hired in the first place.
It may surprise some
suits behind every possibility (no matter how wacky). It's just up to now, they were ignored.
However, it only takes a few converts before the tide switches the other way (as we have seen
lately).
-extecher
This reminds me of a situation that a co-worker of mine got into several years ago.
He was an ex-pat working in the States with a green-card, but his girlfriend was in the States
with him and didn't have a green-card. She was getting kinda bored (when he was at work) so she
decided to try to volunteer to work at a gift shop for no pay (so that she wouldn't actually be
employed), no free-bees, in fact no compensation at all.
It turned out it was impossible for her to volunteer her time to work at this store.
I thought this was ridiculous at the time, but now that I look back, this is exactly what the problem was.
Let's see...
$133.20/day x 5days/week = $666.00/week
$666.00/week x 52weeks/year = $34,632/year
Maybe a little high, but $30K seems about right... If I remember right, for people >= BS is about $48K
Not entry level, but you do get raises every once in a while, even 2% a year adds up after 20 years...
Remember minimum wage gets you about $10K/year... and even McDs pays more than minimum.
For computer geeks employed full-time? $30K entry-level doesn't even buy you the time of day.
In silicon valley, it doesn't even buy time...
The newer laws just make it easy to prosecute.
Since the earliest days of computer "cracking", it has always been against the law to use one iota
of cpu cycles on someone-else's computer in an unauthorized way. If this guy wrote a program
that intentionally did this, he broke the law as soon as one cpu cycle got used to open the
address book on the infected computer. The legal theory is that you are stealing the cpu cycles.
This is how people got procecuted in the '80's. This is the same legal theory that protects FAX
machines against SPAM, and you against telemarketers.
Proving that actions were unauthorized was kinda tough (you did open the attachement after all) so
they passed new laws making this easier to prove. Now prosecuters only need to show intent in that
you knew that your program would do this.
BTW:
1. unsolicited email is now illegal in several states in the US.
2. any time things cross US state lines, the feds get involved (interstate commerce clause).
3. public disruption laws have always existed (illegal to yell "fire" in a crowded room).
How many people do you think installed Win95/98 on a machine without plunking down $89.95?
How many people do you think installed Solaris on a machine without plunking down $109.95?
How many people do you think installed DOS on a PC w/o buying it?
Let's face it, SW piracy rates are huge. Having a free, legal alternative is less of an impact
than you might think. Any way you measure units will be controversial, it's usually just better to
be consistent.
The target market for people who sell marketing reports is small (probably 1 per company).
/. They tell the people who buy their story what's
For medium sized companies, paying $1.5K to a company is a lot better than hiring a marketing
guy/gal for $250K and spending another $250K gathering statistics from competitors that won't
give you the time of day and hoping you can believe the report.
All the info in these marketing reports eventually spill out to the public, but by investing your
$1.5K, you get the report before it spills out (which might be worth $1.5K to you... or not).
Marketing reports from companties like IDC and DataQuest, although are not considered accurate,
usually include both "top-down" reports (what your competitors expect) and "bottom-up" reports
(what your customers expect). As we know, expectation often creates reality. A small or
medium sized company has no hope of producing such a report.
In a way marketing reports are just like
important. After a while, by definition what they say is important actually is important (think
about it)... If you (and enough people like you) invest enough time reading it, it in a sense
creates a reality.
Although GC is pretty helpful in RAD applications, so many people misuse GC that it has gotten a
bad name. Usually the same people who misuse GC also misuse pointers.
The main form of GC misuse in OO-land is to avoid properly designing object destructors. As things
get more complicated and multiple people start working on things this is often the place of the
first design failure.
Selecting the right time to destroy persitent objects is the biggest problem for real-time/
multi-threaded/retentrant code. Subtle bugs (like the TCP listen-timeout bugs) usually live here.
Defering these problems to a generic GC is probably the wrong thing to do in most cases.
Using GC to free nodes on a recursive traversal is great, but using GC to solve buffer deadlock
is probably a horrible thing to do.
Remember that most GC algorithms are only faster in that they essentially defer free() calls and
process them in bulk reducing overhead. Ref-count and mark-sweep type algorithms require that
more work be done than simply marking unused on a call to free().
As they say: pick the right tool for the job.