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.