Nice analogy Matt : )

Tom

On 5 Dec 2009, at 22:58, Matt Jones wrote:

> 
> On Dec 5, 2009, at 7:19 AM, Tom Locke wrote:
> 
>> I also think Hobo should provide the small and powerful vocabulary.  
>> The idea that you can build a hobo app without proper Ruby/Rails  
>> chops has bitten quite a few people - it's wishful thinking (that  
>> doesn't mean you must learn Rails fully first - you can learn them  
>> both together).
>> 
> 
> Exactly - I'd even go farther and say that Hobo isn't the best place  
> for a new programmer. There's quite a bit of magic going on - none of  
> it's particularly *special* magic, and a somewhat experienced Rails  
> programmer will understand what's happening. But those conventions /  
> standard behaviors are a lot to take in for a new programmer,  
> especially since most of them are buried somewhere in the gem. Anybody  
> remember all the confusion people had when Rails scaffolding was a  
> single line on the controller, rather than generated code?
> 
> 
> To me, Hobo's real target audience are the folks who already  
> understand things like the CRUD controller incantations, and are tired  
> of typing them over and over. The goal is to get the routine bits out  
> of the way, so the important parts (the business logic, the unique  
> processes) can be accomplished more clearly. You can see this  
> throughout the whole plugin: for example, there's nothing magical  
> about lifecycles that couldn't be expressed in model/controller code.  
> But the lifecycle block and the support in Rapid mean that it's much  
> easier  and much clearer to encode "only user Foo can do action Bar to  
> an object in state Baz" rather than scattering permission and state  
> checks all over the controllers.
> 
> Similarly, in the current DRYML code, there's nothing that some (very  
> clever) use of ERB and block helpers couldn't do; I actually wrote  
> some code like this back when Hobo was still a little shaky last year.  
> Example:
> 
>   def checked_span(display_state, user, &block)
>     if user.display_currently?(display_state)
>       c = 'current'
>     elsif user.display_completed?(display_state)
>       c = 'done'
>     else
>       c = 'upcoming'
>     end
>     content = capture { yield }
>     concat(render(:partial => '/candidates/checked_span', :locals =>  
> { :user => user, :span_class => c, :content => content, :phase =>  
> display_state }))
>   end
> 
> (this is in a helper module) Its usage looks like (in a view file):
> 
>   <% checked_span(:define_goals, user) do -%>
>     <h3><%= checklist_phase_header('Define Goals', :define_goals,  
> user) %></h3>
>   <% end -%>
> 
> Anybody who has written much DRYML will see the immediate similarity.  
> DRYML simplifies code like this by reducing the punctation noise (less  
> <%= ) and making much of the context (the user local, for instance)  
> more automated.
> 
> So to come back around to the start, Hobo shouldn't be thought of as  
> something that one uses "instead of" Rails; I don't believe it's  
> possible to be a good Hobo programmer without also being a reasonably  
> good Rails programmer.
> 
> A somewhat funny (to me, anyways) real-world analog - web programming  
> as building a house.
> 
> PHP: you start with a forest and some iron ore. Good luck.
> 
> Rails: 2x4s and hand tools. Much less mess than PHP, but still pretty  
> repetitive.
> 
> Hobo: the same 2x4s, but now you've got power tools. Who really wants  
> to stand around all day sawing, when there are structural decisions to  
> make?
> 
> Random CMS with plugins: 10000000 prefab segments the size of rooms.  
> You can build something that looks mostly like what you want, but  
> there are design compromises due to inflexibility; you've also got to  
> figure out which of a huge number of nearly-identical modules to  
> choose, and deal with compatibility issues. In many cases, if you want  
> to try to modify things at all, you're back to the iron ore and the  
> forest.
> 
> There's no debating the prefab segments get *something* up quickly,  
> but the real goal should be to get the *right thing* up quickly.
> 
> --Matt Jones
> 
> --
> 
> You received this message because you are subscribed to the Google Groups 
> "Hobo Users" group.
> To post to this group, send email to [email protected].
> To unsubscribe from this group, send email to 
> [email protected].
> For more options, visit this group at 
> http://groups.google.com/group/hobousers?hl=en.
> 
> 

--

You received this message because you are subscribed to the Google Groups "Hobo 
Users" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/hobousers?hl=en.


Reply via email to