Use C++ and increase your salary!
The Castaway Engineer
The C Monkey
Hunting Elephants: Strategies by Profession
Real Engineers
The (Future) Diary of a Mad Digital Homeowner
C Poem
The Programmer and the Frog
Web-Sites for Butterflies
Fun with Unix
On the 1st of January, 1998, Bjarne Stroustrup gave an interview to the IEEE's 'Computer' magazine.
Naturally, the editors thought he would be giving a retrospective view of seven years of object-oriented design, using the language he created.
By the end of the interview, the interviewer got more than he had bargained for and, subsequently, the editor decided to suppress its contents, 'for the good of the industry' but, as with many of these things, there was a leak.
Here is a complete transcript of what was was said, unedited, and unrehearsed, so it isn't as neat as planned interviews.
You will find it interesting...
Interviewer: Well, it's been a few years since you changed the world of software design, how does it feel, looking back?
Stroustrup: Actually, I was thinking about those days, just before you arrived. Do you remember? Everyone was writing 'C' and, the trouble was, they were pretty damn good at it. Universities got pretty good at teaching it, too. They were turning out competent - I stress the word 'competent' - graduates at a phenomenal rate. That's what caused the problem.
Interviewer: Problem?
Stroustrup: Yes, problem. Remember when everyone wrote Cobol?
Interviewer: Of course, I did too.
Stroustrup: Well, in the beginning, these guys were like demi-gods. Their salaries were high, and they were treated like royalty.
Interviewer: Those were the days, eh?
Stroustrup: Right. So what happened? IBM got sick of it, and invested millions in training programmers, till they were a dime a dozen.
Interviewer: That's why I got out. Salaries dropped within a year, to the point where being a journalist actually paid better.
Stroustrup: Exactly. Well, the same happened with 'C' programmers.
Interviewer: I see, but what's the point?
Stroustrup: Well, one day, when I was sitting in my office, I thought of this little scheme, which would redress the balance a little. I thought 'I wonder what would happen, if there were a language so complicated, so difficult to learn, that nobody would ever be able to swamp the market with programmers? Actually, I got some of the ideas from X10, you know, X windows. That was such a bitch of a graphics system, that it only just ran on those Sun 3/60 things. They had all the ingredients for what I wanted. A really ridiculously complex syntax, obscure functions, and pseudo-OO structure. Even now, nobody writes raw X-windows code. Motif is the only way to go if you want to retain your sanity.
Interviewer: You're kidding...?
Stroustrup: Not a bit of it. In fact, there was another problem. Unix was written in 'C', which meant that any 'C' programmer could very easily become a systems programmer. Remember what a mainframe systems programmer used to earn?
Interviewer: You bet I do, that's what I used to do.
Stroustrup: OK, so this new language had to divorce itself from Unix, by hiding all the system calls that bound the two together so nicely. This would enable guys who only knew about DOS to earn a decent living too.
Interviewer: I don't believe you said that...
Stroustrup: Well, it's been long enough, now, and I believe most people have figured out for themselves that C++ is a waste of time but, I must say, it's taken them a lot longer than I thought it would.
Interviewer: So how exactly did you do it?
Stroustrup: It was only supposed to be a joke, I never thought people would take the book seriously. Anyone with half a brain can see that object-oriented programming is counter-intuitive, illogical and inefficient.
Interviewer: What?
Stroustrup: And as for 're-useable code' - when did you ever hear of a company re-using its code?
Interviewer: Well, never, actually, but...
Stroustrup: There you are then. Mind you, a few tried, in the early days. There was this Oregon company - Mentor Graphics, I think they were called - really caught a cold trying to rewrite everything in C++ in about '90 or '91. I felt sorry for them really, but I thought people would learn from their mistakes.
Interviewer: Obviously, they didn't?
Stroustrup: Not in the slightest. Trouble is, most companies hush-up all their major blunders, and explaining a $30 million loss to the shareholders would have been difficult. Give them their due, though, they made it work in the end.
Interviewer: They did? Well, there you are then, it proves O-O works.
Stroustrup: Well, almost. The executable was so huge, it took five minutes to load, on an HP workstation, with 128MB of RAM. Then it ran like treacle. Actually, I thought this would be a major stumbling-block, and I'd get found out within a week, but nobody cared. Sun and HP were only too glad to sell enormously powerful boxes, with huge resources just to run trivial programs. You know, when we had our first C++ compiler, at AT&T, I compiled 'Hello World', and couldn't believe the size of the executable. 2.1MB
Interviewer: What? Well, compilers have come a long way, since then.
Stroustrup: They have? Try it on the latest version of g++ - you won't get much change out of half a megabyte. Also, there are several quite recent examples for you, from all over the world. British Telecom had a major disaster on their hands but, luckily, managed to scrap the whole thing and start again. They were luckier than Australian Telecom. Now I hear that Siemens is building a dinosaur, and getting more and more worried as the size of the hardware gets bigger, to accommodate the executables. Isn't multiple inheritance a joy?
Interviewer: Yes, but C++ is basically a sound language.
Stroustrup: You really believe that, don't you? Have you ever sat down and worked on a C++ project? Here's what happens: First, I've put in enough pitfalls to make sure that only the most trivial projects will work first time. Take operator overloading. At the end of the project, almost every module has it, usually, because guys feel they really should do it, as it was in their training course. The same operator then means something totally different in every module. Try pulling that lot together, when you have a hundred or so modules. And as for data hiding. God, I sometimes can't help laughing when I hear about the problems companies have making their modules talk to each other. I think the word 'synergistic' was specially invented to twist the knife in a project manager's ribs.
Interviewer: I have to say, I'm beginning to be quite appalled at all this. You say you did it to raise programmers' salaries? That's obscene.
Stroustrup: Not really. Everyone has a choice. I didn't expect the thing to get so much out of hand. Anyway, I basically succeeded. C++ is dying off now, but programmers still get high salaries - especially those poor devils who have to maintain all this crap. You do realise, it's impossible to maintain a large C++ software module if you didn't actually write it?
Interviewer: How come?
Stroustrup: You are out of touch, aren't you? Remember the typedef?
Interviewer: Yes, of course.
Stroustrup: Remember how long it took to grope through the header files only to find that 'RoofRaised' was a double precision number? Well, imagine how long it takes to find all the implicit typedefs in all the Classes in a major project.
Interviewer: So how do you reckon you've succeeded?
Stroustrup: Remember the length of the average-sized 'C' project? About 6 months. Not nearly long enough for a guy with a wife and kids to earn enough to have a decent standard of living. Take the same project, design it in C++ and what do you get? I'll tell you. One to two years. Isn't that great? All that job security, just through one mistake of judgement. And another thing. The universities haven't been teaching 'C' for such a long time, there's now a shortage of decent 'C' programmers. Especially those who know anything about Unix systems programming. How many guys would know what to do with 'malloc', when they've used 'new' all these years - and never bothered to check the return code. In fact, most C++ programmers throw away their return codes. Whatever happened to good ol' '-1'? At least you knew you had an error, without bogging the thing down in all that 'throw' 'catch' 'try' stuff.
Interviewer: But, surely, inheritance does save a lot of time?
Stroustrup: Does it? Have you ever noticed the difference between a 'C' project plan, and a C++ project plan? The planning stage for a C++ project is three times as long. Precisely to make sure that everything which should be inherited is, and what shouldn't isn't. Then, they still get it wrong. Whoever heard of memory leaks in a 'C' program? Now finding them is a major industry. Most companies give up, and send the product out, knowing it leaks like a sieve, simply to avoid the expense of tracking them all down.
Interviewer: There are tools...
Stroustrup: Most of which were written in C++.
Interviewer: If we publish this, you'll probably get lynched, you do realise that?
Stroustrup: I doubt it. As I said, C++ is way past its peak now, and no company in its right mind would start a C++ project without a pilot trial. That should convince them that it's the road to disaster. If not, they deserve all they get. You know, I tried to convince Dennis Ritchie to rewrite Unix in C++.
Interviewer: Oh my God. What did he say?
Stroustrup: Well, luckily, he has a good sense of humor. I think both he and Brian figured out what I was doing, in the early days, but never let on. He said he'd help me write a C++ version of DOS, if I was interested.
Interviewer: Were you?
Stroustrup: Actually, I did write DOS in C++, I'll give you a demo when we're through. I have it running on a Sparc 20 in the computer room. Goes like a rocket on 4 CPU's, and only takes up 70 megs of disk.
Interviewer: What's it like on a PC?
Stroustrup: Now you're kidding. Haven't you ever seen Windows '95? I think of that as my biggest success. Nearly blew the game before I was ready, though.
Interviewer: You know, that idea of a Unix++ has really got me thinking. Somewhere out there, there's a guy going to try it.
Stroustrup: Not after they read this interview.
Interviewer: I'm sorry, but I don't see us being able to publish any of this.
Stroustrup: But it's the story of the century. I only want to be remembered by my fellow programmers, for what I've done for them. You know how much a C++ guy can get these days?
Interviewer: Last I heard, a really top guy is worth $70 - $80 an hour.
Stroustrup: See? And I bet he earns it. Keeping track of all the gotchas I put into C++ is no easy job. And, as I said before, every C++ programmer feels bound by some mystic promise to use every damn element of the language on every project. Actually, that really annoys me sometimes, even though it serves my original purpose. I almost like the language after all this time.
Interviewer: You mean you didn't before?
Stroustrup: Hated it. It even looks clumsy, don't you agree? But when the book royalties started to come in... well, you get the picture.
Interviewer: Just a minute. What about references? You must admit, you improved on 'C' pointers.
Stroustrup: Hmm. I've always wondered about that. Originally, I thought I had. Then, one day I was discussing this with a guy who'd written C++ from the beginning. He said he could never remember whether his variables were referenced or dereferenced, so he always used pointers. He said the little asterisk always reminded him.
Interviewer: Well, at this point, I usually say 'thank you very much' but it hardly seems adequate.
Stroustrup: Promise me you'll publish this. My conscience is getting the better of me these days.
Interviewer: I'll let you know, but I think I know what my editor will say.
Stroustrup: Who'd believe it anyway? Although, can you send me a copy of that tape?
Interviewer: I can do that.
A rather inhibited engineer finally splurged on a luxury cruise to the Caribbean. It was the "craziest" thing he had ever done in his life. Just as he was beginning to enjoy himself, a hurricane roared upon the huge ship, capsizing it like a child's toy. Somehow the engineer, desperately hanging on to a life preserver, managed to wash ashore on a secluded island.
Outside of beautiful scenery, a spring-fed pool, bananas and coconuts, there was little else. He lost all hope and for hours on end, sat under the same palm tree. One day, after several months had passed, a gorgeous woman in a small rowboat appeared.
"I'm from the other side of the island," she said. "Were you on the cruise ship, too?"
"Yes, I was, " he answered. "But where did you get that rowboat?"
"Well, I whittled the oars from gum tree branches, wove the reinforced gunnel from palm branches, and made the keel and stern from a Eucalyptus tree."
"But, what did you use for tools?" asked the man.
"There was a very unusual strata of alluvial rock exposed on the south side of the island. I discovered that if I fired it to a certain temperature in my kiln, it melted into forgeable ductile iron. Anyhow, that's how I got the tools. But, enough of that," she said. "Where have you been living all this time? I don't see any shelter."
"To be honest, I've just been sleeping on the beach," he said.
"Would you like to come to my place?" the woman asked. The engineer nodded dumbly.
She expertly rowed them around to her side of the island, and tied up the boat with a handsome strand of hand-woven hemp topped with a neat back splice. They walked up a winding stone walk she had laid and around a Palm tree. There stood an exquisite bungalow painted in blue and white.
"It's not much, but I call it home." Inside, she said, "Sit down please; would you like to have a drink?"
"No, thanks," said the man. "One more coconut juice and I'll throw up!"
"It won't be coconut juice," the woman replied. "I have a crude still out back, so we can have authentic Pina Coladas." Trying to hide his amazement, the man accepted the drink, and they sat down on her couch to talk. After they had exchanged stories, the woman asked, "Tell me, have you always had a beard?"
"No," the man replied, "I was clean shaven all of my life until I ended up on this island."
"Well if you'd like to shave, there's a razor upstairs in the bathroom cabinet."
The man, no longer questioning anything, went upstairs to the bathroom and shaved with an intricate bone-and-shell device honed razor sharp. Next he showered -- not even attempting to fathom a guess a to how she managed to get warm water into the bathroom -- and went back downstairs. He couldn't help but admire the masterfully carved banister as he walked.
"You look great," said the woman. "I think I'll go up and slip into something more comfortable."
As she did, the man continued to sip his Pina Colada. After a short time, the woman, smelling faintly of gardenias, returned wearing a revealing gown fashioned out of pounded palm fronds.
"Tell me," she asked, "we've both been out here for a very long time with no companionship. You know what I mean. Haven't you been lonely, too...isn't there something that you really, really miss? Something that all men and woman need? Something that would be really nice to have right now!"
"Yes there is!" the man replied, shucking off his shyness. "There is something I've wanted to do for so long. But on this island all alone, it was just...well, it was impossible."
"Well, it's not impossible, any more," the woman said.
The man, practically panting in excitement, said breathlessly: "You mean... you actually figured out some way we can CHECK OUR EMAIL HERE!!??!!"
A tourist walks into a pet shop in Silicon Valley, and is browsing round the cages on display.
While he's there, another customer walks in and says to the shopkeeper, "I'll have a C monkey, please". The shopkeeper nods, goes over to a cage at the side of the shop and takes out a monkey. He fits a collar and leash and hands it to the customer, saying "That'll be $5000". The customer pays and walks out with his monkey.
Startled, the tourist goes over to the shopkeeper. "That was a very expensive monkey - most of them are only a few hundred dollars.
Why did it cost so much?" "Ah, that monkey can program in C - very fast, tight code, no bugs, well worth the money".
The tourist looks at the monkeys in that cage. "That one's even more expensive - $10,000 dollars! What does it do?".
"Oh, that one's a C++ monkey; it can manage object oriented programming, Visual C++, even some Java, all the really useful stuff".
The tourist looks round for a little longer and sees a third monkey in a cage on its own. The price tag round its neck says $50,000. He gasps to the shopkeeper, "That one costs more than all the others put together! What on earth does it do?"
"Well, I don't know if it does anything, but it says it's a contractor."
MATHEMATICIANS hunt elephants by going to Africa, throwing out everything that is not an elephant, and catching one of whatever is left.
EXPERIENCED MATHEMATICIANS will attempt to prove the existence of at least one unique elephant before proceeding to step 1 as a subordinate exercise.
PROFESSORS OF MATHEMATICS will prove the existence of at least one unique elephant and then leave the detection and capture of an actual elephant as an exercise for their graduate students.
COMPUTER SCIENTISTS hunt elephants by exercising Algorithm A:
EXPERIENCED COMPUTER PROGRAMMERS modify Algorithm A by placing a known elephant in Cairo to ensure that the algorithm will terminate.
ASSEMBLY LANGUAGE PROGRAMMERS prefer to execute Algorithm A on their hands and knees.
HARDWARE ENGINEERS hunt elephants by going to Africa, catching gray animals at random, and stopping when any one of them weighs within plus or minus 15 percent of any previously observed elephant.
ECONOMISTS don't hunt elephants, but they believe that if elephants are paid enough, they will hunt themselves.
STATISTICIANS hunt the first animal they see N times and call it an elephant.
CONSULTANTS don't hunt elephants, and many have never hunted anything at all, but they can be hired by the hour to advise those people who do.
OPERATIONS RESEARCH CONSULTANTS can also measure the correlation of hat size and bullet color to the efficiency of elephant-hunting strategies, if someone else will only identify the elephants.
POLITICIANS don't hunt elephants, but they will share the elephants you catch with the people who voted for them.
LAWYERS don't hunt elephants, but they do follow the herds around arguing about who owns the droppings.
SOFTWARE LAWYERS will claim that they own an entire herd based on the look and feel of one dropping.
VICE PRESIDENTS OF ENGINEERING, RESEARCH, AND DEVELOPMENT try hard to hunt elephants, but their staffs are designed to prevent it. When the vice president does get to hunt elephants, the staff will try to ensure that all possible elephants are completely prehunted before the vice president sees them. If the vice president does happen to see a elephant, the staff will:
SENIOR MANAGERS set broad elephant-hunting policy based on the assumption that elephants are just like field mice, but with deeper voices.
QUALITY ASSURANCE INSPECTORS ignore the elephants and look for mistakes the other hunters made when they were packing the jeep.
SALES PEOPLE don't hunt elephants but spend their time selling elephants they haven't caught, for delivery two days before the season opens.
SOFTWARE SALES PEOPLE ship the first thing they catch and write up an invoice for an elephant.
HARDWARE SALES PEOPLE catch rabbits, paint them gray, and sell them as desktop elephants.
Real Engineers consider themselves well dressed if their socks match.
Real Engineers buy their spouses a set of matched screwdrivers for their birthday.
Real Engineers wear moustaches or beards for "efficiency". Not because they're lazy.
Real engineers have a non-technical vocabulary of 800 words.
Real Engineers think a "biting wit" is their fox terrier.
Real Engineers know the second law of thermodynamics - but not their own shirt size.
Real Engineers repair their own cameras, telephones, televisions, watches, and automatic transmissions.
Real Engineers say "It's 70 degrees Fahrenheit, 25 degrees Celsius, and 298 degrees Kelvin" and all you say is "Isn't it a nice day"
Real Engineers give you the feeling you're having a conversation with a dial tone or busy signal.
Real Engineers wear badges so they don't forget who they are. Sometimes a note is attached saying "Don't offer me a ride today. I drove my own car".
Real Engineers' politics run towards acquiring a parking space with their name on it and an office with a window.
Real Engineers know the "ABC's of Infrared" from A to B.
Real Engineers rotate their tires for laughs.
Real Engineers will make four sets of drawings (with seven revisions) before making a bird bath.
Real Engineers' briefcases contain a Phillips screwdriver, a copy of "Quantum Physics", and a half of a peanut butter sandwich.
Real Engineers don't find the above at all funny.
Nov 28, 1995: Moved in to my new digitally-maxed out Hermosa Beach house at last. Finally, we live in the smartest house in the neighborhood. Everything's networked. The cable TV is connected to our phone, which is connected to my personal computer, which is connected to the power lines, all the appliances and the security system. Everything runs off a universal remote with the friendliest interface I've ever used. Programming is a snap. I'm like, totally wired.
Nov 30: Hot Stuff! Programmed my VCR from the office, turned up the thermostat and switched on the lights with the car phone, remotely tweaked the oven a few degrees for my pizza. Everything nice & cozy when I arrived. Maybe I should get the universal remote surgically attached.
Dec 1: Had to call the SmartHouse people today about bandwidth problems. The TV drops to about 2 frames/second when I'm talking on the phone. They insist it's a problem with the cable company's compression algorithms. How do they expect me to order things from the Home Shopping Channel?
Dec 8: Got my first SmartHouse invoice today and was unpleasantly surprised. I suspect the cleaning woman of reading Usenet from the washing machine interface when I'm not here. She must be downloading one hell of a lot of GIFs from the binary groups, because packet charges were through the roof on the invoice.
Dec 3: Yesterday, the kitchen CRASHED. Freak event. As I opened the refrigerator door, the light bulb blew. Immediately, everything else electrical shut down -- lights, microwave, coffee maker -- everything. Carefully unplugged and replugged all the appliances. Nothing.
Call the cable company (but not from the kitchen phone). They refer me to the utility. The utility insists that the problem is in the software. So the software company runs some remote telediagnostics via my house processor. Their expert system claims it has to be the utility's fault. I don't care, I just want my kitchen back. More phone calls; more remote diag's.
Turns out the problem was "unanticipated failure mode": The network had never seen a refrigerator bulb failure while the door was open. So the fuzzy logic interpreted the burnout as a power surge and shut down the entire kitchen. But because sensor memory confirmed that there hadn't actually been a power surge, the kitchen logic sequence was confused and it couldn't do a standard restart. The utility guy swears this was the first time this has ever happened. Rebooting the kitchen took over an hour.
Dec 7: The police are not happy. Our house keeps calling them for help. We discover that whenever we play the TV or stereo above 25 decibels, it creates patterns of micro-vibrations that get amplified when they hit the window. When these vibrations mix with a gust of wind, the security sensors are actuated, and the police computer concludes that someone is trying to break in. Go figure.
Another glitch: Whenever the basement is in self-diagnostic mode, the universal remote won't let me change the channels on my TV. That means I actually have to get up off the couch and change the channels by hand. The software and the utility people say this flaw will be fixed in the next upgrade -- SmartHouse 2.1. But it's not ready yet.
Finally, I'm starting to suspect that the microwave is secretly tuning into the cable system to watch Bay Watch. The unit is completely inoperable during that same hour. I guess I can live with that. At least the blender is not tuning in to old I Love Lucy episodes.
Dec 9: I just bought the new Microsoft Home. Took 93 gigabytes of storage, but it will be worth it, I think. The house should be much easier to use and should really do everything. I had to sign a second mortgage over to Microsoft, but I don't mind: I don't really own my house now--it's really the bank. Let them deal with Microsoft.
Dec 10: I'm beginning to have doubts about Microsoft House. I keep getting an hour glass symbol showing up when I want to run the dishwasher.
Dec 12: This is a nightmare. There's a virus in the house. My personal computer caught it while browsing on the public access network. I come home and the living room is a sauna, the bedroom windows are covered with ice, the refrigerator has defrosted, the washing machine has flooded the basement, the garage door is cycle up and down and the TV is stuck on the home shopping channel. Through- out the house, lights flicker like stroboscopes until they explode from the strain. Broken glass is everywhere. Of course, the security sensors detect nothing.
I look at a message slowly throbing on my personal computer screen: WELCOME TO HomeWrecker!!! NOW THE FUN BEGINS ... (Be it ever so humble, there's no virus like the HomeWrecker...).
Dec 18: They think they've digitally disinfected the house, but the place is a shambles. Pipes have burst and we're not completely sure we've got the part of the virus that attacks toilets. Nevertheless, the Exorcists (as the anti-virus SWAT team members like to call themselves) are confident the worst is over. "HomeWrecker is pretty bad" one he tells me, "but consider yourself lucky you didn't get PolterGeist. That one is really evil."
Dec 19: Apparently, our house isn't insured for viruses. "Fires and mudslides, yes," says the claims adjuster. "Viruses, no." My agreement with the SmartHouse people explicitly states that all claims and warranties are null and void if any appliance or computer in my house networks in any way, shape or form with a non-certified on-line service. Everybody's very, very, sorry, but they can't be expected to anticipate every virus that might be created.
We call our lawyer. He laughs. He's excited!
Dec 21: I get a call from a SmartHouse sales rep. As a special holiday offer, we get the free opportunity to become a beta site for the company's new SmartHouse 2.1 upgrade. He says I'll be able to meet the programmers personally. "Sure," I tell him.
/* The problem I find when I'm looking at lines Of programs all written in C Is that the syntax and grammar resemble the stammer Of a dyslexic demoralized bee. I'll bet any man here (I'll wager a beer) Can't guess how to copy a string. The mess is dramatic, all [ .& _ ! Pointers collected, and thrice indirected, Collated in structs and compiled, When traced by debugger can make coders shudder, And conditionals drive a man wild. I don't wish to seem bitchy, but if only old Ritchie Had been strangled at birth by a Nurse; And the fate that I've planned for all Kernighan's clan Is unprintably several times worse. I find that the pain begins with the main() The only way out is to hack it. The one bit of syntax that keeps my mind intact Is the very last } I hope that this ode is clearer than code I write in that monstosity You might think that Pascal's a bit of a rascal but the ultimate b*d is C. My program is calling (in structure appalling), I must finish my poetic plea. But, let's all face it, use Forth, LISP or BASIC Whatever you do, don't use C. */ (Translator's guide to pronunciation: [ = Open square bracket . = dot & = ampersand _ = underscore ! = pling } = close curly bracket * = a star ) -- Rupert Goodwins.
A young man was crossing a road one day when a frog called out to him and said, "If you kiss me, I'll turn into a beautiful princess". He bent over, picked up the frog and put it in his pocket.
The frog spoke up again and said, "If you kiss me and turn me back into a beautiful princess, I will stay with you for one week." The young man took the frog out of his pocket, smiled at it and returned it to the pocket.
The frog then cried out, "If you kiss me and turn me back into a princess, I'll stay with you and do ANYTHING you want." Again the young man took the frog out, smiled at it and put it back into his pocket.
Finally, the frog asked, "What is the matter? I've told you I'm a beautiful princess, that I'll stay with you for a week and do anything you want. Why won't you kiss me?"
The young man said, "Look, I'm a software engineer. I don't have time for a girlfriend, but a talking frog is cool."
The Internet Oracle has pondered your question deeply.
Your question was:
Oh, colourful rainbowy Oracle, which colours are the most useful for attracting butterflies? You see, I want to create a website entirely for butterflies, but I don't know how to make them surf by. Thanks in advance!
And in response, thus spake the Oracle:
You shouldn't depend on colors themselves to attract butterflies to your website. What if the butterflies are using Mosaic, or have simply turned off the images in Netscape? A lot of them do that, you know--the lifespan of the butterfly is much shorter than ours; they don't have time to sit around and wait for all those .gifs to load.
While I applaud your decision to come to me for advice, I must admit that I am slightly saddened by your question. Everyone wants to give their web site the flashiest design possible, but nobody wants to worry about content. The Oracle is doing what he can--every day I send overnight packages filled with rabid weasels to people who use frames for no good reason. Animated .gifs bother me, but not as much--I merely send those webmasters envelopes filled with itching powder. The fate that awaits those who thoughtlessly use the "blink" tag is too horrible for me to even mention.
My advice to you is to make flashy designs and bright colors less of a priority, and to fill your website with lots of information that butterflies would find interesting. Here are some sample articles from Lepidopteractive!, one of the most popular butterfly sites around (35,000 hits daily, though it's hard to tell if that number's fully accurate, given all the flitting around that butterflies do):
One feature that's surprisingly missing from Lepidopteractive! is a chat room; such a feature might set your butterfly page apart from the pack. Oh, sure, scoffers will say that computer interaction is no substitute for direct transmission of pheronomones, but tell that to the ever-growing online butterfly community! Anyway, best of luck with your enterprise.
You owe the Oracle a recording of Cole Porter singing "Moths in your rug do it-- what's the use of moth balls?" from the uncensored version of "Let's Do It".
If you type these in from the csh (c shell): in Unix you really do get these responses.
% make love Make: Don't know how to make love. Stop. % got a light? No match. % sleep with me bad character % man: Why did you get a divorce? man:: Too many arguments. % make 'heads or tails of all this' Make: Don't know how to make heads or tails of all this. Stop. % make sense Make: Don't know how to make sense. Stop. % make mistake Make: Don't know how to make mistake. Stop. % make bottle.open Make: Don't know how to make bottle.open. Stop. % \(- (-: Command not found. % make light Make: Don't know how to make light. Stop. % date me You are not superuser: date not set Thu Aug 25 15:52:30 PDT 1988 % man rear No manual entry for rear. % If I had a ) for every dollar Clinton spent, what would I have? Too many )'s. % * How would you describe Clinton *: Ambiguous. % %Vice-President %Vice-President: No such job. % ls Meese-Ethics Meese-Ethics not found % "How would you rate Clinton's senility? Unmatched ". % [Where is Jimmy Hoffa? Missing ]. | % ^How did the^sex change operation go? Modifier failed. % who is my match? No match. % set i="Democratic_Platform";mkdir $i;chmod 000 $i;ls $i Democratic_Platform unreadable % awk "Polly, the ship is sinking" awk: syntax error near line 1 awk: bailing out near line % 'thou shalt not commit adultery' thou shalt not commit adultery: Command not found. % cat "food in cans" cat: can't open food in cans % rm God rm: God nonexistent % ar t God ar: God does not exist % ar r God ar: creating God % "How would you rate Quayle's incompetence? Unmatched ". % [Where is Lord Lucan? Missing ]. % ^How did the sex change operation go? ^ Modifier failed. % nice man woman No manual entry for woman. % !:say, what is saccharine? Bad substitute. % %blow %blow: No such job. /* not csh but sh */ $ PATH=pretending!/usr/ucb/which sense no sense in pretending! $ drink bottle; opener bottle: cannot open opener: not found