...And my computer won't ever get searched. My email disappears once a week and all free space is rewritten over...
Do you actually think that annihilating the e-mail off your computer does any good? You can chop up your hard drive into a jillion pieces, degauss each one individually, burn them, and then mail them in plastic baggies a hundred different countries without extradition treaties, and it wouldn't do you any good.
There's also a copy of the email on the server. Probably one on the source mail server and one on the destination mail server. In addition to the sender's computer, possibly.
If you're that scared of big brother, don't send email. You can't ever be sure. For that matter, don't ever use a computer. Whenever you want to send a message, do a public/private key encrypt in your head and send the cyphertext via smoke signals. Then bash your head with a mallet so that you'll forget the message and they won't be able to force it out of you, now the weak link in the chain. And once you've done that, kill whoever it was you sent the message to, because now they're the weak link.
Seriously, if you're going to insult somebody for being a twit, it's generally a good idea not, in the same message, to let on that you're grossly ignorant of how actual computer espionage works. FYI: the guys who dig up your secret e-mails for a living first check your computer, and if that doesn't work, they go straight to your mail server. It's basically impossible to be sure that a particular e-mail is unrecoverable.
I should've been more clear- when I talk about the programming-time advantage of higher-level languages vs. lower-level languages, I'm not thinking of Java, I'm thinking of Scheme. Java is syntactically enough like C++ that it seems to me the only thing you're saving yourself from having to do is explicitly deallocate memory (and dealing with C++'s brain-dead unit system- making programmers do the things they have to do with #includes and.h/.cc files ought to be against the law), so it doesn't surprise me that in real-life situations the benefits of Java would be outweighed by the speed of C++. There are other high-level programming languages, though, like Scheme, that have saved me tremendous amounts of time over C++ or especially C in the average case.
Re:Garbage Collection is for Incompetent Programme
on
The New Garbage Man
·
· Score: 2
Guilty as charged- I am "in academic circles," and I haven't ever had to work in an industry setting on really big projects where speed was very important. But I maintain that what I said was still accurate, while conceding your point: it may be true that with current tools, programmers do sometimes need to think about machine-level details (like whether their code is likely to cause page faults) in their high level designs, but it's also still true that they shouldn't have to. I have mentioned elsewhere in this thread the idea (popular among the faculty here at Rice) that you ought to first write your program in a very high-level language (at Rice, it's MzScheme), figure out where it's important for your code to go fast, and then rewrite those pieces in a low-level language where you can control machine-level details. The claim is that you get a speedy enough program, because you've optimized the hell out of the critical sections, and the stuff that it doesn't matter whether you optimize or not, which is most of your code, was written much more rapidly than would be possible with a lower-level language.
I claim that there is no need for a garbage collector. Finding memory leaks quickly is not a problem _if_ you have the right tools. Purify is good but it is too slow. There are tools I have developped which can show with pinpoint accuracy where the leaks are and have no performance penalty.
It's a misperception that garbage collection is about debugging, though- the point is that you can write programs that aren't convoluted through the need to allocate and deallocate memory cells for remembering new things. The C/C++ idiom of things like void get_string(char * dummy_string) { /* initialize buffer */ } makes sense only because you've seen it a million times, and because you're thinking about the way that memory works. The much more intuitive Java style- that is, String getString() { return new String(... ); } reflects your intent much more naturally, but is only really possible because of garbage collection. (I know you can allocate and then return in C/C++, but I also know that it can turn out to be a huge mess to figure out exactly when to deallocate, and I no of nobody who writes anything that isn't trivial by returning a newly-allocated pointer).
The point is simply that if you want to be able to design and implement programs correctly and rapidly, a facility that lets you specify only "what my program does" without bothering you with details. One aspect of speed is how fast your program will run, and that's certainly important. Another aspect of speed is how quickly you can write a correct program, and high-level abstractions make application development far quicker. And for most of your code, how rapidly it executes isn't really a big deal- the idea around Rice University, where I go to school, is that you should write your programs in as high-level a language as possible, figure out where it's necessary to make the code faster, and then rewrite those pieces in C or assembly or whatever (that idea is based on the premise that in typical programs, a very small subset of the code takes up the vast majority of the execution time). You get speed where you need it and flexibility (ease of maintenance, reusability, etc) everywhere else- the best of both worlds, and also you wrote your program in half the time it took the other guy to write the C++ version.
Maybe I gave the wrong impresion. I didn't mean to imply that writing a garbage collector was a gigantic time-intensive effort and that garbage collectors were huge beasts- the garbage collector I wrote (for a Scheme-like toy language, but it's not important) wasn't much bigger than that. I just said that you have to understand how memory works to be able to write one (if you'll recall, the original poster said that garbage collection was for people who don't know how memory works). The program fragment you posted certainly takes more memory smarts than it takes to free() your malloc()'s, though it might not take more typing.
Re:Garbage Collection is for Incompetent Programme
on
The New Garbage Man
·
· Score: 4
Sigh. Have you ever written a garbage collector? Think about it- the people who cared enough about garbage collection to implement it in Lisp, Java, Python, etc. did. I've written one too, and I promise, you MUST have an intimate knowledge of memory to get one working. It's not incompetent programmers who write these things.
So why did those non-incompetent programmers who know all about managing memory on their own bother with writing these tools for the weak-minded? Mainly, it's that good programmers understand the principles of program design. One important design principle is that when you want to know what your program is doing at the top level, you shouldn't have to care what is really going on at the lower levels. That principle is the reason we have operating systems and compilers, for example. All of those things allow the programmer not to have to worry about what goes on under the hood, not because the programmer is stupid, but because the programmer's time is better spent solving the problem than dealing over and over again with low-level details that have nothing to do with the program at hand as opposed to any other program in the world.
Garbage-collected languages do the same thing- you trade a little speed (the idea that garbage collectors must be slower than hand allocation and deallocation actually turns out not to be true, incidentally, but in practice it often is) for the ability not to have to think about a ridiculously machine-level idea (id est, 'in which cell of memory am I going to write down this particular chunk of data?') so your code can just concisely reflect what your program actually does- quicker to write, easier to read, better all the way around. A smidgen slower, but who cares? You can certainly write programs of acceptable speed in garbage-collected languages, so it's no big deal unless you're writing something really speed critical, like tight graphics rendering loops or something, in which case us softheaded garbage-collection-needing incompetent programmers just use inline assembly. =)
I agree with you that it's a pain to have to do a cast on something the compiler ought to have figured out can't cause a type safety violation. Type polymorphism (ie, templates) is definitely the biggest thing missing from Java. Fortunately, they're adding it (see?). In fact, there's already an compiler that will do it- it's just not Sun-blessed. (But the.class files that GJ spits out are ostensibly bytecode-compatible with regular java, so no special JVM is required to run them.)
I suppose, if you think of organic vegan as vegans who won't eat anything that they didn't grow themselves. However, there exist plant algae that produce B12, which is why there are vegetarian B12 vitamins. Also, you don't need much B12 at all, and it stays in your body forever if you have a surplus. Yes, vegans should make sure they get B12 supplements occasionally (but look in vegan prepackaged foods: many are B12-fortified). But it's really not that big of a deal.
Err... excuse me? I don't admit to myself that I kill animals? I wasn't aware of that. Why exactly are you the authority on what vegans think?
As a matter of fact, vegans (at least the smart ones) are well aware of the fact that we aren't perfect. No matter how hard I try to minimize the suffering that my diet causes, there's always going to be something more that I could have done. The difference between a vegan and a meat-eater (in a very pithy sense) is that vegans typically do the best they can, and meat-eaters typically do not. Can you say "I try my best to prevent suffering" and then eat a quarter pounder with cheese? Is it ethical not to try your best to prevent suffering?
Err... Spinoza you ain't. Why exactly is it that my ethics are limited to "what would my food do to me?" Think about it: if we used cows as our ethical guideposts, we'd be pretty bad off, don't you think? I don't ask a tiger whether or not there's a God, I see no reason to follow its advice about what to eat. We don't trust most people to be our ethical leaders. Why trust cats, as you literally suggested?
What's-his-name... Mark Mathew Braunstein, the guy who wrote Radical Vegetarianism, briefly made the point you make- some people just can't eat a completely vegetarian diet, and for them it makes sense to continue to eat meat. Of course, Braunstein is a loon (for other reasons), but it's a good point anyway.
On the other hand, most people can do just fine on a careful vegan diet. Dwelling on the fact that some people CAN'T do it for health reasons just makes it that much easier for some idiot to say, "Well, I just can't do it either. I've GOT to have my cheeseburger!" Also, some people think that vegetables are deficient when in fact it's just the way they're eating. Iron and calcium are good examples- there are wonderfully good vegetable sources of both, but a lot of vegetarians/vegans find themselves deficient because they don't eat well-balanced foods. (Amazingly, going to McDonald's and ordering just the french fries and coke is not the path to perfect health.)
So perhaps I was simplifying things a bit much. But I do actually think that "it hurts animals, so don't do it" is a pretty compelling argument, if fleshed out a bit more (but it doesn't need much more fleshing out- it's not a complicated idea.) On the other hand, what do you expect in a reply to a message titled "vegans can go to hell or California"?
He's probably not making a big deal out of it because people get all weird when you tell them they're eating vegan food, as if it's a raw block of tofu or something. But if you just make food, and it's vegan, then the vegans will know (we read labels, and we notice when somebody uses textured vegetable protein) and nobody who'd get freaked out about it irrationally will be any the wiser. And everybody's happy. Makes sense to me!
Some people have strong senses of ethics. Strong enough, in fact, that they're willing to think about what they're doing, even when they're doing something popular. Those people are called vegans. And yes, it bothers us that animals suffer, and we do what we can to make that not happen any more.
Why doesn't suffering bother you? Why don't you do anything about it?
No, you missed my point. I was actually around (for a bit, anyway) before Yahoo- I actually did quite a bit of BBSing, some usenet, and some pre-W^3 internet stuff (Gopher- the 8-track of the Internet! Remember the MTV.com thing?). Yes, I know that there was online community before late '94 when yahoo started. However, until then, the community wasn't normal people- it was people who cared a whole lot about computers and talking to other people who cared a lot about computers. The people who cared enough to wade through huge techological messes to network with each other. What I was trying to say was that Yahoo was the site that made it possible for people who didn't care about computers to connect with other people in the same way that computer geeks had been doing for decades. True, Yahoo wasn't the only way to do it, but it was the way that people did it, overwhelmingly. In short, Yahoo deserves mad props.
Okay, I'll get crucified for this, but I'll bite: the Internet as a social phenomenon didn't exist before Yahoo. Yahoo is the reason that "Internet" is synonymous with "World-Wide Web" these days. I'll go one step bolder: Yahoo invented the modern Internet. They made it possible for normal people to find the web sites they wanted to go to, which was the big spark that made the Internet useful to ordinary people. (Obviously if Yahoo hadn't been the first big popular web index, it would've been one of the others, but that's not the point. It was Yahoo.) And Amazon and eBay were also pioneers in their respective fields, Amazon in particular. It seems that you don't like their fields- well, that's good for you, you can ignore them. But as for what the Internet is defined by how people use it- they're as important as it gets. Ever bought anything online? Thank Amazon and eBay. Ever found a website without looking through one of those archaic internet yellow pages? Thank Yahoo. Get your internet access at home through roadrunner for cheap? Thank all three of them, and CNN.com, and usatoday.com, and every site that ever made the internet a place where normal people wanted to be.
Don't like the fact that the Web is a "corpoplayground"? That's just a curmudgeony "these are my toys, and I'm not sharing" argument, sorry. The whole wide Internet world got massively bigger in the last ten years, as you've probably noticed. I'd say it's reasonably certain (though I can't prove it) that there is an order of magnitude more free interesting non-corporate content on the Internet now than there was ten years ago. And, surprise, where people went commerce went too. But if you think of barnesandnoble.com as the Internet, do you also think of the real world as just a big Barnes & Noble bookstore? Just like in the real world, there's lots of room on the Internet for big corporations to spread out and make themselves look big and important. (Think of all those TV ads and billboards with URLs as one big cyber-Champs Elysees.) Also just like in the real world, if you spend all your time hanging out there, you'll end up unsatisfied. And also like the real world, there's a place for commerce and a place for community.
Unfortunately, also like the real world, there are people who absolutely refuse to play nice. But on the Internet it's worse, because it's so easy to ruin systems and there's no repurcussion for doing so. There are no social or legal rules, so people do what they please, and some people like to break things. (Hi there trolls! Have fun storming the castle!) It has been that way for the history of public networking, it's not something that just got invented with Slashdot trolls and the DoS attacks this week- CommuniTree (aka Slash version.0000000000001) had the same problems back in the romantic days of networking.
And the anarchic solution is the romantic notion that people always seem to argue in these circumstances, and as you are arguing now. Guess what? It doesn't work on the Internet. There's more net.abuse than there has ever been, and vigilante groups haven't ever really been effective in combatting them. Assuming you're right about the DoSers' motives, and they don't turn around and DoS your favorite site tomorrow, do you think that it will make all the bad people go away? I doubt it.
This is the part that the freedom lover in everyone hates: the only solution that mankind has ever come up with that works is to make rules and enforce them. That's what governments are for. That's why they were invented. The wild west is a fun, romantic place, but we can't live there forever, because given enough time the outlaws will always outnumber the sheriffs and Billy the Kid is only fun to hang out with for so long.
Far from your argument that the DoS attacks represent that the Internet community is somehow rejecting a bad part of itself, I'd say that the DoS attacks signal the end of the free Internet era. It was fun, yep, I was there for a little bit of it too and I know. But oh well. We have to grow up someday. =(
The TUNES review basically says "the standard sucks because it doesn't standardize half the things that are really necessary." Yep. However, that doesn't mean that there aren't Scheme implementations that do a good job of filling in the gaps. In particular, Rice University's PLT group puts out a Scheme environment, DrScheme, that has everything that TUNES complains about and more (including a good object system). DrScheme is on the short list of Scheme environments to be using. True, it's not standard, and that's a problem. However, it's fairly well-documented (with a graphical help browser, no less, that doubles as a minimal HTML renderer), and it's supported by some of the most prominent Schemers around (in fact, members of the PLT run schemers.org, what TUNES calls the "number one page about Scheme"). They're accessable, too- if you think it can't do something you want to do, post to comp.lang.scheme and one of the maintainers will tell you that you're wrong with a degree of politeness proportional that in your original message =).
Of course, I go to Rice, and I know the people who maintain DrScheme, so I'm biased. However, having programmed in it for two years, I can tell you that if you can't do something in DrScheme, that's because you shouldn't be allowed to do it at all.
Hmm... Java is dynamically typed, and most of the time it isn't "really, truly" compiled. (Unless you count compiling for a VM as "really, truly").
That was true of the really old java run-time environments, but it hasn't been for a while now. All of the RTEs I know of compile the bytecode to native code before they execute it.
Ah, I think I see where our disagreement lies. I am not defending boards per se as opposed to any other method of ensuring high quality and consumer protection. I think that a licensing organization is better than nothing at all (a.k.a. "total free market," in my opinion a really dangerous idea for areas in which it is difficult to tell whether a craftsman is competent or not before something bad happens- law, medicine, civil engineering, software engineering are all examples of that), which is what you seemed to be advocating. However, I don't mean to imply that a board is infallible or that it's the best possible way to protect consumers. If you (or anyone) has a better idea, I'd love to hear it.
Professional bodies exist to monopolise fields of study and provide a bar to entry. Organisations like the American medical association and the Bar council are just protection rackets. There only purpose is to raise the salaries of those in the club, not "protect the consumer". We should irradicate them, not copy them.
That's pretty harsh. Would you trust your life to a doctor who didn't know what they were doing? Would you want the poor who can't afford the likes of Johnny Cochran to try their luck with public attourneys who might well not know the law well enough to see an obvious and powerful defense for their clients? More to the point, would you want to drive your car over a bridge that was designed by a guy who thought he would like to try his hand at bridge building and who gave the city the lowest quote?
Computers don't usually have as high profiles as doctors or lawyers, but it would be pretty naive to think that their flawless operation is not increasingly critical to first-world society. (Can you imagine what would happen if the software that runs Wall Street turned out to have a bug that misreported stock prices in strange circumstances? Just a teensy example.) And Microsoft has a built-in feature in every copy of Windows that says, in white letters on a blue background, "Market forces do not ensure high-quality programming."
It is increasingly important that we not only have high-functionality programs, but also that we have highly correct programs. Unfortunately, it is obvious that the industry doesn't have a good way to produce them. Does that mean that an equivalent of the bar is required for programmers? I dunno. I sort of like the idea, myself, but I would be happy with any system that ensured that all software products that were sold had at least a reasonable guarantee that they were correct.
Is that really true about experts? Can people with industry experience vouch for that as a widespread phenomenon?
I am a student, not an industry worker, but at my department (Rice University) the idea that you must abstract and reuse code as much as possible is drilled into our heads pretty unrelentingly, and is taught both in an object-oriented framework (via [increasingly] Java and [decreasingly] C++) and a functional programming framework (via Scheme and perhaps a smidgen of ML or Haskell depending on what you take and when), just so we'll be sure to get the point that the principles of abstraction aren't language-specific. I honestly can't imagine anyone who did well in our department going out to industry and writing code that didn't have a lot of code reuse built in.
I was under the impression that while the idea of an optical mouse was nothing new, the MS mouse was leaps and bounds ahead of any other optical mice in that it can track on any surface and whatnot. Am I wrong?
To give credit where credit is due, MS spends a decent chunk of change on original research. Check out research.microsoft.com to see what they're up to.
And as for other technologies, they seem to be leading the way in hardware products (or is that just me being ignorant about hardware trends?). If I recall, they were the first with the ergonomic keyboard, the wheel doohicky, the intelliEye (didn't someone tell the marketing people not to put so many vowels together? oh well) optical system, that bad-ass phone that you could hook up to your PC, the Timex watch data synchronization thing...
And the paper clip guy is pretty cool too, from a technical standpoint (if not from an actual usefulness standpoint). It's a Bayes (belief) network- you can find out how it works by rooting around for that topic on the MS research site.
As I see it, there are two distinct problems with gender disparities in work situations. The first is that the disparity might be there due to sexism somewhere in the system- somewhere in between the employer who's doing the hiring to the doctor who delivered the baby, there may have been some systemic problem that made either men or women think that they couldn't make it in that field.
However, there's also another problem- regardless of who's predisposed to what, it is important that the most powerful jobs of a society are not dominated by one gender alone (alas, the USA gets only a C- on that grade by my accounting). If the economy is shifting towards IT as the most important skill, than regardless of whether women like it or not, society as a whole had better make sure that they have a substantial representation there.
Do you actually think that annihilating the e-mail off your computer does any good? You can chop up your hard drive into a jillion pieces, degauss each one individually, burn them, and then mail them in plastic baggies a hundred different countries without extradition treaties, and it wouldn't do you any good.
There's also a copy of the email on the server. Probably one on the source mail server and one on the destination mail server. In addition to the sender's computer, possibly.
If you're that scared of big brother, don't send email. You can't ever be sure. For that matter, don't ever use a computer. Whenever you want to send a message, do a public/private key encrypt in your head and send the cyphertext via smoke signals. Then bash your head with a mallet so that you'll forget the message and they won't be able to force it out of you, now the weak link in the chain. And once you've done that, kill whoever it was you sent the message to, because now they're the weak link.
Seriously, if you're going to insult somebody for being a twit, it's generally a good idea not, in the same message, to let on that you're grossly ignorant of how actual computer espionage works. FYI: the guys who dig up your secret e-mails for a living first check your computer, and if that doesn't work, they go straight to your mail server. It's basically impossible to be sure that a particular e-mail is unrecoverable.
I should've been more clear- when I talk about the programming-time advantage of higher-level languages vs. lower-level languages, I'm not thinking of Java, I'm thinking of Scheme. Java is syntactically enough like C++ that it seems to me the only thing you're saving yourself from having to do is explicitly deallocate memory (and dealing with C++'s brain-dead unit system- making programmers do the things they have to do with #includes and .h/.cc files ought to be against the law), so it doesn't surprise me that in real-life situations the benefits of Java would be outweighed by the speed of C++. There are other high-level programming languages, though, like Scheme, that have saved me tremendous amounts of time over C++ or especially C in the average case.
Guilty as charged- I am "in academic circles," and I haven't ever had to work in an industry setting on really big projects where speed was very important. But I maintain that what I said was still accurate, while conceding your point: it may be true that with current tools, programmers do sometimes need to think about machine-level details (like whether their code is likely to cause page faults) in their high level designs, but it's also still true that they shouldn't have to. I have mentioned elsewhere in this thread the idea (popular among the faculty here at Rice) that you ought to first write your program in a very high-level language (at Rice, it's MzScheme), figure out where it's important for your code to go fast, and then rewrite those pieces in a low-level language where you can control machine-level details. The claim is that you get a speedy enough program, because you've optimized the hell out of the critical sections, and the stuff that it doesn't matter whether you optimize or not, which is most of your code, was written much more rapidly than would be possible with a lower-level language.
It's a misperception that garbage collection is about debugging, though- the point is that you can write programs that aren't convoluted through the need to allocate and deallocate memory cells for remembering new things. The C/C++ idiom of things like
void get_string(char * dummy_string)
{
}
makes sense only because you've seen it a million times, and because you're thinking about the way that memory works. The much more intuitive Java style- that is,
String getString()
{
return new String(
}
reflects your intent much more naturally, but is only really possible because of garbage collection. (I know you can allocate and then return in C/C++, but I also know that it can turn out to be a huge mess to figure out exactly when to deallocate, and I no of nobody who writes anything that isn't trivial by returning a newly-allocated pointer).
The point is simply that if you want to be able to design and implement programs correctly and rapidly, a facility that lets you specify only "what my program does" without bothering you with details. One aspect of speed is how fast your program will run, and that's certainly important. Another aspect of speed is how quickly you can write a correct program, and high-level abstractions make application development far quicker. And for most of your code, how rapidly it executes isn't really a big deal- the idea around Rice University, where I go to school, is that you should write your programs in as high-level a language as possible, figure out where it's necessary to make the code faster, and then rewrite those pieces in C or assembly or whatever (that idea is based on the premise that in typical programs, a very small subset of the code takes up the vast majority of the execution time). You get speed where you need it and flexibility (ease of maintenance, reusability, etc) everywhere else- the best of both worlds, and also you wrote your program in half the time it took the other guy to write the C++ version.
Maybe I gave the wrong impresion. I didn't mean to imply that writing a garbage collector was a gigantic time-intensive effort and that garbage collectors were huge beasts- the garbage collector I wrote (for a Scheme-like toy language, but it's not important) wasn't much bigger than that. I just said that you have to understand how memory works to be able to write one (if you'll recall, the original poster said that garbage collection was for people who don't know how memory works). The program fragment you posted certainly takes more memory smarts than it takes to free() your malloc()'s, though it might not take more typing.
Sigh. Have you ever written a garbage collector? Think about it- the people who cared enough about garbage collection to implement it in Lisp, Java, Python, etc. did. I've written one too, and I promise, you MUST have an intimate knowledge of memory to get one working. It's not incompetent programmers who write these things.
So why did those non-incompetent programmers who know all about managing memory on their own bother with writing these tools for the weak-minded? Mainly, it's that good programmers understand the principles of program design. One important design principle is that when you want to know what your program is doing at the top level, you shouldn't have to care what is really going on at the lower levels. That principle is the reason we have operating systems and compilers, for example. All of those things allow the programmer not to have to worry about what goes on under the hood, not because the programmer is stupid, but because the programmer's time is better spent solving the problem than dealing over and over again with low-level details that have nothing to do with the program at hand as opposed to any other program in the world.
Garbage-collected languages do the same thing- you trade a little speed (the idea that garbage collectors must be slower than hand allocation and deallocation actually turns out not to be true, incidentally, but in practice it often is) for the ability not to have to think about a ridiculously machine-level idea (id est, 'in which cell of memory am I going to write down this particular chunk of data?') so your code can just concisely reflect what your program actually does- quicker to write, easier to read, better all the way around. A smidgen slower, but who cares? You can certainly write programs of acceptable speed in garbage-collected languages, so it's no big deal unless you're writing something really speed critical, like tight graphics rendering loops or something, in which case us softheaded garbage-collection-needing incompetent programmers just use inline assembly. =)
I agree with you that it's a pain to have to do a cast on something the compiler ought to have figured out can't cause a type safety violation. Type polymorphism (ie, templates) is definitely the biggest thing missing from Java. Fortunately, they're adding it (see?). In fact, there's already an compiler that will do it- it's just not Sun-blessed. (But the .class files that GJ spits out are ostensibly bytecode-compatible with regular java, so no special JVM is required to run them.)
I suppose, if you think of organic vegan as vegans who won't eat anything that they didn't grow themselves. However, there exist plant algae that produce B12, which is why there are vegetarian B12 vitamins. Also, you don't need much B12 at all, and it stays in your body forever if you have a surplus. Yes, vegans should make sure they get B12 supplements occasionally (but look in vegan prepackaged foods: many are B12-fortified). But it's really not that big of a deal.
Err... excuse me? I don't admit to myself that I kill animals? I wasn't aware of that. Why exactly are you the authority on what vegans think?
As a matter of fact, vegans (at least the smart ones) are well aware of the fact that we aren't perfect. No matter how hard I try to minimize the suffering that my diet causes, there's always going to be something more that I could have done. The difference between a vegan and a meat-eater (in a very pithy sense) is that vegans typically do the best they can, and meat-eaters typically do not. Can you say "I try my best to prevent suffering" and then eat a quarter pounder with cheese? Is it ethical not to try your best to prevent suffering?
Err... Spinoza you ain't. Why exactly is it that my ethics are limited to "what would my food do to me?" Think about it: if we used cows as our ethical guideposts, we'd be pretty bad off, don't you think? I don't ask a tiger whether or not there's a God, I see no reason to follow its advice about what to eat. We don't trust most people to be our ethical leaders. Why trust cats, as you literally suggested?
What's-his-name... Mark Mathew Braunstein, the guy who wrote Radical Vegetarianism, briefly made the point you make- some people just can't eat a completely vegetarian diet, and for them it makes sense to continue to eat meat. Of course, Braunstein is a loon (for other reasons), but it's a good point anyway.
On the other hand, most people can do just fine on a careful vegan diet. Dwelling on the fact that some people CAN'T do it for health reasons just makes it that much easier for some idiot to say, "Well, I just can't do it either. I've GOT to have my cheeseburger!" Also, some people think that vegetables are deficient when in fact it's just the way they're eating. Iron and calcium are good examples- there are wonderfully good vegetable sources of both, but a lot of vegetarians/vegans find themselves deficient because they don't eat well-balanced foods. (Amazingly, going to McDonald's and ordering just the french fries and coke is not the path to perfect health.)
So perhaps I was simplifying things a bit much. But I do actually think that "it hurts animals, so don't do it" is a pretty compelling argument, if fleshed out a bit more (but it doesn't need much more fleshing out- it's not a complicated idea.) On the other hand, what do you expect in a reply to a message titled "vegans can go to hell or California"?
He's probably not making a big deal out of it because people get all weird when you tell them they're eating vegan food, as if it's a raw block of tofu or something. But if you just make food, and it's vegan, then the vegans will know (we read labels, and we notice when somebody uses textured vegetable protein) and nobody who'd get freaked out about it irrationally will be any the wiser. And everybody's happy. Makes sense to me!
Some people have strong senses of ethics. Strong enough, in fact, that they're willing to think about what they're doing, even when they're doing something popular. Those people are called vegans. And yes, it bothers us that animals suffer, and we do what we can to make that not happen any more.
Why doesn't suffering bother you? Why don't you do anything about it?
No, you missed my point. I was actually around (for a bit, anyway) before Yahoo- I actually did quite a bit of BBSing, some usenet, and some pre-W^3 internet stuff (Gopher- the 8-track of the Internet! Remember the MTV.com thing?). Yes, I know that there was online community before late '94 when yahoo started. However, until then, the community wasn't normal people- it was people who cared a whole lot about computers and talking to other people who cared a lot about computers. The people who cared enough to wade through huge techological messes to network with each other. What I was trying to say was that Yahoo was the site that made it possible for people who didn't care about computers to connect with other people in the same way that computer geeks had been doing for decades. True, Yahoo wasn't the only way to do it, but it was the way that people did it, overwhelmingly. In short, Yahoo deserves mad props.
Okay, I'll get crucified for this, but I'll bite: the Internet as a social phenomenon didn't exist before Yahoo. Yahoo is the reason that "Internet" is synonymous with "World-Wide Web" these days. I'll go one step bolder: Yahoo invented the modern Internet. They made it possible for normal people to find the web sites they wanted to go to, which was the big spark that made the Internet useful to ordinary people. (Obviously if Yahoo hadn't been the first big popular web index, it would've been one of the others, but that's not the point. It was Yahoo.) And Amazon and eBay were also pioneers in their respective fields, Amazon in particular. It seems that you don't like their fields- well, that's good for you, you can ignore them. But as for what the Internet is defined by how people use it- they're as important as it gets. Ever bought anything online? Thank Amazon and eBay. Ever found a website without looking through one of those archaic internet yellow pages? Thank Yahoo. Get your internet access at home through roadrunner for cheap? Thank all three of them, and CNN.com, and usatoday.com, and every site that ever made the internet a place where normal people wanted to be.
.0000000000001) had the same problems back in the romantic days of networking.
Don't like the fact that the Web is a "corpoplayground"? That's just a curmudgeony "these are my toys, and I'm not sharing" argument, sorry. The whole wide Internet world got massively bigger in the last ten years, as you've probably noticed. I'd say it's reasonably certain (though I can't prove it) that there is an order of magnitude more free interesting non-corporate content on the Internet now than there was ten years ago. And, surprise, where people went commerce went too. But if you think of barnesandnoble.com as the Internet, do you also think of the real world as just a big Barnes & Noble bookstore? Just like in the real world, there's lots of room on the Internet for big corporations to spread out and make themselves look big and important. (Think of all those TV ads and billboards with URLs as one big cyber-Champs Elysees.) Also just like in the real world, if you spend all your time hanging out there, you'll end up unsatisfied. And also like the real world, there's a place for commerce and a place for community.
Unfortunately, also like the real world, there are people who absolutely refuse to play nice. But on the Internet it's worse, because it's so easy to ruin systems and there's no repurcussion for doing so. There are no social or legal rules, so people do what they please, and some people like to break things. (Hi there trolls! Have fun storming the castle!) It has been that way for the history of public networking, it's not something that just got invented with Slashdot trolls and the DoS attacks this week- CommuniTree (aka Slash version
And the anarchic solution is the romantic notion that people always seem to argue in these circumstances, and as you are arguing now. Guess what? It doesn't work on the Internet. There's more net.abuse than there has ever been, and vigilante groups haven't ever really been effective in combatting them. Assuming you're right about the DoSers' motives, and they don't turn around and DoS your favorite site tomorrow, do you think that it will make all the bad people go away? I doubt it.
This is the part that the freedom lover in everyone hates: the only solution that mankind has ever come up with that works is to make rules and enforce them. That's what governments are for. That's why they were invented. The wild west is a fun, romantic place, but we can't live there forever, because given enough time the outlaws will always outnumber the sheriffs and Billy the Kid is only fun to hang out with for so long.
Far from your argument that the DoS attacks represent that the Internet community is somehow rejecting a bad part of itself, I'd say that the DoS attacks signal the end of the free Internet era. It was fun, yep, I was there for a little bit of it too and I know. But oh well. We have to grow up someday. =(
The TUNES review basically says "the standard sucks because it doesn't standardize half the things that are really necessary." Yep. However, that doesn't mean that there aren't Scheme implementations that do a good job of filling in the gaps. In particular, Rice University's PLT group puts out a Scheme environment, DrScheme, that has everything that TUNES complains about and more (including a good object system). DrScheme is on the short list of Scheme environments to be using. True, it's not standard, and that's a problem. However, it's fairly well-documented (with a graphical help browser, no less, that doubles as a minimal HTML renderer), and it's supported by some of the most prominent Schemers around (in fact, members of the PLT run schemers.org, what TUNES calls the "number one page about Scheme"). They're accessable, too- if you think it can't do something you want to do, post to comp.lang.scheme and one of the maintainers will tell you that you're wrong with a degree of politeness proportional that in your original message =).
Of course, I go to Rice, and I know the people who maintain DrScheme, so I'm biased. However, having programmed in it for two years, I can tell you that if you can't do something in DrScheme, that's because you shouldn't be allowed to do it at all.
That was true of the really old java run-time environments, but it hasn't been for a while now. All of the RTEs I know of compile the bytecode to native code before they execute it.
I know, a minor point.
Ah, I think I see where our disagreement lies. I am not defending boards per se as opposed to any other method of ensuring high quality and consumer protection. I think that a licensing organization is better than nothing at all (a.k.a. "total free market," in my opinion a really dangerous idea for areas in which it is difficult to tell whether a craftsman is competent or not before something bad happens- law, medicine, civil engineering, software engineering are all examples of that), which is what you seemed to be advocating. However, I don't mean to imply that a board is infallible or that it's the best possible way to protect consumers. If you (or anyone) has a better idea, I'd love to hear it.
That's pretty harsh. Would you trust your life to a doctor who didn't know what they were doing? Would you want the poor who can't afford the likes of Johnny Cochran to try their luck with public attourneys who might well not know the law well enough to see an obvious and powerful defense for their clients? More to the point, would you want to drive your car over a bridge that was designed by a guy who thought he would like to try his hand at bridge building and who gave the city the lowest quote?
Computers don't usually have as high profiles as doctors or lawyers, but it would be pretty naive to think that their flawless operation is not increasingly critical to first-world society. (Can you imagine what would happen if the software that runs Wall Street turned out to have a bug that misreported stock prices in strange circumstances? Just a teensy example.) And Microsoft has a built-in feature in every copy of Windows that says, in white letters on a blue background, "Market forces do not ensure high-quality programming."
It is increasingly important that we not only have high-functionality programs, but also that we have highly correct programs. Unfortunately, it is obvious that the industry doesn't have a good way to produce them. Does that mean that an equivalent of the bar is required for programmers? I dunno. I sort of like the idea, myself, but I would be happy with any system that ensured that all software products that were sold had at least a reasonable guarantee that they were correct.
Is that really true about experts? Can people with industry experience vouch for that as a widespread phenomenon?
I am a student, not an industry worker, but at my department (Rice University) the idea that you must abstract and reuse code as much as possible is drilled into our heads pretty unrelentingly, and is taught both in an object-oriented framework (via [increasingly] Java and [decreasingly] C++) and a functional programming framework (via Scheme and perhaps a smidgen of ML or Haskell depending on what you take and when), just so we'll be sure to get the point that the principles of abstraction aren't language-specific. I honestly can't imagine anyone who did well in our department going out to industry and writing code that didn't have a lot of code reuse built in.
Is Rice just an exceptional school?
Every time I see someone mention the "million monkeys" thing, I am compelled to offer this link:
Monkeys, Numbers, and You
Enjoy.
I was under the impression that while the idea of an optical mouse was nothing new, the MS mouse was leaps and bounds ahead of any other optical mice in that it can track on any surface and whatnot. Am I wrong?
To give credit where credit is due, MS spends a decent chunk of change on original research. Check out research.microsoft.com to see what they're up to.
And as for other technologies, they seem to be leading the way in hardware products (or is that just me being ignorant about hardware trends?). If I recall, they were the first with the ergonomic keyboard, the wheel doohicky, the intelliEye (didn't someone tell the marketing people not to put so many vowels together? oh well) optical system, that bad-ass phone that you could hook up to your PC, the Timex watch data synchronization thing...
And the paper clip guy is pretty cool too, from a technical standpoint (if not from an actual usefulness standpoint). It's a Bayes (belief) network- you can find out how it works by rooting around for that topic on the MS research site.
...To which the standard rejoinder is:
No way. Real Real Programmers use
$ zcat > a.out
'cause you can type faster that way.
As I see it, there are two distinct problems with gender disparities in work situations. The first is that the disparity might be there due to sexism somewhere in the system- somewhere in between the employer who's doing the hiring to the doctor who delivered the baby, there may have been some systemic problem that made either men or women think that they couldn't make it in that field.
However, there's also another problem- regardless of who's predisposed to what, it is important that the most powerful jobs of a society are not dominated by one gender alone (alas, the USA gets only a C- on that grade by my accounting). If the economy is shifting towards IT as the most important skill, than regardless of whether women like it or not, society as a whole had better make sure that they have a substantial representation there.