No, you're completely missing the point. Both statements are technically true -- mine is completely factual, but the way it is phrased is more likely to make the reader think that the government was acting appropriately. Saying that the government killed protesters is also true, but it is more likely to make an uninformed reader side with the protesters than the government. A person who did not think the Chinese government was incorrect in its action would not want to phrase it that way, just as a person (like you) who thought what they did was deplorable would.
Thus, both ways of saying it communicate the POV of the person in question, even though both are technically factual.
Here's another paragraph that is completely factual, regarding an incident you may know less about: "Without the permission of Argentina, Israeli agents kidnapped Ricardo Klement from his home in Buenos Aires and smuggled him to Jerusalem, where he was convicted in a show trial and executed. Argentina filed a formal complaint with the UN security council, claiming violation of sovereignty. This prompted the Israeli representative to lie and claim that the perpetrators of the crime were private individuals and not government agents, and that the incident thus did not merit international attention. Israel was formally rebuked for the action and was asked to pay reparations to Argentina for the offense, reparations which have to date not been paid. Mr. Klement, a professional rabbit farmer and one-time water technician, is survived by his four sons, who describe him as a loving father, a dedicated family man, and deeply mourn his loss."
"The facts" are never unbiased, because things that are controversial are rarely ever simple, and things that are technically true may still twist the perception of the reader one way or another. Saying that protesters were killed in 1989 is true, but it completely omits all the reasons that the decision to kill them was made -- the reader has no way of knowing if the killing was justified, or if it was not. The Israeli execution of the aforementioned individual was most certainly justified, but if all you say is "The Israeli government killed Ricardo Klement in violation of the sovereignty of Argentina, an action for which they were rebuked by the UN" it certainly sounds like they did something questionable.
It just so happens that in this case, my POV and yours are aligned -- we both think what happened in 1989 was wrong -- so to us saying that the government killed some people seems like a simple fact that by itself carries no bias. But by omitting the surrounding circumstance, we demonize one group (the government) and victimize the other.
Besides the fact that pro-democracy student agitators were killed in 1989, how much about the incident do you actually know? For example, did you know that:
The protesters in the square at the time were made up of two groups? Students, who were unhappy with Deng Xiao Ping's reforms, because they saw them as not going far enough, and workers, who had been largely left behind by the reforms, and who felt that a return to the socialism of Mao was preferable? Of the demonstrators, roughly half were not pro-democracy -- quite the opposite, actually! They wanted more "old school" communism!
That these two groups sang the Internationale, the communist anthem, together?
That the protests went on for several days before things got ugly, and that a number of high level party officials spoke at the square, some expressing understanding and even solidarity, and pled for a peaceful resolution to the situation?
That student protesters attacked the police and members of the PLA with molotov cocktails that they had prepared before the order was given to clear the square?
That the guy in the famous picture standing in front of the tank was not arrested, shot, or forcibly removed, and was actually pulled back into the crowd by friends concerned for his safety?
Unlike Osama, who most Americans perceive as foreign and a threat, the people killed in Tiananmen in 1989 were Chinese, and the action was (is) widely reviled in China, even by people who are pro-CCP, and even by some who may believe it was the only thing to do at the time.
Those who wish to give it a friendlier face would not use such an active verb. They would say something along the lines of "Students and workers confused about the economic path being taken after Deng Xiao Ping's market reforms were manipulated by pro-US activists into protesting against the government and thereby threatening the stability of the state. After several days of relatively peaceful protest, in which students and workers showed their solidarity and commitment to Chinese Socialism by joining hands and singing 'The Internationale', the mood turned ugly and the PLA was called in to disperse the crowds. In the ensuing chaos and confusion, a number of protesters were hurt and some were even killed, although these accidents occurred primarily away from the square."
Adding more detail makes it easier to spin, I think. I lived in China for years, believe me, they know how to talk about it in a way that makes it seem like a lamentable, tragic accident that could not have been avoided.
Not to mention that there's a fair amount of evidence that the majority of protesters killed were not killed on the square at all, but rather while fleeing. My ex-girlfriend's dad and his brother was there, and his brother was killed -- but neither were anywhere near the square when it happened.
Luckily, most seasoned Wikipedians understand how statements that otherwise seem NPOV can in fact have a distinct POV, and just seem neutral to the person stating them because of his own internalized biases.
For someone with a relatively low uid, you're missing out on a relatively common meme. Early Intel x86 processors (as well as today's processors when running in "real mode") were capable of addressing only 1 MB of RAM. Of this RAM, only 640 kB were allocated to your programs -- the remaining 384 kB were divided between the BIOS (which booted the computer, provided basic input/output routines, and took up the lower portion of the 1 MB) and the video system (which, along with some random ROMs took up the higher portion of the 1 MB).
Needless to say, 640 kB is not much, and to make matters worse, owing to backwards compatibility, all Intel x86 compatible processors boot into real mode to this day. This 1 MB memory limitation, typically called the "640k barrier" has frustrated programmers for as long as it has existed. Even now, OS programmers designing kernels meant to run on the x86 family of processors must go to great contortions to escape this little prison.
So what's the meme? None other than our friend Bill Gates is often quoted as having said "640k ought to be enough for anybody" back in the day, a phrase so remarkably short-sighted that people looking back often wonder what the hell he was thinking. The answer, of course, is that he never actually said anything of the sort, but why let facts get in the way of a good meme? The phrase has since become a mainstay in hacker circles. It is used ironically when people suggest that some limiting quantity ought to be good enough and that living with the limitation won't present any hardship.
In this particular case, thanatos_x (the great great grandparent) said: "I'm as much for true broadband as the next guy, but what exactly are the economic benefits of having a 45 (or 100) mbps symmetric connection?... give me a good example of something you can't do over a 15 mbps line that you can over a 45 mbps line." His implication, of course, was that "15 Mbps ought to be enough for anybody." I was simply reminding him of another ridiculous statement that someone else (allegedly) made to that effect years ago.
Thanks for the correction. Actually, an earlier poster pointed out to me that these machines are embarrassingly overpowered for what they do, and so my criticism was pretty much moot anyway.
As for type-safety, I actually know what you mean -- I do most of my programming is in Haskell these days, which has a very powerful type system. Runtime errors are relatively infrequent as a result, but when they do occur, it's often because I'm trying to take the head of an empty list, or something similar, a problem which (as you mentioned) cannot be caught easily at compile time. Haskell, unlike OCaml, is not a speed demon (although it's actually quite fast these days, surprisingly -- faster than Perl, Python and Java, at any rate).
Automatic bounds checking on array access doesn't incur much of a speed penalty anyway, unless you're trying to work on very large datasets which require a lot of array accesses. Obviously having the compiler optimize common iterations in a special way can speed this up a lot (I know the Haskell compiler I use, GHC, optimizes certain classes of list operations in a special way -- maps, folds, filters, to name a few) but ultimately if you're doing anything really complicated it's probably been done before by CS researchers who have done a provably safe implementation and who can give you a rigorous complexity analysis on the algorithm, so in those cases you'll probably do fine writing that portion of the code in C. But even on a very large, time-intensive project, it's unlikely you'd need to do that much. In my view, writing a whole program in C these days is, for most platforms and applications, a direct violation of the "optimize last" rule.
Of course, my original post and its parent were both sort of silly in this particular case, because the vulnerability was in a JPEG2000 library, so writing the RFID reader's code in something type-safe would have helped not at all, unless they were prepared to re-implement the JPEG2000 standard in a type-safe language.
No, I don't think Hurd would have ever made it, and I'm not saying that if Linux were gone, Hurd would take its place. Hurd wasn't designed with real world principles in mind -- it was a moving target, an attempt to be "perfect". Everytime the Hurd guys get something working, they decide there's a better way to do what they're trying to do (they're usually right about this) so they rip it up and start all over. While that's great for a CS project, it's shitty for something that's meant to be a real world solution.
It's not like Hurd and Linux are the only examples of OS kernels out there. In the UNIX world, there are all the BSDs -- these are released under a GPL-compatible license, so if Linux were gone, for example, one of the BSD kernels could be retrofitted with drivers from Linux and released under the GPL.
Or, take, for example, ReactOS -- those guys, with nothing like the support that Linux has had, have managed to create a working clone of the NT kernel. And they're not just doing the kernel, either -- their aim is to clone all of Windows NT, so they're also doing the GUI, the shell, etc, you know, the whole thing. There are only a few of them -- if that project had half the mindshare of Linux, you'd have all the bugs ironed out in no time -- as is, you can already install it, boot it, and run programs, and it's probably more stable than Linus' first releases of Linux were.
Someone else mentioned OpenSolaris -- until it gets GPL'd I wouldn't really trust it, but if the kernel guys wanted to start from scratch it could be a good stopgap until a proper, GPL'd system is running.
That's just off the top of my head, but as I said in my previous post, there are lots of free operating system shells out there that boot and are ready for hacking on. As long as Linux exists, they'll always just be some guy's pet project, but if Linux weren't around, there's no reason to believe one of them wouldn't get mind share.
Don't act like Linux and Hurd are the only two examples of a kernel out there -- there are lots of them. And don't make the mistake of thinking that writing a bootable OS is hard -- I (and many others) have written bootable OSs with virtual memory and task switching entirely in x86 assembly, so I don't think the community of people hacking Linux today (which is made up of people far smarter than I am) would be hard-pressed to get something going again if Linux died.
To be fair to GNU, the reason they couldn't get Hurd off the ground had next to nothing to do with producing a kernel being a hard problem -- it had to do with engineering ideals, and wanting to write a kernel that did everything the "right" way, instead of the fast way. Unfortunately, the "right" way changed with each generation of academics. If you look around, there are literally thousands of multitasking kernels written by hackers in their spare time. They lack features, they don't run on much hardware, sure -- but don't compare Linux today to those projects. Compare the first kernel released to the public. What makes Linux special is not Linus, smart as he is -- what makes it special is mindshare. His kernel filled a void and he was in the right place at the right time.
If Linux were destroyed, another kernel would rise in its place, probably overnight. You can count on it.
But in business, rapid development is important. Higher level languages, in general, make for more rapid time-to-market than low level languages, precisely because there's less bug-chasing.
Right, I don't think anyone here really disagrees with you. However, the fact is, many programmers are not as careful as they think they are, nor are they as leet as they consider themselves to be -- even well-written software like the Linux kernel, Samba, and OpenBSD, whose hackers are a million times more competent than you, I, or indeed, 99.9% of programmers out there, have had bugs resulting from simple buffer overruns, sign overflow errors, and memory leaks.
It most certainly is not the fault of C that these bugs exist -- but once a program becomes large enough, well, its complexity makes catching some subtle errors difficult. With safer languages, the programmer is freed from having to concern himself overly much with questions like "when must I check the bounds on an array" (the safe language automatically checks all writes, even ones that strictly speaking don't require it), "when must I free memory" (the safer language implements automatic memory management and frees memory when it knows it can), etc.
Of course this convenience is not without price; safe languages are slower than languages nearer to the machine level. In the past, that slow-down was too high a cost, but this is less the case with today's processors -- real bottleneck usually comes from choosing an O(n^2) algorithm when an O(n log n) algorithm exists, for example. No language is sufficiently smart to compensate for a stupid programmer.
But with today's processors being what they are, there's really no reason to take the risk. Type-safety comes with a minuscule slowdown, one which, on today's processors, is negligible to the point of being irrelevant. Why shoot yourself in the foot by insisting on a language like C for a complex project, especially one where security is paramount? Write it in something safer, profile it, and replace key, individual routines with ones written in C as required. Sure, you could still mess those up, but by minimizing the unsafe portions of your project, you help minimize the chances of serious bugs occurring, and decrease the amount of code that must be audited when memory leaks or buffer overflows occur.
I am indeed aware that most cell phones run a JVM, but I guess I don't think of cell phones as being "embedded" (not saying they aren't, just that I feel like they've long since ceased to be appliances and have started becoming small, hand-held computers in both capability and application).
I will admit that I assumed that an RFID reader would not be as powerful as they appear to be. I guess we have hardware bloat these days, huh? Well, in light of the evidence, I withdraw my critique. I don't see why we're running so much shit on something that ought to be so simple, and I certainly don't think it's necessary, but as long as we are, I too am left to wonder why we're not doing the development in a saner language. I don't think I'd go so far as to write it in a language that needs a virtual machine, but there are many languages that compile to machine code that do bounds checking and automatic memory management. (Like Haskell! Whee!)
Of course, even if we were to do that, we're left with the library problem -- the JPEG2000 library was presumably written in an unsafe language and bugs were the result. So even if the people developing the RFID software had written their system in Common Lisp, you couldn't reasonably expect them to re-implement the JPEG2000 standard, could you?
Don't do much embedded programming, do you? Garbage collection, automatic bounds checking, and the vast majority of features that you think of as "modern" were available in quite a number of programming languages from the 1960s -- lisp, for example. While they were extremely popular in academic circles, and were without a doubt extremely powerful and capable, most development continued to be done in assembly, and then later C. Why was this, do you think? Because in those days, computer resources were so expensive that it was foolish to waste them. Here's a hint: garbage collection is a bad idea if you have so little memory that you're actually likely to run out of it. Automatic bounds checking on arrays is expensive if your processor is slow enough.
Now if you're saying that there's no need to develop the vast majority of today's computer software in assembly, C, or C++, then I agree with you wholeheartedly -- but we're not talking about a computer, we're talking about an RFID reader. You know, a small device that doesn't have the latest gaming processor from AMD and Intel and 2 gigs of RAM. It has enough memory for what it needs to do and that's it; and, to be low power, it has a small, simple embedded processor.
You can't run a JVM on this thing, and even if you wanted to, it would be a bad idea.
That's purely hypothetical. In this specific case there was no chance of that happening. The code was specific to a driver (non functioning at that). Who the hell is going to incorporate bits of that into their own project?
This is kind of like fucking a girl who talks like a virgin without wearing a condom and saying there's no chance you'll get an STD from her. Sure, she looks clean, but how can you really know? You're taking a risk. It may be a calculated risk, but it is a risk nonetheless.
The original developer may or may not have acted like a total asshole -- everyone in the BSD camp says he was, and everyone in the GNU camp says Theo was being a dick. Listen, I don't care either way. Among hackers, delivery isn't what's important, what's important is being right. This is why Theo and Linus both routinely flame the shit out of people who don't know what's up and are still respected.
Here's the deal: if MB had quietly contacted Theo and co as the latter group would have liked, instead of making a big deal about it on a public mailing list, no one not part of the inner circle would have known about it. This is all well and good if what you care about is saving face, but it sucks dick if you're a BSD developer who took some of that code and now has no idea he's infringing. By putting GPL licensed code on an open server, they made this possible. Because a big deal was made about it, anyone likely to have downloaded code from there now knows that the code he took was GPLd and not BSDd as was implied.
I know, I know, you're saying that odds are, no one took any code and incorporated it into projects, that all the CVS check outs of the code were made by people who were interested in the driver and nothing else. But here's the deal: all of those people checking out that code were barebacking a girl with an STD, to use my colorful analogy. The STD was the GPL. Maybe they caught it, maybe they didn't -- but they had a right to know. Wanting to cover it up is like being too embarrassed to tell your boyfriend that you got the clap that night you went out to the bar without him. Who wouldn't be? But what's the right thing to do in this situation? Tell him to get himself checked, or risk his health by pretending you're still a daisy-fresh girl?
Unfortunately, democracy (especially in this case) is not necessarily a silver bullet. It doesn't take much to convince a terrified electorate that censorship or repression of "dangerous ideas" is good for society. It's not just porn, either: think anti-communism during the McCarthy era in the US. Now, terrorists are the new communists.
The thing about censored content is, by definition you don't know what it is unless you find some way to (illegally) circumvent the censors, so it's difficult to criticize the policy without leaving yourself open to a smear campaign. You're not tough on terrorism, you support the rights of pedophiles, etc. The ACLU and its unpopularity with a large segment of the US demonstrates that standing up for civil rights will not get you the respect of the people if it means you have to defend the rights of people they consider assholes. The whole "I do not agree with what you say but will defend to the death your right to say it" thing is not widely seen as wise by people.
Being democratic may prevent Australia from creating their own "Great Firewall", but only if the voters care. Slashdotters are sensitive about these things, but experience has shown that others are not necessarily so. Especially if they are being told that the introduction of "measured censorship" is the only way to protect their children, their way of life, etc. The terrorists are everywhere!
I agree that it wasn't stealing -- but it was indeed a copyright violation. Ignoring all the hoopla that followed for a moment, we have a situation where a developer uploaded a bunch of GPLd source, did not indicate that it was GPLd source, and, here's the important part, made it publicly available via CVS.
There are two things to consider here, both of which are important. First, from the perspective of a BSD developer: with no indication that the code was GPLd code, and given that it was on a public OpenBSD CVS server, it would be reasonable to assume that it was available under the BSD license. Of course, in reality, it wasn't, it was available only under the terms of the GPL, which as you know, applies equally to derivative works. So said BSD developer, unaware of the situation, might have taken GPLd code and incorporated it innocently into his own, BSD-licensed code, believing that he was using BSD code.
Think about this for a second: you're writing some code for a small project without source control. You find some useful BSD-licensed code on the internet and gleefully incorporate some of the routines into your program. Development continues. Then, later, it comes out that the code you incorporated was not BSD-licensed, it was GPL. Oops -- now you're fucked, because unless you can remember exactly what you added, you may be forced by the GPL to distribute the whole package under the terms of the GPL. In this way, Theo and co may very well have fucked quite a number of BSD developers. There's no way of knowing -- it was an open CVS server, after all, who knows how many people took code and what they did with it? Given that it was a driver, perhaps there weren't that many, but the point is, we'll never know. This, by itself, should demonstrate to you how ill-advised the whole thing was.
But wait, there's more. Theo indicated in the thread that there was no intention to distribute any of that code, and that it would all be replaced. All well and good -- until you consider that piece-wise replacement of GPLd code probably constitutes a derivative work -- to be safe, the general legal consensus is that a clean-room reimplementation is the only way to ensure that you aren't just creating a derivative. Remember, the GPL is a "viral" license. The only way you're allowed to use it is if you agree to provide all derivative works under the GPL as well. That would mean that by using GPLd code, even if they replaced every line in every file, they would still be forced to release their code under the GPL.
Listen, I've been using OpenBSD since the 2.x days, and I really like the product (I always buy the CDs, I have the stickers plastered all over my firewall, etc). I know that Theo's abrasive personality often has people saying that he's wrong when he's not, just because they don't like his delivery. And normally, I'm one of the first to defend him. But in this particular instance, what they were doing wasn't right, it could have harmed BSD developers, and creating a driver using a GPLd skeleton, whether it was ever functional or not, would have resulted in a work that by law would have been GPLd -- releasing it under the BSD would have been a copyright violation.
In that case, you won't get much apologizing, as I'm not much of an MS-basher. IE is made by MS, but that's where the association with MS ends. Criticizing IE is not the same as bashing MS, you know. Ignoring for a moment who makes IE, anyone who has done web development has been bitten badly by that browser's inability to deal with 10 year old standards that every other browser in the world has long since implemented in a standards compliant way. IE 6, which up until very recently was the newest version of IE, went for nearly a decade without an update. It remains in wide circulation. IE 7, apparently the answer to IE 6's limitations, still fails to properly implement decades old standards, introduces new bugs which have not been fixed, and mainly seems to be about adding tabbed browsing and popup-blocking to IE 6.
I know your wager was meant in jest, but consider that if you win, I won't have much to apologize for, but if I were to win, you'd waste six months of your life being an idiot like most of Slashdot. Not much of a bargain.
Of course you mean that IE will not implement these new tags. If they're a W3C standard, Gecko, Konqueror, Safari, Opera and friends will all implement them ASAP.
Except, of course, that in our braindead system, they're the ones that are expected to cover your insurance expenses, which means that they're a part of the mess. Since they pay a ton of money to cover you and all your other employees, by policing your health they may be able to negotiate a better rate with the insurance companies that cover them.
Age has a lot to do with it, probably. If he's your dad, it's a fair bet that you're going to have his problems 20 years down the road, so for your own sake you should probably try to eat better -- if your wife has a good diet, maybe eat what she eats? She'll feel like you're supporting her and you won't be dieting alone -- anyone who has ever dieted knows how hard that can be.
Do make sure that she's not doing one of those fad diets though -- they can cause more trouble than they're worth. Just eat well and exercise for twenty minutes three times a week, take the stairs instead of the escalator, and always park two blocks from your destination. You'd be surprised what a huge difference this can make.
As you and I both know, most overweight people are completely in denial about how overweight they are. And speaking generally, computer geeks come in two basic body types: rail thin and obese. The latter group always complain loudly about how unfair the BMI system is, right before suggesting that the whole office take a break and hit Denny's for the eighth time this week. As they scarf down their second burger (dipped in ketchup, no less) and stuff mozzarella sticks into their mouths, they'll tell you earnestly that they have a thyroid problem and that it runs in their family, and has nothing whatsoever to do with their eating or exercise habits.
I've only met a few that weren't nice people, and otherwise a pleasure to work with, but jesus, they will give you every excuse in the book about their weight, and when you tell them you're not eating because you try not to eat more than you burn, they'll give you a look like you're the most insensitive asshole in the entire world for suggesting that what you eat could possibly have some relation to your weight and health.
No, you're completely missing the point. Both statements are technically true -- mine is completely factual, but the way it is phrased is more likely to make the reader think that the government was acting appropriately. Saying that the government killed protesters is also true, but it is more likely to make an uninformed reader side with the protesters than the government. A person who did not think the Chinese government was incorrect in its action would not want to phrase it that way, just as a person (like you) who thought what they did was deplorable would.
Thus, both ways of saying it communicate the POV of the person in question, even though both are technically factual.
Here's another paragraph that is completely factual, regarding an incident you may know less about: "Without the permission of Argentina, Israeli agents kidnapped Ricardo Klement from his home in Buenos Aires and smuggled him to Jerusalem, where he was convicted in a show trial and executed. Argentina filed a formal complaint with the UN security council, claiming violation of sovereignty. This prompted the Israeli representative to lie and claim that the perpetrators of the crime were private individuals and not government agents, and that the incident thus did not merit international attention. Israel was formally rebuked for the action and was asked to pay reparations to Argentina for the offense, reparations which have to date not been paid. Mr. Klement, a professional rabbit farmer and one-time water technician, is survived by his four sons, who describe him as a loving father, a dedicated family man, and deeply mourn his loss."
"The facts" are never unbiased, because things that are controversial are rarely ever simple, and things that are technically true may still twist the perception of the reader one way or another. Saying that protesters were killed in 1989 is true, but it completely omits all the reasons that the decision to kill them was made -- the reader has no way of knowing if the killing was justified, or if it was not. The Israeli execution of the aforementioned individual was most certainly justified, but if all you say is "The Israeli government killed Ricardo Klement in violation of the sovereignty of Argentina, an action for which they were rebuked by the UN" it certainly sounds like they did something questionable.
It just so happens that in this case, my POV and yours are aligned -- we both think what happened in 1989 was wrong -- so to us saying that the government killed some people seems like a simple fact that by itself carries no bias. But by omitting the surrounding circumstance, we demonize one group (the government) and victimize the other.
Besides the fact that pro-democracy student agitators were killed in 1989, how much about the incident do you actually know? For example, did you know that:
Unlike Osama, who most Americans perceive as foreign and a threat, the people killed in Tiananmen in 1989 were Chinese, and the action was (is) widely reviled in China, even by people who are pro-CCP, and even by some who may believe it was the only thing to do at the time.
Those who wish to give it a friendlier face would not use such an active verb. They would say something along the lines of "Students and workers confused about the economic path being taken after Deng Xiao Ping's market reforms were manipulated by pro-US activists into protesting against the government and thereby threatening the stability of the state. After several days of relatively peaceful protest, in which students and workers showed their solidarity and commitment to Chinese Socialism by joining hands and singing 'The Internationale', the mood turned ugly and the PLA was called in to disperse the crowds. In the ensuing chaos and confusion, a number of protesters were hurt and some were even killed, although these accidents occurred primarily away from the square."
Adding more detail makes it easier to spin, I think. I lived in China for years, believe me, they know how to talk about it in a way that makes it seem like a lamentable, tragic accident that could not have been avoided.
The word "killed" carries an unfriendly and negative connotation, even in China.
Not to mention that there's a fair amount of evidence that the majority of protesters killed were not killed on the square at all, but rather while fleeing. My ex-girlfriend's dad and his brother was there, and his brother was killed -- but neither were anywhere near the square when it happened.
Luckily, most seasoned Wikipedians understand how statements that otherwise seem NPOV can in fact have a distinct POV, and just seem neutral to the person stating them because of his own internalized biases.
For someone with a relatively low uid, you're missing out on a relatively common meme. Early Intel x86 processors (as well as today's processors when running in "real mode") were capable of addressing only 1 MB of RAM. Of this RAM, only 640 kB were allocated to your programs -- the remaining 384 kB were divided between the BIOS (which booted the computer, provided basic input/output routines, and took up the lower portion of the 1 MB) and the video system (which, along with some random ROMs took up the higher portion of the 1 MB).
... give me a good example of something you can't do over a 15 mbps line that you can over a 45 mbps line." His implication, of course, was that "15 Mbps ought to be enough for anybody." I was simply reminding him of another ridiculous statement that someone else (allegedly) made to that effect years ago.
Needless to say, 640 kB is not much, and to make matters worse, owing to backwards compatibility, all Intel x86 compatible processors boot into real mode to this day. This 1 MB memory limitation, typically called the "640k barrier" has frustrated programmers for as long as it has existed. Even now, OS programmers designing kernels meant to run on the x86 family of processors must go to great contortions to escape this little prison.
So what's the meme? None other than our friend Bill Gates is often quoted as having said "640k ought to be enough for anybody" back in the day, a phrase so remarkably short-sighted that people looking back often wonder what the hell he was thinking. The answer, of course, is that he never actually said anything of the sort, but why let facts get in the way of a good meme? The phrase has since become a mainstay in hacker circles. It is used ironically when people suggest that some limiting quantity ought to be good enough and that living with the limitation won't present any hardship.
In this particular case, thanatos_x (the great great grandparent) said: "I'm as much for true broadband as the next guy, but what exactly are the economic benefits of having a 45 (or 100) mbps symmetric connection?
I agree. 640k ought to be enough for anybody.
Thanks for the correction. Actually, an earlier poster pointed out to me that these machines are embarrassingly overpowered for what they do, and so my criticism was pretty much moot anyway.
As for type-safety, I actually know what you mean -- I do most of my programming is in Haskell these days, which has a very powerful type system. Runtime errors are relatively infrequent as a result, but when they do occur, it's often because I'm trying to take the head of an empty list, or something similar, a problem which (as you mentioned) cannot be caught easily at compile time. Haskell, unlike OCaml, is not a speed demon (although it's actually quite fast these days, surprisingly -- faster than Perl, Python and Java, at any rate).
Automatic bounds checking on array access doesn't incur much of a speed penalty anyway, unless you're trying to work on very large datasets which require a lot of array accesses. Obviously having the compiler optimize common iterations in a special way can speed this up a lot (I know the Haskell compiler I use, GHC, optimizes certain classes of list operations in a special way -- maps, folds, filters, to name a few) but ultimately if you're doing anything really complicated it's probably been done before by CS researchers who have done a provably safe implementation and who can give you a rigorous complexity analysis on the algorithm, so in those cases you'll probably do fine writing that portion of the code in C. But even on a very large, time-intensive project, it's unlikely you'd need to do that much. In my view, writing a whole program in C these days is, for most platforms and applications, a direct violation of the "optimize last" rule.
Of course, my original post and its parent were both sort of silly in this particular case, because the vulnerability was in a JPEG2000 library, so writing the RFID reader's code in something type-safe would have helped not at all, unless they were prepared to re-implement the JPEG2000 standard in a type-safe language.
No, I don't think Hurd would have ever made it, and I'm not saying that if Linux were gone, Hurd would take its place. Hurd wasn't designed with real world principles in mind -- it was a moving target, an attempt to be "perfect". Everytime the Hurd guys get something working, they decide there's a better way to do what they're trying to do (they're usually right about this) so they rip it up and start all over. While that's great for a CS project, it's shitty for something that's meant to be a real world solution.
It's not like Hurd and Linux are the only examples of OS kernels out there. In the UNIX world, there are all the BSDs -- these are released under a GPL-compatible license, so if Linux were gone, for example, one of the BSD kernels could be retrofitted with drivers from Linux and released under the GPL.
Or, take, for example, ReactOS -- those guys, with nothing like the support that Linux has had, have managed to create a working clone of the NT kernel. And they're not just doing the kernel, either -- their aim is to clone all of Windows NT, so they're also doing the GUI, the shell, etc, you know, the whole thing. There are only a few of them -- if that project had half the mindshare of Linux, you'd have all the bugs ironed out in no time -- as is, you can already install it, boot it, and run programs, and it's probably more stable than Linus' first releases of Linux were.
Someone else mentioned OpenSolaris -- until it gets GPL'd I wouldn't really trust it, but if the kernel guys wanted to start from scratch it could be a good stopgap until a proper, GPL'd system is running.
That's just off the top of my head, but as I said in my previous post, there are lots of free operating system shells out there that boot and are ready for hacking on. As long as Linux exists, they'll always just be some guy's pet project, but if Linux weren't around, there's no reason to believe one of them wouldn't get mind share.
Don't act like Linux and Hurd are the only two examples of a kernel out there -- there are lots of them. And don't make the mistake of thinking that writing a bootable OS is hard -- I (and many others) have written bootable OSs with virtual memory and task switching entirely in x86 assembly, so I don't think the community of people hacking Linux today (which is made up of people far smarter than I am) would be hard-pressed to get something going again if Linux died.
To be fair to GNU, the reason they couldn't get Hurd off the ground had next to nothing to do with producing a kernel being a hard problem -- it had to do with engineering ideals, and wanting to write a kernel that did everything the "right" way, instead of the fast way. Unfortunately, the "right" way changed with each generation of academics. If you look around, there are literally thousands of multitasking kernels written by hackers in their spare time. They lack features, they don't run on much hardware, sure -- but don't compare Linux today to those projects. Compare the first kernel released to the public. What makes Linux special is not Linus, smart as he is -- what makes it special is mindshare. His kernel filled a void and he was in the right place at the right time.
If Linux were destroyed, another kernel would rise in its place, probably overnight. You can count on it.
Why was this moderated troll? Just because of the juvenile ad homniem in the last sentence?
But in business, rapid development is important. Higher level languages, in general, make for more rapid time-to-market than low level languages, precisely because there's less bug-chasing.
Right, I don't think anyone here really disagrees with you. However, the fact is, many programmers are not as careful as they think they are, nor are they as leet as they consider themselves to be -- even well-written software like the Linux kernel, Samba, and OpenBSD, whose hackers are a million times more competent than you, I, or indeed, 99.9% of programmers out there, have had bugs resulting from simple buffer overruns, sign overflow errors, and memory leaks.
It most certainly is not the fault of C that these bugs exist -- but once a program becomes large enough, well, its complexity makes catching some subtle errors difficult. With safer languages, the programmer is freed from having to concern himself overly much with questions like "when must I check the bounds on an array" (the safe language automatically checks all writes, even ones that strictly speaking don't require it), "when must I free memory" (the safer language implements automatic memory management and frees memory when it knows it can), etc.
Of course this convenience is not without price; safe languages are slower than languages nearer to the machine level. In the past, that slow-down was too high a cost, but this is less the case with today's processors -- real bottleneck usually comes from choosing an O(n^2) algorithm when an O(n log n) algorithm exists, for example. No language is sufficiently smart to compensate for a stupid programmer.
But with today's processors being what they are, there's really no reason to take the risk. Type-safety comes with a minuscule slowdown, one which, on today's processors, is negligible to the point of being irrelevant. Why shoot yourself in the foot by insisting on a language like C for a complex project, especially one where security is paramount? Write it in something safer, profile it, and replace key, individual routines with ones written in C as required. Sure, you could still mess those up, but by minimizing the unsafe portions of your project, you help minimize the chances of serious bugs occurring, and decrease the amount of code that must be audited when memory leaks or buffer overflows occur.
It's win-win, really.
I am indeed aware that most cell phones run a JVM, but I guess I don't think of cell phones as being "embedded" (not saying they aren't, just that I feel like they've long since ceased to be appliances and have started becoming small, hand-held computers in both capability and application).
I will admit that I assumed that an RFID reader would not be as powerful as they appear to be. I guess we have hardware bloat these days, huh? Well, in light of the evidence, I withdraw my critique. I don't see why we're running so much shit on something that ought to be so simple, and I certainly don't think it's necessary, but as long as we are, I too am left to wonder why we're not doing the development in a saner language. I don't think I'd go so far as to write it in a language that needs a virtual machine, but there are many languages that compile to machine code that do bounds checking and automatic memory management. (Like Haskell! Whee!)
Of course, even if we were to do that, we're left with the library problem -- the JPEG2000 library was presumably written in an unsafe language and bugs were the result. So even if the people developing the RFID software had written their system in Common Lisp, you couldn't reasonably expect them to re-implement the JPEG2000 standard, could you?
Don't do much embedded programming, do you? Garbage collection, automatic bounds checking, and the vast majority of features that you think of as "modern" were available in quite a number of programming languages from the 1960s -- lisp, for example. While they were extremely popular in academic circles, and were without a doubt extremely powerful and capable, most development continued to be done in assembly, and then later C. Why was this, do you think? Because in those days, computer resources were so expensive that it was foolish to waste them. Here's a hint: garbage collection is a bad idea if you have so little memory that you're actually likely to run out of it. Automatic bounds checking on arrays is expensive if your processor is slow enough.
Now if you're saying that there's no need to develop the vast majority of today's computer software in assembly, C, or C++, then I agree with you wholeheartedly -- but we're not talking about a computer, we're talking about an RFID reader. You know, a small device that doesn't have the latest gaming processor from AMD and Intel and 2 gigs of RAM. It has enough memory for what it needs to do and that's it; and, to be low power, it has a small, simple embedded processor.
You can't run a JVM on this thing, and even if you wanted to, it would be a bad idea.
This is kind of like fucking a girl who talks like a virgin without wearing a condom and saying there's no chance you'll get an STD from her. Sure, she looks clean, but how can you really know? You're taking a risk. It may be a calculated risk, but it is a risk nonetheless.
The original developer may or may not have acted like a total asshole -- everyone in the BSD camp says he was, and everyone in the GNU camp says Theo was being a dick. Listen, I don't care either way. Among hackers, delivery isn't what's important, what's important is being right. This is why Theo and Linus both routinely flame the shit out of people who don't know what's up and are still respected.
Here's the deal: if MB had quietly contacted Theo and co as the latter group would have liked, instead of making a big deal about it on a public mailing list, no one not part of the inner circle would have known about it. This is all well and good if what you care about is saving face, but it sucks dick if you're a BSD developer who took some of that code and now has no idea he's infringing. By putting GPL licensed code on an open server, they made this possible. Because a big deal was made about it, anyone likely to have downloaded code from there now knows that the code he took was GPLd and not BSDd as was implied.
I know, I know, you're saying that odds are, no one took any code and incorporated it into projects, that all the CVS check outs of the code were made by people who were interested in the driver and nothing else. But here's the deal: all of those people checking out that code were barebacking a girl with an STD, to use my colorful analogy. The STD was the GPL. Maybe they caught it, maybe they didn't -- but they had a right to know. Wanting to cover it up is like being too embarrassed to tell your boyfriend that you got the clap that night you went out to the bar without him. Who wouldn't be? But what's the right thing to do in this situation? Tell him to get himself checked, or risk his health by pretending you're still a daisy-fresh girl?
Unfortunately, democracy (especially in this case) is not necessarily a silver bullet. It doesn't take much to convince a terrified electorate that censorship or repression of "dangerous ideas" is good for society. It's not just porn, either: think anti-communism during the McCarthy era in the US. Now, terrorists are the new communists.
The thing about censored content is, by definition you don't know what it is unless you find some way to (illegally) circumvent the censors, so it's difficult to criticize the policy without leaving yourself open to a smear campaign. You're not tough on terrorism, you support the rights of pedophiles, etc. The ACLU and its unpopularity with a large segment of the US demonstrates that standing up for civil rights will not get you the respect of the people if it means you have to defend the rights of people they consider assholes. The whole "I do not agree with what you say but will defend to the death your right to say it" thing is not widely seen as wise by people.
Being democratic may prevent Australia from creating their own "Great Firewall", but only if the voters care. Slashdotters are sensitive about these things, but experience has shown that others are not necessarily so. Especially if they are being told that the introduction of "measured censorship" is the only way to protect their children, their way of life, etc. The terrorists are everywhere!
I agree that it wasn't stealing -- but it was indeed a copyright violation. Ignoring all the hoopla that followed for a moment, we have a situation where a developer uploaded a bunch of GPLd source, did not indicate that it was GPLd source, and, here's the important part, made it publicly available via CVS.
There are two things to consider here, both of which are important. First, from the perspective of a BSD developer: with no indication that the code was GPLd code, and given that it was on a public OpenBSD CVS server, it would be reasonable to assume that it was available under the BSD license. Of course, in reality, it wasn't, it was available only under the terms of the GPL, which as you know, applies equally to derivative works. So said BSD developer, unaware of the situation, might have taken GPLd code and incorporated it innocently into his own, BSD-licensed code, believing that he was using BSD code.
Think about this for a second: you're writing some code for a small project without source control. You find some useful BSD-licensed code on the internet and gleefully incorporate some of the routines into your program. Development continues. Then, later, it comes out that the code you incorporated was not BSD-licensed, it was GPL. Oops -- now you're fucked, because unless you can remember exactly what you added, you may be forced by the GPL to distribute the whole package under the terms of the GPL. In this way, Theo and co may very well have fucked quite a number of BSD developers. There's no way of knowing -- it was an open CVS server, after all, who knows how many people took code and what they did with it? Given that it was a driver, perhaps there weren't that many, but the point is, we'll never know. This, by itself, should demonstrate to you how ill-advised the whole thing was.
But wait, there's more. Theo indicated in the thread that there was no intention to distribute any of that code, and that it would all be replaced. All well and good -- until you consider that piece-wise replacement of GPLd code probably constitutes a derivative work -- to be safe, the general legal consensus is that a clean-room reimplementation is the only way to ensure that you aren't just creating a derivative. Remember, the GPL is a "viral" license. The only way you're allowed to use it is if you agree to provide all derivative works under the GPL as well. That would mean that by using GPLd code, even if they replaced every line in every file, they would still be forced to release their code under the GPL.
Listen, I've been using OpenBSD since the 2.x days, and I really like the product (I always buy the CDs, I have the stickers plastered all over my firewall, etc). I know that Theo's abrasive personality often has people saying that he's wrong when he's not, just because they don't like his delivery. And normally, I'm one of the first to defend him. But in this particular instance, what they were doing wasn't right, it could have harmed BSD developers, and creating a driver using a GPLd skeleton, whether it was ever functional or not, would have resulted in a work that by law would have been GPLd -- releasing it under the BSD would have been a copyright violation.
Those are the facts. Unfortunately.
Jesus Christ, read the summary... he said the number of photons, not the time.
Thanks for the correction.
Unlikely, and not just because of the technology required. A Dyson sphere is unstable, and would eventually collide with the star it surrounded.
In that case, you won't get much apologizing, as I'm not much of an MS-basher. IE is made by MS, but that's where the association with MS ends. Criticizing IE is not the same as bashing MS, you know. Ignoring for a moment who makes IE, anyone who has done web development has been bitten badly by that browser's inability to deal with 10 year old standards that every other browser in the world has long since implemented in a standards compliant way. IE 6, which up until very recently was the newest version of IE, went for nearly a decade without an update. It remains in wide circulation. IE 7, apparently the answer to IE 6's limitations, still fails to properly implement decades old standards, introduces new bugs which have not been fixed, and mainly seems to be about adding tabbed browsing and popup-blocking to IE 6.
I know your wager was meant in jest, but consider that if you win, I won't have much to apologize for, but if I were to win, you'd waste six months of your life being an idiot like most of Slashdot. Not much of a bargain.
Of course you mean that IE will not implement these new tags. If they're a W3C standard, Gecko, Konqueror, Safari, Opera and friends will all implement them ASAP.
Except, of course, that in our braindead system, they're the ones that are expected to cover your insurance expenses, which means that they're a part of the mess. Since they pay a ton of money to cover you and all your other employees, by policing your health they may be able to negotiate a better rate with the insurance companies that cover them.
Age has a lot to do with it, probably. If he's your dad, it's a fair bet that you're going to have his problems 20 years down the road, so for your own sake you should probably try to eat better -- if your wife has a good diet, maybe eat what she eats? She'll feel like you're supporting her and you won't be dieting alone -- anyone who has ever dieted knows how hard that can be.
Do make sure that she's not doing one of those fad diets though -- they can cause more trouble than they're worth. Just eat well and exercise for twenty minutes three times a week, take the stairs instead of the escalator, and always park two blocks from your destination. You'd be surprised what a huge difference this can make.
As you and I both know, most overweight people are completely in denial about how overweight they are. And speaking generally, computer geeks come in two basic body types: rail thin and obese. The latter group always complain loudly about how unfair the BMI system is, right before suggesting that the whole office take a break and hit Denny's for the eighth time this week. As they scarf down their second burger (dipped in ketchup, no less) and stuff mozzarella sticks into their mouths, they'll tell you earnestly that they have a thyroid problem and that it runs in their family, and has nothing whatsoever to do with their eating or exercise habits.
I've only met a few that weren't nice people, and otherwise a pleasure to work with, but jesus, they will give you every excuse in the book about their weight, and when you tell them you're not eating because you try not to eat more than you burn, they'll give you a look like you're the most insensitive asshole in the entire world for suggesting that what you eat could possibly have some relation to your weight and health.