On Nov 3, 2010, at 10:17 AM, Tudor Girba wrote:
Hi Stef,
Thanks for pushing this.
I definitely understand these issues, and a solution will follow in the near future. It
is just a matter of effort, and until now the main goal was to get things going at the
model level. This is now working quite well, so now it's time to focus on the
rendering and on the API.
good to hear that.
The only thing is that the API will only grow from
people using it. With Mondrian, we could do it by having it used by a small amount of
people. Glamour is a more complicated engine, and getting the right API right is not as
straightforward. What you have right now is already the third version.
I imagine
The rest of the comments are inlined.
I asked several guys around here to have a look
at Glamour and gives you feedback and to see if we can build some cool tools
with glamour. Alain told me that he will have a look too.
Now the problem of benjamin is also really interesting in the sense that we could not
debug it and find the problem ourselves
and that was frustrating: mismatch of block arguments or something like that.
This was a mismatch of the returned type.
Still the point is how can we make sure that we can debug it because the model is aligned
with our mental model.
This is this aspect of glamour that I would like
to see lowered.
You see even reading your answer and looking at the code I do not get it. :(
then some questions:
why children: [:item :x :level |
> level > 1 ifTrue: [#()] ifFalse: [1
to: item ] ]].
could not be
child: childObject level: level....
Basically, for every item, we want to know how to build the children collection. When you
need to reason about multiple things, you need to pass them as a parameter in the block.
Perhaps we can have something like:
children: aBlock
children: aBlock atLevel: anInteger
children: aBlock atLevelHigherThan: anInteger
Yes
I have no idea
what is x.
in this case, the second variable is not used inside the block, so I just marked it with
x to document that fact. The object is the presentation object.
This is an hidden assumption and without an example I would have no idea that I should
pass 3 arg block.
Blocks used at their limits are evil since they do not have names.
So for me
there is an overuse of block and blocks have no name contrary to method so we miss a lot
of the hidden context.
So any solution lowering the amount of blocks would be good may be using methods instead
and (in that case having
less scripting and more programming api would help).
The blocks are just a convenience to construct and parameterize your presentations. Of
course, this is only one way, and not the only way :). There really isn't anything
magic about it. But, as I said, I will follow with another mail in the following days.
Good.
I'm eager to see that.
Now consider that your focus should not be on scripting (you have that API) but on how to
build classes and use
the power of classes to achieve build the same browsers.