Eating sandwiches in the park

If I decide to lunch in the park, taking my sandwich and bag of
assorted goodies to the shade of a likely tree, I may not, even in this
idyllic environment, find everything to my liking. I could, of course,
suffer silently. Or I could decide to change what fails to suit.

     Now most everyone would agree that if my complaint were with the
placement of the trees, or the season, or the reasonable conduct of
others in the park, the proper choice would be to suffer them silently.
Digging up my chosen tree to replant closer to the creek would, by
almost everyone's standards, by inappropriate.

     But by the same token, hardly anyone would claim that I ought not
add the condiments of my choice to the sandwich I'm about to chew. Be
they pickled hot peppers or strange sauces, the choice is, and should
be, mine, and very few reasonable people would dispute that.

     The difference, it seems to me, is that redecorating the park may
well affect--for better or worse--the enjoyment others take in it, while
decorating the sandwich affects only me. Thus I can undertake the later
on my own authority, but ought not undertake the former without
consulting everyone.

     The reason for my bringing this up, if it isn't already apparent,
is that I have noticed a recurring theme on this list: some people seem
to assume that a ruby program's extending/modifying of ruby's core
classes is more akin to mucking with the park than to modifying the
sandwich. Note that I say "seem to assume" because I am frankly puzzled
by their position and do not claim to fully understand it.

     At first I thought they were acting as if one pragmatic picnicking
programmer putting pickled peppers on his or her sandwich was going to
ruin the park for everyone. This seemed unreasonable in the extreme.
What business is it of theirs if some people take advantage of a feature
of the language they do not care to use? Even if they share an
installation of ruby with the people who prefer peppers, the effects,
there will be NO EFFECT visible to them and thus no harm.

     I subsequently came to suspect that they were perhaps being more
reasonable than that, but acting on the basis of an assumption that I do
no share: that the park was a better analogy than the sandwich, and that
any "local" modifications to the core classes must perforce affect
everyone. As I enumerated elsewhere (when I first formed this
impression) changes (especially extensions) to the core classes can by
made quite local, though the basic fact that they are limited to the
program in which they occur seems to me to handle most of the
objections.

     A third possibility is that they are aware that the pickled peppers
only affect the sandwich they are put on, but they still don't want the
other guy to use them because they might someday want to eat the other
guys sandwich. This is kind of a stretch, since no one is forcing them
to eat someone else's sandwich, and they are free to reject any that
they don't like the taste of. But in some ways this theory best fits
the data.

     A fourth possibility is that their objections are more akin to
moralizing than to personal objections. It isn't that they believe they
have any reason to object, but still, "it isn't right" and thus "people
shouldn't do such things".

     None of these are clearly the right way to understand the
situation, so I ask:

     Why the rabid objection to people putting broccoli on their
sandwiches if they like it?

  -- Markus

Because people are putting sandwitches everywhere, and a lot of us are
forced to eat other people's for a variety of reasons.

Many of us are working with a lot of open source code here; we end up
working with code from a lot of other authors, and any feature that
makes that code harder for us to comprehend witll get in the way.

I know at least that's why I'm sceptical: No matter what the feature,
I'm likely to end up having to deal with code that use it.

Eivind.

···

On Fri, 15 Oct 2004 02:13:35 +0900, Markus <markus@reality.com> wrote:

     Why the rabid objection to people putting broccoli on their
sandwiches if they like it?

--
Hazzle free packages for Ruby?
RPA is available from http://www.rubyarchive.org/

If you work for my sandwich franchise, you will have to make it the way
it comply with my company's procedure. Because, our sandwich already
have fame in the market. People don't see what's inside the sandwich
before eat, if it is from my store.

If you want to put broccoli or whatever you want, do it outside my
sandwich shop !

···

On Thu, 2004-10-14 at 13:13, Markus wrote:

     If I decide to lunch in the park, taking my sandwich and bag of
assorted goodies to the shade of a likely tree, I may not, even in this
idyllic environment, find everything to my liking. I could, of course,
suffer silently. Or I could decide to change what fails to suit.

     Now most everyone would agree that if my complaint were with the
placement of the trees, or the season, or the reasonable conduct of
others in the park, the proper choice would be to suffer them silently.
Digging up my chosen tree to replant closer to the creek would, by
almost everyone's standards, by inappropriate.

     But by the same token, hardly anyone would claim that I ought not
add the condiments of my choice to the sandwich I'm about to chew. Be
they pickled hot peppers or strange sauces, the choice is, and should
be, mine, and very few reasonable people would dispute that.

     The difference, it seems to me, is that redecorating the park may
well affect--for better or worse--the enjoyment others take in it, while
decorating the sandwich affects only me. Thus I can undertake the later
on my own authority, but ought not undertake the former without
consulting everyone.

     The reason for my bringing this up, if it isn't already apparent,
is that I have noticed a recurring theme on this list: some people seem
to assume that a ruby program's extending/modifying of ruby's core
classes is more akin to mucking with the park than to modifying the
sandwich. Note that I say "seem to assume" because I am frankly puzzled
by their position and do not claim to fully understand it.

     At first I thought they were acting as if one pragmatic picnicking
programmer putting pickled peppers on his or her sandwich was going to
ruin the park for everyone. This seemed unreasonable in the extreme.
What business is it of theirs if some people take advantage of a feature
of the language they do not care to use? Even if they share an
installation of ruby with the people who prefer peppers, the effects,
there will be NO EFFECT visible to them and thus no harm.

     I subsequently came to suspect that they were perhaps being more
reasonable than that, but acting on the basis of an assumption that I do
no share: that the park was a better analogy than the sandwich, and that
any "local" modifications to the core classes must perforce affect
everyone. As I enumerated elsewhere (when I first formed this
impression) changes (especially extensions) to the core classes can by
made quite local, though the basic fact that they are limited to the
program in which they occur seems to me to handle most of the
objections.

     A third possibility is that they are aware that the pickled peppers
only affect the sandwich they are put on, but they still don't want the
other guy to use them because they might someday want to eat the other
guys sandwich. This is kind of a stretch, since no one is forcing them
to eat someone else's sandwich, and they are free to reject any that
they don't like the taste of. But in some ways this theory best fits
the data.

     A fourth possibility is that their objections are more akin to
moralizing than to personal objections. It isn't that they believe they
have any reason to object, but still, "it isn't right" and thus "people
shouldn't do such things".

     None of these are clearly the right way to understand the
situation, so I ask:

     Why the rabid objection to people putting broccoli on their
sandwiches if they like it?

  -- Markus

--
Mohammad Khan <mkhan@lextranet.com>
Legal Computer Solutions, Inc.

Markus wrote:

     If I decide to lunch in the park, taking my sandwich and bag of
assorted goodies to the shade of a likely tree, I may not, even in this
idyllic environment, find everything to my liking. I could, of course,
suffer silently. Or I could decide to change what fails to suit.

The difference between the expectations of programmers with respect to the
Java programming language design and Ruby, is is that ruby programmers are
expected to know what they're doing, and Java programmers are assumed to be
'just average'.

For instance, Java doesn't have operator methods because bad programmers
might misuse them. Well thanks guys! Or they crippled anonymous classes as
closures because it 'allocated too much stuff on the heap behind the
scenes'. Again thanks guys.

With Java you are not allowed to add exotic pickles to your sandwich, let
alone rearrange the park. Although I would personally like to ban brocolli
in sandwiches altogether, as a ruby programmer, that isn't how we operate.
With Java programming, xml configuration files everywhere are probably the
equivalent of brocolli. You are allowed to produce you own personal
mediocre sandwich in the same style as other people, but are totally banned
from having any say in sorting out the aesthetics of the park.

-- Richard

mayonnaise, anyone ?

···

--
--- vruz

I don't know about you, but I always check to see what's in my sandwich
before I eat it, especially if some stranger offers it to me out of the
blue, saying "Eat this. I made it special." Once I get a better idea of
what sort of sandwiches a person makes, I might relax a little bit.
It's also likely that this budding preparer of sandwiches will realize
that not everybody likes pickled peppered broccoli on their peanut
butter and jelly sandwiches, and not share the more exotic creations.

If I'm desperately hungry, and there's a sandwich with creamed crab in
peppered peanut sauce, I'll just take that creamed crab off and eat the
part that doesn't make me gag. I will definitely warn all of my friends
that this freak is making sandwiches with peanut butter and antifreeze
simply because he can. My friends will probably avoid the freakish
fabricator of crazed comestibles, leaving him to eat his razor blade
and mouse poop sandwiches by himself.

I like the sandwich analogy. I may have taken the idea into a new and
more nauseating direction, but the analogy works. Code which abuses the
flexibility of the language will not spread very far, simply because
people won't use it. That has been my experience so far over the last
few years, and I don't expect that pattern to change any time soon. If
you see code which has had such abuse inflicted on it, you need to
either fix it or avoid it. You're certainly not forced to eat it.

Kind Regards,

Brian Wisti
http://coolnamehere.com/

···

--- Eivind Eklund <eeklund@gmail.com> wrote:

On Fri, 15 Oct 2004 02:13:35 +0900, Markus <markus@reality.com> > wrote:
> Why the rabid objection to people putting broccoli on their
> sandwiches if they like it?

Because people are putting sandwitches everywhere, and a lot of us
are
forced to eat other people's for a variety of reasons.

I just realized I'd misread the original mail as an anology for the
free-form-operator patch instead of re-opening core classes.

Just for the record: I'm positive to being able to re-open core
classes. I'm still sceptical of free-form operators. And I stand by
my main point (that there are reasons to be sceptical of stuff even if
you can avoid using it directly yourself).

Also, my apologies for the "You must have lived a sheltered life"
comment - that came out much harsher than intended.

Eivind.

···

On Thu, 14 Oct 2004 17:29:27 +0000, Eivind Eklund <eeklund@gmail.com> wrote:

On Fri, 15 Oct 2004 02:13:35 +0900, Markus <markus@reality.com> wrote:
> Why the rabid objection to people putting broccoli on their
> sandwiches if they like it?

Because people are putting sandwitches everywhere, and a lot of us are
forced to eat other people's for a variety of reasons.

--
Hazzle free packages for Ruby?
RPA is available from http://www.rubyarchive.org/

> Why the rabid objection to people putting broccoli on their
> sandwiches if they like it?

Because people are putting sandwitches everywhere, and a lot of us are
forced to eat other people's for a variety of reasons.

     But this is exactly the point I don't get. Who is forcing you? Do
they have a gun? If I write something you find distasteful, and even
post it on the web, are you required to use it? Even if millions of
others like it a start to use it, you don't have to if you don't want
to.

Many of us are working with a lot of open source code here; we end up
working with code from a lot of other authors, and any feature that
makes that code harder for us to comprehend witll get in the way.

     So don't work with code that you find to hard to deal with. One of
the fundamental tenants of Open Source (at least, as I see it) is that
you are never required to use someone else's code if you don't like it.
Maybe you don't trust it, or them, or think it's bloat, or buggy, or
just don't like their choice of identifiers. Whatever the reason, you
are free to decline to use it if you'd rather not.

     -- Markus

I'll just have to say that this does not match my experience. I
regularly end up being forced to use and fix software that has serious
problems because somebody else has made the decisions.

Examples:
- Perl, where the interpreter design and language is just icky, but
I've had to deal with it because there are applications/modules my
employer needs to work
- MySQL, where a migration is too expensive
- The NFS code for FreeBSD, where we had a spaghetti of C macros
making the code almost impossible to deal with, but cleaning it up
would result in divergence from NetBSD/OpenBSD so we had less
bugfixes.
- Donald Becker's ethernet drivers in Linux - the code was fairly
horrible, but they were the only source of some functionality.
- A million lines of C++ code in various styles and for various
projects at a former employer, where I did troubleshooting and ended
up debugging many of the "funny" problems that the people that had
written the code couldn't debug themselves.

If you don't have to deal with other people's bad choices on a daily
basis, you live a sheltered life.

When it comes to dealing with Ruby code: Read my .signature (though we
do some selection, we're also committed to providing packages over
time, so giving the authors enough rope to hang themselves is bad for
us.)

Eivind.

···

On Fri, 15 Oct 2004 02:51:07 +0900, Brian Wisti <brianwisti@yahoo.com> wrote:

I like the sandwich analogy. I may have taken the idea into a new and
more nauseating direction, but the analogy works. Code which abuses the
flexibility of the language will not spread very far, simply because
people won't use it. That has been my experience so far over the last
few years, and I don't expect that pattern to change any time soon. If
you see code which has had such abuse inflicted on it, you need to
either fix it or avoid it. You're certainly not forced to eat it.

--
Hazzle free packages for Ruby?
RPA is available from http://www.rubyarchive.org/

Exactly, save one point: it also pays to keep an eye on people who
choose to eat what you find unpalatable. If they die a miserable death,
or even just slink off to kneel in the bushes, you are justified to feel
smug if you wish. But if they prosper and thrive, you may want to see
if you're missing something full of yummy goodness.

     I can still remember the transformational moments when I
reluctantly tried (or retried) several of my present favorite foods, and
discovered that they were in fact wonderful. As a child they seemed
inedible, but as I aged my tastes changed.

     -- Markus

···

On Thu, 2004-10-14 at 10:51, Brian Wisti wrote:

--- Eivind Eklund <eeklund@gmail.com> wrote:

> On Fri, 15 Oct 2004 02:13:35 +0900, Markus <markus@reality.com> > > wrote:
> > Why the rabid objection to people putting broccoli on their
> > sandwiches if they like it?
>
> Because people are putting sandwitches everywhere, and a lot of us
> are
> forced to eat other people's for a variety of reasons.

I don't know about you, but I always check to see what's in my sandwich
before I eat it, especially if some stranger offers it to me out of the
blue, saying "Eat this. I made it special." Once I get a better idea of
what sort of sandwiches a person makes, I might relax a little bit.
It's also likely that this budding preparer of sandwiches will realize
that not everybody likes pickled peppered broccoli on their peanut
butter and jelly sandwiches, and not share the more exotic creations.

If I'm desperately hungry, and there's a sandwich with creamed crab in
peppered peanut sauce, I'll just take that creamed crab off and eat the
part that doesn't make me gag. I will definitely warn all of my friends
that this freak is making sandwiches with peanut butter and antifreeze
simply because he can. My friends will probably avoid the freakish
fabricator of crazed comestibles, leaving him to eat his razor blade
and mouse poop sandwiches by himself.

I like the sandwich analogy. I may have taken the idea into a new and
more nauseating direction, but the analogy works. Code which abuses the
flexibility of the language will not spread very far, simply because
people won't use it. That has been my experience so far over the last
few years, and I don't expect that pattern to change any time soon. If
you see code which has had such abuse inflicted on it, you need to
either fix it or avoid it. You're certainly not forced to eat it.

Kind Regards,

Brian Wisti
http://coolnamehere.com/

No worries. It gave me a brief happy moment of wondering if it
possibly was true.

     -- Markus

···

On Thu, 2004-10-14 at 11:20, Eivind Eklund wrote:

Also, my apologies for the "You must have lived a sheltered life"
comment - that came out much harsher than intended.

> > Why the rabid objection to people putting broccoli on their
> > sandwiches if they like it?
>
> Because people are putting sandwitches everywhere, and a lot of us are
> forced to eat other people's for a variety of reasons.

     But this is exactly the point I don't get. Who is forcing you?

Employers, generally.

Do they have a gun?

No, they can only deny me food, so it's slower than that....

If I write something you find distasteful, and even
post it on the web, are you required to use it? Even if millions of
others like it a start to use it, you don't have to if you don't want
to.

I work in contexts where I have to accomplish things, and where I
cannot make all choices on my own. If I had infinite time, enough
food, and wasn't trying to get anything specific done, sure, I'd have
that choice.

Alas, I have to eat, and I'm only getting 86401 (or less) seconds per
day, and I've got stuff I want done. All of this cooperate to force
some of my choices.

Eivind.

···

On Fri, 15 Oct 2004 03:31:52 +0900, Markus <markus@reality.com> wrote:
--
Hazzle free packages for Ruby?
RPA is available from http://www.rubyarchive.org/

Markus wrote:

    Why the rabid objection to people putting broccoli on their
sandwiches if they like it?

Because people are putting sandwitches everywhere, and a lot of us are
forced to eat other people's for a variety of reasons.

     But this is exactly the point I don't get. Who is forcing you? Do
they have a gun? If I write something you find distasteful, and even
post it on the web, are you required to use it? Even if millions of
others like it a start to use it, you don't have to if you don't want
to.

No guns, but something just about as scary: the risk of losing my employment.

Now, I don't do Ruby for a living. But I *do* write Java code, and we use many different open source libraries. I *do* have *some* say in what libraries we use, but I do *not* have absolute say.

There are some libraries we are using which were mandated upon us. My life would be a lot less stressful right now if I could choose an alternative, but that's not the case, unfortunately.

Many of us are working with a lot of open source code here; we end up
working with code from a lot of other authors, and any feature that
makes that code harder for us to comprehend witll get in the way.

     So don't work with code that you find to hard to deal with. One of
the fundamental tenants of Open Source (at least, as I see it) is that
you are never required to use someone else's code if you don't like it. Maybe you don't trust it, or them, or think it's bloat, or buggy, or
just don't like their choice of identifiers. Whatever the reason, you
are free to decline to use it if you'd rather not.

Unfortunately, that's a rather naive view of things (and I don't mean that to say that YOU are naive, only that you have apparently never been in a situation where you've been forced to "eat someone else's sandwich"). Many times, especially in our own pet projects, we have ultimate say over what we use and don't use. There are also times, however, when we do not have that freedom.

- Jamis

···

--
Jamis Buck
jgb3@email.byu.edu
http://www.jamisbuck.org/jamis

...

If I'm desperately hungry, and there's a sandwich with creamed crab in
peppered peanut sauce, I'll just take that creamed crab off and eat the
part that doesn't make me gag. I will definitely warn all of my friends
that this freak is making sandwiches with peanut butter and antifreeze
simply because he can. My friends will probably avoid the freakish
fabricator of crazed comestibles, leaving him to eat his razor blade
and mouse poop sandwiches by himself.

I'm still thinking of a semi-coherent addition to this thread, but in
the meantime, a quick poll:

How many people ever expected to read the phrase "mouse poop sandwiches"
on ruby-talk?

I tell ya, this list has *everything*!

James

Sorry, I committed an error of omission with my message. I was
specifically talking about my Ruby experiences. The Ruby community has
been a bit more sane than a lot of other coders. Thinking of why_, I'll
need to modify that. The Ruby community may be insane, but so far it's
insane in a manner that fits in very nicely with keeping your fellow
coders happy.

My Perl/SQL/etcetera experiences were bumpy from the first time that I
had to read somebody else's code, and have continued to be on an almost
daily basis. I haven't had that yet with Ruby.

(knock on wood)

Kind Regards,

Brian Wisti
http://coolnamehere.com/

···

--- Eivind Eklund <eeklund@gmail.com> wrote:

Examples:
- Perl, where the interpreter design and language is just icky, but
I've had to deal with it because there are applications/modules my
employer needs to work
- MySQL, where a migration is too expensive
- The NFS code for FreeBSD, where we had a spaghetti of C macros
making the code almost impossible to deal with, but cleaning it up
would result in divergence from NetBSD/OpenBSD so we had less
bugfixes.
- Donald Becker's ethernet drivers in Linux - the code was fairly
horrible, but they were the only source of some functionality.
- A million lines of C++ code in various styles and for various
projects at a former employer, where I did troubleshooting and ended
up debugging many of the "funny" problems that the people that had
written the code couldn't debug themselves.

If you don't have to deal with other people's bad choices on a daily
basis, you live a sheltered life.

Hmm ... I guess it's up to us to (nicely) slap down anybody who tries
to use Ruby to make an especially distasteful sandwich, then. That way,
all the widely-known options are nice and delicious!

Kind Regards,

Brian Wisti
http://coolnamehere.com/

···

--- Jamis Buck <jgb3@email.byu.edu> wrote:

Unfortunately, that's a rather naive view of things (and I don't mean

that to say that YOU are naive, only that you have apparently never
been
in a situation where you've been forced to "eat someone else's
sandwich"). Many times, especially in our own pet projects, we have
ultimate say over what we use and don't use. There are also times,
however, when we do not have that freedom.

- Jamis

Markus wrote:
>>> Why the rabid objection to people putting broccoli on their
>>>sandwiches if they like it?
>>
>>Because people are putting sandwitches everywhere, and a lot of us are
>>forced to eat other people's for a variety of reasons.
>
>
> But this is exactly the point I don't get. Who is forcing you? Do
> they have a gun? If I write something you find distasteful, and even
> post it on the web, are you required to use it? Even if millions of
> others like it a start to use it, you don't have to if you don't want
> to.

No guns, but something just about as scary: the risk of losing my
employment.

     Bingo. I think that was the step I was missing. I feel quite
dense. I "took charge" of my career years ago, and have quite forgotten
what that feels like.

Now, I don't do Ruby for a living. But I *do* write Java code, and we
use many different open source libraries. I *do* have *some* say in what
libraries we use, but I do *not* have absolute say.

     I'm the opposite on almost every point: I do use ruby for a living
(even though I'm supposedly semi-retired); while I don't have absolute
say I am a part owner and the head of the technical side.

There are some libraries we are using which were mandated upon us. My
life would be a lot less stressful right now if I could choose an
alternative, but that's not the case, unfortunately.

     My condolences. That bites, no matter how you get there.

>>Many of us are working with a lot of open source code here; we end up
>>working with code from a lot of other authors, and any feature that
>>makes that code harder for us to comprehend witll get in the way.
>
>
> So don't work with code that you find to hard to deal with. One of
> the fundamental tenants of Open Source (at least, as I see it) is that
> you are never required to use someone else's code if you don't like it.
> Maybe you don't trust it, or them, or think it's bloat, or buggy, or
> just don't like their choice of identifiers. Whatever the reason, you
> are free to decline to use it if you'd rather not.

Unfortunately, that's a rather naive view of things (and I don't mean
that to say that YOU are naive, only that you have apparently never been
in a situation where you've been forced to "eat someone else's
sandwich"). Many times, especially in our own pet projects, we have
ultimate say over what we use and don't use. There are also times,
however, when we do not have that freedom.

     We differ on this. I would say using code you don't trust just
because you want the functionality is the naive (albeit more common)
point of view. I am actually more likely to use random things "just to
see how they taste" in my pet projects than I am professionally.

    -- Markus

···

On Thu, 2004-10-14 at 11:45, Jamis Buck wrote:

I am but a new convert here (coming from many languages, but loving
Perl most) ... so anyhow, first post for me.

One of the thing that draws me deeper into Ruby is the ability to
completely muck with the internals of the language, more so even than
Perl (where symbol table manipulation, for instance, was common).
Rewriting builtins or other modules via included modules is more
automagical than what Java-fans would push on us with AOP (shudder) or
reflection. And it's totally transparent. Nice!

If this means we can have supernatural parks where sandwiches turn
into were-sheep, I'm all for it. Sometimes people want languages
that keep themselves from shooting themselves in the foot, and keep
poor programmers from doing damage. Ruby is not that language, and
that's why I like it.

(now if we could only get something as good as CPAN in the core...but
that's another story...)

···

On Fri, 15 Oct 2004 19:39:26 +0900, James Britt <jamesunderbarb@neurogami.com> wrote:

...

> If I'm desperately hungry, and there's a sandwich with creamed crab in
> peppered peanut sauce, I'll just take that creamed crab off and eat the
> part that doesn't make me gag. I will definitely warn all of my friends
> that this freak is making sandwiches with peanut butter and antifreeze
> simply because he can. My friends will probably avoid the freakish
> fabricator of crazed comestibles, leaving him to eat his razor blade
> and mouse poop sandwiches by himself.

I'm still thinking of a semi-coherent addition to this thread, but in
the meantime, a quick poll:

How many people ever expected to read the phrase "mouse poop sandwiches"
on ruby-talk?

I tell ya, this list has *everything*!

James

James Britt wrote:

...

If I'm desperately hungry, and there's a sandwich with creamed crab in
peppered peanut sauce, I'll just take that creamed crab off and eat the
part that doesn't make me gag. I will definitely warn all of my friends
that this freak is making sandwiches with peanut butter and antifreeze
simply because he can. My friends will probably avoid the freakish
fabricator of crazed comestibles, leaving him to eat his razor blade
and mouse poop sandwiches by himself.

I'm still thinking of a semi-coherent addition to this thread, but in
the meantime, a quick poll:

How many people ever expected to read the phrase "mouse poop sandwiches"
on ruby-talk?

I tell ya, this list has *everything*!

And I in the meantime have Tom Lehrer's song running through my head,
or a variant of it: "Poisoning Programmers in the Park."

Hal

Jamis Buck wrote:

Now, I don't do Ruby for a living. But I *do* write Java code, and we use many different open source libraries. I *do* have *some* say in what libraries we use, but I do *not* have absolute say.

There are some libraries we are using which were mandated upon us. My life would be a lot less stressful right now if I could choose an alternative, but that's not the case, unfortunately.

I, too, have been earning a living using Java. It's not so much
stressful as boring. I, too, am expected to be conversant with far too
many tedious frameworks and APIs and XML formats and vendor
implementation quirks. But I guess that's why they call it work.

There are numerous reasons why such-and-such a tool, app, lib, or
whatever might be mandated. The typical case is management
misunderstanding of the difference between technical value and corporate
hype. Sometimes it's more like betamax vs VHS; something just
happens to gain traction, and the network effect kicks in. Worse is
better, or worse is worse but too damn bad, or something like that.

But you still have to wonder why mouse poop sandwiches are so common,
and it may be that a given language does not readily lend itself to a
clear expression of subtle ideas, so garish hacks are needed.

People generally make a good-faith effort to solve a problem in a clean way, but the nature of B&D languages is such that anything out of the ordinary is considered irresponsible, and so should be hard to do.

Many of us are working with a lot of open source code here; we end up
working with code from a lot of other authors, and any feature that
makes that code harder for us to comprehend witll get in the way.

It will also motivate others to write a replacement. And if that never
happens, it may be because the language makes it hard to do it; the pain
of using the bad features of given lib or tool is still less than the
pain of trying to devise a better alternative.

     So don't work with code that you find to hard to deal with. One of
the fundamental tenants of Open Source (at least, as I see it) is that
you are never required to use someone else's code if you don't like it. Maybe you don't trust it, or them, or think it's bloat, or buggy, or
just don't like their choice of identifiers. Whatever the reason, you
are free to decline to use it if you'd rather not.

Unfortunately, that's a rather naive view of things (and I don't mean that to say that YOU are naive, only that you have apparently never been in a situation where you've been forced to "eat someone else's sandwich"). Many times, especially in our own pet projects, we have ultimate say over what we use and don't use. There are also times, however, when we do not have that freedom.

All in all, Ruby gives one plenty of opportunity to write painful code.
This is probably true of any reasonably complete programming language.
Ken Arnold has recently written an article (well, an
op-ed piece), "Style is Substance" [0] wherein he argues that languages
should be so restrictive that code formatting anomalies should be treated
as compiler errors. Really. In his world, writing if(foo) instead of
if (foo) would cause a program to fail. Illegal syntax. (I'm not sure
if he would allow if ( foo ), though.)

I find that intriguing but psychotic. It is double-plus ungood. I guess I'm one of those who prefer not emulate a machine, one who tends to think of code as being more like music or painting than an endless sequence of text existing only to please the compiler gods. But maybe it's just a personal quirk.

I spent a bit of time trying to create a good but short example of truly wack Ruby code. Given that you can override core classes and methods, it is fairly easy to create code that bears only a superficial resemblance to Ruby, requiring the user to think instead in a new, Bizarro world mini-language. It requires nothing that doesn't already exist in Ruby. Yet one does not often see this sort of code in the wild.

Truth is, the cat's out of the bag, the genie is out of the bottle, and the poop is out of the mouse. As new changes to the mallardability of Ruby are suggested, the question is not whether we want people to be able to do odd, weird, convoluted things; they already can. The question is will the changes enable or encourage odd, weird, convoluted things that are indeed appropriate for a given task.

A while ago I decided I wanted to be able to code in a message-oriented style, where one would specify a message, and dispatch it to any and all objects, at once, without know the specific receivers.

Instead of receiver.message( args ...) it would be
message(args ...)->/some dynamic criteria for target receivers/

So I could, for example, send the 'close' message to all open File objects, without having to know where they were or what they were called.

I had a hard time scheming up nice syntax for this, and I suspect the ability to define free-form operators would have been quite handy.

I find that the arguments for allowing such things are more persuasive than those calling for a more restrictive or conservative approach. I tend to believe that misuse will simply be lost to the ages because Ruby makes it easier to just re-write bad code; if any one devises a super-useful lib that just happens to have an MPS (mouse poop sandwich) implementation, it will simply get fixed faster then it would in, say Java or Perl.

"Ruby: MPS-free for over 10 years!"

James

[0] Style is Substance