gbadev.org forum archive

This is a read-only mirror of the content originally found on forum.gbadev.org (now offline), salvaged from Wayback machine copies. A new forum can be found here.

OffTopic > Worse is Better: an interesting read!

#117356 - keldon - Sun Feb 04, 2007 3:39 am

http://www.ai.mit.edu/docs/articles/good-news/subsection3.2.1.html wrote:
Unix and C are the ultimate computer viruses.

A further benefit of the worse-is-better philosophy is that the programmer is conditioned to sacrifice some safety, convenience, and hassle to get good performance and modest resource use. Programs written using the New Jersey approach will work well both in small machines and large ones, and the code will be portable because it is written on top of a virus.

It is important to remember that the initial virus has to be basically good. If so, the viral spread is assured as long as it is portable. Once the virus has spread, there will be pressure to improve it, possibly by increasing its functionality closer to 90%, but users have already been conditioned to accept worse than the right thing. Therefore, the worse-is-better software first will gain acceptance, second will condition its users to expect less, and third will be improved to a point that is almost the right thing. In concrete terms, even though Lisp compilers in 1987 were about as good as C compilers, there are many more compiler experts who want to make C compilers better than want to make Lisp compilers better.


Wikipedia also has a summary of this text, titled Worse is better, and the author has published many other articles on worse is better, and further information.

#117538 - Lynx - Mon Feb 05, 2007 1:12 pm

Heh.. sounds more like Windows if you ask me.. Being conditioned into thinking rebooting is a normal part of using a computer..
_________________
NDS Homebrew Roms & Reviews

#117552 - sgeos - Mon Feb 05, 2007 4:44 pm

Lynx wrote:
Heh.. sounds more like Windows if you ask me.. Being conditioned into thinking rebooting is a normal part of using a computer..

In other words, this is all relative.

-Brendan

#117581 - tepples - Mon Feb 05, 2007 10:19 pm

Lynx wrote:
Being conditioned into thinking rebooting is a normal part of using a computer

"The system will now shut down." -- Nintendo DS firmware
_________________
-- Where is he?
-- Who?
-- You know, the human.
-- I think he moved to Tilwick.

#120798 - sgeos - Tue Mar 06, 2007 4:11 am

I think all of this boils down to resource management. Given a limited amount of resources, you have to rank your priorities correctly. If you rank your priorities correctly, you will do well even though low priority aspects are of low quality.

Ie, business/project goals are always higher priority than technical correctness. Who cares if the XYZ system can be used for anything if the project never makes it out the door?

-Brendan

#120872 - poslundc - Tue Mar 06, 2007 11:02 pm

I don't see the analogy as being apt, only inflammatory.

I could just as easily take all of his points and use them to say that Unix and C are the ultimate examples of capitalism as it's finest.

There is merit to his argument, but it could do without the invective.

Dan.

#120874 - keldon - Tue Mar 06, 2007 11:19 pm

Well he did begin with the question of why C [at the time] was doing better than the alternative languages that were better [in their opinion]. He never seems to reach a final conclusion, but it does make for an interesting debate. Audacity [for example] does not do everything I need it to do; but every little it does it does well. I know that I can use Audacity if I only need to chop up a wave.

Then you have the element of reality. Sure requirement-x would be great if it is completed; but doing so puts a strain on the rest of the project, and being a project held together by loose commitments the last thing we want is to see no result after the first few months of work. Beauty is in the eye of the beholder so developers will be quick to revel at their new inventions and be encouraged by it. Now you have them and you can reel them in which is not as easy to do if you have no previous outcomes as bait.

Look at notepad, wordpad and paint! Very few changes in the last so and so years!

#120877 - kusma - Tue Mar 06, 2007 11:58 pm

Lynx wrote:
Heh.. sounds more like Windows if you ask me.. Being conditioned into thinking rebooting is a normal part of using a computer..


I've been using linux (aside windows) for almost 10 years now, and I reboot my linux-systems way more often than my windows-systems. Yes, you CAN get away without rebooting for a long time in linux, but it's not productive. Often, just doing a quick reboot is way quicker.

#120918 - sgeos - Wed Mar 07, 2007 6:40 am

poslundc wrote:
I could just as easily take all of his points and use them to say that Unix and C are the ultimate examples of capitalism as it's finest.

I don't think that the examples matter. He has some insight. Nothing is perfect; being imperfect by design is an interesting strategy. I can see streaming for simplicity, time to market and chance of making it to market. Does that imply market success? No, not necessarily.

-Brendan

#120939 - Lynx - Wed Mar 07, 2007 1:57 pm

kusma wrote:
I've been using linux (aside windows) for almost 10 years now, and I reboot my linux-systems way more often than my windows-systems. Yes, you CAN get away without rebooting for a long time in linux, but it's not productive. Often, just doing a quick reboot is way quicker.


I take it they are not in a production environment where downtime is frowned apon? And if you "need" to reboot a linux machine, something is setup wrong. A properly setup/maintained system should easily see this:

6:53am up 396 days, 15:34, 1 user, load average: 0.08, 0.03, 0.01
_________________
NDS Homebrew Roms & Reviews

#120945 - kusma - Wed Mar 07, 2007 2:40 pm

Lynx wrote:

I take it they are not in a production environment where downtime is frowned apon?

That is correct. I use linux mainly for development.

Lynx wrote:

And if you "need" to reboot a linux machine, something is setup wrong. A properly setup/maintained system should easily see this:

6:53am up 396 days, 15:34, 1 user, load average: 0.08, 0.03, 0.01

It seems you missed my point completely. No, you don't strictly need to reboot a linux-system that often, but sometimes it's way more effective to do so.

#121053 - Lynx - Thu Mar 08, 2007 2:29 pm

I guess we will never agree, as on a properly installed and managed system, there is no real purpose of a full reboot. This is exactly my point. You have been brainwashed by M$ to believe rebooting is an acceptable way to resolve an issue.

I'm not saying the server I took that uptime from hasn't had problems, but they were all fixable without restarting the machine.

- Personal opinion working with ~30 software developers for 1.5 years -
Now, if you are only talking about a development environment, sure.. rebooting will probably be the best method, as in development, you guys can mess up a machine beyond just restarting services because it seems things are not always understood. AKA, who knows what the problem is, but if you reboot, it is fixed.. ;) But, it would be better to know what caused the system to need to be rebooted vs just rebooting it.
_________________
NDS Homebrew Roms & Reviews

#121058 - sgeos - Thu Mar 08, 2007 3:52 pm

Lynx wrote:
But, it would be better to know what caused the system to need to be rebooted vs just rebooting it.

In windows, OS memory leaks. =)

-Brendan

#121075 - kusma - Thu Mar 08, 2007 6:07 pm

Lynx wrote:
I guess we will never agree, as on a properly installed and managed system, there is no real purpose of a full reboot. This is exactly my point. You have been brainwashed by M$ to believe rebooting is an acceptable way to resolve an issue.

I don't see why rebooting is such a holy thing. It's an easy fix for whenever -something- isn't running like it should for -some- reason. We'll never have perfectly stable systems where it isn't strictly required. I'd say you're the brainwashed one ;)

Lynx wrote:

- Personal opinion working with ~30 software developers for 1.5 years -
Now, if you are only talking about a development environment, sure.. rebooting will probably be the best method, as in development, you guys can mess up a machine beyond just restarting services because it seems things are not always understood. AKA, who knows what the problem is, but if you reboot, it is fixed.. ;)

I don't see how development environments are different from other systems, with the exception of kernel level development. A user-space program in development is no different than any other user-space application from a system-stability point of view - at least for modern PCs with memory protection and the lot.

#121080 - tepples - Thu Mar 08, 2007 6:59 pm

If you are developing an app to run on a server, you might need to test it with rebooting so that you can be sure that the configuration can survive a UPS failure or a facility move. Cheap servers don't have completely hot-swappable hardware either.
_________________
-- Where is he?
-- Who?
-- You know, the human.
-- I think he moved to Tilwick.

#121875 - Quirky - Thu Mar 15, 2007 11:51 am

Isn't Worse is Better just another way of saying Keep it Simple. Avoiding feature creep, only implementing what you actually need? Some cancelled homebrew projects would do well to remember this concept.

As for rebooting Linux: Stale NFS handles are the bane of my "no need to reboot Linux" professional life. It's faster to reboot than wait forever for the damn system to get its arse in gear (sadly /etc/init.d/nfs restart does not always do the trick). What about when you upgrade the kernel? As man watch says:
Quote:
You can watch for your administrator to install the latest kernel with
watch uname -r
(Just kidding.)

:-)

#121881 - Lynx - Thu Mar 15, 2007 1:12 pm

Hmm.. don't know how I overlooked this thread.. Anyway, Agreed.. with kernel upgrades there isn't much of a choice.. Though, in production environments kernels don't get upgraded all that much.

As for production vs development.. I hope you are kidding when you say there isn't much of a difference. How long have you been developing? These environments are night and day! If you have a production environment that developers even have access to.. well.. I feel for that company, and I understand now why you feel the way you do. Apparently stability isn't a goal with your projects. Kernel development or just apps, they have the ability to do bad things. Even if they don't have full control over the system, they can still have a huge impact on processor, memory, HD, etc.

When I say production environment, I'm talking systems that have hundreds of users on them all day long. When you take a system down, they are unable to work.

Quote:
It's an easy fix for whenever -something- isn't running like it should for -some- reason.


It's this mindset that I will never be able to grasp. That is a bandaid. Not a fix.
_________________
NDS Homebrew Roms & Reviews

#121886 - sgeos - Thu Mar 15, 2007 1:27 pm

Lynx wrote:
Quote:
It's an easy fix for whenever -something- isn't running like it should for -some- reason.


It's this mindset that I will never be able to grasp. That is a bandaid. Not a fix.

It's a quick and dirty fix that might be appropriate on single user systems. Sometimes reboots will make for a better time/productivity tradeoff than the real fix will. Sometimes they won't.

-Brendan