Do you really think most people use Linux for the sole reason that it crashes less than Windows? I think most people use Linux (on the desktop) because they are interested in the structure of an operating system and like having the opportunity to tweak it at the source level. Some people use Linux because they agree with its ideals and not with Microsoft's. Some people use Linux because it comes with free development tools. Some people use Linux because it doesn't cost them anything to upgrade. Some people use Linux because it's "cool". There are millions of reasons people use Linux, and (in my opinion) it being "more stable than Windows" is probably the least important. I'm sure they see it as a bonus, but i doubt it was the original reason they switched in the first place.
Sir, you are smoking crack. I had a Win98 installation that ran for nigh on four years before i sold the PC - i never had to reinstall, and it barely ever crashed either. My current WinME installation has been running for at least six months with no problems, in spite of my installing various DOS-specific and Win2000-specific code onto it (Hacking Windows Is Fun(tm)). The only time it crashes is when i run said DOS-specific code, and i've already spoken about that. (Certain old games need all kinds of voodoo to get them working.)
My XP installation at work has run sweet for a year and never crashed, ever. Previously i tried running Linux on the desktop at work and X crashed repeatedly, sometimes to the point where i couldn't even switch to a terminal to kill the process. In my experience Linux MORE unstable than NT for desktop apps, though i would agree for the server it's a lot smoother (not needing to reboot as often is a Godsend). When it comes to GUIs, the whole "Linux is more stable" argument really goes out the window. Pun intended.
Out of curiosity, is there any reason they can't just go through their source code, line by line, looking for potential buffer overflows?
Yes. Because this has nothing to do with buffer overflows in the Windows API. If a piece of application code starts wandering around directly accessing hardware and calling interrupts for breakfast, lunch and dinner (like all DOS games, many DOS apps and a few Windows apps do) there is nothing Windows 9x can do. Windows sits on top of DOS as an application. Because DOS doesn't multitask, it doesn't have any sense of managing memory or resources for each application. This means any Windows applications have to exclusively call the Windows API, which Windows then translates all back into DOS interrupts so DOS can do its thing. It's pretty fookin' clever if you think about it, but on the other hand, it does introduce a lot of instability - doing multitasking and multithreading and so on in userland instead of the kernel. But that's what you get for running 9x. NT is completely different and doesn't have these problems, and seriously, Windows crashing can't have bothered you THAT much or you would've tried NT by now.
And if you say the "system has become either busy or unstable" error is an understandable result of a poorly written program (I was running Netscape 4.7), then I'd like to point out that in a properly multitasking environment (like any UNIX-based system), you can kill any process, right up to the one stuck in an infinite loop, therefore taking 99.99% of my 200MHz computer's CPU time.
I know this might seem odd, but i consider this a feature, not a bug. If you want proper multi-tasking, use NT - it's been around since at least 1995. In NT/2000/XP you can invariably kill the process and keep going. In 95/98/ME, there's no hardware abstraction layer, and there's not much stopping an application calling hard-wired DOS interrupts or randomly writing to memory about the place. I play DOS games on my ME box regularly, and i know for a fact many of them don't work on the NT series. This is a feature. Noone in their right mind uses the 95 series for anything other than home or legacy (DOS) use - offices, developers, stability-freaks they've all been running NT on the desktop for years.
Why? A lot of people who use Linux regularly don't have any particular problem with Microsoft (and i am one of those people). What's the big deal about WMA format? It sounds just fine to me, and what reason would anyone have to transfer those files off the X-Box? Certainly you have a right to do whatever you want with the hardware, and if someone hacks it so it can play external MP3s, copy off WMAs etc more power to them, but all i was saying that you don't have to go to those extremes if you don't want to. The way MS has it integrated is really sweet, particularly because of the ability to play the music in-game.
Thankyou for not bitching about me using strcpy() in my example instead of strncpy():-) And this is a very good point you make - i've used the functionality a few times. I'd mod you up if i could. Of course, on a single line, it's still irritating... Ahhh this whole thread has gotten out of hand, really, because most people reading this will be using Red Hat, and their lint doesn't warn about ignoring return values from glibc anyways (make of that what you will).
Dude, the X-Box already IS a cool MP3 player. You can rip all your CDs onto the harddisk and play them through your sound system no problems. A lot of games let you use the ripped music in-game too. It's one of the coolest things about the box, certainly something that'd make me choose it over a PS or GC. You kinda get sick of the Tony Hawk music after the ten-zillionth time.
Yeah, you're right:-) But it's a bitch, ya know? Explicitly casting 90% of API functions to void, or checking for errors on printf() which 99.999999% of the time works, unless you're running on some weird embedded platform that doesn't have stdout. In my current project checking API returns would be nasty... It may only be a few processor cycles, but having the compiled code do lots of JNZ instructions that most of the time will never be true could mean the difference between waiting 20 seconds and 30 seconds for the program to complete its task... and i think i'd rather have the performance.
Ugh, counting LOC sucks. I find my most productive days are the ones i REMOVE lines of code, not add them. If i get a loop running tighter and faster, if i remove stuff that i could do better another way... that's what i'm paid to do.
Lint? Lint compains if you call a function that returns an int and you ignore the int. This is particularly irritating in the case of strcpy() and similar functions where you would normally do:
a=a superfluous? HOW DARE YOU! a=a is the foundation from which everything else derives! a=a proves that the only logical course of action is to TAKE! a=a is the single, most important, non-patented discovery since the wheel!
Now, i'm off to create a new form of steel that will revolutionize the railroad industry!
It really is. It's a redundant holdover from ye old BSD versions. Granted, there are one or two times i've used it when -Wall -pedantic -Werror -Wfor-fuck's-sake-find-my-bug-already doesn't work, but a lot of the time it comes up with a LOT of complaints that are really unnecessary. Am i really going to have to step through tens of thousands of lines of code castind the return of every void function to (void)? Come on.
I'm guessing that "bitstream" is the full streaming power of five (count 'em - FIVE) bits of characters? I always thought that new-fangled ASCII stuff would turn out to be a fad.
That's a bit of a red herring:-) Web sites are completely, completely different. You don't know what browser your readers are going to be using, you don't know what platform... I am totally in support of cross-browser compatibility. When you develop commercial software applications, on the other hand, you know exactly what you're developing for because the platform is stated explicitly in the statement of user requirements. Of course if the user requires their app run on two platforms then you're going to have to take a different approach. I agree that it's absolutely possible to develop your app so it displays completely perfect on every platform, but the question is will making it perfect be just as much effort as building your own API abstractions for each platform in the first place?
The bottom line is however good your tools are, however much you code your layouts to be "75% of this, stretched out as far as possible, but with 5% padding on each side" it's the pixels that finally matter. Certainly you shouldn't be doing Widget.setWidth(100px) but the user sees the pixels, not the percentages, and if the pixels don't line up between certain widgets, the user isn't going to be all that impressed with the look of the app. My point was if you develop specifically for one platform you can be assured that it's going to look a certain way no matter who views it. Of course it might still look okay if they upgrade their OS, but most of the time you see programs update with the OS. Even old MS apps themselves don't take advantage of the newest OS widgets if you don't code them that way - take a look at Event Viewer from each version of NT, for example. Or try running anything that uses "*" for passwords instead of those balls that XP does - unless it linked in the XP library first it's going to keep on having asterisks.
Judging by your posting frequency dude i think you already do:)
It would be cool, though. Were you around when the whole spork thing went on? Ten zillion sporks. That was funny as hell. I got caught in the loops too, with the sigs that teleported back to the middle of the thread which was already 50 answers deep. Clever trolls rock the kasbah.
BSDI is dead, dude.
:-)
Do you really think most people use Linux for the sole reason that it crashes less than Windows? I think most people use Linux (on the desktop) because they are interested in the structure of an operating system and like having the opportunity to tweak it at the source level. Some people use Linux because they agree with its ideals and not with Microsoft's. Some people use Linux because it comes with free development tools. Some people use Linux because it doesn't cost them anything to upgrade. Some people use Linux because it's "cool". There are millions of reasons people use Linux, and (in my opinion) it being "more stable than Windows" is probably the least important. I'm sure they see it as a bonus, but i doubt it was the original reason they switched in the first place.
Sir, you are smoking crack. I had a Win98 installation that ran for nigh on four years before i sold the PC - i never had to reinstall, and it barely ever crashed either. My current WinME installation has been running for at least six months with no problems, in spite of my installing various DOS-specific and Win2000-specific code onto it (Hacking Windows Is Fun(tm)). The only time it crashes is when i run said DOS-specific code, and i've already spoken about that. (Certain old games need all kinds of voodoo to get them working.)
My XP installation at work has run sweet for a year and never crashed, ever. Previously i tried running Linux on the desktop at work and X crashed repeatedly, sometimes to the point where i couldn't even switch to a terminal to kill the process. In my experience Linux MORE unstable than NT for desktop apps, though i would agree for the server it's a lot smoother (not needing to reboot as often is a Godsend). When it comes to GUIs, the whole "Linux is more stable" argument really goes out the window. Pun intended.
Yes. Because this has nothing to do with buffer overflows in the Windows API. If a piece of application code starts wandering around directly accessing hardware and calling interrupts for breakfast, lunch and dinner (like all DOS games, many DOS apps and a few Windows apps do) there is nothing Windows 9x can do. Windows sits on top of DOS as an application. Because DOS doesn't multitask, it doesn't have any sense of managing memory or resources for each application. This means any Windows applications have to exclusively call the Windows API, which Windows then translates all back into DOS interrupts so DOS can do its thing. It's pretty fookin' clever if you think about it, but on the other hand, it does introduce a lot of instability - doing multitasking and multithreading and so on in userland instead of the kernel. But that's what you get for running 9x. NT is completely different and doesn't have these problems, and seriously, Windows crashing can't have bothered you THAT much or you would've tried NT by now.
I know this might seem odd, but i consider this a feature, not a bug. If you want proper multi-tasking, use NT - it's been around since at least 1995. In NT/2000/XP you can invariably kill the process and keep going. In 95/98/ME, there's no hardware abstraction layer, and there's not much stopping an application calling hard-wired DOS interrupts or randomly writing to memory about the place. I play DOS games on my ME box regularly, and i know for a fact many of them don't work on the NT series. This is a feature. Noone in their right mind uses the 95 series for anything other than home or legacy (DOS) use - offices, developers, stability-freaks they've all been running NT on the desktop for years.
Hmm... i know this... it's UNIX!
But if you've already malloc()ed or have the memory on the stack (char buf[32]) it's already there.
Why? A lot of people who use Linux regularly don't have any particular problem with Microsoft (and i am one of those people). What's the big deal about WMA format? It sounds just fine to me, and what reason would anyone have to transfer those files off the X-Box? Certainly you have a right to do whatever you want with the hardware, and if someone hacks it so it can play external MP3s, copy off WMAs etc more power to them, but all i was saying that you don't have to go to those extremes if you don't want to. The way MS has it integrated is really sweet, particularly because of the ability to play the music in-game.
Wow. This is a way cool project! Thanks for the link :-)
And mods, give this guy a few plus points on me.
Thankyou for not bitching about me using strcpy() in my example instead of strncpy() :-) And this is a very good point you make - i've used the functionality a few times. I'd mod you up if i could. Of course, on a single line, it's still irritating... Ahhh this whole thread has gotten out of hand, really, because most people reading this will be using Red Hat, and their lint doesn't warn about ignoring return values from glibc anyways (make of that what you will).
Dude, the X-Box already IS a cool MP3 player. You can rip all your CDs onto the harddisk and play them through your sound system no problems. A lot of games let you use the ripped music in-game too. It's one of the coolest things about the box, certainly something that'd make me choose it over a PS or GC. You kinda get sick of the Tony Hawk music after the ten-zillionth time.
Yeah, you're right :-) But it's a bitch, ya know? Explicitly casting 90% of API functions to void, or checking for errors on printf() which 99.999999% of the time works, unless you're running on some weird embedded platform that doesn't have stdout. In my current project checking API returns would be nasty... It may only be a few processor cycles, but having the compiled code do lots of JNZ instructions that most of the time will never be true could mean the difference between waiting 20 seconds and 30 seconds for the program to complete its task... and i think i'd rather have the performance.
Ugh, counting LOC sucks. I find my most productive days are the ones i REMOVE lines of code, not add them. If i get a loop running tighter and faster, if i remove stuff that i could do better another way... that's what i'm paid to do.
Sorry i meant casting the return of a non-void function to void :-) Screwed up.
Lint? Lint compains if you call a function that returns an int and you ignore the int. This is particularly irritating in the case of strcpy() and similar functions where you would normally do:
except you're supposed to do:
or...
And that's just the beginning...
And, excuse me for replying again, but ALL GOOD CODE SHOULD HAVE AT LEAST ONE a=a; STATEMENT! Lest we forget our rational principles.
a=a superfluous? HOW DARE YOU! a=a is the foundation from which everything else derives! a=a proves that the only logical course of action is to TAKE! a=a is the single, most important, non-patented discovery since the wheel!
Now, i'm off to create a new form of steel that will revolutionize the railroad industry!
It really is. It's a redundant holdover from ye old BSD versions. Granted, there are one or two times i've used it when -Wall -pedantic -Werror -Wfor-fuck's-sake-find-my-bug-already doesn't work, but a lot of the time it comes up with a LOT of complaints that are really unnecessary. Am i really going to have to step through tens of thousands of lines of code castind the return of every void function to (void)? Come on.
Erm, dude, the redundant moderation is called IRONY. "Of course it runs NetBSD". Think about it...
Well at least they might finally fucking fix Steam and get Counter Strike 1.6 out there. *sigh*
I'm guessing that "bitstream" is the full streaming power of five (count 'em - FIVE) bits of characters? I always thought that new-fangled ASCII stuff would turn out to be a fad.
That's a bit of a red herring :-) Web sites are completely, completely different. You don't know what browser your readers are going to be using, you don't know what platform... I am totally in support of cross-browser compatibility. When you develop commercial software applications, on the other hand, you know exactly what you're developing for because the platform is stated explicitly in the statement of user requirements. Of course if the user requires their app run on two platforms then you're going to have to take a different approach. I agree that it's absolutely possible to develop your app so it displays completely perfect on every platform, but the question is will making it perfect be just as much effort as building your own API abstractions for each platform in the first place?
The bottom line is however good your tools are, however much you code your layouts to be "75% of this, stretched out as far as possible, but with 5% padding on each side" it's the pixels that finally matter. Certainly you shouldn't be doing Widget.setWidth(100px) but the user sees the pixels, not the percentages, and if the pixels don't line up between certain widgets, the user isn't going to be all that impressed with the look of the app. My point was if you develop specifically for one platform you can be assured that it's going to look a certain way no matter who views it. Of course it might still look okay if they upgrade their OS, but most of the time you see programs update with the OS. Even old MS apps themselves don't take advantage of the newest OS widgets if you don't code them that way - take a look at Event Viewer from each version of NT, for example. Or try running anything that uses "*" for passwords instead of those balls that XP does - unless it linked in the XP library first it's going to keep on having asterisks.
Yeah, a Slash hall of fame would be cool. I'm going to ask about the spork issue at http://www.sporks-r-us.com/. The sporks were cool.
Judging by your posting frequency dude i think you already do :)
It would be cool, though. Were you around when the whole spork thing went on? Ten zillion sporks. That was funny as hell. I got caught in the loops too, with the sigs that teleported back to the middle of the thread which was already 50 answers deep. Clever trolls rock the kasbah.