hoodwink.d enhanced
RSS
2.0
XHTML
1.0

RedHanded

What's Wrong with Ruby? Hah Yeah, It's Me! #

by why in cult

In an article posted entitled What’s Wrong With Ruby?, the author cites me as one of the main problems:

If I was put off Ruby by the hype, I was put off more by the many cutesy introductory tutorials I encountered when trying to get into it. Why’s (Poignant) Guide is a particular horrid example… I don’t want someone chatting away to me and telling me how “cool” it all is (I’ve lived long enough as a computer programmer to know it’ll never really be “cool” to be one). I just want the straight facts, plainly put.

These are such great points and so well-put. See, actually, I’ve known since birth that I’m a problem, so this is no surprise to me. As a child, I caused a giant meadow fire that all the dads had to go fix! Also, I broke a statue! And now I’ve ruined Ruby. Uh. Oh.

If I may build on his argument for just a sec.

The problem here is: the author of the article is trying to do academics, to gain knowledge, to build a career. And my cartoons and stories have patronized him, belittled him, by treating him as if he wasn’t a real professional. This is a terrible breach of conduct. He has accolades innumerable. He has done no small deed. His peers are all gathered around him, wishing him the best and swelling with nothing but respect and esteem for him. NOW WHAT IS THIS CARTOON BOOK DOING HERE??

Programming is for world commerce. It is like agriculture or fossil fuels. It is lot a like baling hay. I’ll give you an example: You wouldn’t write a cartoon book with a plot and running narrative just to show a guy how to bale hay! That would frustrate the guy! He would throw that book in the pig’s pen! He just wants to get straight to the nitty-gritty and, for once in his life, just bale hay, straightway!

Fortunately, as I’ve mentioned before, I have a strong feeling that I will die young without artifact. That I will make no lasting impression. This will be my avenue. So hold your horses, I just have a few more things to do in life and I’m sure I’ll be out of your hair.

said on 16 Mar 2007 at 15:21

Aw. You’re what’s right with Ruby, why.

said on 16 Mar 2007 at 15:26

You better not be talkin about hastening your departure, _why! Or we will surely have to crawl down into the very depths of hell, straight through the slavering jaws and down the gullet of the beast, to drag you out and demand our encore.

Also… fuck the academic nerd. In the butt. With something sharp. You can tell he really, really wants it - with cartoons! a la some horrific hard-core Chick tract! - deep, deep down.

said on 16 Mar 2007 at 15:30

See the problem here is two-fold. Firstly, he’s not looking very hard for the “straight facts, plainly put”. I learned what I know of ruby from examples and the API , the way all right-thinking people do, but I would have stopped at page 1 of the Pragmatic book if it hadn’t been for the Poginant one. I rather enjoyed being shown exactly why ruby was so cool.

Far more importantly, he has self-admittedly closed his mind to the merest possibility of programming being cool. With a mindset like that, of course the poignant guide is going to be annoying.

said on 16 Mar 2007 at 15:33

“I’ve lived long enough as a computer programmer to know it’ll never really be “cool” to be one” – but has he lived long enough as a programmer to find the joy in it?

Doubt he ever will.

said on 16 Mar 2007 at 15:36

This reminds me for no particular reason of the quote from EuropeRailsConf – “I didn’t realise Why was a real person?”

‘Why The Lucky Stiff’ is the Fonz.

said on 16 Mar 2007 at 15:44

One of the greatest things about Ruby is the community. If he can’t take the creativity that Ruby inspires, that’s his own problem.

I’d rather take my daily dose of chunky bacon over foo bar any day.

said on 16 Mar 2007 at 15:53

I couldn’t make heads or tails of your Ruby book, but I knew its existence and popularity were a very good sign for the health of the community. It’s good to make the normal people run away.

said on 16 Mar 2007 at 15:53

Another quote of his in the same paragraph that why quotes from: “However, that’s just me, and if there weren’t plenty of others who disagree, the ‘Head First’ books would never have sold so well.”

So it’s not just cartoons and poignancy that he can’t handle associating with programming, but also any kind of graphical or casual tone. Problem sets only, please!

It doesn’t matter if programming, or Ruby, is never “cool” to the world at large—we know it. Almost nobody but programmers understand that we work in something more an art than a science, but that doesn’t mean it isn’t true.

said on 16 Mar 2007 at 15:59

I don’t even do Ruby but I read All About the foxes. Mostly because of the bacon.

said on 16 Mar 2007 at 16:09

I can’t believe you guys are disagreeing with him. How low will you stoop to cover up that I’m the wrong one here? He is an academic and honestly deserves the respect my book won’t give him.

As an aside: thankyou, betty barbecue.

said on 16 Mar 2007 at 16:24

I doubt you’re fishing for a lovefest, but I’ve learned about a hundred different programming languages over the course of my life (maybe not well, but enough to write lil sample applications in each one) and I found the Poignant Guide to be my favorite learner’s guide, bar maybe Guy Steele’s Scheme book and Ralph Griswold’s (RIP) awesome SNOBOL and Icon books. I’m with the others here—I can hit ri and the Pickaxe and the mailing lists for the details, but learning with chunky bacon and Dwemthy and foxes has given Ruby a flavor for me it would otherwise lack. It’s magical and strange and wonderful and oddly dark.

Furthermore, anybody who compares the Poignant Guide to the Head First guides has failed to understand the Poignant Guide altogether. There’s no false jocosity or spoonful of sugar bullcrap to the Poignant Guide. It’s like the Hypnerotomachia Poliphili—it’s a legitimate work of art and literature as well as a programming manual. (It doesn’t talk about how cool Ruby is, really. Does it?)

Man, I don’t know why that kind of response bugs me so much. Maybe it’s because I’ve read a lot of programming lore from the 70s and 80s, when there were a lot more weirdo geek-hippies striding the plains with their 41CXs and Emerson, Lake & Palmer records, playing Dungeons & Dragons and writing arcane articles for the Whole Earth guide when they weren’t cranking out the code. Tech writers used to be less afraid of individual expression and personalized prose, I think. Some of the old programming manuals I have in my collection read like they were written under the influence of acid and Tolkien, and these were manuals for shrink-wrapped products from big companies. I like it better that way. So many of the technical books these days are not only passionless cash-ins, that lack of passion saps them of any real desire to inform at the same time. Great! Bring them on!

said on 16 Mar 2007 at 16:24

If it weren’t for WPGTR I ’d still be programming in C#. Talk about sucking the joy out of coding…

said on 16 Mar 2007 at 16:29

I thought programmers became cool around abouts 1997?!

What I find really funny is that an academic would be so intellectually dishonest as to claim any knowledge of what is or isn’t actually cool, since cool is so obviously trivial and astudious.

Clearly this underscores the need in the world for freelance professors and students.

said on 16 Mar 2007 at 16:37

Absolutely disgusting. You are, indeed, destroying the Ruby community; you’re doing nasty and horrible things like making Ruby accessible to folks like me who have wanted to do something programming-related for a long time but haven’t had much patience for long, rambling software manuals that they didn’t understand because they hadn’t taken the courses on the jargon. Your book might even make people who weren’t interested in programming at all come along and join the community! We’d never want amateurs joining us. They might pollute the code base, you know. Especially with a guide that tells them absolutely nothing of syntax, labeling conventions, or anything important like that. My thinking is that you should just go and kill yourself now, considering all your crimes. That meadow? You killed some deer there. You are the one who killed Bambi’s parents. That statue, it was an ancient greek one, very important to the art community. Now it’s time to pay, why.

But before you do go kill yourself for all your horrible crimes, would you mind writing a bit more stuff like the poignant guide, as well as more of your horrible, nasty and disgusting code, like Camping and MouseHole and all that other stuff over in the Subversion repo? I rather enjoye-... I mean, I need examples for my future classes of bad people in programming. Yeah, that.

Finally, long live chunky bacon (or at least its mold colonies); and say hello to Blix for me. I’ve been missing him.

said on 16 Mar 2007 at 16:40

This guy seems like the type that dooms himself to chunky Microsoft Certification books. He will not indulge in the delights of chunky bacon! Sad.

Coolness is in the eye of the beholder. _why, you are the god of Cool!

said on 16 Mar 2007 at 16:46

ARRRGH . That guy makes me crazy! I could literally write a book in response to that article (I’ve now gone off and read most of it and returned). It’s so ridiculously prescriptive and closed-minded.

I’m busy evaluating a bunch of languages for a new project (for a variety of reasons, Ruby hasn’t made the list, even though I’m very fond of it) and I’m looking at a lot of these languages he talks about approvingly at the beginning (OCAML, Haskell, etc), and to use those languages requires a different style of development than the one he seems to want to teach his students. In his attention to various things (like the limitations of blocks, which he pretty clearly doesn’t fully understand) he overlooks the fact that Ruby, like Perl before it, has a fully functional core and supports closures and at least a degree of higher-order programming. So maddening!

There’s a place for strong typing, there’s a place for type inference and there’s a place for duck typing. It all comes down to what best fits your hand or the task at your hand. Trying to pretend that there are objective winners in the language wars is so depressingly… I don’t know, maybe “reactionary” is the word I’m looking for. Maybe “didactic” is another, because I think part of his dislike for the Poignant Guide comes down to the fact that he’s an academic and the Poignant Guide is by an autodidact for other autodidacts (I loved my computer science classes in school, and I have 95+% of a CS degree, but I taught myself how to program rather than learning it in school, ultimately).

I love Haskell and I love Ruby at the same time. I’m gonna use them both. I think they’re both awesome and awesomely useful languages. I don’t think either one is going to make it easier to learn to program, because as dude mentions, learning to program is, always has been, and always will be, hard.

Sorry for using up all your comment space.

said on 16 Mar 2007 at 16:53

Wait. What about the University of Mininova? You are an academic too, so you must be right.

said on 16 Mar 2007 at 16:59

Comics or not, the poignant guide is the single best book on some topics like metaprogramming.

I have a friend who tried learning ruby off the guide, and just got confused. I suggested he read the pick-axe book first, and then look at your guide to learn why ruby is fun ;)

said on 16 Mar 2007 at 17:07

I look forward to Why’s Poignant Guide to Hay Baling. Hopefully the foxes’ agent won’t demand too high of a royalty.

said on 16 Mar 2007 at 17:21

I love the cute foxes. I’m looking forward to Why’s (Poignant) Guide to Life, the Universe and Everything.

said on 16 Mar 2007 at 17:27

I think what a lot of you are trying to say is that I have failed, that I am doomed, and that the other guy is right and that I have messed everything up. Which is exactly what I’m trying to say.

forrest: I can’t believe you’re trying to compare the Head First books and the (Poignant) Guide! First of all, the Head First books use a wall-eye lens. And second, the Head First book are sold in the marketplace and are real books. The (Poignant) Guide is only casually printed by college students whose universities subsidize their printer paper.

I like what you’re saying about Haskell, though.

ianmcorvidae: The statue I’m thinking of wasn’t Greek. It was a statue of a woman nursing a premature rabbit. Of Spanish origin. So, wait, there was a Greek one??

andre: The University of Mininova, where I am beginning my freelance professorship, happens to be an unaccredited school. This means that classifying my studies as “academic” is dubious at best! The dean of a popular Ivy League college has been pursuing legal matters against me, demanding that I change my appellation from “freelance professor” to the more appropriate title of “disenfranchised person.” I only use the prior because Google does.

said on 16 Mar 2007 at 17:28

You shouldn’t mock that guy because he invented the for loop and recursion. If it weren’t for him, we’d all be subsistence farmers.

said on 16 Mar 2007 at 17:40

The real crime is how you are forced to read Why’s Poignant Guide before you can even use ruby. It’s the world’s longest EULA . I say we need to relicense ruby so that you can legally learn it without suffering through cartoons.

Software wants to be (cartoon) free.

said on 16 Mar 2007 at 17:56

Fuck that guy, _why. The Poignant Guide is everything that’s right with programming, it’s everything that I ever want to be as a professional: brilliant, concise, and whimsical.

It’s like Steve Jobs reduced down to hypertext.

said on 16 Mar 2007 at 18:01

It looks like somebody wants to spoil the party, I’m actually a designer (industrial designer) and before _why’s stuff everything related to programming was really boring for me, could you belive how much fun is ruby? (and it’s community), hey keep it in the fun plz

said on 16 Mar 2007 at 18:48

This all coming from a guy whose current interest is the Aldwych programming language.

main==

Screen<-aio\stdio(), Screen.fwrite(“Enter first number: “) .readInt->x .fwrite(“Enter second number: “) .readInt->y .fwrite(“Their sum is: ”>+z>”\n”), z<-x+y;

Ugh.

Seriously though, _why, you are my hero. All of your goofy, artsy posts and the sheer amazingness of Poignant remind me just how blessed I am to use Ruby and to be able to bask in the glory of its community.

The _ I always use at the beginning of my usernames now is a tribute to you! Will you have my e-children? :)

said on 16 Mar 2007 at 19:02

thank you why for bringing back passion into my coder’s life with ruby

Will you marry me ?

said on 16 Mar 2007 at 19:36

to his own detriment that he ignore the poignant guide – in-between the foxes and drgns are nuggets of ruby gold! oh yeah you’re bad for ruby _why, with all that new ruby website committee and try ruby and yaml/syck and etc, absolutely terrible!

said on 16 Mar 2007 at 20:12

If you’ll indulge my snobbery briefly as a Londoner and graduate of University College London, I’d like to inform those who don’t understand this guy’s background: University of Sussex is rubbish and this guy went on to teach at somewhere worse: Queen Mary. Don’t be fooled by the ‘University of London’ crap—it means it’s part of a financial conglomerate of all London schools, which has no academic import. And Queen Mary is one of the worst of the London schools for higher education. In England you’d call it a Polytechnic, in the States a Community College. Basically, you just need to have gutted out high school / secondary education. The fact he is teaching in a place infinitely worse than where he schooled (and even that was crap), the guy is a total academic failure. He’s talking out of his ass.

said on 16 Mar 2007 at 20:38

Don’t forget to check the article of the guy who coldn’t install linux

Some experts these are…

said on 16 Mar 2007 at 21:02

Oh, and by the way why, Linux is made of ass and fail, and Windows XP will do all I ever need without the hassle:

http://www.bitwisemag.com/2/The-Hell-That-Is-Linux

D: tear

said on 16 Mar 2007 at 21:05

He epitomizes everything that’s wrong with academic computer science.

Programming language research has long been sidetracked toward inventing toy languages that are primarily useful for pseudo-mathematical wanking.

Unfortunately, the best possible language for pseudo-mathematical wanking (Lisp/Scheme) was invented 50 years ago. One must never admit this, because….well… if you did, there’d be no need for “programming language research”, would there? :-)

Even worse, Lisp is actually a pretty good general-purpose programming language (if a little hard for a novice to get his head around), which poses the risk that someone who writes real-world applications may run across your toy code in a journal article, resulting in much pointing and laughing.

It’s better by far to invent a new language that’s only understood by the 5 guys who work in your tiny little corner of the research landscape. That way you can all peer-review each other’s papers and recommend each other for funding.

It’s not an accident that only ONE of the widely-used languages developed over the last three decades (C, C++, Java, PHP , Perl, Python, Visual Basic, SQL ) came out of academia, and the lone exception (Python) was developed for prototyping, not analysis (note: I’m not saying these are all good languages, but they’re the main ones that people have used to write all those zillions of lines of useful code that make our world go).

The really interesting new programming languages tend to be the work of obsessed lone hackers (Ruby) or else come out of industry (Erlang).

I’m sorry to hear about Ralph Griswold, btw. I remember coming across an ancient SNOBOL book in the library back in the day and deciding that SNOBOL rocked. Hard. I didn’t have access to a SNOBOL compiler, alas, and now that time has passed.

said on 16 Mar 2007 at 21:26

I’m glad I’m not an academic, sounds boring! Only Ruby could have a poignant guide (Why’s (poignant) guide to PHP ?).

said on 16 Mar 2007 at 21:28

Why: In thirty years, there will be a Why 101 class. You are a genius. Nuf’ said.

said on 16 Mar 2007 at 21:31

Perhaps he would have found Rails Blob more to his liking.

Rails Blob: RIP

said on 16 Mar 2007 at 21:37

Your poignant guide is what turned me on to ruby ! The words ‘chunky bacon’ and ‘programming’ in the same text, I was instantly hooked.

said on 17 Mar 2007 at 01:14

_why, we’re putting together our research paper for submission to a peer-reviewed ACM Symposium at the end of this month.

When we cite your work, how would you like to be referenced? “whytheluckystiff”?

said on 17 Mar 2007 at 01:17

He’s not trying to do academics, he’s a lecturer, not tenure-track (according to the QMUL DCS Staff::Detail page).

said on 17 Mar 2007 at 01:32

The last time I had tea with Christos, he mentioned he was working on a graphic novel about the ‘remarkable people who developed mathematical logic’.

I’ll have to ask him what he thinks of your work the next time I’m up at Berkeley…

said on 17 Mar 2007 at 04:08

There’s nothing wrong with the foxes. Except that they get all the bacon and I don’t. Keep on writing and drawing.

I didn’t like the last chapter though because it’s all drawing, hard to test out the things myself (when you can’t copy&paste). That’s a small fault. Other than that you rock.

said on 17 Mar 2007 at 04:57

A boring loner Academic in a Unfreaky Sandbox

said on 17 Mar 2007 at 04:59

Dammit, let me redo that:

A boring loner

Academic in a

Unfreaky sandbox

said on 17 Mar 2007 at 05:03

If _why is wrong, then I don’t want to be right!

said on 17 Mar 2007 at 05:11

Some people are intent on being doing Serious Things in their Serious Jobs. And I’m glad if they don’t like Ruby. We don’t need them.

said on 17 Mar 2007 at 05:43

Wait, we all knew this already. What’s the news here?

(If you didn’t get it, I’m joking, so please don’t bash me.)

said on 17 Mar 2007 at 05:52

I love you as no man should love another, why.

You are the anti-Bileblog.

said on 17 Mar 2007 at 06:44

_why, He’s right – I’ve been taken in by your cartoon foxes and your chunky bacon (mmm, bacon). I’m furious that I’ve found Ruby through your work. I shall erase the ruby interpreter off my macbook pro, G4, windows box, other windows box, nokia n800, treo, tivo and every dedicated server I own immediately. I’m going back to coding websites with cobbled-together C and bash scripts – who’s with me?!?

In other news, are you performing at RailsConf this year? I’d like to know so I know whether or not to pack my air horn collection.

said on 17 Mar 2007 at 06:45

_why, I almost feel like trashing you just to provide some balance to this big love-fest. But I will resist. You’re one of the best things about the Ruby community, and I hope that you have a long life and produce many more artifacts.

said on 17 Mar 2007 at 06:52

Q: What can you say about a man that does not like cartoons?

A: A person with no imagination is a terrible programmer.

said on 17 Mar 2007 at 08:26

One thing, the poignant guide isn’t everyone’s cup of tea; it’s not mine for instance. On the other hand, tryruby is the best way in the world to be introduced to ruby.

said on 17 Mar 2007 at 08:30

Who loves _why? I do, that’s who.

said on 17 Mar 2007 at 08:48

I used to be a hobo, I used to ride trains, I used to live on dumpsters,I used to have no name. Then I found the Poignant Guide To Ruby. Now all I want to do is learn how to code. I want to be a programmer and write code all day and night. It is like being a wizard. Say magic words and make things h a p p e n! It’s like finding a box of donouts after a two days of starvation. Thank you Why for writing a guide that actually teaches something for real except boring tech-specs!

said on 17 Mar 2007 at 08:48

I used to be a hobo, I used to ride trains, I used to live on dumpsters,I used to have no name. Then I found the Poignant Guide To Ruby. Now all I want to do is learn how to code. I want to be a programmer and write code all day and night. It is like being a wizard. Say magic words and make things h a p p e n! It’s like finding a box of donouts after a two days of starvation. Thank you Why for writing a guide that actually teaches something for real except boring tech-specs!

said on 17 Mar 2007 at 09:03

You are one of the reasons I love Ruby so much. You keep it fresh. You keep it real. Don’t listen to those old washed up programmers that wish they could get excited about what they do.

said on 17 Mar 2007 at 09:28

Just how well does an average person’s mind cleave to and recall your average dry college textbook? Now, how well does this same said mind connect to and understand a comic book? Therefore, why not write all textbooks as comic books – by the why?

said on 17 Mar 2007 at 10:15

i hate to break the news, but i think the real issue here is the lack of a pop up book format. that is what keeps ruby from legitimately solving problems.

why, please keep the creative faucet running full blast. anyone reaching for the valve lever, simply doesn’t understand.

said on 17 Mar 2007 at 10:54

hrmm interesting point. perhaps 3-d glasses would make the read more enjoyable?

said on 17 Mar 2007 at 11:16

I should probably apologise for my fellow Englishman (if he turns out not to have been English then I apologise some more in advance) for his apparent humour failure when the deeply serious and completely non-funny subject of computer programming is concerned.

Perhaps he’s job not been around long enough. I started out in, um … 1978 with IBM mainframe COBOL . After that pretty much anything has an element of humour in it. And I see funny code every day – often the code I wrote the day before.

said on 17 Mar 2007 at 11:31

Haskell would be perfect if only there was a Why in our community

Come here, Why! The grass is greener!

said on 17 Mar 2007 at 11:56

I still remember my first lesson from the WPG2R “The variables slide down the chute and into the block” or something like that.. the best explanation of ruby blocks EVAR !!!

oh and FIKK that guy.. he’s what’s wrong with computer “science”.

said on 17 Mar 2007 at 12:02

bit wise and mega-byte foolish!

said on 17 Mar 2007 at 12:21

on that article

If you want to get a better understanding of what devs need, get off your academic butt and start writing code to deadlines set by market forces and projects managed by insecure psychopaths with users who have been sold utopia by salesmen with no soul.

said on 17 Mar 2007 at 13:35

The funny thing is that book like WPG2R follow in the footsteps of other books for ‘academic’ languages like the Little Schemer.

said on 17 Mar 2007 at 13:59

Chunky Bacon, FTW !! Screw this guy and his “programming isn’t fun”. Gives me wood, that’s all that matters.

said on 17 Mar 2007 at 14:09

Forget that idiot! You’re the man, why. Thank you for all you’ve done and all you will do!

said on 17 Mar 2007 at 15:18

I didn’t like your book and I didn’t like his article. In fact I didn’t complete either of them. I feel so left out. Who can I side with? Wait, I do really enjoy reading redhanded, so now I can feel like I belong. Seriously, I don’t know why any body cares about what this guy is saying. You know what they say about opinions and arse holes?

said on 17 Mar 2007 at 15:41

hey everyone be careful of _why’s head, you’re gonna make it explode; he is a big man, has had enough head-pats

said on 17 Mar 2007 at 15:59

That was a lame article. No real examples, not even very good arguments.

Then, at the end, he says, “Oh, by the way, I’m going to use Ruby any time I need a scripting language.” So…I guess it isn’t that bad after all?

said on 17 Mar 2007 at 17:29

Oh, comeon, here’s factorial in Aldwych:

fact(n)<

{ n>0 |>n*<,n-=1; : ||>1; }

now that’s cool!

said on 17 Mar 2007 at 21:18

Who says programmers can’t be cool? _why is a freaking rock star and an artist in many types of media including programming.

Keep setting the meadows aflame, _why.

said on 17 Mar 2007 at 22:46

_why: creativity shines through everything you do. keep the flame alive!

said on 18 Mar 2007 at 00:16

You’re the reason I’m all the more passionate about ruby. The guy who wrote the article is probably some old-time programmer who has never learned what cool is and is jealous of all the little DHH ’s and Chad Hurleys getting all the attention (and money) while he’s been sitting at the same desk for 30 years… I don’t know the guy but it sure sounds like it to me. And anyways, if he’s so good, why can’t he make his own boring book and see how many people look at that!

said on 18 Mar 2007 at 03:04

What? “Why’s (Poignant) Guide” was about… programming? Now I have to go read it again!

Keep on frying the chunky bacon!

said on 18 Mar 2007 at 09:18

Why your poignant book is the hardest Ruby book ever. I can’t just browse through it, you do force me to read everything, lest I should miss an enjoyable paragraph !

Chunky bacon will still be remembered when computers have learnt to do without programmers.

said on 18 Mar 2007 at 11:09

I think he’s found the grave deficit in your book: it’s too logical ! Stop that ! Realize that when programmers aren’t cool to everyone, programming can’t be cool to individuals.

A remedy: Everyone thinks the arctic is pretty cool, so you need some Eskimoes or polar bears in your book. Lucky you haven’t finished it yet, or we might have seen eBay bidding wars for the early, unpolarbeared versions.

said on 18 Mar 2007 at 12:09

I agree! I couldn’t even read the code through my tears.

Stupid BOOK !

said on 18 Mar 2007 at 14:20

I hope this guy get’s Joel Spolsky’s “Best Writing About Software” book and discovers that the madness that is your method is considered to be great writing.

It did have the effect of keeping certain anal types away from Ruby… and for that… we owe you more than we can repay.

When I was young we called it “scaring away the straights.”

If you’re in a mad rush to grok Ruby then I’ll accept that Why may not be the most efficient our guide. But if you’re interested in a pleasurable learning experience then enjoy the cruise.

If you REALLY want mastery… yyou must read everything you can find and practice writing a lot of code… and that’s true of all modern languages. Ruby, as a rule, has a better set of books now than most languages, IMHO .

I love the 2nd Ed.”Ruby Way” book and loved the 1st one too, come to think of it. I think your critic would enjoy that approach a bit more. But there’s no sure thing for someone who’s bound to hate anything that has raving fans… is there?

Rave on. It helps keep things from getting so bloody boring.

said on 18 Mar 2007 at 14:20

i was appalled in a nice way to find why’s poignant guide to ruby. yes, programming is probably the biggest sin in the book if you are doing it for fun and not global productivity. same for any intellectual pursuit. we’ve got brains, but we’re not supposed to use them. coercion to use our brain is all around though. and then we have ruby and rails; and it’s almost like using our brain to program in ruby is somehow not a sin—it feels so natural. so i think a cartoon book showing how liberating it is to flow with ruby is pretty much innocent and benevolent. and no, we don’t need to practice global productivity when using it, but most-likely folks will still feel like that is their role in life for some time to come. but at present programming can be an art, and ruby on rails a palette.

said on 18 Mar 2007 at 16:21

Right, so the book didn’t do it for me? So because I don’t like what you like, and admitted that’s my taste, I’M the intolerant one? What about “live and let live”? Why can’t I do things my way and you do them yours?

So I looked at Ruby and thought, huh, it’s ok, but I don’t see what all the fuss is about, and there’s a few things I think might not scale up? I didn’t act some some raving evangelical who’s discovered god and wants to tell everyone about it, like some people seem to when they discover Ruby.

Heh, what I’ve learnt from this is that Ruby programmers are pretty intolerant stuck up people. Can’t take a bit of criticism without pouring down insults.

And UCL guy, actually the AI dept at Sussex is acknowledged to be a world leader, RAE 5 rated (and I got my first degree from Imperial so you know what I think about UCL ). But university snobbery “I’m at a TOP university YAH , you’re a litte oik at a proles’ university. Oh, really “cool” heh?

said on 18 Mar 2007 at 16:46

You’re an amazing programmer, and have dome so much, but I must admit I didn’t learn a damn thing from the Poignant Guide. It’s just too off the wall. Fortunately there are other guides out there, so now I’m beginning to grok the lowest levels of why’s genius. I feel like a cave man who’s been invited to the ISS . :->

said on 18 Mar 2007 at 16:51

To be honest, I’ve not read all of the poignant guide although I did find the foxes somewhat amusing. I’ve picked up most of what I know about ruby from Pickaxe and the the api. I quite like ruby, but it isn’t perfect.

Some people can be a bit over-enthusiastic about ruby, but we’re not all intolerant and stuck up, Mr Huntbach. Your original article made some OK points, but I’m afraid you’ve not done your argument any favours by posting this kind of comment here.

said on 18 Mar 2007 at 16:54

He’s right. You suck.

...kidding. You rule, _why!!!

said on 18 Mar 2007 at 17:48

fun is such a waste of time. seriousness is much more efficient. therefore, being serious is a moral imperative. all fun havers are immoral.

said on 18 Mar 2007 at 22:13

MMH : Quite honestly, I don’t question your rank for a second! I especially recognize the high caliber of your AI department and I honor, cherish and revere them as timeless legend. In my mind, their shadows cast down from the hill’s crest as they pause atop gallant steed!

Please, accept my most finely woven apologies. For my part, I have done nothing but agree with your article so far. As a young freelance professor, at an unaccredited university of the lowest order, I am totally glee-smacked to have some review from those of higher thought. Oh, to be at Sussex! I can only imagine the comraderie and the jubilant glugging of knowledge. You are so fortunate to have the love and adoration of your colleagues. I am banished from campuses, having spent my life wandering in lands of ignominy, dispensing formless lecture and leaving adhoc pop quizzes on tree bark in the freelance way. This is no man of concern.

Let us forget this paltry quarrelling and be best of friends! Please, come to my pavillion and we will dine on quail and great hound. Bring your lovely, frail wife and any of your long time friends rated RAE 4 or above! Very good.

said on 18 Mar 2007 at 23:00

I find the Poignant Guide to follow a stylistic tradition certainly established before, but perhaps most recognizably evidenced by, Russ Walter’s Secret Guide to Computers. In fact, I was getting worried that the idea of conversational documentation had entirely given way to dry, unhelpful bundles of man pages and intensely product-/version-specific documentation (as popularized by a certain publisher that only puts woodcuts on the covers of its volumes) when I stumbled upon this thing.

That said… I haven’t actually checked on its progress for a year or two, and have only given the latest installments the most cursory glance, but please tell me you’ll get to a brief overview of ‘design patterns,’ or, to the point, sane organization of a project and its main loop or equivalent.

All the Ruby documentation I’ve encountered is great at demonstrating how to assemble little methods (with inheritance and all that good stuff), but leaves creating an actual ‘program’ with more complexity than a shell script as some sort of zen exercise for the reader. We all know the language doesn’t enforce many practices; just show us some options for structure or layout that work.

said on 19 Mar 2007 at 03:33

It’s a classic anti-ruby post that’ll see his site get a massive surge of traffic from the Matz army… Don’t fall for his ploy! MINASWAN . WICBASWACB!

said on 19 Mar 2007 at 04:17

_why got me into R.

How? tryruby. Lowest entry barier to any languague ever (or, for those of you from reddit – Lowest. Entry Barrier. To any Language. Ever. ).

said on 19 Mar 2007 at 05:14

I’m a university lecturer, yes. I don’t think this makes me special. If you must know, the reason I went into academia is when I graduated I found all the fun coding jobs were defence-related, and I didn’t want to be writing programs to kill people.

One thing being in this job has shown me is just how difficult most people find coding. There’s a few of us – I’m one – who find it real fun, do it naturally, love to explore new programming languages etc. But most kids – and they must have some sort of interest in computers otherwise why did they register for a CS degree – seem to find it amazingly difficult. And if you say “that’s because you’re a bad teacher”, it’s something that’s experienced across the world by whoever does it. Different people, different styles, different languages chosen, different paradigms, still the end result which almost everyone teaching intro programming on CS degrees finds is that a small proportion of the class really likes it, gets it right away, get good marks, the rest do really badly, hate it, and fail.

From my experience I don’t think Ruby’s the magic solution to this. I’ve read a lot about it, tried it out, and I STILL don’t see why so many people think it’s some amazing thing so much better than any other programming language. It’s OK, that’s all – I’m open to be persuaded of its special nature, but when I questioned it, all I got was abuse poured on my head. Couldn’t you guys have tried to convince me instead?

Sorry to Why, no doubt your stuff’s great to those who enjoy that sort of thing, but I didn’t find it helped me into the language. People trying to impose their own sense of humour on me when I’m trying to learn something doesn’t work. But if others share yours and it works for them, well, fine for them.

One reason I’m looking at this is I think academic research into programming languages has been sterile for many, many years. When I look at the academic conferences, it’s all boring mathematical stuff that sends me to sleep. What interests me is practical ideas for new programming languages ordinary people can use. It seems to me all the exciting stuff on the development of new programming languages is taking place outside the universities, which is why I’m looking at places like those involved with Ruby, which is where it’s happening.

said on 19 Mar 2007 at 10:14

“One of the greatest things about Ruby is the community. If he can’t take the creativity that Ruby inspires, that’s his own problem.”

then …

“Also… fuck the academic nerd. In the butt. With something sharp. You can tell he really, really wants it – with cartoons! a la some horrific hard-core Chick tract! – deep, deep down.”

I think Amy missposted from a BDSM site … :)

said on 19 Mar 2007 at 12:26

hum.

arrow slinging from ivory towers.

who couldn’t see that coming.

and how very english!

it is good not to be disappointed.

said on 19 Mar 2007 at 12:33

uh there are some many issues with ruby, i don’t think cartoons description are the issue. more likely he ran into some idiot like zenspider

said on 19 Mar 2007 at 12:43

“Couldn’t you guys have tried to convince me instead?”

alright, sir, you deserve an answer to that very fine question.

no.

these are not university professors, lecturers, or academics, who have spent years cultivating great respect for things like decorum and the formalities of scientific study. we’re amateurs, we’re self-taught hacks, we’re dilitantes. and a few of us are degreed professionals as well.

but by and large, i suggest, it is apparent “we” don’t care much about convincing anyone who needs to be convinced, for that very reason. such is my observation, anyhow.

you might be hopeless, MMH , but some of these folks will still love you and your ilk for being who and what they are, because without them, there would be no them. you’re like the evil chunky stuff from TIME BANDITS , you know? DON ’T TOUCH ! IT’S PURE , RAW, UNDILUTED EVIL !

yes, you’ll get abuse heaped on you out here. we all do. welcome to the real world free market / bazaar, where the letters you drag around after your name are only dead weight. i doubt you could swim in it any better than any random one of us would fare as a university instructor charged with taking free-thinking young minds and turning them into the sort of rigid little automatons i regularly bounce from job interviews.

said on 19 Mar 2007 at 12:55

I think we collectively are being harsher to MMH than he is to us. Remember, Matz Is Nice And So We Are Nice! If he couldn’t pick that up in the first 10 seconds of knowing us, and in fact we convinced him of the opposite, we are clearly not living up to it.

MMH , you stated a little more than the fact that _why’s and your senses of humor didn’t align. You said the book was “horrid”, and that it’s symbolic of one of the biggest things wrong with Ruby. Them’s fighting words. As you can see in a few of the comments above, there are some people who enjoyed the book but had to do their learning elsewhere, and people who didn’t enjoy the book but learned Ruby anyway because it was awesome on its own. It’s possible to coexist with _why’s book, regardless of your humor or whether you like Ruby. :)

I agree wholeheartedly with your last point, that programming in the academic setting is becoming sterile, and making it accessible and fun again is necessary. And indeed, if you keep your eye on the Ruby community and on _why, I’m sure you’ll find out that Ruby is exactly, as you said, where it is happening.

said on 19 Mar 2007 at 14:05

Setting aside our widespread outrage for the moment, I think one of the other issues raised by Herr Professor Huntback deserves particular attention—namely, that Ruby doesn’t parallelize very well: our very mutable classes, shared between threads, mean that we’ve got all kinds of synchronization points and possible contention just for a simple method call. Multiply up, and you can see we’ve got problems.

Part of the solution, as the world gets ever more parallel around us, is going to have to be something along the lines of establishing “partitions” which run in separate threads, each with their own independent set of classes and so forth. Of course, sometimes we will want to share some objects or classes, so there would need to be some mechanism to import, or proxy, such things from one such “partition” to another.

Thankfully, _why has been working on an API to accomplish just that: we call it sandbox. Now, while MRI and even YARV haven’t gotten very parallel about their interpreters yet, JRuby already is, with its multiple interpreter contexts per process. Combined with Ola’s JRuby implementation of that sandlish sandbox (which lets us take advantage of those multiple contexts in a single program), we’ve accomplished a major step in getting Ruby to the parallel world. There’s lots more to do, but _why has gotten us over a very important hump.

If by Huntback’s reckoning _why is wrong for Ruby, _why also demonstrably very right.

said on 19 Mar 2007 at 14:36

_why, I like the Poignant book (there’s lots of boring stuff out there, so some humor and cartoons is refreshing; I have to admit some of the humor in the book and on your site, which I read regularly, goes over my head, but I don’t mind). And I love Ruby—it’s what got me interested in programming again. But methinks the rock-star/guru accolades from your devotees are a bit too much… And if someone disagrees with the Poignant book, or indeed dislikes Ruby itself, no need for everyone to cut them down so viciously. Let the work speak for itself (which it does).

said on 19 Mar 2007 at 17:20

Yea, the fanboism’s a bit much at times. I’m kind of sad to see how things went with MMH above, but I stand by what I said—if we’re looking at the problem areas in Ruby, they’re stuff like concurrency and static analysis, not surfeits of cartoon foxes.

said on 19 Mar 2007 at 19:41

I have a bone to pick with the so called “fans” here. I find it offensive that most people keep mentioning “cartoons” as if that is the whole point of the book. The problem is that most “fans” are guilty of the same thing as our beloved MMH over here. They never bothered to seriously read it as a n original work of art or literature. From all these comments about “cartoons” this and cartoons that.. it would seem that they think it is some kind of a silly ruby-for-dummies book “WITH CARTOONS !”

JEEZUZ -H-T-F-Krrrrrrrrrist! is that all you “fans” think it is? Have you even bothered to read it? Or just looked at a few pages and decided it was “a cute book with cartoons” and you just have to toe the line and be the good little fan-boi’s that you have been trained to be over in the rails pen?

Read the caption of the blog again: “Sneaking Ruby through the system”

And stop mentioning “cartoons” as an implication that you’ve READ the book, which you clearly have not and you are guilty of the same jump-to-conclusion thing that you are accusing MMH of.

And I am pissed with MMH because he chose to pick on quite possibly the least controversial players in the Ruby arena and concocted sloppy and hastily slapped together attacks on Ruby without even taking the time to properly prepare his case. I hope he doesn’t publish his papers with the same level of “rigour” that he applied in his opinion piece.

Hey, don’t look at me, he put himself in the public arena by starting the whole thing.

said on 19 Mar 2007 at 19:51

Hello peoplez and why. I love why. Do you know why I love why? Oh Why?/! I love him because he understands a lot.

Mostly, I love him because he understands how people learn good.

People are made up of thinking (mind), emotions (feeling) and being (body). When two of these things connect and work on something at once, it sticks better. If all three work together, it changes us.

Learning is a process of changing us. Why’s stories engage our imagination, which binds two or sometimes even three of our parts together to work on the one problem.

He’s a G-Knee-us!

Why on, Whyernator! Why It Up!

Keep on Why’in!

All my hearty heart heart.

Random8r

said on 19 Mar 2007 at 23:49

they must have some sort of interest in computers otherwise why did they register for a CS degree

Money? Someone they respect said “computers” to them in the hushed, reverential tones that were reserved for “plastics” in ancient Dustin Hoffman movies? They got their sense of what programmers do from watching The Matrix?

that a small proportion of the class really likes it, gets it right away, get good marks, the rest do really badly, hate it, and fail.

The same is true for art school, cooking school, and probably undertaker’s school (whatever it’s called) and cosmetology. In fact, I’d wager a large sum that the ratio of incoming students to successful careers is far worse for art school than it is for CS. At a minimum, the CS guys probably fail out at an earlier stage, while there’s still time to change to something else.

Some people have natural talent, some don’t. We generally recognize that this is the case for art and cooking, but oddly think that programming is something that can be “taught”, regardless of inherent aptitude. Sure, just about anyone can be taught to write a for loop, just as just about everyone can be taught to draw something simple, or cook a basic meal. That won’t make him a great (or even competent) artist or chef, though. To do that he needs both talent and enough interest in the subject to practice, practice, practice.

From a pedagogic perspective, I would argue that scripting languages are a MUCH better choice than whatever bondage-and-discipline language is in vogue in academia at the moment. Scripting language = gets working code on the screen faster = student programmer writes more code in the same amount of time. Before you can teach Java you need to spend a substantial amount of time on the mechanics of compilation and all the syntax crapola. The edit/compile/debug cycle is a major motivation trap, too, especially when someone’s first starting out. Do not underestimate the advantage of being able to type your code right into IRB and see it work (or not) on the spot.

From my experience I don’t think Ruby’s the magic solution to this.

There isn’t one.

I’m open to be persuaded of its special nature,

Well, you might start by writing some code that actually does something, say, recursively iterates over the file system, finds all MP3 files, extracts the ID3 tags, and puts them in some sort of simple database.

Write it in Ruby, then rewrite it in Java, C, or (shudder) Aldwych.

I write code when I need to do something, said something rarely being an elegant reimplementation of quicksort or Dijkstra’s algorithm. I like languages that let me do my stuff without strewing a lot of bullshit in my path. Ruby spreads less bullshit in my path than any language I’ve ever used (Lisp is more elegant, but the bullshit factor ramps up exponentially when you start needing to talk to libraries written in other languages).

Trust me, your students will be far more motivated to write a project that lets them grab (football scores, stock prices, pictures of their favorite actor or musician) from a web site and display them in some cool way than they ever by writing quicksort or the KMP string matching algorithm. Do you realize how many guys are actually needed to write quicksort in today’s job market? Answer: one guy per language.

I didn’t find it helped me into the language.

“Not my cup of tea” is a long way from “horrid”. I think the Poignant Guide is pretty cool, but personally I learned from the Pickaxe book.

Jeez, it’s not like any famous CS guy ever wrote silly songs or drew cartoons.

said on 20 Mar 2007 at 03:13

Now you are being too modest, Why. The book is a masterpiece in several ways. It’s a great didactic tool and a fun read which occasionally enlightens and makes you laugh throughout.

said on 20 Mar 2007 at 06:03

OK, here’s a fairly detailed reply to Lambda Lambada.

MMH : they must have some sort of interest in computers otherwise why did they register for a CS degree

LL: Money? Someone they respect said “computers” to them in the hushed, reverential tones that were reserved for “plastics” in ancient Dustin Hoffman movies?

No, it’s not the money these days. For a short time CS departments got a lot of applicants who though that way, but since the dot.com crash it’s been hard to recruit as there seems to be a widespread opinion that there aren’t any jobs in it, and what there are have all been outsourced from Europe/US anyway.

Some people have natural talent, some don’t. We generally recognize that this is the case for art and cooking, but oddly think that programming is something that can be “taught”, regardless of inherent aptitude.

Yes, I’m agreeing with you there, that’s one of the points I was trying to make in my article, I don’t see Ruby or any other programming language as solving this, becuase it isn’t the programming language used that’s the issue.

From a pedagogic perspective, I would argue that scripting languages are a MUCH better choice than whatever bondage-and-discipline language is in vogue in academia at the moment.

Yes, that’s why I’m looking at scripting languages, I happened to mention this to the editor of Bitwise magazine, and he asked me to write an article on my first impressions of Ruby after I’d spent a couple of weeks with it.

Before you can teach Java you need to spend a substantial amount of time on the mechanics of compilation and all the syntax crapola.

But Ruby has syntax as well, I don’t see the issues as so dramatically different. Sure, you lose the stuff required by Java to maintain static types, but is this really such a major issue? I don’t think it makes the fundamental difference between understanding programming and not understanding it.

Well, you might start by writing some code that actually does something, say, recursively iterates over the file system, finds all MP3 files, extracts the ID3 tags, and puts them in some sort of simple database.

My own interest is more on the abstract nature of algorithms rather than the practical details of interacting with the file system or a database. In the end, whether it’s a loop over an array or a loop over the file system, it’s still the same thing – a loop. Sure, I’m well aware that for writing practical code you need all that interaction with the system stuff, but I find that boring detail that doesn’t turn me on.

Write it in Ruby, then rewrite it in Java, C, or (shudder) Aldwych.

Why “(shudder) Aldwych”? Have you looked at the language and its aims? Actually it’s some ideas I have for a language, not a fully developed language. Because of that, it doesn’t have the libraries to interact with the real world, just something crude to link to stdin and stdout. The important stuff is the way it represents objects interacting concurrently. And actually in many ways it’s close to Ruby, and it is dynamically typed. I’d appreciate constructive comments.

I write code when I need to do something, said something rarely being an elegant reimplementation of quicksort or Dijkstra’s algorithm.

Sure, no-one needs to write code for these things. But I find when I want to assess a new language and how it works, what I do is to write some well-known and understood algorithm in it to see what it looks like.

Trust me, your students will be far more motivated to write a project that lets them grab (football scores, stock prices, pictures of their favorite actor or musician) from a web site and display them in some cool way than they ever by writing quicksort or the KMP string matching algorithm.

Right, but to do this they’re still going to have to understand basic computational mechanisms, such as loops and assignment and conditionals and passing arguments to methods etc. As recent discussion elsewhere shows, there’s large numbers of guys who have trouble writing code to do “fizzbuzz”, if they haven’t mastered that, how can they do the more complex stuff you suggest which assumes they can do the basics if computing? As it happens, where I teach we DO have a first year course in web programming, which covers scripting languages and grabbing things off the web, so all that stuff isn’t ignored. My job is to teach the algorithms and data structures stuff.

“Not my cup of tea” is a long way from “horrid”. I think the Poignant Guide is pretty cool, but personally I learned from the Pickaxe book.

The use of the rather childish word “horrid” was mean to be an indication I wasn’t being entirely serious. But now, to be serious, isn’t one of the most tiresome things, if you’re at university, a lecturer who tries to be funny? Personally I don’t like to be instructed by someone who pads out the facts I want to master with his own sense of humour.

said on 20 Mar 2007 at 07:32

I learned from Poignant Guide.

To improve it, you just have to cut it in half, Volume I and Volume II.

Pick whichever one of these comments is better, I got confused by the comment box lack of feedback…thought I did something wrong.

said on 20 Mar 2007 at 07:42

Personally I don’t like to be instructed by someone who pads out the facts I want to master with his own sense of humour.

Dude, no one forced you to be instructed by WPG2R . You picked it, out of a myriad of publications available, and based a quickly formed (not to mention half baked) opinion on that, and tried to paint the language with just “exhibit A” (And frankly, the attempts at backpeddalling are a bit awkward now.)

You could have chosen the PickAxe book to comment on and heaven knows its got it’s flaws (but so does K&R some nitpickers would say) though it’s an excellent book . As another reader pointed out, the methods of rigor applied by your highness leave a lot to be desired (especially coming from someone who claims to be fond of exactitudes more than occasional levity during the course of teaching something.)

said on 20 Mar 2007 at 07:58

Dear MMH , perhaps you should put “Aldwych” out in the big bad world (the real one) and see how people take to it. It would be nice to have a download link on its home page. Personally, if I had to pick between Ruby and Aldwych, I’d take Ruby.

Perhaps you have “language envy” ? sir?

The Aldwych Language

said on 20 Mar 2007 at 08:27

But, Matthew, chunky bacon really does make you a better programmer! Please don’t knock it until you’ve tried it.

said on 20 Mar 2007 at 09:07

Why’s (Poignant) Guide is a particular horrid example…

Aww, that big dummy probly thinks hentai ain’t real porn!

said on 20 Mar 2007 at 09:22

But now, to be serious, isn’t one of the most tiresome things, if you’re at university, a lecturer who tries to be funny? Personally I don’t like to be instructed by someone who pads out the facts I want to master with his own sense of humour. No!! Lecturers who rely on the student’s participation in order to maintain their attention are not very good lecturers at all – in my opinion. As a first year CS undergrad at a respected institute I can tell you right now that my most rewarding classes have been those with teachers who incorporate their own style within their lectures, not those who simply read off their notes – in which case I’ll read the textbook instead. A good laugh every now and again has never hurt anybody.

I would love for a teacher such as _why.

said on 20 Mar 2007 at 09:38

I wouldn’t have mentioned Aldwych at all if it wasn’t for the fact that _lynX must have looked at my home page, picked up on he kludgy way it currently interacts with the outside world, and posted that as if it was what the language was all about. Well, I had to defend it after that. If I ever got as far as releasing the language, quite obviously I’d fix that and put in the Aldwych equivalent to irb, so code to prompt a user to enter two numbers and print their sum would look completely different.

I’m not claiming Aldwych is a complete language, so obviously it isn’t comparable to Ruby. It’s ideas for a language, just the punctuation really (literally – no key words, just punctuation symbols), and if it were ever to be released as a useable language, it would need the words – a full range of good library code.

What’s on my home page about it is pretty old and brief as well. I need time to write more down, and I need implementors to work on a better version of it. The one I have compiles down to the Japanese language KLIC , but I don’t have source code for that, and I need to build my own “core language” rather than use KLIC so that I can do more with it to bring the whole thing closer to useability.

I’ve been trying to get students where I teach to do work developing it as project, but all most students want to do is boring stuff like building a database with a GUI front end which works over the web. Yawn, yawn, yawn, where’s the fun in that?

said on 20 Mar 2007 at 10:27

My own interest is more on the abstract nature of algorithms rather than the practical details of interacting with the file system or a database.

I think we’ve found the problem here.

Your interests and the interests of your students aren’t the same. More important, your interests and the interests of the people who will be hiring your students are not the same (and your students know it).

Right, but to do this they’re still going to have to understand basic computational mechanisms, such as loops and assignment and conditionals and passing arguments to methods etc.

Really? So you could write the code to find all the MP3s on the file system and do something with them without using loops, assignments, conditionals, or passing arguments to methods? Nice trick!

I realize that you think that people should admire these things for their abstract beauty, unsullied by application to that nasty, nasty real world, but your students will remember how a loop works much better when they see that there’s something in it for them. Finding all your MP3s and doing something with them is a problem that most undergraduates can understand. If they use loops to do it, they now see loops as a useful thing, and may well be more amenable to studying them in the abstract at a later time.

As recent discussion elsewhere shows, there’s large numbers of guys who have trouble writing code to do “fizzbuzz”

I suggest that this is because come out of school having learned a lot of abstract stuff about algorithms, but have rarely had to apply that knowledge to solving a real problem. People learn how to write code by writing lots of code. It’s no different from writing prose, painting, or cooking.

said on 20 Mar 2007 at 11:45

Sorry to change the subject, but I’ve got a steak of halibut that has to be fried up in the next 24 hours. Can anyone suggest some seasoning? Try to avoid lime, balsamic vinegar and cumin because that’s all in the past for now. Also: I do have loads of coconut milk on hand.

said on 20 Mar 2007 at 11:47

MMH : My own interest is more on the abstract nature of algorithms rather than the practical details of interacting with the file system or a database.

LL: I think we’ve found the problem here.

Your interests and the interests of your students aren’t the same. More important, your interests and the interests of the people who will be hiring your students are not the same (and your students know it).

No, you’ve jumped two steps here. I’m saying the features of a languages which enable it to interact with a file system or database aren’t of particular interest to me as a person, so that’s not somethng that would turn me on personally to Ruby. I’m not saying they aren’t valuable skills or that they shouldn’t be taught to students.

MMH : Right, but to do this they’re still going to have to understand basic computational mechanisms, such as loops and assignment and conditionals and passing arguments to methods etc.

LL: Really? So you could write the code to find all the MP3s on the file system and do something with them without using loops, assignments, conditionals, or passing arguments to methods? Nice trick!

I think my point is obvious here, but just in case you didn’t get it, I’ll explain again. If students are going to write the code to find all the MP3s on the file system and do something with them, they’re going to have to use loops, conditionals, assignments etc. So aren’t they going to have to be taught these features first before they can use them? That will be the same whatever language they use. When I look at Ruby tutorials – including Why’s – do they start off immediately with a program that finds all the MP3s on the file system and does something with them? No, they start off with the basic syntax and build up. Yours is an interesting suggestion – start off by throwing the students in at the deep end with a fairly complex program that does “real world” stuff and try and teach them from that. And I have seen people who advocate such an approach, and it might work. But not even our hero Why does that, does he?

MMH : As recent discussion elsewhere shows, there’s large numbers of guys who have trouble writing code to do “fizzbuzz”

LL: I suggest that this is because come out of school having learned a lot of abstract stuff about algorithms, but have rarely had to apply that knowledge to solving a real problem. People learn how to write code by writing lots of code.

Yes, I know that people learn how to write code by writing lots of code. That’s a point I make constantly to my students. The course I teach, though it’s algorithms and data structures, is very code oriented, and I think that’s the right way.

But your claim that students have come out of school having learnt a lot of abstract stuff about algorithms, but have rarely had to apply that knowledge to solving a real problem is nonsense. Where I teach, and in most other university Computer Science departments, there’s at least one course on web technology, with stuff like picking up files off the web. Most students do final year projects which are very much oriented around this sort of practical stuff. But the “fizzbuzz” debate is actually saying that’s part of the problem – students spend too much of their time rote-memorising library commands to fetch things off the web etc, and not enough time on basic algorithmic and abstract thinking. That is why, when you throw them a problem which involves writing code for a very basic algorithm, they can’t do it.

said on 20 Mar 2007 at 11:50

Why

Block arguments are a set of variables surrounded by pipe characters and separated by commas.

|x|, |x,y|, and |up, down, all_around|

are examples.

...

I like to think of the pipe characters as representing a tunnel. They give the appearance of a chute that the variables are sliding down. (An x goes down spread eagle, while the y neatly crosses her legs.) This chute acts as a passageway between blocks and the world around them.

Variables are passed through this chute (or tunnel) into the block.

MMH

If P is an object variable, then P.mess(arg1,...,argm) is an expression which evaluates to the return value of sending message mess(arg1,...,argm) to P, that is, it is equivalent to using a variable v in an expression and having a separate statement P.mess(arg1,...,argm)->v. In this case there is no type-checking, so it is up to the programmer to ensure that P can take a message of that sort which returns a value or an object as the expression in used. A message send expression can have multiple messages, but return variables must be given for all but the last for every message that requires a return variable. For example, the expression P.mess1(x).mess2(y)->z.mess3(u) is equivalent to v with separate statement P.mess1(x).mess2(y)->z.mess3(u)->v

said on 20 Mar 2007 at 11:57

sorry, I couldn’t resist! (.)

said on 20 Mar 2007 at 11:58

MMH :

As a recent (2004) CS graduate in the UK, I’m quite surprised by your comment that there is the assumption amongst undergrads that aren’t any jobs left out there that are worth doing or haven’t been outsourced.

After I graduated, I had a development job inside three weeks. I’m still there, and now part of my job responsibilities also include sitting in on interviews. Wow. What a revelation. There are SO MANY AWFUL CS graduates, including a lot from ‘decent’ universities. I never thought it possible to graduate from a red brick university with a degree in CS and not ‘get’ m-n relationships in RDBMs.

This maybe why your students want to study DB based web systems – its where the world works nowadays, and, as I’ve said, there will always be jobs for talented programmers to earn decent wages. Our office is eagerly looking forward to recruitment this year, we have lots of spaces for new nuggets.

Ability to write complex and fancy algorithms using esoteric research languages like Haskell not required.

Ability to program in a coherent and logical manner, preferabley with a good knowledge of how a computer works, together with the ability (and yes, I do think its anability, not a skill) to manage memory allocation, an understanding of RAII a DEFINITE plus.

I dont mean this as a dig, but you haven’t worked commercially have you? I really think that what CS needs (especially in the UK) is a bit less science, and a bit more BI. You should be teaching these students how to make a career out of their skills.

You do actually raise a decent point in your article about universities setting the bar too low on programming assignments. The answer is to raise the bar. A LOT . Anyone who doesn’t pass their programming courses over the first year should be encouraged to transfer to a non programming IT speciality – DBA -orientated course for example. Of course, this couldn’t happen, because of that *S part again – its all got to be Science to academia. Never mind that you turn out substandard ‘programmers’, dont challenge the ones who can actually program remotely well.

Still, you’ve churned out 200 students a year who maybe 80% of them couldnt write a program to use a static circular buffer, 70% cant normalise to BCNF a relational DB schema and 50% cant write a simple stack. Well done.

If I divert my attention from lambasting the state of higher education in the UK to Ruby briefly (heh), I think Matz said it best – Ruby is a better Perl. I sneak ruby through the system wherever and whenever I can at work, and I can get away with it because it is ruby. It’s readable, and even the Head of IT can grok a printout of a ruby program and know what its doing. Perl scripts, on the other hand, are invariabley hard to read.

Perl isnt a write-once language, its just its very damn easy for it to end up that way. I find objectively that ruby groks quite well with my colleagues, compared to the various nasty-ass sh/perl scripts they invariably replace. I can develop quicker in ruby than in perl and it makes me more productive.

One of the most important things about writing code that adheres to the POLS is that you dont write code using obscure, arcane or misleading syntax. Your 2d array example in your article is all of the above. Its a two way street writing code. Make it clear off the bat what is happening and two things happen – you need less documentation of boring internal bits of your code, and your code will forever be readable. I take it you didnt have readability of code as one of your aims with Aldwych.. probably because maintenace of code is not something that academics ever deal with (hey, its research right? Wont need to do that again after I’ve published..)

  • Of course this could rarely happen; you earn far more in the private sector than you do in academia, consequently, who is going to give that up to teach students?
said on 20 Mar 2007 at 11:59

dang textile!!! messed up my emoticon! :-)

said on 20 Mar 2007 at 12:02

The bolding is all gone to fecundity and beyond :/ BI should have a * next to it, denoting the footnote. The bolded paragraph shouldnt be bolded and the only things that should be bolded are a standalone capital ‘S’, and the ‘S’ in ‘Science’ :/

said on 20 Mar 2007 at 12:13

Actually, suck it up—a good CS program needs both. Without someone around to play Dijkstra, you’re just doing vocational training for one set of products, and with nothing but CS-as-a-branch-of-mathematics folk you’ve got a graduating class more likely to write papers than code.

I have experienced both extremes. They are not fun (or usefully educational). A teaching environment should be able to show the practical kids why theory is important and the math/logic whizzes how to actually implement in a ‘production environment.’

Similarly, entertainment can be great (though I’d settle for fluency in the human language the class is supposed to be taught in, these days), but matters for little if the information itself is wrong. There’s a reason many of those Matrix fans can only conceive of evolution as Lamarckian—to ‘engage the audience,’ their science teachers attributed desires and intent to nature, then rushed through the reality of natural selection with population dynamics exercises presented more as math problems than models.

Good teaching is about conveying information effectively, and cartoon foxes or Ben Stein’s drone are just methods that can be used (or misused).

said on 20 Mar 2007 at 12:23

Oh, I forgot! I also have fresh garlic, basil and ginger. So my resources are lookin pretty good. This is fresh halibut, peoples!!

said on 20 Mar 2007 at 13:13

So aren’t they going to have to be taught these features first before they can use them?

Nope. They should be taught them while they’re using them. For something real.

The course I teach, though it’s algorithms and data structures, is very code oriented

So, how much of the code that your students write would you suppose that they ever use again? Also, how much time do you spend on optimization techniques that don’t lend themselves to clever analysis? Even though the typical algorithms class pretends that it doesn’t matter, I can assure you that in the real world there is a difference between n and 100n. In fact, it’s pretty uncommon to see a choice between n and n log n. It’s usually something more like n and 5n, but you can’t solve that problem through theoretical handwaving. You have to actually know what you’re doing.

there’s at least one course on web technology, with stuff like picking up files off the web. Most students do final year projects

Wow, one course and one project. That certainly makes me optimistic for the future!

But the ‘fizzbuzz’ debate is actually saying that’s part of the problem – students spend too much of their time rote-memorising library commands to fetch things off the web etc, and not enough time on basic algorithmic and abstract thinking.

That is total bollocks. Sorry, it just is.

If you ask those guys who can’t solve the fizzbuzz problem what the modulus operator does, I’ll bet every single one of them can tell you. They know the abstract meaning fine. They don’t know the practical implications.

There’s a fair amount of reseach on this in physics teaching, by the way. Physics students will be quite commonly be able to recite every single law, and be able to do all the calculus, algebra, and trignometry just fine, but won’t have have a clue how to figure out where the damned ball will be when it comes to rest. They know your all-important “abstract knowledge” COLD , but can’t solve realistic problems.

Sound familiar?

said on 20 Mar 2007 at 13:19

Academic ones & zeros just don’t get it: the proof of the pudding is in the eating. And real artists ship … bon appetit, _why!!!

said on 20 Mar 2007 at 13:38

why: Have you considered kiwi skin shavings? Many don’t know this, but the skin is the most tangy and exciting part of the kiwi. When my guests ask what I’ve done, a sly wink has sufficed to staunch their curiosity, but I can’t hold out much longer!

said on 20 Mar 2007 at 14:58

no ginger, definitely no giner with basil. Halibut will go great with garlic and a bit of basil but no ginger please….hold the coconut milk… unless you have some tomato paste… Yummmy! Yummmmmmmy! Fish Fish Fishyyyy Fish!!! Let’s eat!

said on 20 Mar 2007 at 17:49

You start out wrong, MMH . There is no Ruby “sales pitch”, that I see. There are Ruby enthusiasts enthusi-izing. Just like there are “Pythonistas” crowing about Python and some guys like me that still feel the most dangerous when slicing through data with Perl.

Computer Science is the wrong field for this, it has more to do with human behavior. As much as anti-proselytizers would like to get everyone to adopt their behavior and not proselytize – and in turn proselytize for the adopted cause, humans can’t help “sharing” things we’ve found useful. I think it’s the natural behavior that promotes that thing we call “shared knowledge”: “I found something that works for me, maybe it will help you.”

The natural complication to this is that a few enthusiasts can over-promise.

I think the reason why “their supporters have proposed them as general purpose programming languages” is because people are developing what they want with them – just like other general purpose programming languages. Some people like MentalGuy may have hit a wall with them – with regard to parallel programming – but that does not sound that much different from early threads in C++ on a SunOS SPARC . So, we hit a wall back then as well; you just needed to find a workaround for some things you wanted to do.

I also think you lumped Why’s book in with other things when it contains this: “So whereas I should probably be pounding your teeth in with hype about Ruby… I will just let you coast. I’ll let you freefall through some code, interjecting occasionally with my own heartfelt experiences. It’ll be quite easy, quite natural.”

That’s what the book is about. And that’s the way I saw it. Just a weird way to feature code examples and some explanation of how they do what they do. The three reasons he gives to try Ruby is 1) it’s expressive, 2) It’s from Japan, 3) Free. Number 1 does get a little hype-y. Why even uses overstatement here (even identifying it as such), but it does not specifically say that non-programmers will be transmogrified into programmers because of it. I think your major point is about a threshold that most people who are interested in programming – and not just its fruits – don’t think about. And I can relate a personal story about why I think that concerns you and why I think it’s a “professor problem”. 15 years ago, when I was in school, my professors were under the impression that programming was a skill and you could teach anybody. A student—somewhat perceptive – kept telling them that it is a craft, and some people just don’t seem to get it. It looks like tons of studies and 15 years later, profs have now realized what I grasped intuitively. I think the idea that anybody is saying that a language is going to make people with 0-interest or 0-aptitude a programmer is a projection that hobbyists automatically and implicitly exclude. No stereotypical jock who walks around bouncing computer geeks off sidewalks is likely ever going to read what I say about Ruby, Python, or Perl. Thus I might not consider them when I say, “easy to program”. That’s a peculiar and unnecessary injection upon the subject matter.

I hope I’m not getting too personal to say that your piece almost sounds like frustration with the way that the real world defies academic theories and suppositions: 1) unexpected rise of script languages, 2) not maintained by company hype. 3) Perhaps low popularity of “academic” languages. And 4) upset that “easy” is at times said without qualification – that only concerns a professor anyway. Scripting languages are automatically created and made popular by people who don’t fit that academic category, anyway. One assumes when a language is “popular” it is not as popular as American Idol, so it’s well within reference context to treat “easier” in the same fashion.

To go a little further, the scripting languages incorporate functional and OO features because they end up solving problems. I’m sure they started out as academic theories, but one can see how they were first theories about how to solve problems. Hybrid languages are created to solve a variety of problems, and solve as many as the language creator can think to put into that language.

Scripting is about creating real-world solutions fast. Also it’s about increasing the amount of things that a small group of programmers can do in a few lines of code. It solves problems on the line with code-reuse in OO and components – I might suspect – just a different problem.

said on 20 Mar 2007 at 20:54

I’ll give just a couple of examples. In Ruby, if a is [1,2,3] and b is [10,20,30], then a+b is [1,2,3,10,20,30]. Why not [11,22,33], which Tim Sweeney in an earlier article suggests “intuitively makes sense”? What does a[x,y] (when a is a two-dimensional array) mean in Ruby? Not what I first supposed it might mean from other languages [...]

mmh. do I really have to read the whole article? I was doing rants about programming languages I didn’t like on that level when I was 15 years old…my god, was I stupid back then ^^

why: your book made me laugh and think in new directions. if Ruby is dead in 10 years, I would still like to read it again. if it’s not, it will become a classic.

said on 21 Mar 2007 at 01:01

Stop being an asshole !!

said on 21 Mar 2007 at 01:44

MMH : People like you is the reason I stay away from universities. Soooo damn in love with being right. You said it yourself – when you question ruby, people harass you. So, why are you harassing people when they are questioning you?

People that know too much is dangerous, they think they’re always right.

I am gonna go have a big, nice cup of CARE now, jees how come you people keep on discussing this when the owner of the blog starts talking about food? Give him some nice tips for his steak.

Repeating myself for truth: stop loving being right.

said on 21 Mar 2007 at 03:42

Clearly a case for the “Teacher Man” (Frank McCourt).

said on 21 Mar 2007 at 04:46

leethal: People like you is the reason I stay away from universities. Soooo damn in love with being right. You said it yourself – when you question ruby, people harass you. So, why are you harassing people when they are questioning you?

Eh? Where did I say I was right? I expressed my opinion, that’s all. Why is it when I express my opinion I’m accused of being “Sooo damn in love with being right”? Why don’t you say the same about everyone else who has expressed their opinion in this discussion? And where am I “harassing people”? Here’s what someone in this discussion wrote about me:

“fuck the academic nerd. In the butt. With something sharp.”

Have I written anything like that? No, I haven’t. Isn’t there a phrase involving a colour and two kitchen items which is used to describe this situation?

said on 21 Mar 2007 at 05:16

Murphy: mmh. do I really have to read the whole article? I was doing rants about programming languages I didn’t like on that level when I was 15 years old…my god, was I stupid back then ^^

Why do you say it was a “rant”? I had mentioned in a comment on a previous article in Bitwise magazine that I planned to spend some time looking at Ruby, and he asked me to write an article saying what I thought of it after that. So I did.

I was actually trying to be balanced, not to rant. I thought the language was ok, and as I said at the end I’d use it in cirucmstances where I feel it’d be useful. But I also thought some of the comments I’ve seen made about it were exaggerated, I didn’t find it as wonderful as other people seem to. On the array addition thing, I didn’t actually say it should be done one way but Ruby does it another, I just used this example to question whether the “principle of least surprise” was quite so obvious as Rubyists claim (by quoting someone else, not that I necessarily agreed with him, for whom this principle would lead to array addition acting differently than it does in Ruby).

I mentioned features of Ruby which I think might lead to large scale programs written in the language being difficult to maintain in years to come. Is this really such a bad thing to bring into the discussion that it warrants me being accused of being “Soooo damn in love with being right” let alone someone calling for me being fucked in the butt with something sharp? I simply mentioned it as something that concerns me, that’s all. I’m very well aware that there’s a tension which has always existed between “hacking languages” – easy to hack something together, but hairy code that might be hard to work with later – and “strict languages” – more attention to features that would help keep the code in order as it grows, less fun to hack with due to these features.

One of the things that interest me personally is the idea of a language which is naturally concurrent, where you can have lots of things happening at the same time as each other, and they interact. I think thread and locks on synchronised variables are a very clunky and inelegant way of doing that. One of the reason I see Ruby as not particularly innovative is that it’s still completely sequential with the same concurrency mechanism as in Java etc. I’m interested in languages like Erlang where concurrency is much more neatly handled. So, is it saying that which makes me someone who deserves to be fucked in the butt with something sharp?

LL – I’ll get back to you later, I have other work to do right now.

said on 21 Mar 2007 at 05:28

Oh, by the way:

Ruby:

class Person def initialize(name, age) @name, @age = name, age end end

def to_s
  "#{@name} (#{@age})" 
end
attr_reader :name, :age

Aldwych:

person(name?,age?)~

{ to_s |>name++<+age }

Which is neater and more elegant?

said on 21 Mar 2007 at 05:32

Hmm, let’s try that again:

Ruby:
class Person
  def initialize(name, age)
    @name, @age = name, age
  end

  def to_s
    "#{@name} (#{@age})" 
  end

  attr_reader :name, :age
end

Aldwych:

#person(name,age)~
{
 to_s |>name++<+age
}
said on 21 Mar 2007 at 05:33

Hmm, let’s try that again:

Ruby:
class Person
  def initialize(name, age)
    @name, @age = name, age
  end

  def to_s
    "#{@name} (#{@age})" 
  end

  attr_reader :name, :age
end

Aldwych:

#person(name?,age?)~
{
 to_s |>name++<+age
}
said on 21 Mar 2007 at 06:46

MMH : So aren’t they going to have to be taught these features first before they can use them?

LL: Nope. They should be taught them while they’re using them. For something real

So why aren’t Ruby tutorials written like that? Why is there a section which hows a very simple loop first, rather than just a section which shows a loop combined with all the other things required to pick files off a file system and do something to the mp3 ones?

MMH : The course I teach, though it’s algorithms and data structures, is very code oriented

LL: So, how much of the code that your students write would you suppose that they ever use again?

It’s basic coding techniques, loops and iterators going through a collection to change things, loops and iterators going through a collection to pick out the maximum item in its natural ordering, how you can do the same thing ussing recursion. Describing sorting and showing code for it is a good way of illustrating these basic coding techniques a little further. I think they are going to be using basic coding techniques again if they do coding again.

LL: Also, how much time do you spend on optimization techniques that don’t lend themselves to clever analysis? Even though the typical algorithms class pretends that it doesn’t matter, I can assure you that in the real world there is a difference between n and 100n.

Optimisation techniques with clever analysis? You think we get that far? Have you ever tried teaching the average British ug student?

MMH : there’s at least one course on web technology, with stuff like picking up files off the web. Most students do final year projects

LL: Wow, one course and one project. That certainly makes me optimistic for the future!

Why don’t you try looking at the web pages of various university CS departments to see what course units they teach rather than jumping to conclusions?

MMH : But the ‘fizzbuzz’ debate is actually saying that’s part of the problem – students spend too much of their time rote-memorising library commands to fetch things off the web etc, and not enough time on basic algorithmic and abstract thinking.

LL: That is total bollocks. Sorry, it just is.

You ever tried teaching undergraduates? One of teh biggest problems is that they mistake rote memorisation for learning, ane it’s hard to get them to look beyond the examples to the underlying principles.

If you ask those guys who can’t solve the fizzbuzz problem what the modulus operator does, I’ll bet every single one of them can tell you. They know the abstract meaning fine. They don’t know the practical implication

No, the fizzbuzz problem isn’t really about modulus. It’s a problem which involves goig through a collection (the integers) and doing something different depending on different properties of elements of the collection. The fact that the property which is tested involves modulus isn’t the important part of the problem. So it’s really just another version of the problem YOU posed. So what does this show, LL? That YOU lack the ability to abstract and generalise, the key property to being a good coder. Bet you spend all your time making minor adjustments to boilerplate code, and think that’s what being a good coder is all about.

said on 21 Mar 2007 at 07:14

T: As a recent (2004) CS graduate in the UK, I’m quite surprised by your comment that there is the assumption amongst undergrads that aren’t any jobs left out there that are worth doing or haven’t been outsourced

The assumption is among potential undergraduates. Applications for CS degrees have halved since 2000/1. If you ask schools careers advisers why, that’s the answer they give – they don’t think there’s any jobs in it these days.

T: There are SO MANY AWFUL CS graduates, including a lot from ‘decent’ universities. I never thought it possible to graduate from a red brick university with a degree in CS and not ‘get’ m-n relationships in RDBMs.

Yes, I think that’s true. Part of the problem is the shortage of good applicants, part of the problem is that it’s very hard to tell who’s going to “get it” until you bring them in. And UK universities don’t have a culture of failing people, it’s a bad thing, it drags you down the league tables.

T: This maybe why your students want to study DB based web systems – its where the world works nowadays, and, as I’ve said, there will always be jobs for talented programmers to earn decent wages. Our office is eagerly looking forward to recruitment this year, we have lots of spaces for new nuggets.

Ability to write complex and fancy algorithms using esoteric research languages like Haskell not required

Sure, I’m not saying that’s not the case. But why don’t you try looking at what’s taught in the universities? I think you’ll find a lot of it is more practical than you suppose. Mine certainly doesn’t have a course on writing complex and fancy algorithms in Haskell. I said I found Haskell “elegant”, I didn’t say I found it practical.

You do actually raise a decent point in your article about universities setting the bar too low on programming assignments. The answer is to raise the bar. A LOT . Anyone who doesn’t pass their programming courses over the first year should be encouraged to transfer to a non programming IT speciality – DBA -orientated course for example. Of course, this couldn’t happen, because of that *S part again – its all got to be Science to academia.

Why don’t you try looking at what is actually taught rather than jump to assumptions? A few top-level CS departments are very theory oriented, Oxford and Cambridge, for example. Most aren’t, not nearly so much as the anti-academic prejudices that are coming out here love to make out.

Actually, the real reason for not raising the bar higher is that we’re a business. If we failed 80% of our students, we’d be out of a job. Look at all those Chemistry departments that have got closed down. We’re struggling because applications have halved already. Competition for good students and pitching the market right are a lot of what we’re about. It’s a lot more “real world” than manmy suppose.

I take it you didnt have readability of code as one of your aims with Aldwych.. probably because maintenace of code is not something that academics ever deal with (hey, its research right? Wont need to do that again after I’ve published..)

Look, why don’t you just TRY reading what I wrote? In my original article which sparked all this, one of the points I made about Ruby was that I was concerned it would lead to hard-to-maintain code. And now here I am being accused of not being interested in code maintainability. So this just shows my attackers here are just full of prejudiced hot air – they’ll attack me for one thing, then they’ll attack me for the exact opposite.

said on 21 Mar 2007 at 07:48

@MMH: What can I say, you seem to be full of contradictions. On the one hand you’re a stickler for correctness, and on the other hand you’re ever the rational pragmatist who feels the need to pass the incompetents otherwise the school would be out of business.

So what are you? A business man? or an academic?

At least one thing is for sure, You will, for the rest of your life, will not treat the interactions in the “bazaar” as you did your interactions in the “cathedral”. You will do more work in defending your case than you ever did in defending it in the academy. And you will know that tech-jargon mumbo-jumbo will only take you so far, and that credibility in the new world is not bestowed upon you, but you EARN it.

You were used to your lazy ass and mostly incompetent “acedemic peers” who are used to prey upon their graduate students to pad their own “research” by putting their names on research papers actually done by students. You didn’t expect the ruffians in the bazaar to fact-check your ass and give you a good hiding in the process.

Welcome to the world. I’m glad you took the red pill. Kicking and screaming and mostly by mistake, but take the red pill you did grasshopper.

Welcome. You’re one of us now. :)

said on 21 Mar 2007 at 08:00

Going back a bit

forrest:

ARRRGH . That guy makes me crazy! I could literally write a book in response to that article (I’ve now gone off and read most of it and returned). It’s so ridiculously prescriptive and closed-minded.

...

There’s a place for strong typing, there’s a place for type inference and there’s a place for duck typing. It all comes down to what best fits your hand or the task at your hand.

Er, that’s what I wrote. Did you actually bother reading the article? I gave a case for and a case against duck typing.

Trying to pretend that there are objective winners in the language wars is so depressingly

Er, I didn’t say there were objective winners. I said there were problems I could see with Ruby, I also said there were circumstances where I would use it. The article was actually balanced, giving arguments for and against. You accuse me of being closed-minded, I think it;s pretty onvious from the way you jump to conclusions that like most other people posting here, YOU ’RE the closed-minded ones. “Uggh, he criticised Ruby, he’s an evil fascist boo hiss”.

Maybe “didactic” is another, because I think part of his dislike for the Poignant Guide comes down to the fact that he’s an academic and the Poignant Guide is by an autodidact for other autodidacts

Er, ever tried being an academic? What do you think an academic is? Much of the stuff I teach didn’t even exist when I was a student. How do you think I learnt it?

said on 21 Mar 2007 at 08:04

LninYo:

What can I say, you seem to be full of contradictions. On the one hand you’re a stickler for correctness, and on the other hand you’re ever the rational pragmatist who feels the need to pass the incompetents otherwise the school would be out of business.

Not at all, I think I’ve exposed a bunch of stuck-up poseurs for what they really are.

said on 21 Mar 2007 at 10:28

So, let’s hope the programming language of 2010 won’t get bogged down by barriers (nothings sucks more than boring code snippets btw).

said on 21 Mar 2007 at 11:00

That YOU lack the ability to abstract and generalise, the key property to being a good coder. Bet you spend all your time making minor adjustments to boilerplate code, and think that’s what being a good coder is all about.

Whatever you say, dude. I’m just an ignorant code monkey who’s never taught programming to undergraduates at a top-ranked CS school. Yep.

Hint: you’re wrong. Badly so. Enjoy your career, such as it is.

said on 21 Mar 2007 at 11:28

Geez people. Listen to yourselves, seriously.

said on 21 Mar 2007 at 12:39

Stop yelling at MMH and calling him names! My god, people. WE’RE SUPPOSED TO BE THE NICE ONES !

Kiwi shavings. I stand by kiwi shavings.

said on 21 Mar 2007 at 12:59

The Foxes need to meet Prawnzilla: http://www.nicecupofteaandasitdown.com/prawnzilla/

or Eagle: http://eagledna.comicgenesis.com/d/20030119.html

said on 21 Mar 2007 at 13:19

Yes, I’m going to stick with kiwi shavings, K. Though, a slight change of plan: fish tacos!!

said on 21 Mar 2007 at 13:27

@MMH : Not at all, I think I’ve exposed a bunch of stuck-up poseurs for what they really are.

Have to agree with you on one point at least, i.e., every poser needs a little exposition once in a while, and no one is contesting that Ruby doesn’t have those (but that wasn’t the original purpose of the “Knights of Ni” when they set about the fetch the shrubbery as it were LoL! ) .

Also, the future readers of this and other threads will make up their minds as to who the posers were. That is the beauty of the bazaar.

said on 21 Mar 2007 at 14:52

The important question here is, does why like McDonalds or Burger King?

I have to admit that sometimes why’s poignant guide can be a bit too.. ehm.. weird-ish (why-esk?), though I still like the parts were he keeps the weirdness down to a few funny sentences pretty much. It’s a totally different approach to teach people Ruby and that’s great, because people are different. And the most important thing to consider is, if you don’t like it, you don’t have to read it. There are quite a few Ruby books out there, no one should be offened by why’s effort to make an original one. And an original one it is.

And the fact remains, that apart from the comic foxes and the weird space stories, how why actually teaches the language makes it really easy to learn Ruby. I used why’s guide as a starting point because the Pickaxe was a bit too hard for me and then I dived into the Pickaxe and had no problems understanding the more complex parts of Ruby any more.

said on 21 Mar 2007 at 15:02

Not at all, I think I’ve exposed a bunch of stuck-up poseurs for what they really are.

What you have really exposed is how jealous we are of you! I wish that I could only glimpse for a single moment the thoughts running through your head, so that I could understand the wonder that is the non-Ruby programming world and Aldwych! Forget programmer-oriented languages, beautiful syntax, enriched communities, and non-standard CRAP like that! I love you and everything you have ever thought or said MMH , I really do!

said on 21 Mar 2007 at 18:12

Yes, _why! You ruined everything! After over 10 years of corporate programming, I was frustrated and called it quits. Had it not been for the Poignant Guide, I might have been a better politician, or working to reduce global warming, or would have become a musician that made songs that healed the world (just like those Bill and Ted guys).

Damn you and your Guide. It sucked me back in to building wacky stuff that I probably shouldn’t be. Furthermore, it removed the stress that should be keeping me away from such a worthless profession.

You ruined everything! The world might have been a better place without your silly guide and talking foxes!

said on 21 Mar 2007 at 23:10

Thank you why, Dr. MMH Phd., and all the rest of you.

This whole thing is just completely priceless and I’ll be smiling for days. And now I have a hankering for FISH too!

Could any more be asked of a webpage?

I think not.

said on 22 Mar 2007 at 01:47

Let’s fire up that Kernel grill. sprinkle symbols for kindling with those dot dot handles, let’s throw some in :a, :b, :c, :d, :e, :f, :zzzzzzzzzz – that last one will burn nicely, looks like a dragon or a snake, well, no – this one is a snake here :~~~ I do wish I can make symbols like those when I bake my rails pies, like this one :....... a firecracker, great for kindling, wouldn’t last long, but puffffff,,,,, shhhhhhhhhhhh that would burn fast, but might scare foxes.

Kiwi shavings? -hm, on the grill? My’o’My they will be done in no time. No fish tacos for me, thanks, I will throw some more logs. gather round. feel the warmth. Halibut! Halibut! I want that Halibut! yum…

said on 22 Mar 2007 at 05:30

said on 22 Mar 2007 at 07:46

MHH : your attutude is not amusing. We none academic people call this kind of behaviour “trolling”, and I think we’re right. _why is the best counter troll I’ve ever seen, I wish I had his skills.

said on 23 Mar 2007 at 13:51

Looking back, I wonder if the misunderstanding is mainly cultural and linguistic.

MHH said “The use of the rather childish word ‘horrid’ was mean [sic] to be an indication I wasn’t being entirely serious” and indeed, the OED lists as one definition “colloq. in weakened sense. Offensive, disagreeable…”

I’ve had British coworkers who use horrid in this “weakened sense,” but MHH might not realize that “horrid” doesn’t quite translate nicely into American English, where it tends to mean “extremely horrible”.

said on 23 Mar 2007 at 14:01

The poignant guide doesn’t work for everyone, which is great, because if it did, we’d be weeping all day and the streets would be but saline rivers.

That said, should we get together and write a non-poignant guide?!

It would talk about concurrency (as MenTaLguY cites), the modern view of static vs dynamic typing (on a Google data center scale, so I’ve been told, one wishes to think of failure in a probabilistic rather than binary sense, as you must generally assume that things /will/ fail. The weaker probabilistic guarantee that dynamic typing provides, then, might be a reasonable trade-off if your system works 99% of the time, when compared to a system that only works when everything checks out).

It could also warrant a more detailed analysis of mixins and the dangers / opportunities in extremely open classes (compare with B. Meyer’s open-closed principle), mention recent work on using continuations to facilitate stateful webapps (Seaside), and perhaps have some light discussion on scaffolding, packaging (gems) and deployment, run-time goodness (Sandbox), the importance of DOM literacy (Hpricot), eigen/singleton classes versus Smalltalk paradigms, Smalltalk images vs Ruby-as-Unix friend, Ruby-as-glue (cite Shirky on “situated software”), and so on.

(Would write more, but back to academic hacking then…)

said on 23 Mar 2007 at 16:59

oh no, fish tacos!

said on 24 Mar 2007 at 01:03

Do people really like fish tacos? Frankly, I find them quite horrid. And you?

said on 24 Mar 2007 at 19:21

I’m a bit late to the scene, but _why you’re one of the best things about the ruby family.

said on 25 Mar 2007 at 12:33

EntropyFails: “Could any more be asked of a webpage?”

I think Fin provided it.

So no – unless we were to include cartoon foxes – if we could do that, this could be the webpage to end all webpages – and wouldn’t that be sad – but poignant!!.

...

But back to bickering…I still find that Why’s main point was that Ruby was expressive and so he writes an expressive book, showing you some real neat code snippets and how to express yourself in Ruby.

I found it somewhat Calvino-esque, myself. And I think that’s finally what MMH doesn’t get about the book, it doesn’t simply belong to the Programming Guide/Tutorial genre. Time and people will tell whether it’s a great work of art, but it does as John Gardner says good “fiction” does, it stews up genres. Why wants to tell you a story, teach you ruby, and go off on tangents. If that’s not your thing—get yourself another book PRONTO !!

said on 26 Mar 2007 at 03:33

MMH , I’m really ashamed of the reactions of some of my fellow Rubyists.

I think _why’s own reaction should be an example to us all.

(Disclaimer: following paragraphs only express my opinionated interpretation).

He just showed, in sattirical genius, that he has a problem with the way you associated his tutorial with Ruby as a whole product and the use of the word “horrid”, which outside the UK has connotations different than those with which you’ve intended to imbue it.

Another disclaimer: I haven’t read your article, and probably won’t. I’ve read your defense of it and was convinced very quickly that this is a huge case of miscommunication.

Now, don’t get me wrong, I love the Poignant Guide, it’s one of my favorite books, I especially like the parts where _why tells about his sister. The contents and style really touch me. I love the book as a work of art, love, poetry.

I also used it, together with other sources, to learn Ruby, because it was fun.

But _why’s masterpiece is not official Ruby documentation. It is fan art. Would you hate architecture just because you don’t like how Ayn Rand wrote about it in “The Fountainhead”? Would you hate Harry Potter because of the awfully sick tentacle-filled slash fanfics people write about the characters and world it introduced?

I wouldn’t.

That is why I advise to you not to be blown away by this work that you don’t connect with. Learn Ruby somewhere else, it rocks.

But this has nothing to do with the subject of “is Ruby a good language or isn’t it?”.

The only interesting claim regarding ruby itself in this thread was the comparison of Ruby code with Aldwych:


class Person
  def initialize(name, age)
    @name, @age = name, age
  end
  def to_s
    "#{@name} (#{@age})" 
  end
  attr_reader :name, :age
end

That’s the way we’d have it in Ruby: it’s more readable than your Aldwych example (which is a good example of golfing in language design, BTW ). I like the fact that the Ruby code is almost self documenting (to a programmer of any language), whilst the Aldwych code requires a lot of knowledge about language internals. I’m sure, though, that there’s some beautiful magic going on with that Aldwych piece that I would respect had I studied it.

You can read it and understand what it does.

But that comparison wasn’t fair: you took a piece of code in one language, with it’s conventions on e.g. how to format data by default, and tried to translate that 1:1 to another language. Ruby also has a default to_s, which we think is fitting the way the language works. How would Aldwych code for the following example look in Aldwich?


class Person
  def initialize(name, age)
    @name, @age = name, age
  end
  attr_reader :name
  attr_accessor :age
end

In Ruby, for cases like your example, we have Struct:


Struct.new("Person", :name, :age).class_eval(%q{def to_s() "%s (%s)" % [@name, @age]; end}

#ta-da!

Don’t forget my question from earlier.

:)

Aur Saraf (SonOfLilit)

PS I won’t get into the argument about universities and ways to teach code. I have my own opinions and they are completely off topic.

said on 27 Mar 2007 at 08:51

Okay, if you want a slightly less free-form/artsy guide/tutorial to Ruby, you should check out Mr. Neighbourly’s Humble LIttle Ruby Book . I was going through the 2nd chapter only yesterday and I gotta tell ya, it cracked me up. I can’t find that particular para, but the book is full of light-hearted humor (and some typos … I’m looking at you “Range” section!) Also, it may not have foxes, but it has wombats.. I mean.. if that is your cuppatee..

Here is an example which made me smile:

I can hear you saying, “Who cares about that crap?! I need to read a file. I made the file. I know all that crap about it! Tell me how to read it or I challenge you to a knife fight, right now, behind the Waffle House! You and me, pal! We’re taking it to the matresses!” I would like to now kindly respond to your anger with this little tidbit: myfile = File.open("textfile.txt", "r") myfile.each_line {|line| puts line } myfile.close

said on 28 Mar 2007 at 14:05

hello, MMH , I’m glad youy joined the discussion.

Why do you say it was a “rant”?

because it felt like one to me. no deeper reason.

some of the comments I’ve seen made about it were exaggerated

they are. Ruby is no silver bullet. it’s simply, for many people, the best language available.

I just used this example to question whether the “principle of least surprise” was quite so obvious as Rubyists claim

matz has commented on this long time ago:

Then they come up to me and say, ‘I was surprised by this feature of the language, so Ruby violates the principle of least surprise.’ Wait. Wait. The principle of least surprise is not for you only. The principle of least surprise means principle of least my surprise. And it means the principle of least surprise after you learn Ruby very well.

Is this really such a bad thing to bring into the discussion that it warrants me being accused of being “Soooo damn in love with being right” let alone someone calling for me being fucked in the butt with something sharp?

no. I’m sorry for (indirectly) calling you stupid. we will get nowhere with this attitude. every community should be judged by how they deal with critic.

One of the reason I see Ruby as not particularly innovative is that it’s still completely sequential with the same concurrency mechanism as in Java etc.

Ruby doesn’t want to be innovative. as I said in another board, it’s not ahead of its time, and that’s what makes it strong. Ruby is the language of today, not of tomorrow. and because I live today, I love it.

...concurrency…

I’m sorry, but there are people out there that are not interested in this topic at all ^^ but I understand your attitude now a bit better: Ruby is just a poor lanugage for someone who’s interested in only one aspect of programming languages.

said on 28 Mar 2007 at 14:10

I really don’t want to be a troll, but…isn’t it possible that some people here have failed in university and still have bad feelings about their past, that they now crap on someone who’s still there? please, let’s not get personal here. it’s about Ruby.

said on 28 Mar 2007 at 18:16

Talk about being late to the party.

I too was somewhat enraged after reading MMH ’s article. I’ve since learned that “horrid” isn’t quite as bad for the Brits as it is for us Yanks.

Still I find it funny how people have the need to fight against perceived “hype” for some open source technology. It is not like Ruby is being sold by someone and therefore hyped for the purpose of making sales. It is hyped because people like it. Are we Ruby fans all mis-guided and brainwashed by Matz? I tend to think not.

Your article struck me as quite prudish and strict, though maybe that was the style you adopted when writing it. I found your postings here more likable.

I do agree with you that teaching programming is no easy feat. To me it came naturally so I can’t even relate to those who struggle with it. Though there are certainly skills in my life I’ve struggled to learn that others learned easily.

I doubt anyone who has used Ruby for any period of time (and is therefore still not steeped in the “Rails Kool-aid”) would disagree that it has flaws. It certainly does. You just didn’t find them in your brief look at the language.

- Ryan Leavengood, Ruby programmer since 2001

said on 30 Mar 2007 at 10:13

The “_Why Way” (hm, I just created a new trend) is what I praise the most for programmers. I write about that a lot at my BalanceOnRails blog for brazilian developers. Yes, programming was born at laboratories and academia but it was a circunstance. The people involved would not call themselves just ‘academics’ but ‘artists’, ‘hackers’. That’s what I see in Douglas Engelbart, Alan Kay, Charles Simonyi, Jef Raskin, Richard Stallman, Bertrand Meyer. Programmers should not limit themselves to pure procedural engineering and production lines. Programming is all about art, taste, delight, fun. We create great stuff out of pure inspiration, not following straight recipes. _Why is, for me, the pinnacle of what I believe every programmer should aspire.

‘nuff said.

said on 30 Mar 2007 at 13:28

I’m not a big fan of the guide, but am relishing the opportunity to stand up at a meeting someday and say “Now here’s an introduction by a gentleman named ‘why the lucky stiff’, who I will simply call Mr. Stiff from this point on”.

said on 30 Mar 2007 at 16:15

I’m new to programming - one HS C ++ class 8 years ago - and have found your guide emmensly helpful. I bought Agile ROR , built the depot, and wanted more info on Ruby. I stumbled on your guide; and after only a few hours of reading, I feel like a new man! Keep up the good work!

said on 31 Mar 2007 at 01:27

I don’t like being mean but Matthew Huntbach is an elitist idiot… I’ve done it his way: enduring boring, extreme, jargon loaded, high level formal crap that serves more to stroke the author/speaker’s ego than to help the person learning…

You’re bringing back coolness and fun to learning and programming; who really cares what the pizzabox programmer thinks

said on 03 Apr 2007 at 08:10

Sounds like he has sour grapes, Little does he know, All programmers are cool, Except him, He got left out.

Don’t worry, You’re totally awesome, Some washed up C++ programmer is just jealous

said on 04 Apr 2007 at 13:52

“He desired a stallion, but no stallion appeared. And that’s how he discovered that the planet wouldn’t read his mind and answer his wishes.” _why poignant guide to ruby

Book on coding, zen koan, spiritual path, horse buying guide? You decide.

ilan

11 Jul 2010 at 20:36

* do fancy stuff in your comment.

PREVIEW PANE