The idea of having a Ruby reading group has come up in a couple
threads. I'm interested in gauging how many others would be
interested.
Here's a summary of books that have been discussed:
* Ben: [Design Patterns in Ruby](http://designpatternsinruby.com/)
* Dan: [Eloquent Ruby](http://eloquentruby.com/)
* Joel: [The Little Schemer](http://www.ccs.neu.edu/home/matthias/
BTLS/)
Related threads:
* [Dependency Injection in Ruby](http://groups.google.com/group/
newhavenrb/browse_thread/thread/394729e5364f1a00)
* [Why strings and symbols have to be different for hash access?]
(http://groups.google.com/group/newhavenrb/browse_thread/thread/
2f7139b85b617c0a)
Anybody else interested? Chime in with your pick. If we have enough
interest, I'll take the picks, make a poll, and we can move on from
there.
Best wishes,
Ben
I would second Diego's suggestion of a book about functional
programming as I know I often have issues grasping the functional
paradigm and wish I could use it more in Ruby.
--
Jonathan E. Magen
203-936-9665
http://www.yonkeltron.com
GTALK: yonke...@gmail.com
http://twitter.com/yonkeltron
ב"ה
> Lisp isn't actually a functional language -
I would refer you to Martin Odersky's (Scala inventor and type-system
guru) comments on the definition of functional languages where he
offers a dual-definition based on definition and common perception.
Paraphrasing, says that one can characterize a functional languages as
any language which supports higher-order functions or a more
restrictive definition focused on a lack of mutable state. As he does,
I prefer the looser definition focusing on features. Lisp, was based
in 1956 off of the lambda calculus used for studying function
application devised by Alonzo Church in the 1930s. Now, it has grown
to represent a class of languages based on the original lack-of-syntax
syntax and has been an invaluable testing ground for many of the
functional language features we take for granted such as closures and
the fun stuff they allow.
> it's a paradigm-agnostic
> language. It supports functional equally as well as OO, imperative,
> declarative, logic-oriented, etc.
I disagree with your statement regarding the paradigm-agnosticism.
Having worked with several dialects of Lisp over the years, certain
ones ship with better support or specializations suited to specific
tasks. I wish that Lisp were to be defined more by language
characteristics than just syntax alone! The advent of CLOS, for
example is a relatively-recent development and I am fascinated to see
some Lisp dialects supporting list-like datatypes natively such as
vectors. Awesome developments, right? Are there dialects of lisp which
support logic programming natively?
> That said, I once talked my manager into letting me go to a Lisp
> conference, because it's a functional language, and we were doing more
> functional C# stuff at work. So hey. :)
That. Is. Awesome!!! Which Lisp conf was it?
--
I've only done a little functional programming (in Scheme), and a fair
bit of higher-order stuff (in Ruby, JavaScript, and C#) - but I always
felt the HOF I did in those OO languages was missing something
essential, like I was going against the grain, being a churlish guest
to my OO hosts. Like if I only did-as-the-Romans, I'd have an easier
time in Rome. I'd never have called it functional. (Also, by that
logic, you could call Io a functional language, or Ruby a
prototype-based language, but I don't know how useful that would be.)
I think what we're sitting on either side of here is: do you call it
by its essence, or by everything it offers?
> Lisp, was based
> in 1956 off of the lambda calculus used for studying function
> application devised by Alonzo Church in the 1930s. Now, it has grown
> to represent a class of languages based on the original lack-of-syntax
> syntax and has been an invaluable testing ground for many of the
> functional language features we take for granted such as closures and
> the fun stuff they allow.
That's a good point - it certainly has a functional heritage. But it
seems to me the lack-of-syntax, AST-on-your-fingers language it grew
into is more reflective of what it's used for today, of its nature.
>> it's a paradigm-agnostic
>> language. It supports functional equally as well as OO, imperative,
>> declarative, logic-oriented, etc.
>
> I disagree with your statement regarding the paradigm-agnosticism.
> Having worked with several dialects of Lisp over the years, certain
> ones ship with better support or specializations suited to specific
> tasks. I wish that Lisp were to be defined more by language
> characteristics than just syntax alone! The advent of CLOS, for
> example is a relatively-recent development and I am fascinated to see
> some Lisp dialects supporting list-like datatypes natively such as
> vectors. Awesome developments, right?
Could we say that Lisp (the family) is paradigm-agnostic, but that
Clojure is lazy-functional, Scheme is dynamic-functional, CommonLisp
is (um)...? The Lisp family supports so many different language
characteristics that the lack-of-syntax is the only common feature.
> Are there dialects of lisp which
> support logic programming natively?
I have no idea! I googled a bit and couldn't find any.
All that said, I'm pretty sure you've hacked way more Lisp than I
have. I don't normally argue my points out this much, but this was
fun. My understanding of all this is based more on reading than
hard-earned experience. I hope I can re-read this in a few years and
cringe. (Hello, future me! I know, right? I'm so naive right now!)
>> That said, I once talked my manager into letting me go to a Lisp
>> conference, because it's a functional language, and we were doing more
>> functional C# stuff at work. So hey. :)
>
> That. Is. Awesome!!! Which Lisp conf was it?
ILC 2009 at MIT. I was SO the dumbest guy in the building. It was a great time.
On Tue, Nov 29, 2011 at 9:28 PM, Dan Bernier <danbe...@gmail.com> wrote:
> I've only done a little functional programming (in Scheme), and a fair
> bit of higher-order stuff (in Ruby, JavaScript, and C#) - but I always
> felt the HOF I did in those OO languages was missing something
> essential, like I was going against the grain, being a churlish guest
> to my OO hosts. Like if I only did-as-the-Romans, I'd have an easier
> time in Rome. I'd never have called it functional. (Also, by that
> logic, you could call Io a functional language, or Ruby a
> prototype-based language, but I don't know how useful that would be.)
>
I've always held the belief that you don't truly know a language until
you can name 5 things you really don't like about it. The nebulous
status of function objects (Proc/lambda/block) in Ruby makes my list!
Some day I'd like to have a wide-ranging look at the syntax for
lambdas (do I limit myself by not saying "literal function syntax"?)
in different languages. For example, in Smalltalk, Scala, Groovy, Lua
and of course, the upcoming Java lambda stuff.
> I think what we're sitting on either side of here is: do you call it
> by its essence, or by everything it offers?
>
Heavy stuff, man. Heavy.
> That's a good point - it certainly has a functional heritage. But it
> seems to me the lack-of-syntax, AST-on-your-fingers language it grew
> into is more reflective of what it's used for today, of its nature.
>
No other language has been able to convince developers to actually
write programs as syntax trees and proportionally, no other language
has been able to offer the rewards Lisp offers!
>
> Could we say that Lisp (the family) is paradigm-agnostic, but that
> Clojure is lazy-functional, Scheme is dynamic-functional, CommonLisp
> is (um)...? The Lisp family supports so many different language
> characteristics that the lack-of-syntax is the only common feature.
>
Common Lisp is...ummmm. Good question. For the answer:
http://www.stevenhumour.com/wp-content/uploads/2011/06/is-butter-a-carb.jpg
> I have no idea! I googled a bit and couldn't find any.
>
The number of languages whose first implementations were written in
Lisp is staggering. There must be a Prolog or something out there!
> All that said, I'm pretty sure you've hacked way more Lisp than I
> have. I don't normally argue my points out this much, but this was
> fun.
Agreed.
> My understanding of all this is based more on reading than
> hard-earned experience. I hope I can re-read this in a few years and
> cringe. (Hello, future me! I know, right? I'm so naive right now!)
>
Come now, the points can appear tangential to Ruby but actually
possess strong connections to our beloved language! Diego can tell you
more about the Smalltalk roots, though.
> ILC 2009 at MIT. I was SO the dumbest guy in the building. It was a great time.
I love being that guy. In school, our lab group would go over to our
faculty's house for dinner and they were both computer scientists.
We'd go to listen to them get into arguments because when people that
smart argue, they do so in complete thoughts. I kid you not, whole
paragraphs of eloquence pouring out of their mouths. I learned more by
getting them even moderately-liquored up then I did in hours of their
classes!
What can I say? Some topics just move me. :)
> On Tue, Nov 29, 2011 at 9:28 PM, Dan Bernier <danbe...@gmail.com> wrote:
> I've always held the belief that you don't truly know a language until
> you can name 5 things you really don't like about it. The nebulous
> status of function objects (Proc/lambda/block) in Ruby makes my list!
YES. For a while, when I was looking at functional stuff, JavaScript
inched ahead of Ruby, because, as ugly as function(){} is, at least
there's only ONE of them, and it only works in 2 ways.
> Some day I'd like to have a wide-ranging look at the syntax for
> lambdas (do I limit myself by not saying "literal function syntax"?)
> in different languages. For example, in Smalltalk, Scala, Groovy, Lua
> and of course, the upcoming Java lambda stuff.
I was kind of disappointed when I glanced at Lua - it's syntax is
so...normal-looking. But I suspect there's a bangin' little object
model in there that I'm just not making the time to get to know.
>> I think what we're sitting on either side of here is: do you call it
>> by its essence, or by everything it offers?
>>
>
> Heavy stuff, man. Heavy.
I'm sorry, I'll try not to do it again.
>> That's a good point - it certainly has a functional heritage. But it
>> seems to me the lack-of-syntax, AST-on-your-fingers language it grew
>> into is more reflective of what it's used for today, of its nature.
>>
>
> No other language has been able to convince developers to actually
> write programs as syntax trees and proportionally, no other language
> has been able to offer the rewards Lisp offers!
I think the Flexibility/Usability trade-off is relevant here:
http://books.google.com/books?id=l0QPECGQySYC&lpg=PA102&pg=PA103#v=onepage&q&f=false
Lisp really lives up to the Zombo.com promise. "You can do anything at
Zombo.com!" Really? Like what? "Anything at all! The only limit . . .
is YOURSELF."
>> Could we say that Lisp (the family) is paradigm-agnostic, but that
>> Clojure is lazy-functional, Scheme is dynamic-functional, CommonLisp
>> is (um)...? The Lisp family supports so many different language
>> characteristics that the lack-of-syntax is the only common feature.
>>
>
> Common Lisp is...ummmm. Good question. For the answer:
> http://www.stevenhumour.com/wp-content/uploads/2011/06/is-butter-a-carb.jpg
Wow - that actually clears it up a lot. :)
>> I have no idea! I googled a bit and couldn't find any.
>>
>
> The number of languages whose first implementations were written in
> Lisp is staggering. There must be a Prolog or something out there!
I know, right? I was surprised. There probably is, and if you know
someone who knows one well, you can ask them, and they'll tell you
whether it was, but the docs are more about what's neat and different
about it, not its origins.
I have Zombo.com playing now.
--
twitter @danbernier
http://wordcram.org
Diego Scataglini
We've gotten 5 voters so far at http://www.meetup.com/newhavenrb/polls/438312/.
Both of Russ Olsen's books are at the top of our poll, with _Design
Patterns in Ruby_ being rated near the top for everyone. Unless the
poll changes significantly, we can move ahead with that book, I think.
Once you have a copy, let us know and people interested in
participating can agree on a reading schedule. A chapter or two a
week would seem to do it, but that might slow down with some of the
denser chapters. If you're eager to get started, reading chapters 1,
3, and 4 is a good starting point. (Chapter 2 is just a Ruby
introduction.) They go pretty quick.
Like I mentioned previously, it would be nice to get together monthly
at a local coffee shop, like Koffee, Blue State, etc. Coffee shops
only really an option if we expect a small group, however; if it's
larger than about 4 people, so we can easily meet at Hedgeye (111
Whitney Ave) for a discussion instead.
Between meetups, the mailing list is a good place for discussion about
_DPiR_. If you'd like, tag your subject line with "[DPiR]" so it's
easier to know that it involves this book.
I'm excited to hear the coming discussion and learn with the rest of
you. Thanks everyone for taking part.
To help everyone out, I've compiled some info:
Book sources
------------
* Dead Tree: http://www.amazon.com/Design-Patterns-Ruby-Russ-Olsen/dp/0321490452
* Kindle: http://www.amazon.com/Design-Patterns-in-Ruby-ebook/dp/B0010SEN1S/ref=kinw_dp_ke?ie=UTF8&m=AG56TWVU5XWC2
* PDF and ePub: http://www.informit.com/store/product.aspx?isbn=0321490452
Reminder: if you're not sure about reading the whole book, you can
probably get the Kindle sample on a device you own and read the first
couple chapters along with us.
Resources
---------
* Code: http://designpatternsinruby.com/section01/code.html
* Errata: http://designpatternsinruby.com/section03/commision.html
Best wishes,
Ben
--
http://www.benjaminoakes.com/
http://www.twitter.com/benjaminoakes
Thanks for getting in touch! We'd love to have your input in discussions that come up. We will have some discussion on this mailing list, but otherwise Skype would seem like a great option. If you have any preferred dates, please let us know.
In any case, thank you for providing great source material; like I mentioned, both DPiR and Eloquent Ruby are at the top of our list.
Best wishes,
Ben
Got my copy in yesterday, & I know we have a copy or 2 at the office. When should we meet?
Sent from my iPhone
Lunch is perfect for me, & Google hangouts are great. Evenings will work.
> I would propose we try to do the Preface & Chaps 1 & 3 making Chap 2 optional (its Ruby basics).
Ben originally proposed up to chapter 4, but I think this will give us plenty to discuss for an hour.
> Does Wednesday 1/11 at lunch (12-1 ET) work?
That works for me.
Thanks everyone for picking a time. Reading the first 3 chapters for
Wednesday, 1/11 at 12-1 ET sounds like it should work for everyone.
(If it doesn't for you, please let us know.) I'm in transit today,
but I'll try to post up a Meetup event shortly.
Given some of the audio problems, etc last time we did Google
Hangouts, I'm wondering if the people that can get away from their
desks can get together somewhere and maybe only have a few video
connections open (rather than say, 8). I'm not sure what our options
are exactly; when I suggested Hedgeye to host the discussion earlier,
I was thinking evening or weekend. If some people are interested in
getting together in a meeting room (and also doing Google Hangouts for
those not able to come), let me know and I'll see if Hedgeye would be
an option.
Thanks again; I'm excited to have the first discussion, and I hope you
are as well.
Best wishes,
Ben
Ben, this is nice - thanks.
One thing I noticed is, maybe we should sign our questions, a la
Portland Patterns Repository (http://c2.com/cgi/wiki). It'll help make
sense of the talk around the questions, as they change.
Ben (via phone)
Members are listed at https://github.com/newhavenrb
Ben
--
Have you tried SeeClickFix.com?
*See: a non-emergency issue
*Click: it on the website or call 877.853.1552
*Fix: automatically report it for resolution
Ben
On Wed, Jan 4, 2012 at 12:33, Paul Novak <nov...@gmail.com> wrote:
> Me too, please. 'novakps'
>
> Thanks!