- Brian
--
You received this message because you are subscribed to the Boston Ruby Group mailing list
To post to this group, send email to boston-r...@googlegroups.com
To unsubscribe from this group, send email to boston-rubygro...@googlegroups.com
For more options, visit this group at http://groups.google.com/group/boston-rubygroup
>> To post to this group, send email to boston-rubygroup@googlegroups.com
>> To unsubscribe from this group, send email to
>> boston-rubygroup-unsubscribe@googlegroups.com
>> For more options, visit this group at
>> http://groups.google.com/group/boston-rubygroup
>
>
>
>
> --
> Mark L. Chang
>
> --
> You received this message because you are subscribed to the Boston Ruby
> Group mailing list
> To post to this group, send email to boston-rubygroup@googlegroups.com
> To unsubscribe from this group, send email to
> boston-rubygroup-unsubscribe@googlegroups.com
>>> >> To post to this group, send email to boston-rubygroup@googlegroups.com
>>> >> To unsubscribe from this group, send email to
>>> >> boston-rubygroup-unsubscribe@googlegroups.com
>>> >> For more options, visit this group at
>>> >> http://groups.google.com/group/boston-rubygroup
>>> >
>>> >
>>> >
>>> >
>>> > --
>>> > Mark L. Chang
>>> >
>>> > --
>>> > You received this message because you are subscribed to the Boston Ruby
>>> > Group mailing list
>>> > To post to this group, send email to boston-rubygroup@googlegroups.com
>>> > To unsubscribe from this group, send email to
>>> > boston-rubygroup-unsubscribe@googlegroups.com
>>> > For more options, visit this group at
>>> > http://groups.google.com/group/boston-rubygroup
>
> --
> You received this message because you are subscribed to the Boston Ruby
> Group mailing list
> To post to this group, send email to boston-rubygroup@googlegroups.com
> To unsubscribe from this group, send email to
> boston-rubygroup-unsubscribe@googlegroups.com
> >>> >> To post to this group, send email to boston-rubygroup@googlegroups.com
> >>> >> To unsubscribe from this group, send email to
> >>> >> For more options, visit this group at
> >>> >>http://groups.google.com/group/boston-rubygroup
>
> >>> > --
> >>> > Mark L. Chang
>
> >>> > --
> >>> > You received this message because you are subscribed to the Boston Ruby
> >>> > Group mailing list
> >>> > To post to this group, send email to boston-rubygroup@googlegroups.com
> >>> > To unsubscribe from this group, send email to
> >>> > For more options, visit this group at
> >>> >http://groups.google.com/group/boston-rubygroup
>
> > --
> > You received this message because you are subscribed to the Boston Ruby
> > Group mailing list
> > To post to this group, send email to boston-rubygroup@googlegroups.com
> > To unsubscribe from this group, send email to
> > For more options, visit this group at
> >http://groups.google.com/group/boston-rubygroup
--
You received this message because you are subscribed to the Boston Ruby Group mailing list
To post to this group, send email to boston-rubygroup@googlegroups.com
To unsubscribe from this group, send email to boston-rubygroup-unsubscribe@googlegroups.com
To post to this group, send email to boston-r...@googlegroups.com
To unsubscribe from this group, send email to boston-rubygro...@googlegroups.com
>>>> > >>> >> boston-rubygroup@googlegroups.com
>>>> > >>> >> To unsubscribe from this group, send email to
>>>> > >>> >> boston-rubygroup-unsubscribe@googlegroups.com
>>>> > >>> >> For more options, visit this group at
>>>> > >>> >>http://groups.google.com/group/boston-rubygroup
>>>> >
>>>> > >>> > --
>>>> > >>> > Mark L. Chang
>>>> >
>>>> > >>> > --
>>>> > >>> > You received this message because you are subscribed to the
>>>> > >>> > Boston Ruby
>>>> > >>> > Group mailing list
>>>> > >>> > To post to this group, send email to
>>>> > >>> > boston-rubygroup@googlegroups.com
>>>> > >>> > To unsubscribe from this group, send email to
>>>> > >>> > boston-rubygroup-unsubscribe@googlegroups.com
>>>> > >>> > For more options, visit this group at
>>>> > >>> >http://groups.google.com/group/boston-rubygroup
>>>> >
>>>> > > --
>>>> > > You received this message because you are subscribed to the Boston
>>>> > > Ruby
>>>> > > Group mailing list
>>>> > > To post to this group, send email to
>>>> > > boston-rubygroup@googlegroups.com
>>>> > > To unsubscribe from this group, send email to
>>>> > > boston-rubygroup-unsubscribe@googlegroups.com
>>>> > > For more options, visit this group at
>>>> > >http://groups.google.com/group/boston-rubygroup
>>>>
>>>> --
>>>> You received this message because you are subscribed to the Boston Ruby
>>>> Group mailing list
>>>> To post to this group, send email to boston-rubygroup@googlegroups.com
>>>> To unsubscribe from this group, send email to
>>>> boston-rubygroup-unsubscribe@googlegroups.com
>>>> For more options, visit this group at
>>>> http://groups.google.com/group/boston-rubygroup
>>>
>>>
>> --
>> You received this message because you are subscribed to the Boston Ruby
>> Group mailing list
>> To post to this group, send email to boston-rubygroup@googlegroups.com
>> To unsubscribe from this group, send email to
>> boston-rubygroup-unsubscribe@googlegroups.com
>> For more options, visit this group at
>> http://groups.google.com/group/boston-rubygroup
>
>
>
>
> --
> Dylan Cashman
> Annkissam - Mission Driven Systems
> www.annkissam.com
>
> One Broadway, 14th Floor
> Cambridge, MA 02142
> Cell (preferred): 617-999-3634
> Office: 617-401-2480, ext. 708
> Fax: 617-507-5922
>
> --
> You received this message because you are subscribed to the Boston Ruby
> Group mailing list
> To post to this group, send email to boston-rubygroup@googlegroups.com
> To unsubscribe from this group, send email to
> boston-rubygroup-unsubscribe@googlegroups.com
> >>> boston-rubygroup@googlegroups.**com <boston-rubygroup@googlegroups.com>
> >>> > >>> >> To unsubscribe from this group, send email to
> >>> > >>> >> boston-rubygroup-unsubscribe@**googlegroups.com<boston-rubygroup-unsubscrib e...@googlegroups.com>
> >>> > >>> >> For more options, visit this group at
> >>> > >>> >>http://groups.google.com/**group/boston-rubygroup<http://groups.google.com/group/boston-rubygroup>
>
> >>> > >>> > --
> >>> > >>> > Mark L. Chang
>
> >>> > >>> > --
> >>> > >>> > You received this message because you are subscribed to the
> >>> Boston Ruby
> >>> > >>> > Group mailing list
> >>> > >>> > To post to this group, send email to
> >>> boston-rubygroup@googlegroups.**com <boston-rubygroup@googlegroups.com>
> >>> > >>> > To unsubscribe from this group, send email to
> >>> > >>> > boston-rubygroup-unsubscribe@**googlegroups.com<boston-rubygroup-unsubscrib e...@googlegroups.com>
> >>> > >>> > For more options, visit this group at
> >>> > >>> >http://groups.google.com/**group/boston-rubygroup<http://groups.google.com/group/boston-rubygroup>
>
> >>> > > --
> >>> > > You received this message because you are subscribed to the Boston
> >>> Ruby
> >>> > > Group mailing list
> >>> > > To post to this group, send email to boston-rubygroup@googlegroups.*
> >>> *com <boston-rubygroup@googlegroups.com>
> >>> > > To unsubscribe from this group, send email to
> >>> > > boston-rubygroup-unsubscribe@**googlegroups.com<boston-rubygroup-unsubscrib e...@googlegroups.com>
> >>> > > For more options, visit this group at
> >>> > >http://groups.google.com/**group/boston-rubygroup<http://groups.google.com/group/boston-rubygroup>
>
> >>> --
> >>> You received this message because you are subscribed to the Boston Ruby
> >>> Group mailing list
> >>> To post to this group, send email to boston-rubygroup@googlegroups.**com<boston-rubygroup@googlegroups.com>
> >>> To unsubscribe from this group, send email to
> >>> boston-rubygroup-unsubscribe@**googlegroups.com<boston-rubygroup-unsubscrib e...@googlegroups.com>
> >>> For more options, visit this group athttp://groups.google.com/**
> >>> group/boston-rubygroup <http://groups.google.com/group/boston-rubygroup>
>
> >> --
> > You received this message because you are subscribed to the Boston Ruby
> > Group mailing list
> > To post to this group, send email to boston-rubygroup@googlegroups.com
> > To unsubscribe from this group, send email to
> > boston-rubygroup-unsubscribe@googlegroups.com
>>>>>>>>>>>>>> boston-rubygroup@googlegroups.com
>>>>>>>>>>>>>> To unsubscribe from this group, send email to
>>>>>>>>>>>>>> boston-rubygroup-unsubscribe@googlegroups.com
>>>>>>>>>>>>>> For more options, visit this group at
>>>>>>>>>>>>>> http://groups.google.com/group/boston-rubygroup
>>>>>>>>>
>>>>>>>>>>>>> --
>>>>>>>>>>>>> Mark L. Chang
>>>>>>>>>
>>>>>>>>>>>>> --
>>>>>>>>>>>>> You received this message because you are subscribed to the
>>>>>>>>>>>>> Boston Ruby
>>>>>>>>>>>>> Group mailing list
>>>>>>>>>>>>> To post to this group, send email to
>>>>>>>>>>>>> boston-rubygroup@googlegroups.com
>>>>>>>>>>>>> To unsubscribe from this group, send email to
>>>>>>>>>>>>> boston-rubygroup-unsubscribe@googlegroups.com
>>>>>>>>>>>>> For more options, visit this group at
>>>>>>>>>>>>> http://groups.google.com/group/boston-rubygroup
>>>>>>>>>
>>>>>>>>>> --
>>>>>>>>>> You received this message because you are subscribed to the
>>>>>>>>>> Boston
>>>>>>>>>> Ruby
>>>>>>>>>> Group mailing list
>>>>>>>>>> To post to this group, send email to
>>>>>>>>>> boston-rubygroup@googlegroups.com
>>>>>>>>>> To unsubscribe from this group, send email to
>>>>>>>>>> boston-rubygroup-unsubscribe@googlegroups.com
>>>>>>>>>> For more options, visit this group at
>>>>>>>>>> http://groups.google.com/group/boston-rubygroup
>>>>>>>>
>>>>>>>> --
>>>>>>>> You received this message because you are subscribed to the Boston
>>>>>>>> Ruby
>>>>>>>> Group mailing list
>>>>>>>> To post to this group, send email to
>>>>>>>> boston-rubygroup@googlegroups.com
>>>>>>>> To unsubscribe from this group, send email to
>>>>>>>> boston-rubygroup-unsubscribe@googlegroups.com
>>>>>>>> For more options, visit this group at
>>>>>>>> http://groups.google.com/group/boston-rubygroup
>>>>>>>
>>>>>>>
>>>>>> --
>>>>>> You received this message because you are subscribed to the Boston Ruby
>>>>>> Group mailing list
>>>>>> To post to this group, send email to boston-rubygroup@googlegroups.com
>>>>>> To unsubscribe from this group, send email to
>>>>>> boston-rubygroup-unsubscribe@googlegroups.com
>>>>>> For more options, visit this group at
>>>>>> http://groups.google.com/group/boston-rubygroup
>>>>>
>>>>>
>>>>>
>>>>>
>>>>> --
>>>>> Dylan Cashman
>>>>> Annkissam - Mission Driven Systems
>>>>> www.annkissam.com
>>>>>
>>>>> One Broadway, 14th Floor
>>>>> Cambridge, MA 02142
>>>>> Cell (preferred): 617-999-3634
>>>>> Office: 617-401-2480, ext. 708
>>>>> Fax: 617-507-5922
>>>>>
>>>>> --
>>>>> You received this message because you are subscribed to the Boston Ruby
>>>>> Group mailing list
>>>>> To post to this group, send email to boston-rubygroup@googlegroups.com
>>>>> To unsubscribe from this group, send email to
>>>>> boston-rubygroup-unsubscribe@googlegroups.com
>>>>> For more options, visit this group at
>>>>> http://groups.google.com/group/boston-rubygroup
>>>
>>> --
>>> You received this message because you are subscribed to the Boston Ruby
>>> Group mailing list
>>> To post to this group, send email to boston-rubygroup@googlegroups.com
>>> To unsubscribe from this group, send email to
>>> boston-rubygroup-unsubscribe@googlegroups.com
>>> For more options, visit this group at
>>> http://groups.google.com/group/boston-rubygroup
>>
>> --
>> You received this message because you are subscribed to the Boston Ruby Group mailing list
>> To post to this group, send email to boston-rubygroup@googlegroups.com
>> To unsubscribe from this group, send email to boston-rubygroup-unsubscribe@googlegroups.com
>> For more options, visit this group at http://groups.google.com/group/boston-rubygroup
>
> --
> You received this message because you are subscribed to the Boston Ruby Group mailing list
> To post to this group, send email to boston-rubygroup@googlegroups.com
> To unsubscribe from this group, send email to boston-rubygroup-unsubscribe@googlegroups.com
To post to this group, send email to boston-r...@googlegroups.com
To unsubscribe from this group, send email to boston-rubygro...@googlegroups.com
You know, I'd like to say that I've been in a lot of tech communities --- math and physics at MIT, math at Harvard, MIT's AI community, Google engineering, and the programming language research community --- and of all of them, the Ruby community is by far the most friendly and helpful. (With maybe only Google coming in a not-too-close second. Of course since I have the Harvard math department as a baseline there may be a dwarf- among-midgets effect going on; other people have had different reactions, but they also have a different objects of comparison.)I agree with Brian that it is wisest to choose something reasonably sustainable. For instance, a while back there was a movie night --- watching screencasts with (fairly extensive) discussion afterwards. I really loved it, and whenever there has been talk of what to do on the fourth unfilled Tuesday I've said, um, remember movie night?That wasn't explicitly educational, but I found the post-screencast discussion very illuminating, perhaps because, as I've said, often the most mysterious thing isn't the working of the technology but the context of what it is for and the judgement calls you make on how to use it. For instance, one of the movie night meetings covered Sinatra, which was new at the time, and the discussion afterwards gave me a lot of insight into why people were excited about this new thing and what they were planning on building with it.Perhaps I liked movie night because another thing that is remarkable and interesting about the Ruby community (in comparison to other tech communities) is the ferment --- how quickly new ideas get considered, improved, adopted, and then superseded. For instance, the first hackfest I went to a group was developing Factory Girl, and less than a year later it was widely adopted and its authors were big heroes. That doesn't happen in programming language research --- if you are lucky you develop an idea over a decade and it gets adopted in another decade. (If you are very lucky!) Of course, the ferment has a downside, because it also means skills become obsolete very fast. Yes, I have experience setting up fixtures the old bad way, but who cares now that we have Factory Girl? Expertise spoils faster than two day old milk, which can result in the kind of despair that drove _why to internet suicide.
So in a world where expertise goes rancid so quickly, it seems like the real experts aren't the ones who know what's hot right now, they are the ones who know what will be hot tomorrow. For instance, someone mentioned on this list that they were switching from Sass to Stylus, and my first reaction was: my Sass knowledge is obsolete already! Omg, shoot me now! But then I looked at Stylus to see what made it worth the switch, read "lexically scoped" and laughed. Greenspun's tenth rule generalizes beyond C and Fortran even to CSS preprocessors! If one wants to learn more about Stylus, I think studying a curriculum is less interesting than answering the question: what does this make possible? Are there any "zero to hero" projects like Factory Girl that one could build that weren't possible without it? For instance, this article written by a designer talks about "comment math" and I wonder, why is the programming support so pathetic that the math has to be in a comment and not in a function? Is there a good way to fix this? If so, what would it take to get people to actually use it? Those are the sort of questions I might hope to get answers to from something like a movie night discussion.
Perhaps I'm a little bit down on curricula partly because they exist already, and partly also because it doesn't escape my notice that the girls get together to study topics, and the guys get together to do "zero to hero" projects, and, um, the guys' way works better. I'm afraid a study group is a Girls Ghetto one can never escape from, because there are always new topics to study. It never ends. I've had guys tell me I study too much --- I'm too worried about knowing everything before I start programming. At some point I have to trust that if I know more or less how to think about a "lexically scoped language with CSS-like syntax" I can lazily evaluate actually figuring out the exact syntax of something like Stylus, at the point when I need it, because I can't be studying every possible thing like that in advance. I suppose that only works if you know very well what "lexically scoped" and "CSS-like syntax" means and all its consequences --- that kind of curriculum does really matter. But after that I think it might be more helpful to have an explicitly inclusive group that helped people design and execute "zero to hero" type projects. And that wouldn't have to be just an education thing; it might help people "level up," as someone on this list said, or improve the profile of the Boston Ruby community in general.
Regardless of whether they are the same or not, there seems to be a recurring misconception/intimidation about new people showing up to the Hackfest, which I'm not sure how to overcome (but I'd like to). Does anyone have any thoughts on this? Perhaps we people were to explicitly state that they were available to help new people then we could make that as part of the pitch and can guarantee that someone will always be there to help?
As much as I love the idea behind this, we need to seriously consider what we want. Boston Python is unlikely to be as useful to experienced pythonistas because of the focus on addressing the needs of newbies. It looks like what is starting to happen here is a fork of Boston.rb which is more focused on newbies so that we can have a group still focused on the needs of experienced rubyists. Is this actually what we want? I honestly don't know. I do know that it's going to be a ton of effort if that's the road we head down.
To post to this group, send email to boston-rubygroup@googlegroups.com
To unsubscribe from this group, send email to boston-rubygroup-unsubscribe@googlegroups.com
To post to this group, send email to boston-r...@googlegroups.com
To unsubscribe from this group, send email to boston-rubygro...@googlegroups.com
While it is great to make more people aware of this framework, most of us I suspect are keenest to deepen the pool of developers.
> > To post to this group, send email to boston-rubygroup@googlegroups.com
> > To unsubscribe from this group, send email to boston-rubygroup-unsubscribe@googlegroups.com
> > For more options, visit this group at http://groups.google.com/group/boston-rubygroup
> >
> >
> > --
> > You received this message because you are subscribed to the Boston Ruby Group mailing list
> > To post to this group, send email to boston-rubygroup@googlegroups.com
> > To unsubscribe from this group, send email to boston-rubygroup-unsubscribe@googlegroups.com
> > For more options, visit this group at http://groups.google.com/group/boston-rubygroup
> >
> >
> > --
> > You received this message because you are subscribed to the Boston Ruby Group mailing list
> > To post to this group, send email to boston-rubygroup@googlegroups.com
> > To unsubscribe from this group, send email to boston-rubygroup-unsubscribe@googlegroups.com
> > For more options, visit this group at http://groups.google.com/group/boston-rubygroup
>
> ---
> Chad Pytel, Founder and CEO
> thoughtbot, inc.
> t: 617-482-1300 x113
> f: 866-217-5992
> http://www.thoughtbot.com
> http://www.twitter.com/thoughtbot
>
> --
> You received this message because you are subscribed to the Boston Ruby Group mailing list
> To post to this group, send email to boston-rubygroup@googlegroups.com
> To unsubscribe from this group, send email to boston-rubygroup-unsubscribe@googlegroups.com
> For more options, visit this group at http://groups.google.com/group/boston-rubygroup
>
>
> --
> You received this message because you are subscribed to the Boston Ruby Group mailing list
> To post to this group, send email to boston-rubygroup@googlegroups.com
> To unsubscribe from this group, send email to boston-rubygroup-unsubscribe@googlegroups.com
> > > To post to this group, send email to boston-rubygroup@googlegroups.com
> > > To unsubscribe from this group, send email to boston-rubygroup-unsubscribe@googlegroups.com
> > > For more options, visit this group at http://groups.google.com/group/boston-rubygroup
> > >
> > >
> > > --
> > > You received this message because you are subscribed to the Boston Ruby Group mailing list
> > > To post to this group, send email to boston-rubygroup@googlegroups.com
> > > To unsubscribe from this group, send email to boston-rubygroup-unsubscribe@googlegroups.com
> > > For more options, visit this group at http://groups.google.com/group/boston-rubygroup
> > >
> > >
> > > --
> > > You received this message because you are subscribed to the Boston Ruby Group mailing list
> > > To post to this group, send email to boston-rubygroup@googlegroups.com
> > > To unsubscribe from this group, send email to boston-rubygroup-unsubscribe@googlegroups.com
> > > For more options, visit this group at http://groups.google.com/group/boston-rubygroup
> >
> > ---
> > Chad Pytel, Founder and CEO
> > thoughtbot, inc.
> > t: 617-482-1300 x113
> > f: 866-217-5992
> > http://www.thoughtbot.com
> > http://www.twitter.com/thoughtbot
> >
> > --
> > You received this message because you are subscribed to the Boston Ruby Group mailing list
> > To post to this group, send email to boston-rubygroup@googlegroups.com
> > To unsubscribe from this group, send email to boston-rubygroup-unsubscribe@googlegroups.com
> > For more options, visit this group at http://groups.google.com/group/boston-rubygroup
> >
> >
> > --
> > You received this message because you are subscribed to the Boston Ruby Group mailing list
> > To post to this group, send email to boston-rubygroup@googlegroups.com
> > To unsubscribe from this group, send email to boston-rubygroup-unsubscribe@googlegroups.com
> > For more options, visit this group at http://groups.google.com/group/boston-rubygroup
>
> ---
> Chad Pytel, Founder and CEO
> thoughtbot, inc.
> t: 617-482-1300 x113
> f: 866-217-5992
> http://www.thoughtbot.com
> http://www.twitter.com/thoughtbot
>
>
> --
> You received this message because you are subscribed to the Boston Ruby Group mailing list
> To post to this group, send email to boston-rubygroup@googlegroups.com
> To unsubscribe from this group, send email to boston-rubygroup-unsubscribe@googlegroups.com
> <mailto:boston-rubygroup@googlegroups.com>
> >> To unsubscribe from this group, send email to
> >> boston-rubygroup-unsubscribe@ googlegroups.com
> <mailto:boston-rubygroup-unsub...@googlegroups.com>
> >> For more options, visit this group at
> >> http://groups.google.com/ group/boston-rubygroup
> <http://groups.google.com/group/boston-rubygroup>
> >
> >
> >
> >
> > --
> > Mark L. Chang
> >
> > --
> > You received this message because you are subscribed to
> the Boston Ruby
> > Group mailing list
> > To post to this group, send email to
> boston-rubygroup@googlegroups. com
> <mailto:boston-rubygroup@googlegroups.com>
> > To unsubscribe from this group, send email to
> > boston-rubygroup-unsubscribe@ googlegroups.com
> <mailto:boston-rubygroup-unsub...@googlegroups.com>
> > For more options, visit this group at
> > http://groups.google.com/ group/boston-rubygroup
> <http://groups.google.com/group/boston-rubygroup>
>
> --
> You received this message because you are subscribed to the Boston
> Ruby Group mailing list
> To post to this group, send email to
> boston-rubygroup@googlegroups.com
> <mailto:boston-rubygroup@googlegroups.com>
> To unsubscribe from this group, send email to
> boston-rubygroup-unsubscribe@googlegroups.com
> <mailto:boston-rubygroup-unsub...@googlegroups.com>
> For more options, visit this group at
> http://groups.google.com/group/boston-rubygroup
>
>
> --
> You received this message because you are subscribed to the Boston Ruby
> Group mailing list
> To post to this group, send email to boston-rubygroup@googlegroups.com
> To unsubscribe from this group, send email to
> boston-rubygroup-unsubscribe@googlegroups.com
<mailto:boston-rubygroup@googlegroups.com>
>> For more options, visit this group at
>> http://groups.google.com/ group/boston-rubygroup
<http://groups.google.com/group/boston-rubygroup>
>
>
>
>
> --
> Mark L. Chang
>
> --
> You received this message because you are subscribed to
the Boston Ruby
> Group mailing list
> To post to this group, send email to
boston-rubygroup@googlegroups. com
<mailto:boston-rubygroup@googlegroups.com>
<http://groups.google.com/group/boston-rubygroup>
--
You received this message because you are subscribed to the Boston
Ruby Group mailing list
To post to this group, send email to
For more options, visit this group at
http://groups.google.com/group/boston-rubygroup
--
You received this message because you are subscribed to the Boston Ruby
Group mailing list
To post to this group, send email to boston-rubygroup@googlegroups.com
--
You received this message because you are subscribed to the Boston Ruby Group mailing list
To post to this group, send email to boston-rubygroup@googlegroups.com
Since that statement was a little inflammatory, I should point out that I included a caveat further down --- that "lexical scope" and "css style" was something worth being taught. I don't want to be understood to say that I don't think there are fundamental ideas that real beginners do need to actively study and be taught by experts. My comments are colored by the fact that I'm not a true beginner --- even before I learned any Ruby I had a lot of experience programming in different idioms.In that vein, I had a nascent project I'd be curious if anyone else was interested in: a while back I bought the domain name "functionalmodularity.com" with the idea I might populate it with essays focused on the subject of various ways that popular semi-functional languages like Ruby or Javascript handle encapsulation of state. (The idea was that "functional" would be a pun, meaning both the academic idea and the colloquial idea of "practical, workable in the real world.") One of the central things that makes Ruby powerful but also, perhaps, deeply confusing to a beginner is that Matz, with his Japanese respect for tradition, put in Ruby homage both to the Smalltalk object-oriented tradition and the Lisp "closure-oriented" way of life. The result is that you can choose to program in either idiom, or mix them if you want to. The mixtures are where the real hazards to beginners lie. For instance, in Javascript, which has a similar but less elegant mixed heritage, closures and object-oriented "this" mix together, often with particularly mind-bending results; if I wasn't somewhat experienced I would run screaming from code like this. It is problems like these that makes it unfair to throw a beginner in the deep end without preparation.The idea is that if I tried to imagine what would happen if a complete novice programmer got the idea that "Real Men Don't Read The Manual" and tried to learn modern web programming by diving into some sample code, wallowing around, and consulting references only when really confused, where would he or she get into hopeless trouble? Quite a bit of it could be learned this way (maybe the hash argument syntax in Ruby would be confusing for a while, but a judicious rescue dip into the manual would probably clear it up). The place I would imagine that a beginner could get hopelessly tied in knots is if he or she encountered code that, perhaps only implicitly, followed some idiom for the management of state, like an object oriented design pattern, and then maybe through blind cut and paste, mixed it together with a different idiom, and then tried to debug the result. Especially if code which used closures in a non-trivial way crept in, and the beginner didn't understand how functions can carry state, he or she could get completely confused. Though I like functional programming a lot, I can see how it can be very mysterious to a beginners -- it took me years to understand where the balance was being held in the simple bank account example in SICP. Nor would rescue forays into the manual necessarily help untangle such knots, because they depend on recognizing idioms and intuiting what the designer of the code was trying to accomplish with them. IMHO, this is the area in which someone with education or experience has a huge advantage over a total novice, and where formal education could turbocharge a beginner's self-confidence.Perhaps this impulse came from the feeling that introductory programming is taught in ways that are so informed by extreme philosophies that there is a gap in the middle-ground. That is to say, universities tend to insist on teaching fundamentals, while companies equally adamantly insist on teaching practical knowledge, so it is hard to find something that highlights "the fundamental in the context of the practical" even though that may be what people need most. "Practical" knowledge is mostly both too easy to learn, and yet becomes irrelevant too quickly to be worth taking too much time to study, but "fundamental" knowledge can be hard to relate to practice when taught out of context. And the people who teach fundamentals usually prefer to teach either object-oriented styles or functional ones, both ignoring that the in the real world they mix, and sometimes the hairiest conundrums (like Javascript's "this") come from their interaction. So I felt there was a missing piece in the middle ground between these different educational philosophies. But, as I said, this was a nascent project, merely a conception. I wonder if anyone else thinks there is this gap and whether it is worth the effort to fill?
thanks for reading my long posts,
Rebecca