- I 'm happy to be here with the smart people and good people

- Being interested in the same things that smart people are interested in

is not the same thing as being smart

- I had no idea what Pete was thinking when he came up with the

"RubyFringe" concept -- did he mean the fringe of the Ruby

community, or did he mean the fringe of the Ruby language

- The conference seems to be a nice mix of both

- andand

- Groovy has an andand built in; it' s called the Elvis operator

- The Haskell people said "Reg is just inventing the maybe

monad in Haskell"

[ shows code ]

- There has to be a better way

- If returning nil -- method_missing

- "Yes, I know because I heard the guy who wrote it says it sucks"

- I 'm using it because I' m hardcore

- Problem : we 've opened up the Object class

- andand is really slow

- This is not a performance bug

- A Haskeller will tell you that the problem is solved

- Haskell has lazy evaluation

- Haskell never bother evaluating stuff that will always be nil

- Ruby isn' t "turtles all the way down" -- it doesn 't give

you all the tools it has for itself

- @logger.debug is expensive

- Make it a block!

- Or do if defined?

- This is going to sound smarmy -- you know, the way it sounds smarmy when

people say "I don' t know how to do this " or play dumb to seem more " real ",

but I swear this is true: I'm not good with IDEs

- I think that when IDEs give you some kind of wizard or other feature

to simplify some aspect of programming, it's a sign of a defect in the

language you're using

- Ruby's open classes and " eager eval - by - default " are problems

- There are probably a number of ways to get around it -- my way was to

use macros

- Using Rewrite gets around the open class problem

- Yes, it turns your code into this shit [shows slide]

but better by far to have the code do it than your IDE

- [shows benchmarks] As you can see, it performance is far better than

doing it by opening up the Object class

- Rewrite version of andand doesn't execute the shit

- Okay, this is tather nichey stuff

- You know the saying that people don't by drills or drill bits, but they

buy *holes*? Think of Rewrite as diamond dust that you use to make

drill bits. Maybe you'll make use of it, but most people won't

- Just a quick note -- in his presentation, Giles [Bowkett] renamed lambda as

L because he needed to use it a lot.

- Having to do that is a code smell

- Never mind making it shorter -- get rid of it entirely!

[Joey note: Reg corrected himself in a blog entry written after RubyFringe,

stating that having to rename lambda is *not* a code smell;

it's a *language smell*. Giles is simply using the best workaround

available to him.

See his blog entry at

http://weblog.raganwald.com/2008/07/l-is-not-code-smell.html

]

- Why does Ruby read from left to right?

- I have a lot of unpaid Demeter speeding tickets

- thingy.thingy2.thingy3.thingy4

- Because this OOP paradigm, even Ruby goes from left to right

- From time to time, people want to go from right to left

- blitz.not.blank?

- not is really a adverb

- There's really no place for adverbs

- Adverbs modify verbs, and since OOP is in the Kingdom of Nouns,

they get short shrift. I'd like to see more support for adverbs.

- Take a look at ruby2ruby, created by the folks at seattle.rb

- It asks " Hey , interpreter , what are you actually working with ? "

- It does a lot of cleaning up of Ruby's s-expressions.

- Lisp's s-exps are like the nice flat-pack furniture you get from IKEA;

Ruby's are the furniture you find in the dumpster -- and that's the stuff

left over after a couple of people have been through it first.

- In the end, Ruby is like Lisp. Except you do all this work up front,

and you do all this work on the back, and it's morepainful.

- But aside from that, it's like Lisp!

- Abstraction solves every problem except for one: the problem you have

when there are too many layers of abstraction

- If working with the tool is worse than the problem, then the tool is bad

- Maybe you've been taken in by Home Depot -- they sell you on how easy it is to

do the job. Many tools make the job part easy to do, but often they make

cleaning up after the job more difficult

- Need to consider this when using or building tools

- I know that I don't have the best solution for this

- I *do* know that we have don't have enough competing solutions