Hey, new tags! Cool! Let's try them out...
Did it work? I guess I'll find out when I hit the Post button. Such is one of the major fallacies of web-based interaction. Submit, Reload, Submit, Reload...
Anyway, the reason I was going to actually post my diary entry today was about an interesting incident we had yesterday at work. Well, maybe it's not really terribly interesting, but it brought up some interesting thoughts. We are cursed with a Microsoft Exchange server for our e-mail here at work. Someone apparently created a global mailing list alias called "TechSupport" that contained what appeared to be all the addresses in our corporate addressbook. (I'm still fuzzy on the details, but that's fine, because thankfully it's not my job to keep up on Exchange.) Someone got impatient with a technical services request and forwarded it to this alias, which resulted in everyone getting said TSR. An honest mistake, probably.
The result was that a large number of yahoos worldwide were blindly hitting "Reply To All" and indicating to the entire corporation (and sub-corporations) that they did not comprehend why they got this e-mail in the first place. (There were also some non-yahoos who got it who were desperately trying to turn the tide.) Back in the UNIX wing of our IS department, where I hang out, I joked that this proves that e-mail virii are not a technical problem, but a social problem -- there was no code involved, yet for all intents and purposes this had a very similar effect to ILOVEYOU or one of the other infamous virii. (Actually, my statement was much shorter, but true to form, I waxed philosophical shortly after making the origial statement.) This got me thinking that if computing is ever to be pervasive, that perhaps it's taking the wrong approach entirely. Don't get me wrong -- I don't know what the "right" approach is. But if otherwise intelligent people can cause so much of a problem just by one simple mistake, perhaps we are not giving the masses what they need.
I spotted what I think is a bug in OpenBSD's cpp (which, btw, is actually GCC 2.95.3 prerelease; but this little bit shows up in at least OpenBSD 2.7 as well, which used GCC 2.95.2.) cpp has support for a concatenation operator in macro definitions, like so:
#define CONCAT(A,B) A ## B
The concatenation operator is meant to allow you to create macros that put two things right up next to each other without whitespace (so that CONCAT(foo,bar) yields foobar.) However, in our cpp, this only works if the file you're running through cpp is a C++ file (i.e. .C, .cpp, etc.), or if you're using gcc -E. Other cpp's (also based on GCC 2.95.x) don't exhibit this problem. I spent two nights trying to figure out why but GCC is too big of a beast for me to track it down. :-/ Anyway, I posted more of a query than anything to our tech mailing list, and hopefully someone a little better than me can figure it out... (for the curious: I want to use it in our ports.cf, which is an override for several key defines that are used by imake, to move imake-based software out of /usr/X11R6 into /usr/local -- except I want to be able to move it to a user-defined location rather than just /usr/local.)
Oh, and everyone should really read about the monkeys at nutters dot org. I'm serious. I found it self-validating, yet it still made me stop and think in many different ways.