Bill Gates is a smart guy who could have written the code right in the first place, but he decided to do a quick and sloppy job instead. Later, when confronted with the need for a rewrite, he didn't try to weasel out of the consequences of his original decision.
Bad managers want to enjoy the upside of their decisions and blame the downside on somebody else. In this case, the upside was presumably that Bill saved time by writing a slapdash flood-fill implementation. The downside was the eventual need to stop and rewrite the flood-fill algorithm correctly. Bill accepted the downside gracefully instead of denying the need for the rewrite or getting all pissed off about the delay.
I just walked away from such a job. Actually, I'm still working there through this Saturday, then moving to a new job next Monday.
I wasted three years of my life thinking I could learn to work with the insecure dickhead. Then I realized that I hadn't thought about anything except keeping the guy placated in two years and hadn't done any decent work since I started thinking that way. And the guy wasn't going to fire me. All he cared about was the fact that I put up with his shit. It pleased his ego to crap on me every day and pretend that he was being soooo generous by being nice to me occasionally and essentially assuring me a lifetime job. He wanted everyone to know how generous he was, so he let everyone know (especially me) that he thought I was crap, then praised me loudly for minor successes.
I wouldn't be too hard on Bill Gates. It sounds like the nice guys got weeded out pretty fast at Microsoft, which means Bill Gates wanted to work with people who could stand him. REAL insecure dickheads love beating up on people who don't call them on their shit. I'm pretty nonconfrontational. If I can't make progress at the intellectual level, I don't escalate the fight to the emotional level. I just take myself elsewhere, which I what I SHOULD have done two years ago. Anyway.... Bill Gates didn't want to beat up on people who didn't fight back, he just wanted to work with people who could thrive under his management style.
No kidding. He's smart enough to accept both the upside and the downside of his development decisions.
Bad managers insist on cutting corners, then refuse to believe that their code is fragile and buggy. Or they insist on doing everything carefully and methodically, but schedule the version 1.0 release date as if they were going to release crap.
I'm not a kernel guru, but I seem to remember that there was some controversy over why Reiser4 was not accepted into the kernel. Coding style, Hans Reiser's intransigence, politics, and reimplementation of functionality already in the kernel were all cited as factors.
Leaving all that aside, does reiser4 come with a new alternative Linux filesystem design that can replace the old filesystem layering in all its current uses, or is it just a hack around the current design that would live inside the kernel as a second way of doing filesystems? The first is what I would call an experiment in design, and it would be suitable for inclusion when it could replace the current design wholesale. The second is fine for research, but considerably increases the complexity of the kernel. It sounds from your description that Reiser4 falls into the second category, and you would like it included as part of the official kernel to speed its maturation from the second category to the first. I don't see why that is necessary as long as it is easily available to kernel hackers who want to work on it, which it apparently is.
Simplicity and uniformity is the purpose of design. Adding a second way of doing filesystems doubles the complexity of thinking about the kernel's handling of filesystems, which isn't a trivial burden to ask the developers to take on. If people could handle arbitrary complexity, as long it was correct, then there would be no need for design.
Linus said (in the context of Reiser4):
the filesystem shouldn't make its own internal plug-in architecture that bypasses the VFS layer and exposes functionality that isn't necessarily sane.
He doesn't say that Reiser4 is bad or insane. He said it isn't necessarily sane, which means that nobody on the kernel team can (so far) verify its sanity. Obviously he and other kernel developers are smart guys who could eventually figure it out. But, it would take effort, and he is making the very realistic point that adding a new set of interfaces is unacceptable if it results in the kernel team not completely understanding one part of the kernel.
Hans Reiser has effectively said many times that HE is smart enough to understand Reiser4 and have confidence in it, and the kernel developers should either do their homework (if they're smart enough) or leave it to him (if they aren't smart enough), which is an absolutely insane way to develop software. The kernel team is responsible for the kernel -- they have to be able to vouch for Reiser4 themselves. They also have to be selective about what kind of work they take on. It seems to me (once again, speaking from a position of ignorance) that the steps requested by the kernel developers (better adherence to coding standards, more polish, answers to technical challenges) are all steps that would assist the kernel developers in understanding Reiser4 and verifying its suitability for inclusion.
You can see that it is Reiser4's violation of the current Linux design that creates the extra complexity and makes it difficult for the kernel developers to sign off on it. I'm sure that if they are being more fastidious than usual about coding style and so forth, it is to mitigate the huge risk inherent in bypassing the current design and thereby doubling (at least) the difficulty of assuring the correctness of Linux's filesystem code.
When your design constrains you, you don't throw it away and proceed into anarchy. You create a new design. If the layering scheme kills performance, the fix is to create a new layering scheme that accomodates the performance improvements you want to make.
Having a coherent design is what allows people to reason about the system as a whole. Breach the design, and suddenly nobody can say anything about anything without tracking down and understanding all of the code involved. Commercial companies do this all the time when playing catch-up with rivals, because they have to retain their customers at all costs, but they suffer terribly for it in maintenance costs and stability. There's no reason in this case for Linux to take the fast, self-destructive route. Linux can wait for a coherent solution, even if it is years coming.
I like your title, and I like Linux's approach. The usual approach, especially in commercial software, is to give the users everything they want, no matter how many technical assets need to be sacrificed. Throw away good design, security, and reliability just to get the latest bullet point. That isn't what the Linux community wants. They want things done right, even if it takes a few years to figure out how. Windows is a good example of saying "yes" by default to every demand and ending up with a system so complex and fragile that even gurus don't understand it. (I'm thinking of the recent Raymond Chen blog entry that hit Slashdot, in which he admitted to releasing a bogus Windows patch because he didn't understand how Windows processes shut down.)
5. Go fuck yourself. Assemble your own software that fits your needs, or pay money for someone to do it for you. It is not the communities job to pander to your needs.
If only Microsoft were this honest. "Go fuck yourself. It's not our job to pander to your needs. It's our job to make money, and you can only hope that solving your problem is profitable for us." Unfortunately, they have these guys called "marketers" and "PR directors" whose job it is to prevent this kind of honesty.
OpenGL is supported on Windows and many other platforms. The Doom3 engines uses OpenGL. (OpenGL is an industry standard whose origins predate Linux. Like every other industry standard, Microsoft is trying to kill it, but they haven't succeeded yet.) The Doom3 engine is proof that even the most technically demanding games can be developed cross-platform for Windows and Linux.
The article you linked to discusses the rate of content creation on Web 2.0 sites, which in my experience is a better proxy for narcissism than intelligence.
That's a new one on me, though I've heard C++ programmers refer to any C++ idioms popularized since 1995 as "Java-style programming," even when it is impossible to use those idioms in Java. Somehow people get the idea that C++ should feel like C, and when it doesn't, there must be some insidious influence at work.
That's an excellent point. I personally like the old web site formula, which I don't see much these days, of designing the default front web page for total noobs and making another front page for regular visitors. Beginners looking for help end up at the right place, and regular visitors bookmark the news and updates page.
Luckily, many open source projects are developed using a methodology called "Illiterate Programming," where code and documentation are interleaved. Illiterate programming is very simple and only uses two commands, cat and echo.
To access the code for a source file, use the "cat" command:
cat foo.c cat foo.c | gcc -o foo
To see the code documentation for the file, you also use the echo command:
echo 'See foo.c'
To see the user documentation, use the cat command:
You can always fill in a section with something useless.
I remember in school that teachers gave much better grades for a bit of empty blabbing than for a missing answer. I assume that commercial doc writers are held to much the same standard.
A blank section might look worse, but at least it's honest.
I agree that students who break the rules shouldn't try to shift the blame to the insecurities they exploited. However, that doesn't excuse the school for applying grossly disproportionate punishments. I was the valedictorian of my high school, and like virtually all the other honors students, I broke rules all the time.
I repeatedly snuck into a computer lab when it was supposed to be empty and locked, because I knew the door didn't shut correctly. Usually I did it to take a nap during lunch.
As a chem lab assistant, I repeatedly used a bogus note from my teacher to get me from the chem lab to the library. Actually, the chemistry teacher broke the rules too -- he wrote a hall pass without a date, time , or destination, and told me to use it however I wanted.
I often took school property home without permission. I returned all of it in a timely manner without inconveniencing anyone.
I photocopied a test answer key and distributed it to an entire honors history class. (As far as I can remember, this was the only seriously wrong and dishonest thing I did. It was out of anger that we had been stuck with a near-illiterate substitute for over a month after our teacher had a medical emergency. There were almost twenty kids in the class -- all honors students, remember -- many of whom I didn't know well, and nobody ratted me out. The teacher was so bad that he just read the book aloud to us in class. Sometimes we had to help him with words. A lot of kids who were doing fine with the regular teacher would have failed the class if he hadn't granted everyone a ludicrous curve.)
My friends and I managed to skip out of a half-day drugs presentation and play Stratego at a friend's house near the school. (None of us ever did any drugs until college.)
My friends and I in an honors class brought an R-rated movie to school when we knew we were scheduled to have an irresponsible sub, and we watched the entire thing over three days. (The sub left us alone to work on assignments, which we took home and did as homework. An AV nerd hooked us all up with headphones.) The sub caught on but couldn't do anything about it.
And a million other minor things.
Should the school system have harmed my education to stop me doing those things?
Now pretend my education didn't matter, and all that matters is that the school maintains order and security. Even by those standarsd, it is counterproductive to mete out disproportionate punishments. Teachers and school officials shouldn't try to pretend that they have more control than they do. Whether they like it or not, they are dependent on the judgment and good will of the students. Those are the fundamental elements that ensure the security of the school. Teachers and school officials are responsible, as leaders and educators, for fostering those elements.
Making punishment proportional to the real damage or danger incurred helps maintain trust and good will. It lets the kids know that the teachers aren't just arbitrary fascists, and it funnels them towards mostly harmless mischief. There were a handful of teachers at my school who could issue serious rules that we would obey even if we didn't agree with them. Those were the teachers who weren't really threatened by our harmless mischief. We knew they would punish us if they caught us, but we also knew they were concerned for our well-being, our education, and the well-being of the school, not their own authority. Mostly they just rolled their eyes and expressed mock exasperation when they found out about one of our pranks but couldn't pin it on us. When those teachers spoke seriously, we listened and obeyed, even if we felt they were being harsh or unreasonable. They had real authority over us, which we freely granted. (We also liked those teachers enough that we never risked getting them in trouble, unless they were in on it.)
The teachers who wanted to control us by establishing authority, who felt
Can you prove the lack of bias? Can you prove the lack of presumption? Can you prove that the presumptions and preconceptions of the people running these trials do not effect the outcome, both psychologically or on an unknown scientific level (quantum sciences, anyone?)? No? You can't? By your methods, that scientifically proves you wrong. Don't ya hate that?
Science is not as much about airtight logic and proof as you think, but I wasn't making a scientific argument anyway. I didn't claim that science has proved the nonexistence of psychic abilities. The fact that you read that into my statement, that you thought it was a reasonable statement to expect, shows a misunderstanding of science. My logic and my claim weren't scientific at all, just as your claims and your logic aren't. Your only appeal to science is to point out that *I* can't use it. I thought it was obvious that "Science works" is not a statement that can be scientifically tested, and hence I was not claiming to have established my argument by scientific means. Also, the form of my last argument was an explicit proof by failure of imagination, which is famous as a logical fallacy. That should have clued you in that I was not employing strict mathematical logic, either, but rather another form of persuasion.
My point is a metascientific one, which (like yours) cannot claim to have the credibility of science nor the rigor of mathematical logic. I claim that scientific investigation is very effective at uncovering phenomena, documenting their patterns, finding ways to reproduce them, and hence making it possible to exploit them for practical purposes. For the rest of my argument, I refer you to my original post and encourage to read it in a different spirit. I'm comfortable with my statements, despite not having established them either scientifically or mathematically.
a) How do you prove that scientifically? I guess you bias yourself against the possibility that the people who have such advanced control over the capabilities of their brains, will find good reason not to use or to share those abilities? b) Define 'practical' - and remember, you have to consider what might be considered 'practical' to a person with these abilities. c) You make the assumption that a person with these abilities acts in the same manner as a person without them
Yeah, I was a teenage nerd once too. I read speculative fiction (still do), and can hardly be unaware of the various loopholes used to set stories about psychics in societies ignorant of psychic phenomena. Once again, you misunderstand the nature of my argument. I was not trying to make an airtight argument that you can't find ways around. Verbal logic isn't a mechanical means to truth; it's a competition of skill and cleverness that may have the side effect of improving understanding. If you don't understand this yet, you'll understand it the first time you argue with somone trained by Jesuits. Halfway through, while you're getting your ass handed to you, offer to switch sides and watch him regain the advantage for your position about as easily as a trained wrestler would defeat you from an inferior position.
My argument was not meant to defeat you by an objective measure and compel you to unwillingly abandon a position you are determined to hold, but to sway your judgment. This issue is in a domain where mathematics does not suffice. Even science depends ultimately on judgment, so I am not as far from science as you say, but your quibbles cannot be defeated scientifically. (As a learning experience, construct similar quibbles that make it impossible to prove that AIDs is caused by HIV, lions aren't descended from Homo sapiens, and people aren't accompanied by invisible daemons that decide who they're going to fall in love with. In each case, you can reach implausibility, but not impossibility.)
So, having made my arguments, I'll leave it to your judgment how seriously to take the p
Far from being killed by scientific skepticism, psychic abilities have been given more than a fair trial. Any strictly scientific idea with the track record of psychic abilities would have been abandoned a long time ago, but psychic abilities have a special appeal that guarantees continued scientific testing. The appeal of psychic abilities has a rational side -- the enormous advantage they would confer on the first person or group to master they, or the enormous fame they would confer on the first scientist to verify them reproducibly. Even the CIA funded research into psychic methods. You don't think those richer-than-God Wall Street trading firms haven't put a million here and a million there into psychic research on an executive's whim? If anyone could discover psychic ability, they could, and I doubt they could keep it secret for long.
If any psychic abilities similar to the ones people believe in (ESP, remote viewing, telekinesis, the "sixth sense") really existed, they would be routinely exploited to do practical things. Instead, the field is dominated by famous fakes who make money not by their ability to do anything useful but by exploiting people's eagerness to believe. How can you reconcile the current disbelief in psychic phenomena with the idea that there are many people who have legitimate awareness of them?
I can imagine that a pure idealist who knows about psychic abilities might be so loopy and air-headed that he comes off as a kook and can't share his knowledge with the world.
I can imagine that a greedy person who knows about psychic abilities might exploit them in secrecy.
I can imagine that a very private person who knows about psychic abilities might not share them out of fear of becoming a public spectacle.
I can imagine that an ambitious scientist who knows about psychic abilities might keep them secret to hold off competitors until he completes a book or research paper.
I cannot imagine that every person who has ever had legitimate awareness of real psychic abilities has been unwilling or unable to convince the rest of the world of their existence.
Mature platforms/languages/libraries (linux, win32, java,.net, perl, python, php, apache, iis, oracle, ms SQL server) have a looming issue that they work well enough that most average user have no need to upgrade.
Users won't blink at an easy install from a trusted source: Microsoft for Windows and its apps, the distro repository for Linux and its packages, and the application distributor for application updates (e.g., Mozilla for Firefox users.) The only obstacle is getting your platform into enough of those trusted places that you have enough of your target users covered.
the software/hardware will be stagnant and once it meets business needs, it will no longer be in anything other than lowest cost maintainece mode.
Maybe nobody will pay for improvements, but they'll keep installing the updated versions. Most users automatically click "Yes" when prompted, "Software updates have been downloaded. Install?"
If you ran a large business, and your mainframe payroll or inventory program popped up a message offering to install updates, you would probably not only click "No," you would run around the office screaming, "DON'T CLICK YES! NOBODY CLICK YES!" You would be panicked by six fears:
1. Loss of stability. 2. Downtime during the upgrade. 3. Data corruption and loss due to the upgrade. 4. Interface changes that inadvertently disable critical functionality. 5. Retraining costs. 6. Getting billed a gazillion dollars for this damn upgrade that you didn't want in the first place.
These are all reasonable fears that apply much less to, say, Firefox updates. Firefox updates rarely hurt stability, they involve practically no downtime, they don't include interface changes that break existing habits, they've never corrupted my bookmarks or settings, the retraining cost is minimal (and underestimated by users anyway), and they're free. These are all implicit assumptions that users have been trained to expect by sophisticated, professional developers. As long as developers live up to those expectations, they are free to upgrade the programming platform as much as they want.
In fact, I would say that if many users click "No" when prompted to update your program, then your users are extremely dependent on the stability of your program, or you've done something very bad to lose their trust.
Re:This is (now) a famous number-theory integer!
on
Censoring a Number
·
· Score: 4, Insightful
Geek and nerd used to be synonymous. The meaning of geek you describe was invented by geeks to reclaim the word geek, kind of like the queer community reclaimed the world "queer," except that the queer community didn't have to change the meaning of the word, merely the attitude behind it, since they were fine with being queer.
Unlike the gay-bi folks who reclaimed the word "queer," the geeks who reclaimed "geek" were self-haters. They were ashamed of being socially inept, excluded, and driven to alternative worlds by their treatment in this one. Fortunately, there were positive aspects of geekiness, so they simply threw out the negative characteristics and stressed the positive ones.
Ultimately, this will backfire. By attempting to erase their negative attributes, the geeks (nerds) will end up losing their claim on the positive attributes once associated with them. They will be defined solely by their negative characteristics. (I am serious about this. Bear with me while I explain.)
The rest of the world bears so little ill-will toward geeks (unlike queers, whom homophobes hate passionately) that they allowed geeks to redefine the word geek. After all, geeks (sorry, nerds) weren't trying to shoulder their way into the circles they were excluded from. Society didn't want nerds to be condemned and repressed; they just didn't want the nerds asking them for dates, sitting with them at lunch, and trying to go to their parties. Most nerds are quite happy living without those things, especially now that they have a positive label for themselves. Since nerds accept the boundaries imposed on them, society feels no need to remind them of what make them different.
(Technology nerds have been successful in business, where successful is idempotent with welcome, for over a century, maybe much longer. The rise of Bill Gates et al. was not an invasion of new territory.)
Ironically, stripping the negative aspects out of the word "geek" made it possible for non-inept, non-excluded people to accept the geek label and still enjoy their status as full-fledged people. That means that the excluded and inept can no longer comfort themselves with their geek status, because all the cool aspects of geekdom have been invaded by good-looking and/or confident people who are able to understand the mysteries of human interaction.
Geeks (ack! again, I mean nerds) no longer have any safe haven or any unique reason to live. They can't claim that the world would fall apart without them, except in the same sense that immigrant laborers can. (Who else is willing to pick strawberries and do the IT grunt work?) They can't even confidently stay out of the danger zone anymore. That guy with the faded Space Invaders shirt might look like a good guy for a nerd to talk to, but it's possible -- nay, likely -- that he is a normal person who will be put off by the nerd's social clumsiness, resulting in awkwardness and humiliation. Conversely, a badge of identity such as a D&D shirt that might in the past have protected a nerd from being approached by people with normal standards of social aptitude no longer conveys any protection. There is nothing for a nerd to do but attempt social intercourse and hope his interlocuters will not be horrified, or at least protect his dignity by hiding their horror.
I predict that a new way of labeling and sorting people will arise that will help protect normal and socially defective people from uncomfortable interactions. Naturally, the normal folks want to seem (and feel) fair, compassionate, and justified, so the criteria for exclusion, while remaining the same as ever, will be described in terms of mental illness and emotional intelligence. Mental illness will be cited in order to point out that social incompetence makes people dangerous, both in trivial ways (inappropriate, annoying behavior) and serious ones (stalking, spree killing). Emotional intelligence will be invoked whenever it is necessary to place responsibility for the exclusion on
Slashdot's readership tends to mod up posts they agree with and mod down those they don't
Because of the mod categories and metamoderation, Slashdotters mostly express their opinions by modding up rather than down. Often this results in the best posts for each point of view being rated +4 or +5 -- an excellent result that makes it worthwhile to read at +4 and +5 when you don't have much time.
Programming in the real world is usually ugly and complex, so if you are turned away by that you should not be programming.
Someone famous once said that a leader who flinches from war is a danger to his nation, but a leader who does not fear and loathe war with every fiber of his soul is an even greater danger.
Engineers, complexity, you see what I'm getting at. By the way, I did Java full-time for a few years, but most of my professional development work has been in C++, so I'm aware that Java is a relatively simple language.
In kindergarten you do not learn the entire history of language and literacy before learning A-B-C.
Funny you should say that, because Java makes much more sense when you know a little bit of history. Compare Java:
class HelloWorldApp {
public static void main(String[] args) {
System.out.println("Hello World!");
}
}
to Python:
print "Hello World!"
Most of the extra elements of the Java program would have to be explained as responses to the difficulties of large-scale software construction, colored by the need to appeal to C++ programmers. Java is an industrial language, a bastard child of brilliant-but-minor languages, engineering tradeoffs, and marketing considerations. There are about 23 characters on the third line that would make sense to a beginner. The rest of the program owes its existence to engineering and marketing considerations that are of no interest and no value for a beginning programmer.
"What's with all the other weird stuff, professor?"
"What's with all that weird stuff, you ask? Well, Guy Steele said, 'We were after the C++ programmers. We managed to drag a lot of them about halfway to Lisp.' What that tells you is that Guy Steele thinks garbage collection is as important as all the other innovations of Lisp combined. Hee hee hee. He may be right. In answer to your question, just ignore all the weird stuff. It will all make sense in about two years, sooner if you do a lot of programming."
To go back to the ABCs analogy, Java is littered with history and very sound technical details, like a dictionary. A dictionary is a pretty darned good source on the ABCs, and when adults have adult problems with their ABCs, they can often find the answer in a dictionary, just like Java is a great tool for solving lots of realistic, grown-up problems. I contend that using Java to teach programming is like using The American Heritage College Dictionary to teach little kids their ABCs.
"Okay class, you're going to see a lot of things you don't understand. Just ignore it and focus on the things I tell you are important. Open your dictionaries to the first letter. Do you see it? It's an A. No, not that one, the first big letter, the first letter on page 1. Okay, I admit they're all pretty small. Just find the first letter on page 1. No, now you're looking at the blank page before the title page. There aren't any letters on that page. You're right, that page is the first page, but page 1 isn't the first page. It's actually well into the book. Close, that's page i. i looks like 1, and it actually means 1 here, just not the 1 I want. But you're doing well. You're getting there. Yes! There it is. That's page 1, and the first letter is A. The second letter? The second letter is a, too. A and a. I know they look different; they are kinda different, but the first and second letter are both A. No, the second letter of the alphabet is B. B is on page 98."
See how easily extraneous detail can derail a beginner? The ability to filter out extraneous information is a learned skill that is specific to a context. Sup
And don't kid yourself, the distinction doesn't really matter. (Blasphemy!) No, but it's true!
Sometimes it matters. Coming to a conclusion about "Linux-the-kernel" and applying that conclusion to "Linux-as-a-platform" is fallacious. They're two different and somewhat incompatible uses of the term. People will tolerate any reasonable usage of "Linux" as long as it does not lead you to incorrect conclusions.
Also, how many people understand that Windows is not a platform? When people think of the "Windows platform" these days, if I understand correctly, they mean win32..NET introduces a new platform, and Vista introduces a third (or maybe several variations?) But business people who are in charge of buying software still think there is a "Windows platform." That doesn't mean that Microsoft is doomed or those poor deluded business guys have a whole lot of shocks and frustration coming. Windows software vendors will educate some and guide the rest safely through with their delusions intact. There's no reason a commercial Linux software market can't operate the same way.
According to the book Peopleware, engineers left to themselves provide higher quality than customers are willing to pay for. When competition comes, managers crack down and force engineers to cut quality down to just above the point that drives customers away.
(Peopleware says that in software, this is ultimately more expensive than letting developers work to their on standards of quality. That doesn't apply in this situation, though.)
Unfortunately, there are some women who resemble werewolves, and they are attracted to Star Trek like it was made out of ice cream.
In this sense, I replace myself every eighteen months or so. Sometimes faster.
Bill Gates is a smart guy who could have written the code right in the first place, but he decided to do a quick and sloppy job instead. Later, when confronted with the need for a rewrite, he didn't try to weasel out of the consequences of his original decision.
Bad managers want to enjoy the upside of their decisions and blame the downside on somebody else. In this case, the upside was presumably that Bill saved time by writing a slapdash flood-fill implementation. The downside was the eventual need to stop and rewrite the flood-fill algorithm correctly. Bill accepted the downside gracefully instead of denying the need for the rewrite or getting all pissed off about the delay.
I just walked away from such a job. Actually, I'm still working there through this Saturday, then moving to a new job next Monday.
I wasted three years of my life thinking I could learn to work with the insecure dickhead. Then I realized that I hadn't thought about anything except keeping the guy placated in two years and hadn't done any decent work since I started thinking that way. And the guy wasn't going to fire me. All he cared about was the fact that I put up with his shit. It pleased his ego to crap on me every day and pretend that he was being soooo generous by being nice to me occasionally and essentially assuring me a lifetime job. He wanted everyone to know how generous he was, so he let everyone know (especially me) that he thought I was crap, then praised me loudly for minor successes.
I wouldn't be too hard on Bill Gates. It sounds like the nice guys got weeded out pretty fast at Microsoft, which means Bill Gates wanted to work with people who could stand him. REAL insecure dickheads love beating up on people who don't call them on their shit. I'm pretty nonconfrontational. If I can't make progress at the intellectual level, I don't escalate the fight to the emotional level. I just take myself elsewhere, which I what I SHOULD have done two years ago. Anyway.... Bill Gates didn't want to beat up on people who didn't fight back, he just wanted to work with people who could thrive under his management style.
No kidding. He's smart enough to accept both the upside and the downside of his development decisions.
Bad managers insist on cutting corners, then refuse to believe that their code is fragile and buggy. Or they insist on doing everything carefully and methodically, but schedule the version 1.0 release date as if they were going to release crap.
Leaving all that aside, does reiser4 come with a new alternative Linux filesystem design that can replace the old filesystem layering in all its current uses, or is it just a hack around the current design that would live inside the kernel as a second way of doing filesystems? The first is what I would call an experiment in design, and it would be suitable for inclusion when it could replace the current design wholesale. The second is fine for research, but considerably increases the complexity of the kernel. It sounds from your description that Reiser4 falls into the second category, and you would like it included as part of the official kernel to speed its maturation from the second category to the first. I don't see why that is necessary as long as it is easily available to kernel hackers who want to work on it, which it apparently is.
Simplicity and uniformity is the purpose of design. Adding a second way of doing filesystems doubles the complexity of thinking about the kernel's handling of filesystems, which isn't a trivial burden to ask the developers to take on. If people could handle arbitrary complexity, as long it was correct, then there would be no need for design.
Linus said (in the context of Reiser4):
He doesn't say that Reiser4 is bad or insane. He said it isn't necessarily sane, which means that nobody on the kernel team can (so far) verify its sanity. Obviously he and other kernel developers are smart guys who could eventually figure it out. But, it would take effort, and he is making the very realistic point that adding a new set of interfaces is unacceptable if it results in the kernel team not completely understanding one part of the kernel.
Hans Reiser has effectively said many times that HE is smart enough to understand Reiser4 and have confidence in it, and the kernel developers should either do their homework (if they're smart enough) or leave it to him (if they aren't smart enough), which is an absolutely insane way to develop software. The kernel team is responsible for the kernel -- they have to be able to vouch for Reiser4 themselves. They also have to be selective about what kind of work they take on. It seems to me (once again, speaking from a position of ignorance) that the steps requested by the kernel developers (better adherence to coding standards, more polish, answers to technical challenges) are all steps that would assist the kernel developers in understanding Reiser4 and verifying its suitability for inclusion.
You can see that it is Reiser4's violation of the current Linux design that creates the extra complexity and makes it difficult for the kernel developers to sign off on it. I'm sure that if they are being more fastidious than usual about coding style and so forth, it is to mitigate the huge risk inherent in bypassing the current design and thereby doubling (at least) the difficulty of assuring the correctness of Linux's filesystem code.
Having a coherent design is what allows people to reason about the system as a whole. Breach the design, and suddenly nobody can say anything about anything without tracking down and understanding all of the code involved. Commercial companies do this all the time when playing catch-up with rivals, because they have to retain their customers at all costs, but they suffer terribly for it in maintenance costs and stability. There's no reason in this case for Linux to take the fast, self-destructive route. Linux can wait for a coherent solution, even if it is years coming.
I like your title, and I like Linux's approach. The usual approach, especially in commercial software, is to give the users everything they want, no matter how many technical assets need to be sacrificed. Throw away good design, security, and reliability just to get the latest bullet point. That isn't what the Linux community wants. They want things done right, even if it takes a few years to figure out how. Windows is a good example of saying "yes" by default to every demand and ending up with a system so complex and fragile that even gurus don't understand it. (I'm thinking of the recent Raymond Chen blog entry that hit Slashdot, in which he admitted to releasing a bogus Windows patch because he didn't understand how Windows processes shut down.)
OpenGL is supported on Windows and many other platforms. The Doom3 engines uses OpenGL. (OpenGL is an industry standard whose origins predate Linux. Like every other industry standard, Microsoft is trying to kill it, but they haven't succeeded yet.) The Doom3 engine is proof that even the most technically demanding games can be developed cross-platform for Windows and Linux.
The article you linked to discusses the rate of content creation on Web 2.0 sites, which in my experience is a better proxy for narcissism than intelligence.
That's a new one on me, though I've heard C++ programmers refer to any C++ idioms popularized since 1995 as "Java-style programming," even when it is impossible to use those idioms in Java. Somehow people get the idea that C++ should feel like C, and when it doesn't, there must be some insidious influence at work.
That's an excellent point. I personally like the old web site formula, which I don't see much these days, of designing the default front web page for total noobs and making another front page for regular visitors. Beginners looking for help end up at the right place, and regular visitors bookmark the news and updates page.
It bothers me that everyone uses man, but so many man pages say, "This man page is incomplete; see the info page for complete details."
Shouldn't doc writers acknowledge that info hasn't displaced man and isn't likely to do so?
To access the code for a source file, use the "cat" command:
To see the code documentation for the file, you also use the echo command:
To see the user documentation, use the cat command:
You can always fill in a section with something useless.
I remember in school that teachers gave much better grades for a bit of empty blabbing than for a missing answer. I assume that commercial doc writers are held to much the same standard.
A blank section might look worse, but at least it's honest.
Should the school system have harmed my education to stop me doing those things?
Now pretend my education didn't matter, and all that matters is that the school maintains order and security. Even by those standarsd, it is counterproductive to mete out disproportionate punishments. Teachers and school officials shouldn't try to pretend that they have more control than they do. Whether they like it or not, they are dependent on the judgment and good will of the students. Those are the fundamental elements that ensure the security of the school. Teachers and school officials are responsible, as leaders and educators, for fostering those elements.
Making punishment proportional to the real damage or danger incurred helps maintain trust and good will. It lets the kids know that the teachers aren't just arbitrary fascists, and it funnels them towards mostly harmless mischief. There were a handful of teachers at my school who could issue serious rules that we would obey even if we didn't agree with them. Those were the teachers who weren't really threatened by our harmless mischief. We knew they would punish us if they caught us, but we also knew they were concerned for our well-being, our education, and the well-being of the school, not their own authority. Mostly they just rolled their eyes and expressed mock exasperation when they found out about one of our pranks but couldn't pin it on us. When those teachers spoke seriously, we listened and obeyed, even if we felt they were being harsh or unreasonable. They had real authority over us, which we freely granted. (We also liked those teachers enough that we never risked getting them in trouble, unless they were in on it.)
The teachers who wanted to control us by establishing authority, who felt
Science is not as much about airtight logic and proof as you think, but I wasn't making a scientific argument anyway. I didn't claim that science has proved the nonexistence of psychic abilities. The fact that you read that into my statement, that you thought it was a reasonable statement to expect, shows a misunderstanding of science. My logic and my claim weren't scientific at all, just as your claims and your logic aren't. Your only appeal to science is to point out that *I* can't use it. I thought it was obvious that "Science works" is not a statement that can be scientifically tested, and hence I was not claiming to have established my argument by scientific means. Also, the form of my last argument was an explicit proof by failure of imagination, which is famous as a logical fallacy. That should have clued you in that I was not employing strict mathematical logic, either, but rather another form of persuasion.
My point is a metascientific one, which (like yours) cannot claim to have the credibility of science nor the rigor of mathematical logic. I claim that scientific investigation is very effective at uncovering phenomena, documenting their patterns, finding ways to reproduce them, and hence making it possible to exploit them for practical purposes. For the rest of my argument, I refer you to my original post and encourage to read it in a different spirit. I'm comfortable with my statements, despite not having established them either scientifically or mathematically.
Yeah, I was a teenage nerd once too. I read speculative fiction (still do), and can hardly be unaware of the various loopholes used to set stories about psychics in societies ignorant of psychic phenomena. Once again, you misunderstand the nature of my argument. I was not trying to make an airtight argument that you can't find ways around. Verbal logic isn't a mechanical means to truth; it's a competition of skill and cleverness that may have the side effect of improving understanding. If you don't understand this yet, you'll understand it the first time you argue with somone trained by Jesuits. Halfway through, while you're getting your ass handed to you, offer to switch sides and watch him regain the advantage for your position about as easily as a trained wrestler would defeat you from an inferior position.
My argument was not meant to defeat you by an objective measure and compel you to unwillingly abandon a position you are determined to hold, but to sway your judgment. This issue is in a domain where mathematics does not suffice. Even science depends ultimately on judgment, so I am not as far from science as you say, but your quibbles cannot be defeated scientifically. (As a learning experience, construct similar quibbles that make it impossible to prove that AIDs is caused by HIV, lions aren't descended from Homo sapiens, and people aren't accompanied by invisible daemons that decide who they're going to fall in love with. In each case, you can reach implausibility, but not impossibility.)
So, having made my arguments, I'll leave it to your judgment how seriously to take the p
Science works. Get over it.
Far from being killed by scientific skepticism, psychic abilities have been given more than a fair trial. Any strictly scientific idea with the track record of psychic abilities would have been abandoned a long time ago, but psychic abilities have a special appeal that guarantees continued scientific testing. The appeal of psychic abilities has a rational side -- the enormous advantage they would confer on the first person or group to master they, or the enormous fame they would confer on the first scientist to verify them reproducibly. Even the CIA funded research into psychic methods. You don't think those richer-than-God Wall Street trading firms haven't put a million here and a million there into psychic research on an executive's whim? If anyone could discover psychic ability, they could, and I doubt they could keep it secret for long.
If any psychic abilities similar to the ones people believe in (ESP, remote viewing, telekinesis, the "sixth sense") really existed, they would be routinely exploited to do practical things. Instead, the field is dominated by famous fakes who make money not by their ability to do anything useful but by exploiting people's eagerness to believe. How can you reconcile the current disbelief in psychic phenomena with the idea that there are many people who have legitimate awareness of them?
I can imagine that a pure idealist who knows about psychic abilities might be so loopy and air-headed that he comes off as a kook and can't share his knowledge with the world.
I can imagine that a greedy person who knows about psychic abilities might exploit them in secrecy.
I can imagine that a very private person who knows about psychic abilities might not share them out of fear of becoming a public spectacle.
I can imagine that an ambitious scientist who knows about psychic abilities might keep them secret to hold off competitors until he completes a book or research paper.
I cannot imagine that every person who has ever had legitimate awareness of real psychic abilities has been unwilling or unable to convince the rest of the world of their existence.
Users won't blink at an easy install from a trusted source: Microsoft for Windows and its apps, the distro repository for Linux and its packages, and the application distributor for application updates (e.g., Mozilla for Firefox users.) The only obstacle is getting your platform into enough of those trusted places that you have enough of your target users covered.
Maybe nobody will pay for improvements, but they'll keep installing the updated versions. Most users automatically click "Yes" when prompted, "Software updates have been downloaded. Install?"
If you ran a large business, and your mainframe payroll or inventory program popped up a message offering to install updates, you would probably not only click "No," you would run around the office screaming, "DON'T CLICK YES! NOBODY CLICK YES!" You would be panicked by six fears:
1. Loss of stability.
2. Downtime during the upgrade.
3. Data corruption and loss due to the upgrade.
4. Interface changes that inadvertently disable critical functionality.
5. Retraining costs.
6. Getting billed a gazillion dollars for this damn upgrade that you didn't want in the first place.
These are all reasonable fears that apply much less to, say, Firefox updates. Firefox updates rarely hurt stability, they involve practically no downtime, they don't include interface changes that break existing habits, they've never corrupted my bookmarks or settings, the retraining cost is minimal (and underestimated by users anyway), and they're free. These are all implicit assumptions that users have been trained to expect by sophisticated, professional developers. As long as developers live up to those expectations, they are free to upgrade the programming platform as much as they want.
In fact, I would say that if many users click "No" when prompted to update your program, then your users are extremely dependent on the stability of your program, or you've done something very bad to lose their trust.
Geek and nerd used to be synonymous. The meaning of geek you describe was invented by geeks to reclaim the word geek, kind of like the queer community reclaimed the world "queer," except that the queer community didn't have to change the meaning of the word, merely the attitude behind it, since they were fine with being queer.
Unlike the gay-bi folks who reclaimed the word "queer," the geeks who reclaimed "geek" were self-haters. They were ashamed of being socially inept, excluded, and driven to alternative worlds by their treatment in this one. Fortunately, there were positive aspects of geekiness, so they simply threw out the negative characteristics and stressed the positive ones.
Ultimately, this will backfire. By attempting to erase their negative attributes, the geeks (nerds) will end up losing their claim on the positive attributes once associated with them. They will be defined solely by their negative characteristics. (I am serious about this. Bear with me while I explain.)
The rest of the world bears so little ill-will toward geeks (unlike queers, whom homophobes hate passionately) that they allowed geeks to redefine the word geek. After all, geeks (sorry, nerds) weren't trying to shoulder their way into the circles they were excluded from. Society didn't want nerds to be condemned and repressed; they just didn't want the nerds asking them for dates, sitting with them at lunch, and trying to go to their parties. Most nerds are quite happy living without those things, especially now that they have a positive label for themselves. Since nerds accept the boundaries imposed on them, society feels no need to remind them of what make them different.
(Technology nerds have been successful in business, where successful is idempotent with welcome, for over a century, maybe much longer. The rise of Bill Gates et al. was not an invasion of new territory.)
Ironically, stripping the negative aspects out of the word "geek" made it possible for non-inept, non-excluded people to accept the geek label and still enjoy their status as full-fledged people. That means that the excluded and inept can no longer comfort themselves with their geek status, because all the cool aspects of geekdom have been invaded by good-looking and/or confident people who are able to understand the mysteries of human interaction.
Geeks (ack! again, I mean nerds) no longer have any safe haven or any unique reason to live. They can't claim that the world would fall apart without them, except in the same sense that immigrant laborers can. (Who else is willing to pick strawberries and do the IT grunt work?) They can't even confidently stay out of the danger zone anymore. That guy with the faded Space Invaders shirt might look like a good guy for a nerd to talk to, but it's possible -- nay, likely -- that he is a normal person who will be put off by the nerd's social clumsiness, resulting in awkwardness and humiliation. Conversely, a badge of identity such as a D&D shirt that might in the past have protected a nerd from being approached by people with normal standards of social aptitude no longer conveys any protection. There is nothing for a nerd to do but attempt social intercourse and hope his interlocuters will not be horrified, or at least protect his dignity by hiding their horror.
I predict that a new way of labeling and sorting people will arise that will help protect normal and socially defective people from uncomfortable interactions. Naturally, the normal folks want to seem (and feel) fair, compassionate, and justified, so the criteria for exclusion, while remaining the same as ever, will be described in terms of mental illness and emotional intelligence. Mental illness will be cited in order to point out that social incompetence makes people dangerous, both in trivial ways (inappropriate, annoying behavior) and serious ones (stalking, spree killing). Emotional intelligence will be invoked whenever it is necessary to place responsibility for the exclusion on
Because of the mod categories and metamoderation, Slashdotters mostly express their opinions by modding up rather than down. Often this results in the best posts for each point of view being rated +4 or +5 -- an excellent result that makes it worthwhile to read at +4 and +5 when you don't have much time.
Someone famous once said that a leader who flinches from war is a danger to his nation, but a leader who does not fear and loathe war with every fiber of his soul is an even greater danger.
Engineers, complexity, you see what I'm getting at. By the way, I did Java full-time for a few years, but most of my professional development work has been in C++, so I'm aware that Java is a relatively simple language.
Funny you should say that, because Java makes much more sense when you know a little bit of history. Compare Java:
class HelloWorldApp {
public static void main(String[] args) {
System.out.println("Hello World!");
}
}
to Python:
print "Hello World!"
Most of the extra elements of the Java program would have to be explained as responses to the difficulties of large-scale software construction, colored by the need to appeal to C++ programmers. Java is an industrial language, a bastard child of brilliant-but-minor languages, engineering tradeoffs, and marketing considerations. There are about 23 characters on the third line that would make sense to a beginner. The rest of the program owes its existence to engineering and marketing considerations that are of no interest and no value for a beginning programmer.
"What's with all the other weird stuff, professor?"
"What's with all that weird stuff, you ask? Well, Guy Steele said, 'We were after the C++ programmers. We managed to drag a lot of them about halfway to Lisp.' What that tells you is that Guy Steele thinks garbage collection is as important as all the other innovations of Lisp combined. Hee hee hee. He may be right. In answer to your question, just ignore all the weird stuff. It will all make sense in about two years, sooner if you do a lot of programming."
To go back to the ABCs analogy, Java is littered with history and very sound technical details, like a dictionary. A dictionary is a pretty darned good source on the ABCs, and when adults have adult problems with their ABCs, they can often find the answer in a dictionary, just like Java is a great tool for solving lots of realistic, grown-up problems. I contend that using Java to teach programming is like using The American Heritage College Dictionary to teach little kids their ABCs.
"Okay class, you're going to see a lot of things you don't understand. Just ignore it and focus on the things I tell you are important. Open your dictionaries to the first letter. Do you see it? It's an A. No, not that one, the first big letter, the first letter on page 1. Okay, I admit they're all pretty small. Just find the first letter on page 1. No, now you're looking at the blank page before the title page. There aren't any letters on that page. You're right, that page is the first page, but page 1 isn't the first page. It's actually well into the book. Close, that's page i. i looks like 1, and it actually means 1 here, just not the 1 I want. But you're doing well. You're getting there. Yes! There it is. That's page 1, and the first letter is A. The second letter? The second letter is a, too. A and a. I know they look different; they are kinda different, but the first and second letter are both A. No, the second letter of the alphabet is B. B is on page 98."
See how easily extraneous detail can derail a beginner? The ability to filter out extraneous information is a learned skill that is specific to a context. Sup
Sometimes it matters. Coming to a conclusion about "Linux-the-kernel" and applying that conclusion to "Linux-as-a-platform" is fallacious. They're two different and somewhat incompatible uses of the term. People will tolerate any reasonable usage of "Linux" as long as it does not lead you to incorrect conclusions.
Also, how many people understand that Windows is not a platform? When people think of the "Windows platform" these days, if I understand correctly, they mean win32.
According to the book Peopleware, engineers left to themselves provide higher quality than customers are willing to pay for. When competition comes, managers crack down and force engineers to cut quality down to just above the point that drives customers away.
(Peopleware says that in software, this is ultimately more expensive than letting developers work to their on standards of quality. That doesn't apply in this situation, though.)