Well, where we're going, according to the people who want to sell it to us.
Whether it is actually "where we're going" depends on what people actually want. If people don't actually want it, it will go the way of "pointcast". Technologies in search of users.
I have no doubt that people will do all kinds of amazing stuff online in the future. I also have no doubt that anyone other than an utter recluse will use it for everything.
When I got to work at home, and thus never really had to leave the house during the day, I was in paradise. However, I also found myself running to the store for lunch, for no other reason then to get a little human contact.
the good side is she can now prepare documents far, far faster than anyone else can
That is not particularly uncommon. Most of the changes that would be required are actually in the companies' own best interest, but the PHBs in charge are too clueless to figure it out. Much of this is because the cost of a better keyboard is obvious on the balance sheet while the productivity loss an employee suffers because typing is painful is invisible.
It is similar to the way study after study has shown that programmers working in offices with closable doors have two or more times the productivity. And yet 95%+ of us are still stuck in cubicles.
Yeah, and if the I feel like modifying a bunch of GPL'd software, sell it for lots of money and keeping the source private, well, you all can just get over it because keeping source public is annoying...
(Halt the flame throwers. I don't really think that.)
The same thing that makes the posted NY Times article illegal makes the above illegal. You can hardly demand legal protection for your rights while trampling over the rights of others.
And don't forget to use global variables to pass data to functions. (Parameters are so passe). And to save space, name them 'i', 'j' and 'k'. But don't worry, you can still declare a local 'i' for loops as long as you don't need the global one.
(Don't laugh. I found this in real code. I found this in real code that had been cloned into 30 different files.)
In naming functions, make heavy use of abstract words like it, everything, data, handle, stuff, do, routine, perform and the digits e.g. routineX48, PerformDataFunction, DoIt, HandleStuff and do_args_method.
Oh, and a great way to avoid long functions is to break them apart like this:
BONUS: With compact hungarian notation, you can become even more descriptive! So really the above becomes:
And if you have to change a variable's type, don't bother changing the prefix. It is just a guideline anyway. and changing all occurances would be a pain (Real programs don't use search and replace):
My boss couldn't understand why I wanted to leave after being told that they wouldn't "bother me" with project leadership tasks on the new, high-profile Windows NT, COM+ project so I could have more time to maintain a ten year old poorly written OS/2 system that was being phased out. (I was the only one who understood it.)
And don't forget to make sure that those traces are in tight loops so that if you attempt to add your own you are greeted with the following:
in loop in loop in loop in loop in loop in loop in loop in loop in loop in loop in loop in loop in loop in loop in loop in loop (repeated 100 times more each second)
At one company I worked at, we literally spent a month trying to fix a bug that boiled down to telling the difference between the strings:
"PROFILE_ADMIN_BLAH_BLAH_BLAH"
and
"PROF1LE_ADMIN_BLAH_BLAH_BLAH"
This was in the old DOS days, and the font, as you can probably guess, used the exact same representatin for "I" and "1".
Which brings me to another rule. (Haven't checked the list. It's slashdotted, so this may be redundent.) Replace all your macro constants, which are checked at compile time with strings that are checked at runtime. Don't laugh. I ran into a very large project that did this, and to make matters worse, did the following literally hundreds of places in tight loops:
Tag = PROFILE_ADMIN_BLAH_BLAH_BLAH /* Lots of code */ if( !strcmp(PROFILE_ADMIN_BLAH_BLAH_BLAH, Tag) ) { /* Do lots of equally inane stuff */ }
The good news was that I had been called in to "optimized". Management was amazed that I was able to dramatically speed up program execution. Sometimes other people's crappy code can be good for your career.:)
Sanity's post did not deserve to be moderated down. Inaccuracies deserve responses, not negative moderation. What his post deserved was Tom Christiansen's response. Moderate that up.
"Flamebait" is the deliberate provocation of a flamewar. Sanity's did not seem to me to be that, and if I get the chance the metamoderate, I'll make the "unfair" call. It raised a point that was worth raising, if for nothing else, because of the response it engendered.
Unfortunately, some seem to take the moderation system as a way to dock people for unpopular opinions. This is not the first time I've seen a post moderated down because it said something negative about Linux or postive about Microsoft. That is not good, and only serves to inspire the kind of group think that would make a site such as this worthless. There is a reason that are no "wrong" or "stupid" or "bothers me" moderation options. We should only be preventing abuses. Abuses like offtopic posts or intentional flamebait.
Believe me, if a post rated '1' is followed up by a contradicting post rated '5', the message is there. Docking people who have good intent is just spiteful.
(I also find it very sad that someone felt compelled to moderate down Mawbid's objection to the moderation. I suppose I'll be next...)
Why are the goals of accuracy and speed mutual exclusive?
One thing that a good software engineer should know is that when optimizing, it is important to only spend time optimizing the critical parts of the system. You don't want to waste time (and potentially introduce bugs) attempting to optimize something that is only running 1% of the time.
People forget that there are two parts to this system. One part creates packets. The other part (the client we are all concerned about) processes them.
If you look at Seti's stats, you will quickly see that the second part is processing packets twice as fast as the first part can produce them. Given that, there is absolutely no point in optimizing the second part until you have optimized the first part to the point where it can produce packets twice as fast. In other words, improving client performance by, say, 50%, gains Seti absolutely nothing. Nothing. Nada. Zip. The critical task is still packet production, not packet processing. Given that, it is simply a waste of time to try to optimize the client. Given that, the risks involved are simply not worth it.
Seti@home gains nothing from faster clients. The only people who gain are people who want higher scores, or people who want their chosen platform to look better. Seti@home sure as hell shouldn't be concerned with either of those things.
If you really want the code opened, my suggestion is to figure out a way for Seti@home to do so in such a way that they can gaurantee that blocks only come from specific versions they've approved.
...since what would be the point of doctoring the code to produce the same negative result that most other people are already getting.
You are assuming that any mistakes will be intentional. I think what Seti is worried about is having someone who doesn't quite understand the fast fourier transform making a "minor" modification to speed up the algorithm. This could cause a false negative, which would pretty much impossible to discover without rerunning all results.
Now, "Open-Source" is suppose to catch bugs, but it only catches bugs if the source is made public. Normally, if I download the kernel, and make some changes, well, any bugs are my problem. Obviously no one else is going to use those modifications without scrutinizing them closely. That is why open source works. But that is not the case, here. If I modify the source to Seti, I could potentially screw up the whole damn thing without anyone seeing my source code modifications. There is no "power of open-source" there.
You have to look at this system not as a bunch of clients running everywhere but as a single, huge multiprocessor computer running a single program. You don't want to go around changing your software while the program is running unless you have a damn good reason.
The other mistake people make is in thinking that the Seti client needs improving. The trouble is that they don't necessarily have the same goals as the Seti project itself. Too many people are worried about their "score" and how well they, or their group, does in the rankings. Hence, most modifications people want to make involve speeding up the clients. But that is not necessarily the goal of Seti. Seti is, first and formost, about getting good results, not about having really bitchin' fast clients. From what I've seen, there are more than enough clients to get Seti the results it needs. From their perspective, there is simply no need to improve the client. As long as the FFT algorithm is working and they are getting enough results back, any change is simply not worth the risk.
Sending results to multiple PCs is an interesting idea, but it seems to me to be asking the Seti people to a) halve their throughput and b) put extra time and effort in, all just to satisfy people who want to muck with things. It seems to me that if we are saying that there is so much extra computing power that we can afford to halve our throughput, then any improvements that might speed results on the client end simply are not needed.
This is a two year project, but presumably, given the success, there will be a Mark II. My feelings is, save the suggested improvements for Mark II.
1) Corel did exactly the right thing. (Except for non-English support, which is correctable.)
2) I likely won't install Corel Linux myself.
Those two things aren't contradictory. Corel is trying to go after the Windows market. It sounds like they did exactly what they needed to do to go after the average nontechnical Windows user. This is very good for them, and, I think, very good if you want to see Linux on the desktop. However, this does not mean that this is a distribution for your or I or pretty much anyone who reads/. to install. That's ok. We've got plenty of good distributions to choose from.
That's the advantage of the Linux model. Choice.
Probably most of the people who install Corel Linux (assuming the marketting is appropriate) will never care anything about what's underneath, and will see it merely as a cheaper, more stable system that does what Windows does. That's ok. Grandma doesn't want to know what a tarball is. And perhaps a small percentage will eventually want to dig under the covers.
All that "Computer Scientist" stuff was just a cover. He was actually an agent sent from the far future to prevent the 1965 nuclear exchange between a downtrodden US and a Nazi controlled Europe.
People complain about the time it takes to get DSL, but in many cases, it is just a matter of infrastructure, and not some sort of nefarious plot. You can't change a nation's wiring overnight.
Is this a matter of arrogance, or merely incompetance? I don't really know... But what I do know is that things like this are bound to happen given the spaghetti-like nature of the Windows OS. When you've got random hooks running to and fro, with technical decisions being made for marketting reasons, as in Windows, it is more amazing that things work at all then that they fail in peculiar ways.
I know that my own company's products have had troubles with certain service packs, and Bill Gates doesn't even know who the hell we are. The problem is the monolithic nature of the OS and the determination of Microsoft to sacrifice real backwards compatibility for marketting reasons.
Since there is a good chance that this will hit the Supreme Court before all is done, what is the current attitude of the sitting court in regards to anti-trust cases?
Also, what are the chances that this will get some sort of fast track to the Supreme Court? Is a ten year set of appeals inevitable, or could we conceivably be done in a year?
(I seem to remember that the original Diablo missed Christmas, too.)
Actually, I always like to hear this "Game X is late" stories. It means that there won't be an early, bug-infested release. Better to get it right then get it now.
...we're going, according to all the studies.
Well, where we're going, according to the people who want to sell it to us.
Whether it is actually "where we're going" depends on what people actually want. If people don't actually want it, it will go the way of "pointcast". Technologies in search of users.
I have no doubt that people will do all kinds of amazing stuff online in the future. I also have no doubt that anyone other than an utter recluse will use it for everything.
When I got to work at home, and thus never really had to leave the house during the day, I was in paradise. However, I also found myself running to the store for lunch, for no other reason then to get a little human contact.
the good side is she can now prepare documents far, far faster than anyone else can
That is not particularly uncommon. Most of the changes that would be required are actually in the companies' own best interest, but the PHBs in charge are too clueless to figure it out. Much of this is because the cost of a better keyboard is obvious on the balance sheet while the productivity loss an employee suffers because typing is painful is invisible.
It is similar to the way study after study has shown that programmers working in offices with closable doors have two or more times the productivity. And yet 95%+ of us are still stuck in cubicles.
Damn.
(Someone who works in the very real Dublin, California.)
Yeah, and if the I feel like modifying a bunch of GPL'd software, sell it for lots of money and keeping the source private, well, you all can just get over it because keeping source public is annoying...
(Halt the flame throwers. I don't really think that.)
The same thing that makes the posted NY Times article illegal makes the above illegal. You can hardly demand legal protection for your rights while trampling over the rights of others.
(Don't laugh. I found this in real code. I found this in real code that had been cloned into 30 different files.)
In naming functions, make heavy use of abstract words like it, everything, data, handle, stuff, do, routine, perform and the digits e.g. routineX48, PerformDataFunction, DoIt, HandleStuff and do_args_method.
Oh, and a great way to avoid long functions is to break them apart like this:
(more real code.)
And if you have to change a variable's type, don't bother changing the prefix. It is just a guideline anyway. and changing all occurances would be a pain (Real programs don't use search and replace):
I had to quit my last job because of this.
My boss couldn't understand why I wanted to leave after being told that they wouldn't "bother me" with project leadership tasks on the new, high-profile Windows NT, COM+ project so I could have more time to maintain a ten year old poorly written OS/2 system that was being phased out. (I was the only one who understood it.)
And don't forget to make sure that those traces are in tight loops so that if you attempt to add your own you are greeted with the following:
in loop
in loop
in loop
in loop
in loop
in loop
in loop
in loop
in loop
in loop
in loop
in loop
in loop
in loop
in loop
in loop
(repeated 100 times more each second)
At one company I worked at, we literally spent a month trying to fix a bug that boiled down to telling the difference between the strings:
:)
"PROFILE_ADMIN_BLAH_BLAH_BLAH"
and
"PROF1LE_ADMIN_BLAH_BLAH_BLAH"
This was in the old DOS days, and the font, as you can probably guess, used the exact same representatin for "I" and "1".
Which brings me to another rule. (Haven't checked the list. It's slashdotted, so this may be redundent.) Replace all your macro constants, which are checked at compile time with strings that are checked at runtime. Don't laugh. I ran into a very large project that did this, and to make matters worse, did the following literally hundreds of places in tight loops:
#define PROFILE_ADMIN_BLAH_BLAH_BLAH "PROFILE_ADMIN_BLAH_BLAH_BLAH"
Tag = PROFILE_ADMIN_BLAH_BLAH_BLAH
/* Lots of code */
if( !strcmp(PROFILE_ADMIN_BLAH_BLAH_BLAH, Tag) )
{
/* Do lots of equally inane stuff */
}
The good news was that I had been called in to "optimized". Management was amazed that I was able to dramatically speed up program execution. Sometimes other people's crappy code can be good for your career.
Sanity's post did not deserve to be moderated down. Inaccuracies deserve responses, not negative moderation. What his post deserved was Tom Christiansen's response. Moderate that up.
"Flamebait" is the deliberate provocation of a flamewar. Sanity's did not seem to me to be that, and if I get the chance the metamoderate, I'll make the "unfair" call. It raised a point that was worth raising, if for nothing else, because of the response it engendered.
Unfortunately, some seem to take the moderation system as a way to dock people for unpopular opinions. This is not the first time I've seen a post moderated down because it said something negative about Linux or postive about Microsoft. That is not good, and only serves to inspire the kind of group think that would make a site such as this worthless. There is a reason that are no "wrong" or "stupid" or "bothers me" moderation options. We should only be preventing abuses. Abuses like offtopic posts or intentional flamebait.
Believe me, if a post rated '1' is followed up by a contradicting post rated '5', the message is there. Docking people who have good intent is just spiteful.
(I also find it very sad that someone felt compelled to moderate down Mawbid's objection to the moderation. I suppose I'll be next...)
Why are the goals of accuracy and speed mutual exclusive?
One thing that a good software engineer should know is that when optimizing, it is important to only spend time optimizing the critical parts of the system. You don't want to waste time (and potentially introduce bugs) attempting to optimize something that is only running 1% of the time.
People forget that there are two parts to this system. One part creates packets. The other part (the client we are all concerned about) processes them.
If you look at Seti's stats, you will quickly see that the second part is processing packets twice as fast as the first part can produce them. Given that, there is absolutely no point in optimizing the second part until you have optimized the first part to the point where it can produce packets twice as fast. In other words, improving client performance by, say, 50%, gains Seti absolutely nothing. Nothing. Nada. Zip. The critical task is still packet production, not packet processing. Given that, it is simply a waste of time to try to optimize the client. Given that, the risks involved are simply not worth it.
Seti@home gains nothing from faster clients. The only people who gain are people who want higher scores, or people who want their chosen platform to look better. Seti@home sure as hell shouldn't be concerned with either of those things.
If you really want the code opened, my suggestion is to figure out a way for Seti@home to do so in such a way that they can gaurantee that blocks only come from specific versions they've approved.
...since what would be the point of doctoring the code to produce the same negative result that most other people are already getting.
You are assuming that any mistakes will be intentional. I think what Seti is worried about is having someone who doesn't quite understand the fast fourier transform making a "minor" modification to speed up the algorithm. This could cause a false negative, which would pretty much impossible to discover without rerunning all results.
Now, "Open-Source" is suppose to catch bugs, but it only catches bugs if the source is made public. Normally, if I download the kernel, and make some changes, well, any bugs are my problem. Obviously no one else is going to use those modifications without scrutinizing them closely. That is why open source works. But that is not the case, here. If I modify the source to Seti, I could potentially screw up the whole damn thing without anyone seeing my source code modifications. There is no "power of open-source" there.
You have to look at this system not as a bunch of clients running everywhere but as a single, huge multiprocessor computer running a single program. You don't want to go around changing your software while the program is running unless you have a damn good reason.
The other mistake people make is in thinking that the Seti client needs improving. The trouble is that they don't necessarily have the same goals as the Seti project itself. Too many people are worried about their "score" and how well they, or their group, does in the rankings. Hence, most modifications people want to make involve speeding up the clients. But that is not necessarily the goal of Seti. Seti is, first and formost, about getting good results, not about having really bitchin' fast clients. From what I've seen, there are more than enough clients to get Seti the results it needs. From their perspective, there is simply no need to improve the client. As long as the FFT algorithm is working and they are getting enough results back, any change is simply not worth the risk.
Sending results to multiple PCs is an interesting idea, but it seems to me to be asking the Seti people to a) halve their throughput and b) put extra time and effort in, all just to satisfy people who want to muck with things. It seems to me that if we are saying that there is so much extra computing power that we can afford to halve our throughput, then any improvements that might speed results on the client end simply are not needed.
This is a two year project, but presumably, given the success, there will be a Mark II. My feelings is, save the suggested improvements for Mark II.
I have two reactions to this:
/. to install. That's ok. We've got plenty of good distributions to choose from.
1) Corel did exactly the right thing. (Except for non-English support, which is correctable.)
2) I likely won't install Corel Linux myself.
Those two things aren't contradictory. Corel is trying to go after the Windows market. It sounds like they did exactly what they needed to do to go after the average nontechnical Windows user. This is very good for them, and, I think, very good if you want to see Linux on the desktop. However, this does not mean that this is a distribution for your or I or pretty much anyone who reads
That's the advantage of the Linux model. Choice.
Probably most of the people who install Corel Linux (assuming the marketting is appropriate) will never care anything about what's underneath, and will see it merely as a cheaper, more stable system that does what Windows does. That's ok. Grandma doesn't want to know what a tarball is. And perhaps a small percentage will eventually want to dig under the covers.
Hey, how do you think Turing cracked Enigma?
All that "Computer Scientist" stuff was just a cover. He was actually an agent sent from the far future to prevent the 1965 nuclear exchange between a downtrodden US and a Nazi controlled Europe.
There are benefits to living in a small country.
People complain about the time it takes to get DSL, but in many cases, it is just a matter of infrastructure, and not some sort of nefarious plot. You can't change a nation's wiring overnight.
Is this a matter of arrogance, or merely incompetance? I don't really know... But what I do know is that things like this are bound to happen given the spaghetti-like nature of the Windows OS. When you've got random hooks running to and fro, with technical decisions being made for marketting reasons, as in Windows, it is more amazing that things work at all then that they fail in peculiar ways.
I know that my own company's products have had troubles with certain service packs, and Bill Gates doesn't even know who the hell we are. The problem is the monolithic nature of the OS and the determination of Microsoft to sacrifice real backwards compatibility for marketting reasons.
If you were a lawyer for Microsoft, what would you advise them to do?
FDR did that, but I seem to remember that it required a constitutional amendment to do it. Not the sort of thing that is likely to happen again.
Since there is a good chance that this will hit the Supreme Court before all is done, what is the current attitude of the sitting court in regards to anti-trust cases?
Also, what are the chances that this will get some sort of fast track to the Supreme Court? Is a ten year set of appeals inevitable, or could we conceivably be done in a year?
Around the same time, there was definitely an adventure, which was a kind of text based "Leisure Suit Larry" type game, where the quote comes from.
I think the game you are talking about is "Soft-Porn Adventure", which was later revamped, had pictures added, and became "Leisure Suit Larry I".
Can the same be said of Windows 2000, I wonder?
Better not to get that at all!
My wife must have paid someone off.
(I seem to remember that the original Diablo missed Christmas, too.)
Actually, I always like to hear this "Game X is late" stories. It means that there won't be an early, bug-infested release. Better to get it right then get it now.
No, the fact that he acted exactly like the person he was protrayed as by the people who were attacking him.
It was still a stupid way to respond. There are a lot of us that don't know squat about what happened and haven't made up our minds.
Or, should I say, "hadn't".
...which was (so far as I can tell) perfected in the late 1980s...
Late 1970s actually. Andy Kaufman as "Latka". All the rest was derivative.