This I think was one of the worst aspects of ActiveX. All of the ActiveX widgets on the web ended up popping up so many security confirmation dialog boxes that a malicious (spyware most likely) widget slipped through because "it looked like all the others." If on the other hand most web pages used Java applets instead, the dialog box becomes sufficiently rare as to illicit a closer look.
It's kind of like bulk email. Back when spam was only one message in fifty, picking it out was easy. After a majority of email became spam, distiguishing between the useful and the junk among the hundreds/thousands of emails became much more difficult and error prone.
Java applets have been around for some time now. The number of remote system exploits has been *extremely* low in the last few years. (Not that the total number of exploits has been very high.) In fact the vast majority of Java expolits through an applet has been social engineering (a Java window popped up that looked like a system dialog) rather than technical exploitation.
Basically in order to install spyware with Java, you have to set up a web page (accountability), get people to come to your page, find a bug in a particular browser/VM combination that allows remote access to the file system AND allows native code to be executed.
As it stands today, I have never heard of an actual case of a web site installing spyware on a system via a Java applet. Of course this isn't to say that it could never happen. Anything could happen. But the fact that I have never yet heard of it happening in the ten years that Java has been released versus the number of spyware installs via ActiveX speaks volumes to me.
On the contrary, someone who doesn't serve at all (like for example, Cheney) isn't held --and shouldn't be held -- to the same level of scrutiny as someone who did sign up for the military, got special favors to get inducted into the National Guard even though the wait in line for everyone else at the time was 18 months long, and then expected (and received) special treatment when he didn't fulfill his obligations.
You talk about the hypocrisy of Democrats, but it's the Republicans who preached up and down that the reason Clinton was supposed to be impeached was because he lied to Congress. Now that we have a president that lied about ties between Sadaam and Al Qaeda, swore up and down about weapons of mass destruction even though his hand-picked chief inspector found nothing, *and* has a record of substandard service in the National Guard for which he got a slap on the wrist, a cover-up, and to which he never owned up.
But Clinton lied about getting a blow job from a consenting adult? Give me a fucking break. Pot, meet kettle. You're black!
Unless you have to mine 5,000 (liberal estimate) to 50,000 (conservative estimate) times as much area to get the same amount of material, uranium mining wins. Add in the available nuclear material gained from reprocessing existing spent fuel that would otherwise be buried and the amount that actually needs to be mined in the first place drops dramatically. You can "reburn" uranium and many of its byproducts. You can't reburn coal.
This of course is ignoring little things like the fact that uranium mines don't catch fire and burn for decades at a time....unlike your long coal veins.
On the contrary, a 24-bit space is usually represented in six bytes of text, not eight. Take a look at HTML. It's in hex values. (eg. FF0000, FFFFFF and 0000FF)
So that's still twice as big, right? So on disk, just use a compressor like XMill or XGrind (or just plain gzip or bzip2). Those can shrink those nasty XML files down to size nicely.
As for the parsing argument, are you really planning on loading a raw byte array into memory and expect it to be usable? Aren't you going to error check it? If so, that means the big, bad parsing step. Which operating system are you using? Which video card? What's the underlying CPU? Is it big endian or little? Will the byte offsets be correct? Will this binary format allow text strings? Will those text strings be ASCII or Unicode?
These are all issues with binary formats that are largely non-issues with XML. As for your textures strawman, just because your textures are in a binary format doesn't mean the overall description file has to be. Think of HTML. Text based but you can link to and reference binary data (images, video, and audio).
And for the record, Ogg metadata can be specified in XML.
Yes, because the parsing time for XML would be the greatest factor in a 3D program's running time. Ummm... NOT!
Unless you want your program to crash on unexpected input, you'd better be checking that binary data format for errors as well as transposing values so that byte padding issues don't crop up when you switch between a PowerPC processor and an Intel-compatible processor.
Then of course there's the time taken to write a parser for this binary format.
The "overhead" of XML is not the issue. The fact that XML parsers and validators have already been written and performance tuned is a dominating factor. Text-based (which incidentally is just another binary format if you really want to split hairs) also means platform-agnostic.
CPU time = cheap and abundant. Programmer time = expensive and scarce.
As opposed to binary data which can be passed directly to a data structure...
Oh wait! You have to deal with endian issues....and byte offsets....structure padding....data validation....error correction. And let's not forget that binary data of this type can be compressed as well. The issues with bzip2 also apply to binary as well.
Could you please show me an example of a dangling reference in Java? I'd greatly appreciate it.
And what about the GC is esoteric? You no longer reference an object. The GC reclaims it. Seems straightforward to me.
Is a modern GC more complicated than that? Sure. The implementations are truly mind-boggling. But whether it's a mark-and-sweep or a generational garbage collector, as a coder, all I see is "set to null and it goes away." I admit, when tuning for performance, other issues may come up with the garbage collection implementation (usually not), but by and large the issues with software development are not governed by garbage collector behavior.
C'mon. Are you really going to assert that finding dangling pointers and making sure that all malloc/new calls match up to a free/delete call really matches up to the memory management in a garbage collected language? Yes, you must make sure that you don't keep unwanted references around. And this is different from any language (including C) how? With C you have to not only watch for memory accumulation, but that the memory is freed AND that you don't reassign a pointer before "free" is called.
And as far as "fiddling" with jars and classpaths, exactly how are you not fiddling with shared libraries and LD_LIBRARY_PATH?
"don't hold on to the reference" is equivalent to saying "free it." [...] anywho, these hash tables are kept around forever, so all objects need to be "freed" from the hash table. this isn't such an uncommon occurrence, so saying "don't hold on to it" is silly.
You suck at programming in Java. WeakHashMaps have been around for years now (since Java 1.2). You used a language construct inappropriately and then turn around and call it a shortcoming of the language? There is a class in the standard library, it's well documented, and it does exactly what you needed it to do, but you didn't use it. Who's fault is that?
...but isn't that redundant? If nothing is running on a particular port, where is the security hole? If Apache isn't running and I try to connect to port 80, what can I do to harm the system?
It's nice that the convenience is there, but if turning on a program pokes a hole in the firewall and turning it off blocks a port that isn't in use, what's the point?
I had thought about that, and the more I thought about it, the more it seemed like a bad idea. Why?
The bad habits people learned on MySQL would perpetuate. After all, why code for database abstraction if the two main OSS databases share the same API?
I'd much rather MySQL tightened things up a bit. Optionally of course as I understand they have a large installed base, but I'd like to see the MySQL version of Perl's "use strict". If MySQL did that, I hereby proclaim to all around me that I will no longer bash MySQL. I won't necessarily prefer it to PostgreSQL, Firebird, or SQLite, but I won't flat out trash talk it for being a loose piece of crap data trashcan that silently ignores obvious errors in the name of efficiency while blaming the programmer even though one of its primary selling points is that it's easy for beginners.
'The fuzzy elephant' is NOT a valid integer nor is it a valid timestamp nor is it appropriate for a varchar field constrained to 10 characters! NOT NULL means "I require a value," not "I'll put the non-specified default in there despite you passing a NULL." It's not like these checks require a great deal of processing power after all. If it made more than a blip on the speed of MySQL, I would be truly astonished.
Once MySQL's "use strict" is in there, I will accept the mantra that it's the programmer's fault for not using it.
What part of "linking" did you not understand in the GPL. Sure, you can do it. What about the PHP guys who made your precious MySQL interface? Oops! Touched GPL. License override! And the PHP Apache module? Well if that PHP code is touched, BINGO! So's Apache.
So how do the PHP guys distribute their code without converting (back) to GPL?
Simple. They don't. They transfer all new effort to PostgreSQL. But wait! There's the MySQL FOSS Exception....and now you see why it exists.
Or did you think everyone builds Apache and PHP from source at every installation?
Speaking of the new releases made possible by MySQL's dual licensing business model [as though they would stop all development otherwise], Urlocker pointed out that MySQL 4.1 is presently in beta and "should be released for production" within four to five weeks. According to information provided by the company, the new release will feature OpenGIS geographical data support [just like PostgreSQL and Oracle have done for some time now?] and the ability to send multiple SQL statements via a C language MySQL API call and receive the results back at once [yup, even though batch SQL processing isn't all that new, just use our proprietary C API and leave that nasty old ODBC behind], among other additions and enhancements [which by and large have been done by every other database vendor before us].
MySQL 5.0, the first major update to the product since the MySQL 4.0 "production" release was announced in early 2003, is presently in the alpha stage of development. "New stored procedures and views" are among the features that this upcoming release will include [even though they publicly made a point of telling developers how little you needed them just a short while ago]. Some other interesting features may also make it into the code before the release, but Urlocker said that his company prefers to "under promise and over deliver." [Well they've certainly delivered on the under promise part.]
This was fun! It kinda makes me want to write a timeline of when MySQL developers would publicly and loudly assert that certain features were not needed and compare it another timeline that proudly announces the formerly useless feature in their newest revision.
Might be as much fun as reading the MySQL gotchas pages. "Foreign keys only serve to slow database engines down." Wait a couple of years... "MySQL 4: Now with new enterprise features like foreign key support!" Wash. Rinse. Repeat....to get the stink off.
Those who forget the past are doomed to extended use of a debugger.
It went on and on about how much they like the GPL over all other licenses. I'm no MySQL fan, but for fuck's sake...
That said, this statement made me chuckle a bit:
The main point he made to us is that his company believes "strongly in Open Source." The company has actually tried to increase the freedoms provided by the GPL, Urlocker asserted, with the "MySQL FOSS exception" that allows some Open Source Initiative approved licenses, that are incompatible with the GPL, to still make use of the GPL licensed version of MySQL.
Let me get this straight. Because it allows linking with PHP and Apache -- two systems which incidentally are fundamental to MySQL's continued success -- this is proof of their love of free software and freedom? Call me cynical, but it sounds more like proof of their love of avoiding irrelevance.
Can you imagine?
MySQL AB: We are pure GPL! Developer1: Isn't the GPL incompatible with the Apache/BSD style of license? Developer2: According to the FSF it is. Developer 1: Aren't the Apache web server and PHP under Apache/BSD styles of license? Developer 2: PHP used to be GPL, but yeah, now they're both like that. Developer 1: So if I sell a complete package with all three, I'm legally in trouble? Developer 2: Looks like it. Developer 1: Well, I guess I'll install PostgreSQL then. MySQL AB: MySQL FOSS exception! Developers 1 and 2: Wow! What nice guys. They're really sticking their neck out for us on that one. Thanks!
Last I heard, the number of sales of new LCDs beat new CRTs.
Once people hit an equilibrium with needed storage space on a desktop system (which may be happening now with folks not even filling their 80GB drives), speed may trump raw volume of storage. Even if in the near future a terabyte drive is available for $150, if you can get a 100GB solid state for the same $150 price, many will jump on it in order to get a five-fold increase in speed. Why? Because 100GB will likely be more than they need unless they're doing heavy video editing. If they're not using the extra space, why not go for the speed?
Yes but if someone only uses one twentieth of the available space of their multi-terabyte hard drive, the competitor is the same price for one twentieth the space, and the competitor is five times faster, which would you choose?
I'd get the solid state myself and use a cheap hard drive in a portable enclosure for backup.
While many use tape, I'm curious: How much does a 80GB tape drive cost? How much does each tape cost? How many tapes are necessary to start beating the price of the equivalent number of 80GB hard drives?
At the risk of sounding like "640K should be enough for everyone," what exactly does a typical desktop user need with 4GB of RAM? Would realtime video editing (the most stress on memory I can see a typical user wanting to do) require this much?
I can see a badly written piece of software needing this, but a badly written piece of software can exhaust all RAM just by doing the equivalent of ls.
Floppies are cheap enough to be disposable. Not good news for the landfill, but I can easily copy some data to a floppy, pop it in an envelope and mail it to someone.
So burn a CD and mail it. Cheaper than a floppy these days.
So what if you can't write to the CD-R after. You're mailing something to someone. They just need to read it. If they need to send you something back, they can write another CD-R (for 5-10 cents).
Bonus! They're not subject to magnetic fields and in a slim jewel case (also very cheap) are as safe from breakage in the post as a floppy is.
One would use a floppy drive, but one that was externally connected by USB. That way you can have just one for every computer that may need to read one.
Writing on CD-RW is not as big a deal as you make it out to be assuming you have packet writing software that makes the drive show up with a drive letter (in Windows). On Linux, packet writing hasn't taken off as well unfortunately.
As for USB flash drives, a 32MB model costs less than $20. That's still considerably more capacity than a floppy, can be worn as a necklace, can be used on any computer made in the last five years or so, and is much faster than a floppy.
And those same machines that lack a CD burner can still be booted from a business card CD which can contain just about any utility you'd need to use for system recovery. Personally, if I really need a floppy for these situations, it's probably not going to be a quick fix anyway. So I just pull out an old floppy drive from the junk pile, slap it into the closest system, and do whatever is necessary. Then I pull it out and throw it back into the junk pile.
Got any 5.25" drives as well? There are old PCs that don't have 3.5" drives. How about 8" drives? QIC-80 tapes? A whole lot of backups were made on those that someone might want. I've got some files for a Z-80 on cassette that I might want to check out too. When does it end?
On a desktop system, 1GB of RAM isn't at all uncommon anymore. RAM is so economical, that having a swap isn't really worth it anymore. And quite a few Linux kernel developers agree with me.
Case in point, you have X amount of RAM. The usage on your system grows to X + some value so you swap to hard drive, right? But that swap partition is finite. So in actuality, you have X amount of "fast RAM" and Y amount of "slow RAM." There is still a limit, but instead of getting out of memory errors or killed processes, you have a system that slows to an absolute crawl (which may initiate a cascading pattern of sluggishness on your system).
End result? Pay the $50 and get more RAM.
As for writing to the same address with a while(1), just because it looks like the same address to the operating system doesn't mean it's the same address on the underlying device. An abstraction layer is common on the hardware level to maximize media life.
In addition, filesystems such as XFS and Reiser4 delay writes to the drive until the last minute so a while(1) would usually only overwrite RAM buffers rather than the persistent media.
For most desktops, the rewriteability is a non-issue. For servers, power, noise, and vibration are not the most important considerations. Speed and reliability are. So for servers you'd want partitions like/tmp and/var (and/home perhaps) on a hard drive while the other less volatile portions could go on solid state for speed. Then again, for best performance, someone may just put/tmp on solid state and count on replacing every few months.
All I'm saying is that if Java didn't have all of the items in java.util or built in threading or a standard database API, no one would've used it.
This doesn't help Common LISP as you correctly point out, but without a standard library, any language or VM is likely to be ignored.
That said, I'm curious about one of your statements. If standard libraries can be implemented on nearly anything, why haven't they been implemented? Do you think this is the result of a single company controlling the initial development of a language, the struggle between academia and tradesmen, or something else?
This I think was one of the worst aspects of ActiveX. All of the ActiveX widgets on the web ended up popping up so many security confirmation dialog boxes that a malicious (spyware most likely) widget slipped through because "it looked like all the others." If on the other hand most web pages used Java applets instead, the dialog box becomes sufficiently rare as to illicit a closer look.
It's kind of like bulk email. Back when spam was only one message in fifty, picking it out was easy. After a majority of email became spam, distiguishing between the useful and the junk among the hundreds/thousands of emails became much more difficult and error prone.
Java applets have been around for some time now. The number of remote system exploits has been *extremely* low in the last few years. (Not that the total number of exploits has been very high.) In fact the vast majority of Java expolits through an applet has been social engineering (a Java window popped up that looked like a system dialog) rather than technical exploitation.
Basically in order to install spyware with Java, you have to set up a web page (accountability), get people to come to your page, find a bug in a particular browser/VM combination that allows remote access to the file system AND allows native code to be executed.
As it stands today, I have never heard of an actual case of a web site installing spyware on a system via a Java applet. Of course this isn't to say that it could never happen. Anything could happen. But the fact that I have never yet heard of it happening in the ten years that Java has been released versus the number of spyware installs via ActiveX speaks volumes to me.
On the contrary, someone who doesn't serve at all (like for example, Cheney) isn't held --and shouldn't be held -- to the same level of scrutiny as someone who did sign up for the military, got special favors to get inducted into the National Guard even though the wait in line for everyone else at the time was 18 months long, and then expected (and received) special treatment when he didn't fulfill his obligations.
You talk about the hypocrisy of Democrats, but it's the Republicans who preached up and down that the reason Clinton was supposed to be impeached was because he lied to Congress. Now that we have a president that lied about ties between Sadaam and Al Qaeda, swore up and down about weapons of mass destruction even though his hand-picked chief inspector found nothing, *and* has a record of substandard service in the National Guard for which he got a slap on the wrist, a cover-up, and to which he never owned up.
But Clinton lied about getting a blow job from a consenting adult? Give me a fucking break. Pot, meet kettle. You're black!
Unless you have to mine 5,000 (liberal estimate) to 50,000 (conservative estimate) times as much area to get the same amount of material, uranium mining wins. Add in the available nuclear material gained from reprocessing existing spent fuel that would otherwise be buried and the amount that actually needs to be mined in the first place drops dramatically. You can "reburn" uranium and many of its byproducts. You can't reburn coal.
...unlike your long coal veins.
This of course is ignoring little things like the fact that uranium mines don't catch fire and burn for decades at a time.
On the contrary, a 24-bit space is usually represented in six bytes of text, not eight. Take a look at HTML. It's in hex values. (eg. FF0000, FFFFFF and 0000FF)
So that's still twice as big, right? So on disk, just use a compressor like XMill or XGrind (or just plain gzip or bzip2). Those can shrink those nasty XML files down to size nicely.
As for the parsing argument, are you really planning on loading a raw byte array into memory and expect it to be usable? Aren't you going to error check it? If so, that means the big, bad parsing step. Which operating system are you using? Which video card? What's the underlying CPU? Is it big endian or little? Will the byte offsets be correct? Will this binary format allow text strings? Will those text strings be ASCII or Unicode?
These are all issues with binary formats that are largely non-issues with XML. As for your textures strawman, just because your textures are in a binary format doesn't mean the overall description file has to be. Think of HTML. Text based but you can link to and reference binary data (images, video, and audio).
And for the record, Ogg metadata can be specified in XML.
Yes, because the parsing time for XML would be the greatest factor in a 3D program's running time. Ummm... NOT!
Unless you want your program to crash on unexpected input, you'd better be checking that binary data format for errors as well as transposing values so that byte padding issues don't crop up when you switch between a PowerPC processor and an Intel-compatible processor.
Then of course there's the time taken to write a parser for this binary format.
The "overhead" of XML is not the issue. The fact that XML parsers and validators have already been written and performance tuned is a dominating factor. Text-based (which incidentally is just another binary format if you really want to split hairs) also means platform-agnostic.
CPU time = cheap and abundant. Programmer time = expensive and scarce.
As opposed to binary data which can be passed directly to a data structure...
...and byte offsets. ...structure padding. ...data validation. ...error correction. And let's not forget that binary data of this type can be compressed as well. The issues with bzip2 also apply to binary as well.
Oh wait! You have to deal with endian issues.
Could you please show me an example of a dangling reference in Java? I'd greatly appreciate it.
And what about the GC is esoteric? You no longer reference an object. The GC reclaims it. Seems straightforward to me.
Is a modern GC more complicated than that? Sure. The implementations are truly mind-boggling. But whether it's a mark-and-sweep or a generational garbage collector, as a coder, all I see is "set to null and it goes away." I admit, when tuning for performance, other issues may come up with the garbage collection implementation (usually not), but by and large the issues with software development are not governed by garbage collector behavior.
C'mon. Are you really going to assert that finding dangling pointers and making sure that all malloc/new calls match up to a free/delete call really matches up to the memory management in a garbage collected language? Yes, you must make sure that you don't keep unwanted references around. And this is different from any language (including C) how? With C you have to not only watch for memory accumulation, but that the memory is freed AND that you don't reassign a pointer before "free" is called.
And as far as "fiddling" with jars and classpaths, exactly how are you not fiddling with shared libraries and LD_LIBRARY_PATH?
You mean they were going to build an *additional* nuclear plant in California. Diablo Canyon and San Onofre have been operational for some time now.
Just clarifying.
The odds are good, but the goods are odd.
Too bad you didn't list the price of the tape drive as well. Otherwise you might have sounded like less of an idiot.
VS80 Tape drive from HP: $1,199
DLT1 web pages tell you to ask for price
DLT7000 has been discontinued
DLT8000 web pages tell you to ask for price
That's a fair number of 80GB hard drives.
...but isn't that redundant? If nothing is running on a particular port, where is the security hole? If Apache isn't running and I try to connect to port 80, what can I do to harm the system?
It's nice that the convenience is there, but if turning on a program pokes a hole in the firewall and turning it off blocks a port that isn't in use, what's the point?
I had thought about that, and the more I thought about it, the more it seemed like a bad idea. Why?
The bad habits people learned on MySQL would perpetuate. After all, why code for database abstraction if the two main OSS databases share the same API?
I'd much rather MySQL tightened things up a bit. Optionally of course as I understand they have a large installed base, but I'd like to see the MySQL version of Perl's "use strict". If MySQL did that, I hereby proclaim to all around me that I will no longer bash MySQL. I won't necessarily prefer it to PostgreSQL, Firebird, or SQLite, but I won't flat out trash talk it for being a loose piece of crap data trashcan that silently ignores obvious errors in the name of efficiency while blaming the programmer even though one of its primary selling points is that it's easy for beginners.
'The fuzzy elephant' is NOT a valid integer nor is it a valid timestamp nor is it appropriate for a varchar field constrained to 10 characters! NOT NULL means "I require a value," not "I'll put the non-specified default in there despite you passing a NULL." It's not like these checks require a great deal of processing power after all. If it made more than a blip on the speed of MySQL, I would be truly astonished.
Once MySQL's "use strict" is in there, I will accept the mantra that it's the programmer's fault for not using it.
What part of "linking" did you not understand in the GPL. Sure, you can do it. What about the PHP guys who made your precious MySQL interface? Oops! Touched GPL. License override! And the PHP Apache module? Well if that PHP code is touched, BINGO! So's Apache.
...and now you see why it exists.
So how do the PHP guys distribute their code without converting (back) to GPL?
Simple. They don't. They transfer all new effort to PostgreSQL. But wait! There's the MySQL FOSS Exception.
Or did you think everyone builds Apache and PHP from source at every installation?
This was fun! It kinda makes me want to write a timeline of when MySQL developers would publicly and loudly assert that certain features were not needed and compare it another timeline that proudly announces the formerly useless feature in their newest revision.
Might be as much fun as reading the MySQL gotchas pages. "Foreign keys only serve to slow database engines down." Wait a couple of years... "MySQL 4: Now with new enterprise features like foreign key support!" Wash. Rinse. Repeat.
Those who forget the past are doomed to extended use of a debugger.
That said, this statement made me chuckle a bit:
Let me get this straight. Because it allows linking with PHP and Apache -- two systems which incidentally are fundamental to MySQL's continued success -- this is proof of their love of free software and freedom? Call me cynical, but it sounds more like proof of their love of avoiding irrelevance.
Can you imagine?
MySQL AB: We are pure GPL!
Developer1: Isn't the GPL incompatible with the Apache/BSD style of license?
Developer2: According to the FSF it is.
Developer 1: Aren't the Apache web server and PHP under Apache/BSD styles of license?
Developer 2: PHP used to be GPL, but yeah, now they're both like that.
Developer 1: So if I sell a complete package with all three, I'm legally in trouble?
Developer 2: Looks like it.
Developer 1: Well, I guess I'll install PostgreSQL then.
MySQL AB: MySQL FOSS exception!
Developers 1 and 2: Wow! What nice guys. They're really sticking their neck out for us on that one. Thanks!
Last I heard, the number of sales of new LCDs beat new CRTs.
Once people hit an equilibrium with needed storage space on a desktop system (which may be happening now with folks not even filling their 80GB drives), speed may trump raw volume of storage. Even if in the near future a terabyte drive is available for $150, if you can get a 100GB solid state for the same $150 price, many will jump on it in order to get a five-fold increase in speed. Why? Because 100GB will likely be more than they need unless they're doing heavy video editing. If they're not using the extra space, why not go for the speed?
Yes but if someone only uses one twentieth of the available space of their multi-terabyte hard drive, the competitor is the same price for one twentieth the space, and the competitor is five times faster, which would you choose?
I'd get the solid state myself and use a cheap hard drive in a portable enclosure for backup.
While many use tape, I'm curious: How much does a 80GB tape drive cost? How much does each tape cost? How many tapes are necessary to start beating the price of the equivalent number of 80GB hard drives?
At the risk of sounding like "640K should be enough for everyone," what exactly does a typical desktop user need with 4GB of RAM? Would realtime video editing (the most stress on memory I can see a typical user wanting to do) require this much?
I can see a badly written piece of software needing this, but a badly written piece of software can exhaust all RAM just by doing the equivalent of ls.
So what if you can't write to the CD-R after. You're mailing something to someone. They just need to read it. If they need to send you something back, they can write another CD-R (for 5-10 cents).
Bonus! They're not subject to magnetic fields and in a slim jewel case (also very cheap) are as safe from breakage in the post as a floppy is.
One would use a floppy drive, but one that was externally connected by USB. That way you can have just one for every computer that may need to read one.
Writing on CD-RW is not as big a deal as you make it out to be assuming you have packet writing software that makes the drive show up with a drive letter (in Windows). On Linux, packet writing hasn't taken off as well unfortunately.
As for USB flash drives, a 32MB model costs less than $20. That's still considerably more capacity than a floppy, can be worn as a necklace, can be used on any computer made in the last five years or so, and is much faster than a floppy.
And those same machines that lack a CD burner can still be booted from a business card CD which can contain just about any utility you'd need to use for system recovery. Personally, if I really need a floppy for these situations, it's probably not going to be a quick fix anyway. So I just pull out an old floppy drive from the junk pile, slap it into the closest system, and do whatever is necessary. Then I pull it out and throw it back into the junk pile.
Got any 5.25" drives as well? There are old PCs that don't have 3.5" drives. How about 8" drives? QIC-80 tapes? A whole lot of backups were made on those that someone might want. I've got some files for a Z-80 on cassette that I might want to check out too. When does it end?
On a desktop system, 1GB of RAM isn't at all uncommon anymore. RAM is so economical, that having a swap isn't really worth it anymore. And quite a few Linux kernel developers agree with me.
/tmp and /var (and /home perhaps) on a hard drive while the other less volatile portions could go on solid state for speed. Then again, for best performance, someone may just put /tmp on solid state and count on replacing every few months.
Case in point, you have X amount of RAM. The usage on your system grows to X + some value so you swap to hard drive, right? But that swap partition is finite. So in actuality, you have X amount of "fast RAM" and Y amount of "slow RAM." There is still a limit, but instead of getting out of memory errors or killed processes, you have a system that slows to an absolute crawl (which may initiate a cascading pattern of sluggishness on your system).
End result? Pay the $50 and get more RAM.
As for writing to the same address with a while(1), just because it looks like the same address to the operating system doesn't mean it's the same address on the underlying device. An abstraction layer is common on the hardware level to maximize media life.
In addition, filesystems such as XFS and Reiser4 delay writes to the drive until the last minute so a while(1) would usually only overwrite RAM buffers rather than the persistent media.
For most desktops, the rewriteability is a non-issue. For servers, power, noise, and vibration are not the most important considerations. Speed and reliability are. So for servers you'd want partitions like
All I'm saying is that if Java didn't have all of the items in java.util or built in threading or a standard database API, no one would've used it.
This doesn't help Common LISP as you correctly point out, but without a standard library, any language or VM is likely to be ignored.
That said, I'm curious about one of your statements. If standard libraries can be implemented on nearly anything, why haven't they been implemented? Do you think this is the result of a single company controlling the initial development of a language, the struggle between academia and tradesmen, or something else?