Sigh. As usual we get the slew of high moderated posts about how the americans built everything, and how the russians are now gouging them. Some people blame the americans, others the russians. All didn't read the article.
Fact: The russians are currently ferrying everything to the station. Fact: NASA is grounded. Fact: The russians are very low on funds, and can't afford to keep doing this.
They've stated that they'll wait to see if NASA meets its May deadline to get their shuttles going again. They've stated that they want to negotiate something to ease the burden (such as bartering for the man hours they currently owe for other work). America's response hasn't been made clear yet.
Is this gouging? No. They haven't even entered negotiations yet.
Should they gouge? Some of you "capitalist or die" affictionados may think so, but that kind of thinking is what drives the CEOs who only look to the next quarter's earnings, and what they can get out of it before the thing collapses.
This doesn't work in world politics, as can be seen from the fallout of Iraq.
This is usually how emulation projects work. The biggest bottlenecks are: CPU emulation, gfx engine, and sound engine (which can get pretty complex when it comes to DSP support).
The rest of it (loaders, input, user-interface, and glue logic) can be done in C/C++ with no discernable slowdown.
The problem with using a higher level language for CPU emulation especially is the creation/destruction of stack frames when making function/method calls. GCC is pretty nice in that you can tell it to forego some of the standard parts, but it still can run pretty high, and all that setup/teardown for a simple call to increment a virtual register really adds up.
With assembly, you can just "reserve" some registers for work, others for the virtual registers, and then make use of your native call functionality. The G65816 core of the SNES is not that complex (I've written one myself), so it's definitely possible to keep most of the state information in registers for most modern CPUs. You can also cheat in assembly by using your host CPU's status register to calculate some parts of the "virtual" status register of your emulated CPU.
I think the hardest part is trying to write code that is friendly to the host CPU's branch predictor. You can write code that is technically clean and tight, but if it keeps triggering an instruction pipeline flush, it's worthless.
You missed the fact that the "ongoing investigation" is described as an ongoing "criminal terrorism investigation". That photographing secret police who are photographing protestors puts one under suspicion of terrorist activities is truly a frightening development.
But you know, maybe you're right. Maybe I should just stay at home, eat my porrige and think happy thoughts. After all, Government is here to protect and coddle us sheep, aren't they?
It's been quite a long time since I was last treated to such a condescending comment as this. I also give you kudos for being completely off-topic.
As far as using predicate calculus in preference to an icky imperative or OO solution, I give you the CRC-32 algorithm.
Yes, you can solve it mathematically, but if you use a table of pre-calculated solution pieces and cheat a bit by using the partial result as a lookup into said table, you gain a multifold decrease in calculation time.
Only a fool would throw out a solution simply based on how elegant it is.
exceptions are a Bad Idea. Error codes are much
cleaner and more logical
As far as cleaner goes, it depends on your perception. If you mean cleaner in the sense that less code is generated, I'd agree. However, from the programmer's perspective, it's much messier to constantly put checks everywhere to propagate the fact that an error condition has occurred to the upper levels. As far as logical goes, that's an unqualified opinion. Why is a number stored globally and checked from time to time more logical than code that checks for an OutOfMemoryException?
In C, its easy to find memory allocations. Grep for malloc (or kmalloc in the kernel)
In C++, grep for new (or new in the kernel).
In C++, you have temporary objects being instantiated all over the place
Same thing in C. Ever heard of a struct?
If you don't think thats a problem- try putting a cout statement in a constructor
Would you use cout in a kernel? I wouldn't.
write a function that takes an object as a parameter and returns that object
AnObject& passObject(AnObject& obj) { // do something here
return obj; }
or
AnObject* passObject(AnObject* obj) { // do something here
return obj; }
I count 0 temporary objects being created. Working with objects in C++ is pretty much the same as working with structs in C, except you can do cooler stuff with objects.
A large amount of object creation doesn't make sense in an embedded/kernel environment.
Really? So all those structures being created by the Linux kernel are a bad thing? I never knew a file descriptor could be so evil...
Objects- C has them Yes, but the population and control logic associated with them has to be written externally... Another word for this is a hack.
Inheretance? Very rarely does it really benefit you, its usually used because "we're OO, we're supposed to use it" This is the refrain of the OO novice. Repeat after me: OO != Inheritance.
Inheritance is but one of the many design patterns available to the OO developer. Just because Inheritance happens to be the most misused design pattern doesn't mean it's always wrong to use it. People use screwdrivers as prybars all the time, with predictable results.
Templates? Ok, those can be useful for things like linked lists, although the STL goes way over the top with it. Which is of course why you wouldn't use STL in a situation where memory is tight... Much like you wouldn't dump a full-fledged C runtime library into an embedded system.
The gains of C++ are minimal, the pain of it is large. The gains of C++ are substantial. The people who can use it properly appear to be few.
If you're going to argue that C++ is bad for the kernel because someone might use std:string, you might as well go all the way and say that C doesn't belong in the kernel because someone might use printf in the memory handlers.
Just because the tool allows it doesn't mean it should be used in every application. After all, a kernel is much different from, say, a word processor.
In Japan, there are very few cars that have automatic cutoffs in the navi systems. The automobile accident rate here is low compared to the USA and has remained fairly steady over the years. I sometimes watch TV or a movie on the navi while my wife is driving, or vice versa. The same goes for programming in the destination (it's nice to use the auto-route selection, even if you know a faster way to get there since it keeps updating its idea of the best route, and will warn you if there's heavy traffic, bad weather, road work etc).
The problem lies not with the technology, but with the people using it. What does this mean? Education.
In Japan, everyone has to undergo a grueling exam before they are allowed on the road (100 question test, followed by driving on the testing course). Because there are so many safe driving habits to learn (such as keeping close to the curb when making a left-hand turn so that people riding scooters don't try to sneak up on the inside where your bind spot is), it's rare that someone will get their license without having gone to a driving school.
American education has given way to American schooling (which is completely different). Fix that and you'll fix a whole lot of other problems in your society.
Actually, the reason the Everquest economy exploded in sudden inflation was because of a banker dupe bug, which created multi-millionaires overnight.
Inflation is caused by a rise in the supply of money that cannot be properly absorbed by the population. In the normal Everquest economy, this supply is kept in check by making money creation enough of a time sink that it matches the rate of destructive spending (buying from NPC merchants, effectively destroying the money).
Incidentally, the EQ team has put in a new money sink in the form of the casino, in order to speed the draining of excess money from the Everquest economy.
So while the number of items in the game increase over time in Everquest, the money supply (barring dupe bugs like the one described above) remains stable, and thus so do prices.
The reason the dollar's purchasing power decliend post Fed is not because of going off the "gold standard" or even "secured currency". The problem occurred because massive de-regulation of the banking industry at that time afforded banks even further power in creating money than they had before.
Consider this: Banking customer A comes to bank X and deposits $100,000 into his savings account. Bank X now has $100,000 in "money". Bank X turns around and lends $10,000 to customer B, who just came in for a loan. Does this mean that customer A now has $90,000? No of course not. He can come in any time and withdraw his $100,000 from that bank. So where did the extra $10,000 come from? The bank created that money by lending it.
Customer B will now use that money to pay someone for goods or services, and that person will deposit the money (minus taxes) into his bank account, and that bank will do the exact same thing with his deposit.
There were at one time strict controls over how much money a bank could create, but these have eroded alarmingly in recent history, and as such we now have heavy inflation, rampant deficits (governments need to borrow money, too), and more and more citizens in debt up to their eyeballs.
While credit used to be something relied upon only in rough times, just until you could get solvent again, more and more people today simply remain in debt for their entire lives.
Returning to some kind of "gold standard" will not fix this, but slowly pushing back to a better controlled money supply will, and this starts with further limiting the amount of money the banks can create.
For the web app I'm working on (1 million hits a day, processes 30 million records every 30 mins, which are fed in from another company via FTP... go figure), we use stored procedures to massage incoming data into a more useable form, usually involving denormalized cache tables and precalculations to lower the amount of data the server app has to request from the DB back end.
It works fine so long as all developers are aware of the nature of the data.
Actually, no. The funds are stored directly on the card itself. I haven't heard of anyone hacking it yet, but they did recently change over the phone cards since those only marked the cash value by the position of small holes in the side of the card (which worked great until the Brazilians figured out how to use scotch tape on them).
Re:Rampant homophobia? Not necessarily.
on
eFront From Inside
·
· Score: 1
The derogatory use of "lame", for instance, has long been divorced from its other meaning. But that isn't the case with "gay". Look at the page linked to in the post, actually. The person is called gay by insinuating that he has sex with men. That's hardly an innocent usage. I don't think it would all that hard to argue that that "degardes the gay community". And as long as usages like that remain widespread -- which they unquestionably are at the moment -- then ANY usage of "gay" will be associated with that.
Yes, but don't forget that "lame" was once used in the same derogatory fashion that "gay" is still used in today.
At one point, the lame were severely discriminated against due to their inability to perform manual labour with the same efficiency of the average worker. During the pre-industrial and early industrial era, this was a big deal.
So, too, was "gay" a big deal in recent memory, although you'll notice that its original derogatory use is in decline (it is still prevalent, but I doubt it will be in 15 years time).
As a society, our cohesiveness as a group depends on the exclusion, even hatred of those who are not in our group. There must always be "outsiders". This is human nature, and will not change since we must form groups in society in order to survive as a whole. The only way to end the hatred of a group is to include it into our own, and this takes time.
Here's a very interesting excerpt from the USA Today article:
Here's how it works: Each image, whether a picture or a map, is created by a series of dots. Inside the dots are a string of letters and numbers that computers read to create the image. A coded message or another image can be hidden in those letters and numbers.
They're hidden using free encryption Internet programs set up by privacy advocacy groups. The programs scramble the messages or pictures into existing images. The images can only be unlocked using a "private key," or code, selected by the recipient, experts add. Otherwise, they're impossible to see or read.
Bad privacy groups! Don't you know that you just download PGP and then it will automatically add the super secret terrorist map to the "dots" of the picture?
I wonder if my JPEG viewer can decode the extra words in the "dots"?
The cops supposedly raid the dorm room because of the website. Yet the website is still up. Then one of the students say they somehow contacted the wrong server when uploading the website? Uhh, OK.
Ok, for all you slow learners out there:
1. The website has been running for 2 years.
2. Half the pages are 404.
Now put 2 and 2 together and understand how contacting the wrong site halfway through updating could cause such a situation.
If only it were so easy to clean out the shallow end...
I have seen my own high school brother talked about with much vulgarity on a website by some of his classmates that according to him, are 'messed up kids'. Now I know my brother and fully trust his judgement, but how can you tell if a person is just being really sarcastic or really has some mental issues?
I had a similar incident happen to me while I was in hellschool: A rather enterprising youth decided to publish a paper containing disparaging remarks with regards to my sexuality.
In response, I recified the situation in the best possible way: I beat the shit out of him.
Result: no more published papers. Ever.
Ever notice how ALL of the world's major conflicts were finally settled by violence?
Don't ever get caught here saying chink, nigger, honkey, jerry, limey, jap, polak, russki, chug, or any other such naughty words unless you have a lot of cash to pay out for your heinous crimes.
You mean I can just go into my tenant's apartment and take his computer equipment and oooh look some CDs that would add nicely to my collection... And hey! that's a NICE stereo system there! I'll bet he was using it for terrorist broadcasts or something just as criminal.
Actually, if you look at the assembler output of that code versus using a dummy structure as the head of the list and testing based on pSrch->pNext, you'll notice that your version is slower to execute in the main search loop.
I'd post a more detailed explanation, but Slashdot's wonderful "lameness filter" forbids me to post any code.
It was your typical chinese action movie, complete with wires and impossibly corny jumps across rooftops, running up walls, and rather lame fighting scenes (except for 2 specific fighting scenes which weren't too bad).
The only thing good I have to say about the movie is that the cinematography was outstanding.
Other than that it was just another chinese action flick to put next to the millions of others.
In Japan, most cel phones are free (brand new phones can cost up to $50, but quickly drop to $0).
They also don't lock you into a 2 year contract (i.e. you can use a phone for 1 month and then switch to another company no problem).
And want to hear the strangest part? The cel phone companies are making money hand over fist.
Maybe it's about time North America looked to the East for some clues about cel phones. My current phone weighs 8 ounces, has a color screen, and can connect to the internet, display maps of the area you are in, weather information, etc etc.
Sigh.
As usual we get the slew of high moderated posts about how the americans built everything, and how the russians are now gouging them.
Some people blame the americans, others the russians. All didn't read the article.
Fact: The russians are currently ferrying everything to the station.
Fact: NASA is grounded.
Fact: The russians are very low on funds, and can't afford to keep doing this.
They've stated that they'll wait to see if NASA meets its May deadline to get their shuttles going again.
They've stated that they want to negotiate something to ease the burden (such as bartering for the man hours they currently owe for other work).
America's response hasn't been made clear yet.
Is this gouging? No. They haven't even entered negotiations yet.
Should they gouge? Some of you "capitalist or die" affictionados may think so, but that kind of thinking is what drives the CEOs who only look to the next quarter's earnings, and what they can get out of it before the thing collapses.
This doesn't work in world politics, as can be seen from the fallout of Iraq.
Oh boy, yet another dark game.
Why must all these games be made from shades of brown and grey, where you always end up squinting at the screen?
Is it really so hard to make bright, easy to see games like Serious Sam 2?
This is usually how emulation projects work. The biggest bottlenecks are: CPU emulation, gfx engine, and sound engine (which can get pretty complex when it comes to DSP support).
The rest of it (loaders, input, user-interface, and glue logic) can be done in C/C++ with no discernable slowdown.
The problem with using a higher level language for CPU emulation especially is the creation/destruction of stack frames when making function/method calls. GCC is pretty nice in that you can tell it to forego some of the standard parts, but it still can run pretty high, and all that setup/teardown for a simple call to increment a virtual register really adds up.
With assembly, you can just "reserve" some registers for work, others for the virtual registers, and then make use of your native call functionality. The G65816 core of the SNES is not that complex (I've written one myself), so it's definitely possible to keep most of the state information in registers for most modern CPUs.
You can also cheat in assembly by using your host CPU's status register to calculate some parts of the "virtual" status register of your emulated CPU.
I think the hardest part is trying to write code that is friendly to the host CPU's branch predictor. You can write code that is technically clean and tight, but if it keeps triggering an instruction pipeline flush, it's worthless.
My biggest pet peeve in incorrect spellings is by far the verb "to lose".
Quick, what does this mean:
He'll loose his dog.
Will his dog be freed or will it go missing?
You missed the fact that the "ongoing investigation" is described as an ongoing "criminal terrorism investigation".
That photographing secret police who are photographing protestors puts one under suspicion of terrorist activities is truly a frightening development.
But you know, maybe you're right. Maybe I should just stay at home, eat my porrige and think happy thoughts. After all, Government is here to protect and coddle us sheep, aren't they?
It's been quite a long time since I was last treated to such a condescending comment as this.
I also give you kudos for being completely off-topic.
As far as using predicate calculus in preference to an icky imperative or OO solution, I give you the CRC-32 algorithm.
Yes, you can solve it mathematically, but if you use a table of pre-calculated solution pieces and cheat a bit by using the partial result as a lookup into said table, you gain a multifold decrease in calculation time.
Only a fool would throw out a solution simply based on how elegant it is.
cleaner and more logical
As far as cleaner goes, it depends on your perception. If you mean cleaner in the sense that less code is generated, I'd agree. However, from the programmer's perspective, it's much messier to constantly put checks everywhere to propagate the fact that an error condition has occurred to the upper levels.
As far as logical goes, that's an unqualified opinion. Why is a number stored globally and checked from time to time more logical than code that checks for an OutOfMemoryException?
In C, its easy to find memory allocations. Grep for malloc (or kmalloc in the kernel)
In C++, grep for new (or new in the kernel).
In C++, you have temporary objects being instantiated all over the place
Same thing in C. Ever heard of a struct?
If you don't think thats a problem- try putting a cout statement in a constructor
Would you use cout in a kernel? I wouldn't.
write a function that takes an object as a parameter and returns that object I count 0 temporary objects being created.
Working with objects in C++ is pretty much the same as working with structs in C, except you can do cooler stuff with objects.
A large amount of object creation doesn't make sense in an embedded/kernel environment.
Really? So all those structures being created by the Linux kernel are a bad thing? I never knew a file descriptor could be so evil...
Objects- C has them
Yes, but the population and control logic associated with them has to be written externally... Another word for this is a hack.
Inheretance? Very rarely does it really benefit you, its usually used because "we're OO, we're supposed to use it"
This is the refrain of the OO novice.
Repeat after me: OO != Inheritance.
Inheritance is but one of the many design patterns available to the OO developer.
Just because Inheritance happens to be the most misused design pattern doesn't mean it's always wrong to use it. People use screwdrivers as prybars all the time, with predictable results.
Templates? Ok, those can be useful for things like linked lists, although the STL goes way over the top with it.
Which is of course why you wouldn't use STL in a situation where memory is tight... Much like you wouldn't dump a full-fledged C runtime library into an embedded system.
The gains of C++ are minimal, the pain of it is large.
The gains of C++ are substantial. The people who can use it properly appear to be few.
Score 5: Informative?
Try score 0: troll.
If you're going to argue that C++ is bad for the kernel because someone might use std:string, you might as well go all the way and say that C doesn't belong in the kernel because someone might use printf in the memory handlers.
Just because the tool allows it doesn't mean it should be used in every application. After all, a kernel is much different from, say, a word processor.
In Japan, there are very few cars that have automatic cutoffs in the navi systems. The automobile accident rate here is low compared to the USA and has remained fairly steady over the years.
I sometimes watch TV or a movie on the navi while my wife is driving, or vice versa. The same goes for programming in the destination (it's nice to use the auto-route selection, even if you know a faster way to get there since it keeps updating its idea of the best route, and will warn you if there's heavy traffic, bad weather, road work etc).
The problem lies not with the technology, but with the people using it. What does this mean? Education.
In Japan, everyone has to undergo a grueling exam before they are allowed on the road (100 question test, followed by driving on the testing course).
Because there are so many safe driving habits to learn (such as keeping close to the curb when making a left-hand turn so that people riding scooters don't try to sneak up on the inside where your bind spot is), it's rare that someone will get their license without having gone to a driving school.
American education has given way to American schooling (which is completely different). Fix that and you'll fix a whole lot of other problems in your society.
Actually, the reason the Everquest economy exploded in sudden inflation was because of a banker dupe bug, which created multi-millionaires overnight.
Inflation is caused by a rise in the supply of money that cannot be properly absorbed by the population. In the normal Everquest economy, this supply is kept in check by making money creation enough of a time sink that it matches the rate of destructive spending (buying from NPC merchants, effectively destroying the money).
Incidentally, the EQ team has put in a new money sink in the form of the casino, in order to speed the draining of excess money from the Everquest economy.
So while the number of items in the game increase over time in Everquest, the money supply (barring dupe bugs like the one described above) remains stable, and thus so do prices.
The reason the dollar's purchasing power decliend post Fed is not because of going off the "gold standard" or even "secured currency". The problem occurred because massive de-regulation of the banking industry at that time afforded banks even further power in creating money than they had before.
Consider this:
Banking customer A comes to bank X and deposits $100,000 into his savings account.
Bank X now has $100,000 in "money".
Bank X turns around and lends $10,000 to customer B, who just came in for a loan.
Does this mean that customer A now has $90,000? No of course not. He can come in any time and withdraw his $100,000 from that bank.
So where did the extra $10,000 come from? The bank created that money by lending it.
Customer B will now use that money to pay someone for goods or services, and that person will deposit the money (minus taxes) into his bank account, and that bank will do the exact same thing with his deposit.
There were at one time strict controls over how much money a bank could create, but these have eroded alarmingly in recent history, and as such we now have heavy inflation, rampant deficits (governments need to borrow money, too), and more and more citizens in debt up to their eyeballs.
While credit used to be something relied upon only in rough times, just until you could get solvent again, more and more people today simply remain in debt for their entire lives.
Returning to some kind of "gold standard" will not fix this, but slowly pushing back to a better controlled money supply will, and this starts with further limiting the amount of money the banks can create.
For the web app I'm working on (1 million hits a day, processes 30 million records every 30 mins, which are fed in from another company via FTP... go figure), we use stored procedures to massage incoming data into a more useable form, usually involving denormalized cache tables and precalculations to lower the amount of data the server app has to request from the DB back end.
It works fine so long as all developers are aware of the nature of the data.
Actually, no. The funds are stored directly on the card itself.
I haven't heard of anyone hacking it yet, but they did recently change over the phone cards since those only marked the cash value by the position of small holes in the side of the card (which worked great until the Brazilians figured out how to use scotch tape on them).
The derogatory use of "lame", for instance, has long been divorced from its other meaning. But that isn't the case with "gay". Look at the page linked to in the post, actually. The person is called gay by insinuating that he has sex with men. That's hardly an innocent usage. I don't think it would all that hard to argue that that "degardes the gay community". And as long as usages like that remain widespread -- which they unquestionably are at the moment -- then ANY usage of "gay" will be associated with that.
Yes, but don't forget that "lame" was once used in the same derogatory fashion that "gay" is still used in today.
At one point, the lame were severely discriminated against due to their inability to perform manual labour with the same efficiency of the average worker. During the pre-industrial and early industrial era, this was a big deal.
So, too, was "gay" a big deal in recent memory, although you'll notice that its original derogatory use is in decline (it is still prevalent, but I doubt it will be in 15 years time).
As a society, our cohesiveness as a group depends on the exclusion, even hatred of those who are not in our group. There must always be "outsiders". This is human nature, and will not change since we must form groups in society in order to survive as a whole. The only way to end the hatred of a group is to include it into our own, and this takes time.
Nothing brings people together like a good enemy.
ping arcade.com.tw
ping www.arcade.com.tw
ping www.arcadeathome.com
ping arcadeathome.efront.com
Spot the difference.
Yes, folks, Tim is hosting the roms at his own site, not in Taiwan.
Here's a very interesting excerpt from the USA Today article:
Here's how it works: Each image, whether a picture or a map, is created by a series of dots. Inside the dots are a string of letters and numbers that computers read to create the image. A coded message or another image can be hidden in those letters and numbers.
They're hidden using free encryption Internet programs set up by privacy advocacy groups. The programs scramble the messages or pictures into existing images. The images can only be unlocked using a "private key," or code, selected by the recipient, experts add. Otherwise, they're impossible to see or read.
Bad privacy groups! Don't you know that you just download PGP and then it will automatically add the super secret terrorist map to the "dots" of the picture?
I wonder if my JPEG viewer can decode the extra words in the "dots"?
The cops supposedly raid the dorm room because of the website. Yet the website is still up. Then one of the students say they somehow contacted the wrong server when uploading the website? Uhh, OK.
Ok, for all you slow learners out there:
1. The website has been running for 2 years.
2. Half the pages are 404.
Now put 2 and 2 together and understand how contacting the wrong site halfway through updating could cause such a situation.
If only it were so easy to clean out the shallow end...
I have seen my own high school brother talked about with much vulgarity on a website by some of his classmates that according to him, are 'messed up kids'. Now I know my brother and fully trust his judgement, but how can you tell if a person is just being really sarcastic or really has some mental issues?
I had a similar incident happen to me while I was in hellschool: A rather enterprising youth decided to publish a paper containing disparaging remarks with regards to my sexuality.
In response, I recified the situation in the best possible way: I beat the shit out of him.
Result: no more published papers. Ever.
Ever notice how ALL of the world's major conflicts were finally settled by violence?
Jeez.. sounds a lot like Canada in general.
Don't ever get caught here saying chink, nigger, honkey, jerry, limey, jap, polak, russki, chug, or any other such naughty words unless you have a lot of cash to pay out for your heinous crimes.
Ah to live free...
Really????
You mean I can just go into my tenant's apartment and take his computer equipment and oooh look some CDs that would add nicely to my collection... And hey! that's a NICE stereo system there! I'll bet he was using it for terrorist broadcasts or something just as criminal.
They had a warranty.
Oh thank GOD! For a minute there I thought they wouldn't be able to get a manufacturer's reimbursement should the equipment turn out to be defective!
Actually, if you look at the assembler output of that code versus using a dummy structure as the head of the list and testing based on pSrch->pNext, you'll notice that your version is slower to execute in the main search loop.
I'd post a more detailed explanation, but Slashdot's wonderful "lameness filter" forbids me to post any code.
Has your brain undergone a seizure?
It was your typical chinese action movie, complete with wires and impossibly corny jumps across rooftops, running up walls, and rather lame fighting scenes (except for 2 specific fighting scenes which weren't too bad).
The only thing good I have to say about the movie is that the cinematography was outstanding.
Other than that it was just another chinese action flick to put next to the millions of others.
Wel well, it's time for the "fit every human word ever written in your back pocket" miracle vapor device of the week again.
Not bad from the continent that is still using 100MB hacked-up magnetic disks while other countries have been using Magneto Optical disks for years...
They also don't lock you into a 2 year contract (i.e. you can use a phone for 1 month and then switch to another company no problem).
And want to hear the strangest part? The cel phone companies are making money hand over fist.
Maybe it's about time North America looked to the East for some clues about cel phones. My current phone weighs 8 ounces, has a color screen, and can connect to the internet, display maps of the area you are in, weather information, etc etc.