Zed Shaw - Ruby has dodged a bullet

On Jan 2, 2008 6:12 AM, Todd B. [email protected] wrote:

I know of a lot of very smart people that would hire the person for
precisely his use of foul language and bad attitude.
Hey here, Hire Me I can do that, really!!! :wink:

The only thing I don’t like about that blog, though, is the focus on
people who use Rails and how evil/idiotic they must be. But, I just
think that sociologically, a scaffold (Rails) that allows people to do
things when they really don’t know how to do things can be
frustrating for some coders.
Oh I find it horrifying, interesting point to see if this was a valid
point for abstraction or not.
I had the instant feeling it was not and pushing people to bad design
but I am an ignorant of the structures
of large Web applications ( having written one not so small in LAMP
myself long time ago) and therefore cannot say anything about it…

Todd

Robert


http://ruby-smalltalk.blogspot.com/


Whereof one cannot speak, thereof one must be silent.
Ludwig Wittgenstein

On Jan 3, 2008 6:30 AM, Todd B. [email protected] wrote:

of large Web applications ( having written one not so small in LAMP
myself long time ago) and therefore cannot say anything about it…

Sort of off topic: I’ve seen graduated engineers know exactly how to
use the CAD software, but could barely engineer a birdhouse.

Sorry, I should point out this doesn’t apply to you. I’ve seen some
really good code on this list from you. I hope to see a lot more!

Todd

On Jan 3, 2008 1:34 PM, Todd B. [email protected] wrote:

but I am an ignorant of the structures
of large Web applications ( having written one not so small in LAMP
myself long time ago) and therefore cannot say anything about it…

Sort of off topic: I’ve seen graduated engineers know exactly how to
use the CAD software, but could barely engineer a birdhouse.

Sorry, I should point out this doesn’t apply to you. I’ve seen some
really good code on this list from you. I hope to see a lot more!
I did in no way take offense, but thanks anyway.
BTW I love the point you made, Rails is exactly a powerful tool making
things easy, that has to have downsides of course…

Robert


http://ruby-smalltalk.blogspot.com/


Whereof one cannot speak, thereof one must be silent.
Ludwig Wittgenstein

On Jan 3, 2008 5:07 AM, Robert D. [email protected] wrote:

But, I just

think that sociologically, a scaffold (Rails) that allows people to do
things when they really don’t know how to do things can be
frustrating for some coders.
Oh I find it horrifying, interesting point to see if this was a valid
point for abstraction or not.
I had the instant feeling it was not and pushing people to bad design
but I am an ignorant of the structures
of large Web applications ( having written one not so small in LAMP
myself long time ago) and therefore cannot say anything about it…

Sort of off topic: I’ve seen graduated engineers know exactly how to
use the CAD software, but could barely engineer a birdhouse. I’m sure
we’ve all seen something like that. I think it’s a classic
we-give-them-the-tools-to make-them-happy syndrome; thus the elites’
gripes about Rails. You make it easy to make, but you also make it
easy to break, because the developer using the underlying tools didn’t
understand some fundamental concepts (classic Jurassic Park “stand on
the shoulders of others” stuff :). It’s just a theory of mine…
It’s kind of why I tell people to learn Ruby first, then Rails or any
other structure you need for internet exchange. Ah well … just an
opinion. Sorry for my noise, guys.

Robert


http://ruby-smalltalk.blogspot.com/


Whereof one cannot speak, thereof one must be silent.
Ludwig Wittgenstein

Todd

On Thu, Jan 03, 2008 at 05:12:16PM +0900, Lee J. wrote:

Not that I blame Chuck, but I find it unfortunate that this thread is
getting about 50 or more posts then the usual code related thread.
Perhaps its just me.

Well . . . to be fair, “the usual code related thread” is a question
that
gets answered before most of us even see it in our inboxes, generally by
half a dozen people in varying (but generally all helpful) ways.

I think it’s a good thing that when someone asks a question it gets
answered promptly, with some detail, with varying approaches, by several
skilled coders, while a slur of the community gets examined to determine
whether we have any shortcomings that need addressing – rather than
just
discarding the rant as baseless without even checking it for hidden
truths.

. . . and I’ve seen some of the more interesting code-related and
programming theory-related threads get much longer than this.

On Thu, Jan 03, 2008 at 12:31:39PM +0900, James B. wrote:

Great as it may be, I think the word “opinionated” has a tendency to lead
people down two different, equally incorrect garden paths:

There’s a fine line between opinionated and bigoted.

There can be – but “opinionated” is often good, too. There’s more to a
personality than the strength of its held opinions.

On Thu, Jan 03, 2008 at 09:55:46PM +0900, Robert D. wrote:

I had the instant feeling it was not and pushing people to bad design
BTW I love the point you made, Rails is exactly a powerful tool making
things easy, that has to have downsides of course…

One doesn’t typically hand a power drill with 100 foot-pounds of torque
to an accountant to use for hanging pictures – or, at the very least,
one provides the manual complete with safety guidelines in it. For some
reason, software isn’t treated the same way as power tools in that
regard, especially in a commercial setting.

You make it easy to make, but you also make it
easy to break

Sounds nice but I’d say a program written in assembler is easier to
break than one written in ruby.

because the developer using the underlying tools didn’t
understand some fundamental concepts

Many of these tools are made so that you don’t have to care about the
underlying concepts but so that the whole problem can be moved to
different level where it’s easier to handle. I remember a friend who
once said that you don’t know anything about whatsoever unless you
don’t
understand basic atomic laws – he was a physicist of course. But no,
that’s not necessary, which may of course hurt the narcistic mind of
somebody who invested years of his life in understanding something. I
have always thought the basic idea of ruby is to be easy to use (for
everyone[1]). I haven’t thought it was to make you feel like a rock
star
(to cite another posting in this disturbing thread).

[1] BTW Smalltalk was also created to enable kids to develop computer
programs and I always thought of ruby as a practical descendent of
Smalltalk.

Some things are (a) still hard in pure Ruby and (b) much more useful
without depending on a C extension.

-austin

Absolutely. Projects like FasterCSV, REXML, Merb, etc are invaluable
to my daily work.

Pure-ruby projects I don’t personally use like Sequel, or Nitro are
obviously great achievements with very high standards.

I just meant to highlight that the ability to build bridges for Ruby
to “the outside world” is often a task that might be best done as a C-
extension, and generally speaking, it seems to be a fairly small pool
of people capable or willing to build those bridges for us.

On 03/01/2008, Sam S. [email protected] wrote:

Absolutely. Projects like FasterCSV, REXML, Merb, etc are invaluable
to my daily work.

Pure-ruby projects I don’t personally use like Sequel, or Nitro are
obviously great achievements with very high standards.

REXML is pure ruby.

Farrel

On Thu, 3 Jan 2008 08:08:00 -0500, Chad P. wrote:

One doesn’t typically hand a power drill with 100 foot-pounds of torque
to an accountant to use for hanging pictures – or, at the very least,
one provides the manual complete with safety guidelines in it. For some
reason, software isn’t treated the same way as power tools in that
regard, especially in a commercial setting.

Having tried to “port” that very concept from software to the physical
world, I’ll tell you why:

The cost of using overly-powerful software is much less apparent and
intuitive than the cost of using overly-powerful physical tools.

When I had the money to buy commercial-quality stuff, I started doing so
whenever possible. I learned that true commercial products are:

  • often 10x more expensive than consumer products.

  • much heavier, because they take more abuse and have higher duty
    cycles.
    Cast iron instead of plastic. That makes them a bear to carry around.

  • significantly bigger, and often need more “legroom” as well.

  • louder.

  • often inefficient or even ineffective with small loads. (You can’t
    cool
    a small apartment with a 24-ton chiller.)

  • designed with the expectation that they will be disassembled, cleaned,
    oiled and repaired on a frequent basis by a skilled technician.

To the extent that any of these map to qualities of software, they’re
not
obvious problems when you first start using a given system.

On Thu, 3 Jan 2008 06:24:46 -0800 (PST), tho_mica_l wrote:

Many of these tools are made so that you don’t have to care about the
underlying concepts but so that the whole problem can be moved to
different level where it’s easier to handle.

Sure, and when they succeed, it’s beautiful. I haven’t had to think
about
the number of cycles a CPU instruction will take in two decades.

One of my biggest gripes about Rails, and I see this a lot, is that it
doesn’t completely encapsulate the lower layer; that’s not its goal.
It
makes the easy things easy.

The minute you do something hard, novel, or even just concurrent, you’re
on
your own, and you’re peeking into the machinery. And that’s when people
get over their heads.

Luckily, most Rails sites stay small enough that things like race
conditions don’t matter. (There’s a top local Rails consultancy that
shocked me by telling me their busiest sites get a few thousand requests
a
day.)

But if you do grow, Rails can’t tell you when you crossed the line.
It’s
not a Rails problem; it’s an layer-violation problem, and I suspect it’s
impossible to create an encapsulation that’s both complete and simple.
Rails picks simple.

On Jan 1, 2008 5:09 AM, James B. [email protected] wrote:

I liked the Ruby community better when it placed more emphasis on code
and less on personalities.

I kind of second this, I used to read Ruby-talk quite actively
possibly between 2001 to 2004 but slowly drifted away from it because:

a) the noise levels started to go up
b) a number of quite interesting people, whose opinions I though where
worth the time and effort to read start to leave / drifing away
c) Rails exploded which flooded the community somewhat and I think
expanded it to fast, making it less friendly.

I think the latter started leading to the increase of noise and
vitriol that turns up from time to time.

Rob

One of my biggest gripes about Rails, and I see this a lot, is that it
doesn’t completely encapsulate the lower layer; that’s not its goal. It
makes the easy things easy.

I think that’s actually a strength. It’s not like you can really get
away with just learning Rails. Rails is like a gigantic set of
power-user shell aliases that make common use cases simple, clean, and
powerful. But if you want to get anything done, you still need Unix. I
think that’s actually really what made Rails successful.


Giles B.

Podcast: http://hollywoodgrit.blogspot.com
Blog: http://gilesbowkett.blogspot.com
Portfolio: http://www.gilesgoatboy.org
Tumblelog: http://giles.tumblr.com

On Thu, 3 Jan 2008 13:51:33 -0500, Giles B. wrote:

One of my biggest gripes about Rails, and I see this a lot, is that it
doesn’t completely encapsulate the lower layer; that’s not its goal. It
makes the easy things easy.

I think that’s actually a strength. It’s not like you can really get
away with just learning Rails. Rails is like a gigantic set of
power-user shell aliases that make common use cases simple, clean, and
powerful. But if you want to get anything done, you still need Unix. I
think that’s actually really what made Rails successful.

I completely agree with your disagreement of my statement!

Not to get all dualistic on you, but every strength is a weakness,
every
weakness is a strength. (Well, for most values of “every”.)

A couple of years ago, I thought I was smart because I finally
understood
the difference between “satisficing” and optimizing. It wasn’t till
recently that I realized that satisficing is optimizing - by including
the cost of doing the further optimization. (Now, of course, that’s
apparently so obvious that it’s the second sentence in the Wikipedia
article. I sweartagod it wasn’t obvious to me then.)

Needing to drop below Rails is a strength (it doesn’t have to be
everything
to everyone) and a weakness (it doesn’t do everything for anyone).

To me, not being clear about when you will have to drop below Rails is
a
further weakness; Rails is attractive because of its simplicity, which
means it attracts people who don’t know what they don’t know. Now
that’s
not a Rails problem, or even a beginner problem; it’s a human problem.
Still, the less you need to know to do something, the less you will know
about the world it exists in.

The very same arguments people use about “write your own authentication
system so you know what it does” can be extrapolated to “write your own
framework” - and, from there, to “write your own language”, “build your
own
computer”, and “don’t believe anything you haven’t seen with your own
eyes”. It’s all of a piece.

Conversely, there’s a good argument that not protecting developers
themselves is a strength. They’ll learn from it, they’re free to
experiment, and frankly it makes the framework easier to create, which
makes it quicker to release, which makes it more likely to be popular.
Etc.

Rails is, in essence, a really useful metaphor for design. Like all
metaphors, it has limits; like all metaphors, you can confuse the
attributes of the metaphor with the attributes of what that metaphor
represents. At that point, it’s not useful anymore.

The key is being able to know how far you can push your metaphor. Rails
isn’t a general-purpose tool. Nothing is. There is exactly one type of
general-purpose tool in the universe: an atom. They’re hard to work
with.

Personally, I’d like to be able to push Rails farther than I currently
can.
Personally, I wish Rails was just protective enough so you knew when you
were puncturing the metaphor. But I do recognize the strength of those
weaknesses.

(In an utter coincidence, I will be starting a new blog at
www.useful-metaphors.com shortly, talking about all this kind of stuff.)

Jay L. wrote:

I’m dangling my legs in two pools at the moment; I try to keep up with
computing, and I also try to attend Berklee. Which is, in fact, chock
full of next year’s rock stars. Only they’re not rock stars yet. There are
no cliques in that school; there are no rappers dissing other rappers, or
rock stars making bold philosophical statements (other than when they get
high after class). Nobody spends any time criticizing someone else’s
fretboard technique. It’s all about the music, and about learning from each
other.

This is an interesting comparison because I’m not at all a musician but
I live in Portland, Oregon, one center of Indy Rock. I’m sure the
Berklee students have a good shot at stardom after school, some of our
self-taught rockers will famous soon as well. But with the Indy Scene,
the star posturing starts much earlier.

What interesting about this is that communities do matter. Some nurture
ego and some don’t nurture it as much.

We should each keep in mind what behavior we’re nurturing.

Joe Solbrig

On Friday 04 January 2008, Jay L. wrote:

The very same arguments people use about “write your own
authentication system so you know what it does” can be extrapolated
to “write your own framework” - and, from there, to “write your own
language”, “build your own computer”, and “don’t believe anything you
haven’t seen with your own eyes”. It’s all of a piece.

I’d consider it bad advice to tell people to “write your own X so you
know what it does.” It encourages people to ignore work that has
already been done and particularly ignore the thinking that has gone
into that work already. What’s the point of having your homebrew X that
you fully understand, but that is broken-as-designed? Write your own X
if you understand the existing alternatives and they can’t be made to
do what you need.

Michael

Jay L. wrote:

On Thu, 3 Jan 2008 06:24:46 -0800 (PST), tho_mica_l wrote:

Many of these tools are made so that you don’t have to care about the
underlying concepts but so that the whole problem can be moved to
different level where it’s easier to handle.

Sure, and when they succeed, it’s beautiful. I haven’t had to think about
the number of cycles a CPU instruction will take in two decades.

I haven’t had to think about that since 1990, but I still enjoy it. :slight_smile:

Michael S. wrote:

into that work already. What’s the point of having your homebrew X that
you fully understand, but that is broken-as-designed? Write your own X
if you understand the existing alternatives and they can’t be made to
do what you need.

Michael

Well, except for Forth. The traditional way of learning Forth is to
write your own. :slight_smile:

On Jan 4, 2008 5:51 AM, M. Edward (Ed) Borasky [email protected]
wrote:

Jay L. wrote:

Sure, and when they succeed, it’s beautiful. I haven’t had to think about
the number of cycles a CPU instruction will take in two decades.

I haven’t had to think about that since 1990, but I still enjoy it. :slight_smile:

There’s still some embedded work where cycle twiddling matters - I
last did some in 2001 (?). I had to hit external hardware every 64
cycles - on the cycle - while multitasking other processing. That’s
probably the most fiddly code I have ever done. I ended up writing a
little ruby script that worked as roughly half an assembler and
counted cycles for me and colorized my source code if my counts where
off - it made everything way easier. Ah, memories… :slight_smile:

Eivind.