JavaZone presentation, feedback wanted

View: New views
13 Messages — Rating Filter:   Alert me  

JavaZone presentation, feedback wanted

by Xavier Hanin :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Hi,

I've just begin to work on my presentation on Wicket for JavaZone (I'm
replacing Eelco), and I'd like to get some feedback about the agenda I
plan to follow. The description of the talk is the following:
"In this session, I will show you how you can use Apache Wicket to
develop web applications with Just Java and Just HTML. I'll talk a bit
about Wicket's philosophy and why it's developers believe it is
important to take a novel approach. And then, because only code really
talks, we'll take a deep dive to look at how to develop some custom,
reusable components."

Hence here's the agenda I'm considering:
 •Introduction 5 min
 •What is Wicket   10 min
 •Core concepts of Wicket 15 min
 •Developing a custom component 20 min
 •Q&A       10 min

For the two first topic I'll take inspiration from Martjin's
presentation at TSSJS europe last year, but in a much more condensed
way to keep enough time to talk about developing custom components
with real world example and demo.

About the custom components, I think I will only demonstrate one
example, since 20 minutes is very short. My idea is to demonstrate how
to create a password field with a password strength indicator, where
the password strength is computed on the server by an Ajax call when
the user stop typing (the event will be triggered by a behavior
inspired by Nathan work in databinder, I don't plan to explain it).

Here's the Java code for the component:
--------------8<---------------------
public class PasswordField extends Panel {
    public final static String WEAK = "weak";
    public final static String MEDIUM = "medium";
    public final static String STRONG = "strong";

    public PasswordField(String id, IModel/*<String>*/ model) {
        super(id, model);
        PasswordTextField passwordTextField = new
PasswordTextField("password", model);
        add(passwordTextField);

        final Label strength = new Label("strength", "");
        add(strength);
        strength.add(new AttributeModifier("class", true, new Model() {
            public Object getObject() {
                return
getPasswordStrength((String)PasswordField.this.getModelObject());
            }
        }));

        strength.setOutputMarkupId(true);
        passwordTextField.add(new OnKeyPausedAjaxBehavior() {
            protected void onUpdate(AjaxRequestTarget target) {
                target.addComponent(strength);
            }
        });
    }

    /**
     * Returns a String representing the strength of a password.
     * <p>
     * The String returned is one of:
     * <ul>
     * <li>{@link #WEAK}</li>
     * <li>{@link #MEDIUM}</li>
     * <li>{@link #STRONG}</li>
     * </ul>
     *
     * @param password the password to evaluate
     * @return a String representing the evaluated password strength
     */
    protected String getPasswordStrength(String password) {
        // this could involve some complex calculation based on a
dictionary for instance
        // here for simplicity reason we only use the password length
        if (password == null || password.length() <= 3) {
            return WEAK;
        }
        if (password.length() <= 5) {
            return MEDIUM;
        }
        return STRONG;
    }

}
--------------8<---------------------

And here is the html:
--------------8<---------------------
<html>
        <head>
                <wicket:head>
                <wicket:link>
                        <link rel="stylesheet" type="text/css" href="PasswordField.css"/>
                </wicket:link>
                </wicket:head>
        </head>
        <body>
                <wicket:panel>
                        <input wicket:id="password" type="password" /> <span
wicket:id="strength"></span>
                </wicket:panel>
                <hr/>
                Examples:<br/>
                <input type="password" /> <span class="weak"></span> (weak)<br/>
                <input type="password" /> <span class="medium"></span> (medium)<br/>
                <input type="password" /> <span class="strong"></span> (strong)<br/>
        </body>
</html>
--------------8<---------------------

A css is used to change the background image of the password strength
meter depending on the span class set by the attribute modifier.

So, what do you think about the agenda? Do you think the time planned
for each item is well thought? And about the custom component, do you
think it's a good example? Do you have some suggestions to make for
the code? Any feedback is appreciated!

Xavier
--
Xavier Hanin - Independent Java Consultant
http://xhab.blogspot.com/
http://incubator.apache.org/ivy/
http://www.xoocode.org/

Re: JavaZone presentation, feedback wanted

by Eelco Hillenius :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Looks good to me Xavier. A danger about the example is that it would
probably be easy to be focussed on determining the password strength
rather than how to create a custom component, but then again, the
example by itself is nice, and can't just be found in the examples
projects.

The kind of example I was thinking about for my presentation would
probably try to show off the fact that Wicket components are stateful
and that the component hierarchy is flexible (Al's talk points that
out nicely for instance).

Eelco


On 8/21/07, Xavier Hanin <xavier.hanin@...> wrote:

> Hi,
>
> I've just begin to work on my presentation on Wicket for JavaZone (I'm
> replacing Eelco), and I'd like to get some feedback about the agenda I
> plan to follow. The description of the talk is the following:
> "In this session, I will show you how you can use Apache Wicket to
> develop web applications with Just Java and Just HTML. I'll talk a bit
> about Wicket's philosophy and why it's developers believe it is
> important to take a novel approach. And then, because only code really
> talks, we'll take a deep dive to look at how to develop some custom,
> reusable components."
>
> Hence here's the agenda I'm considering:
>  •Introduction 5 min
>  •What is Wicket   10 min
>  •Core concepts of Wicket 15 min
>  •Developing a custom component 20 min
>  •Q&A       10 min
>
> For the two first topic I'll take inspiration from Martjin's
> presentation at TSSJS europe last year, but in a much more condensed
> way to keep enough time to talk about developing custom components
> with real world example and demo.
>
> About the custom components, I think I will only demonstrate one
> example, since 20 minutes is very short. My idea is to demonstrate how
> to create a password field with a password strength indicator, where
> the password strength is computed on the server by an Ajax call when
> the user stop typing (the event will be triggered by a behavior
> inspired by Nathan work in databinder, I don't plan to explain it).
>
> Here's the Java code for the component:
> --------------8<---------------------
> public class PasswordField extends Panel {
>     public final static String WEAK = "weak";
>     public final static String MEDIUM = "medium";
>     public final static String STRONG = "strong";
>
>     public PasswordField(String id, IModel/*<String>*/ model) {
>         super(id, model);
>         PasswordTextField passwordTextField = new
> PasswordTextField("password", model);
>         add(passwordTextField);
>
>         final Label strength = new Label("strength", "");
>         add(strength);
>         strength.add(new AttributeModifier("class", true, new Model() {
>             public Object getObject() {
>                 return
> getPasswordStrength((String)PasswordField.this.getModelObject());
>             }
>         }));
>
>         strength.setOutputMarkupId(true);
>         passwordTextField.add(new OnKeyPausedAjaxBehavior() {
>             protected void onUpdate(AjaxRequestTarget target) {
>                 target.addComponent(strength);
>             }
>         });
>     }
>
>     /**
>      * Returns a String representing the strength of a password.
>      * <p>
>      * The String returned is one of:
>      * <ul>
>      * <li>{@link #WEAK}</li>
>      * <li>{@link #MEDIUM}</li>
>      * <li>{@link #STRONG}</li>
>      * </ul>
>      *
>      * @param password the password to evaluate
>      * @return a String representing the evaluated password strength
>      */
>     protected String getPasswordStrength(String password) {
>         // this could involve some complex calculation based on a
> dictionary for instance
>         // here for simplicity reason we only use the password length
>         if (password == null || password.length() <= 3) {
>             return WEAK;
>         }
>         if (password.length() <= 5) {
>             return MEDIUM;
>         }
>         return STRONG;
>     }
>
> }
> --------------8<---------------------
>
> And here is the html:
> --------------8<---------------------
> <html>
>         <head>
>                 <wicket:head>
>                 <wicket:link>
>                         <link rel="stylesheet" type="text/css" href="PasswordField.css"/>
>                 </wicket:link>
>                 </wicket:head>
>         </head>
>         <body>
>                 <wicket:panel>
>                         <input wicket:id="password" type="password" /> <span
> wicket:id="strength"></span>
>                 </wicket:panel>
>                 <hr/>
>                 Examples:<br/>
>                 <input type="password" /> <span class="weak"></span> (weak)<br/>
>                 <input type="password" /> <span class="medium"></span> (medium)<br/>
>                 <input type="password" /> <span class="strong"></span> (strong)<br/>
>         </body>
> </html>
> --------------8<---------------------
>
> A css is used to change the background image of the password strength
> meter depending on the span class set by the attribute modifier.
>
> So, what do you think about the agenda? Do you think the time planned
> for each item is well thought? And about the custom component, do you
> think it's a good example? Do you have some suggestions to make for
> the code? Any feedback is appreciated!
>
> Xavier
> --
> Xavier Hanin - Independent Java Consultant
> http://xhab.blogspot.com/
> http://incubator.apache.org/ivy/
> http://www.xoocode.org/
>

Re: JavaZone presentation, feedback wanted

by Xavier Hanin :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

On 8/22/07, Eelco Hillenius <eelco.hillenius@...> wrote:
>
> Looks good to me Xavier. A danger about the example is that it would
> probably be easy to be focussed on determining the password strength
> rather than how to create a custom component,


That's why I provide only a very simple implementation. It could even be
delegated to another service, I think audience can understand that.

but then again, the
> example by itself is nice, and can't just be found in the examples
> projects.
>
> The kind of example I was thinking about for my presentation would
> probably try to show off the fact that Wicket components are stateful
> and that the component hierarchy is flexible (Al's talk points that
> out nicely for instance).


Are you referring to his talk on bean editor? Maybe you could give me an
example of component you were thinking about?

Xavier

Eelco

>
>
> On 8/21/07, Xavier Hanin <xavier.hanin@...> wrote:
> > Hi,
> >
> > I've just begin to work on my presentation on Wicket for JavaZone (I'm
> > replacing Eelco), and I'd like to get some feedback about the agenda I
> > plan to follow. The description of the talk is the following:
> > "In this session, I will show you how you can use Apache Wicket to
> > develop web applications with Just Java and Just HTML. I'll talk a bit
> > about Wicket's philosophy and why it's developers believe it is
> > important to take a novel approach. And then, because only code really
> > talks, we'll take a deep dive to look at how to develop some custom,
> > reusable components."
> >
> > Hence here's the agenda I'm considering:
> >  •Introduction 5 min
> >  •What is Wicket   10 min
> >  •Core concepts of Wicket 15 min
> >  •Developing a custom component 20 min
> >  •Q&A       10 min
> >
> > For the two first topic I'll take inspiration from Martjin's
> > presentation at TSSJS europe last year, but in a much more condensed
> > way to keep enough time to talk about developing custom components
> > with real world example and demo.
> >
> > About the custom components, I think I will only demonstrate one
> > example, since 20 minutes is very short. My idea is to demonstrate how
> > to create a password field with a password strength indicator, where
> > the password strength is computed on the server by an Ajax call when
> > the user stop typing (the event will be triggered by a behavior
> > inspired by Nathan work in databinder, I don't plan to explain it).
> >
> > Here's the Java code for the component:
> > --------------8<---------------------
> > public class PasswordField extends Panel {
> >     public final static String WEAK = "weak";
> >     public final static String MEDIUM = "medium";
> >     public final static String STRONG = "strong";
> >
> >     public PasswordField(String id, IModel/*<String>*/ model) {
> >         super(id, model);
> >         PasswordTextField passwordTextField = new
> > PasswordTextField("password", model);
> >         add(passwordTextField);
> >
> >         final Label strength = new Label("strength", "");
> >         add(strength);
> >         strength.add(new AttributeModifier("class", true, new Model() {
> >             public Object getObject() {
> >                 return
> > getPasswordStrength((String)PasswordField.this.getModelObject());
> >             }
> >         }));
> >
> >         strength.setOutputMarkupId(true);
> >         passwordTextField.add(new OnKeyPausedAjaxBehavior() {
> >             protected void onUpdate(AjaxRequestTarget target) {
> >                 target.addComponent(strength);
> >             }
> >         });
> >     }
> >
> >     /**
> >      * Returns a String representing the strength of a password.
> >      * <p>
> >      * The String returned is one of:
> >      * <ul>
> >      * <li>{@link #WEAK}</li>
> >      * <li>{@link #MEDIUM}</li>
> >      * <li>{@link #STRONG}</li>
> >      * </ul>
> >      *
> >      * @param password the password to evaluate
> >      * @return a String representing the evaluated password strength
> >      */
> >     protected String getPasswordStrength(String password) {
> >         // this could involve some complex calculation based on a
> > dictionary for instance
> >         // here for simplicity reason we only use the password length
> >         if (password == null || password.length() <= 3) {
> >             return WEAK;
> >         }
> >         if (password.length() <= 5) {
> >             return MEDIUM;
> >         }
> >         return STRONG;
> >     }
> >
> > }
> > --------------8<---------------------
> >
> > And here is the html:
> > --------------8<---------------------
> > <html>
> >         <head>
> >                 <wicket:head>
> >                 <wicket:link>
> >                         <link rel="stylesheet" type="text/css" href="
> PasswordField.css"/>
> >                 </wicket:link>
> >                 </wicket:head>
> >         </head>
> >         <body>
> >                 <wicket:panel>
> >                         <input wicket:id="password" type="password" />
> <span
> > wicket:id="strength"></span>
> >                 </wicket:panel>
> >                 <hr/>
> >                 Examples:<br/>
> >                 <input type="password" /> <span class="weak"></span>
> (weak)<br/>
> >                 <input type="password" /> <span class="medium"></span>
> (medium)<br/>
> >                 <input type="password" /> <span class="strong"></span>
> (strong)<br/>
> >         </body>
> > </html>
> > --------------8<---------------------
> >
> > A css is used to change the background image of the password strength
> > meter depending on the span class set by the attribute modifier.
> >
> > So, what do you think about the agenda? Do you think the time planned
> > for each item is well thought? And about the custom component, do you
> > think it's a good example? Do you have some suggestions to make for
> > the code? Any feedback is appreciated!
> >
> > Xavier
> > --
> > Xavier Hanin - Independent Java Consultant
> > http://xhab.blogspot.com/
> > http://incubator.apache.org/ivy/
> > http://www.xoocode.org/
> >
>



--
Xavier Hanin - Independent Java Consultant
http://xhab.blogspot.com/
http://incubator.apache.org/ivy/
http://www.xoocode.org/

Re: JavaZone presentation, feedback wanted

by Eelco Hillenius :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

On 8/22/07, Xavier Hanin <xavier.hanin@...> wrote:
> On 8/22/07, Eelco Hillenius <eelco.hillenius@...> wrote:
> >
> > Looks good to me Xavier. A danger about the example is that it would
> > probably be easy to be focussed on determining the password strength
> > rather than how to create a custom component,
>
>
> That's why I provide only a very simple implementation. It could even be
> delegated to another service, I think audience can understand that.

True. Don't get me wrong, I think it could be a very nice example.

> but then again, the
> > example by itself is nice, and can't just be found in the examples
> > projects.
> >
> > The kind of example I was thinking about for my presentation would
> > probably try to show off the fact that Wicket components are stateful
> > and that the component hierarchy is flexible (Al's talk points that
> > out nicely for instance).
>
>
> Are you referring to his talk on bean editor? Maybe you could give me an
> example of component you were thinking about?

I wasn't done with the thinking tbh... But for instance a simple bean
editor would have a big cool factor. Though you example would score
high on that as it uses Ajax :) I think both would be good examples,
and the advantage of your idea is that it wouldn't be too much code,
so that you can focus on your story.

Eelco

Re: JavaZone presentation, feedback wanted

by Xavier Hanin :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

A first version of the presentation slides is available here:
http://people.apache.org/~xavier/wicket-javazone-07.ppt

The section about custom component doesn't have much slides, but I will
spend most of the time demonstrating stuff with eclipse and firefox, so the
slides are mainly there as a backup and to give an idea of what I'll talk
about.

Do you see anything wrong in these slides? Any idea of improvements? Any
feedback is welcome!

Xavier

On 8/22/07, Eelco Hillenius <eelco.hillenius@...> wrote:

>
> On 8/22/07, Xavier Hanin <xavier.hanin@...> wrote:
> > On 8/22/07, Eelco Hillenius <eelco.hillenius@...> wrote:
> > >
> > > Looks good to me Xavier. A danger about the example is that it would
> > > probably be easy to be focussed on determining the password strength
> > > rather than how to create a custom component,
> >
> >
> > That's why I provide only a very simple implementation. It could even be
> > delegated to another service, I think audience can understand that.
>
> True. Don't get me wrong, I think it could be a very nice example.
>
> > but then again, the
> > > example by itself is nice, and can't just be found in the examples
> > > projects.
> > >
> > > The kind of example I was thinking about for my presentation would
> > > probably try to show off the fact that Wicket components are stateful
> > > and that the component hierarchy is flexible (Al's talk points that
> > > out nicely for instance).
> >
> >
> > Are you referring to his talk on bean editor? Maybe you could give me an
> > example of component you were thinking about?
>
> I wasn't done with the thinking tbh... But for instance a simple bean
> editor would have a big cool factor. Though you example would score
> high on that as it uses Ajax :) I think both would be good examples,
> and the advantage of your idea is that it wouldn't be too much code,
> so that you can focus on your story.
>
> Eelco
>



--
Xavier Hanin - Independent Java Consultant
http://xhab.blogspot.com/
http://incubator.apache.org/ivy/
http://www.xoocode.org/

Re: JavaZone presentation, feedback wanted

by igor.vaynberg :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

here are some notes:

under integration mention: guice

components and markup: borders also have their own markup files

is it possible on behaviors page to subclass simpleattributemodifier and
move that %2 logic into it, i think that will make it clearer what behaviors
are all about.

models:

"models are the brains of your app", i wouldnt go that far, you shouldnt
have business logic in the models

"Solution: OGNL dynamic expressions" - i wouldnt mention ognl because we do
not depend on it. i would say ognl/el-like property path expressions

example:password strength: you can put a preview into the spaen tag so
something like <span wicket:id="strength">[[strength bar]]</span> so it at
least shows that in the preview.

instead of strength.add(new attributemodifier() might be better to do
strength.add(new abstractbehavior() { oncomponenttag(tag) { tag.put("class",
PasswordField.this.getModelObjectAsString()); }

it ties into the behaviors which you have explained which means one less
concept and its more transparent then an attributemodifier.

-igor

On 8/23/07, Xavier Hanin <xavier.hanin@...> wrote:

>
> A first version of the presentation slides is available here:
> http://people.apache.org/~xavier/wicket-javazone-07.ppt
>
> The section about custom component doesn't have much slides, but I will
> spend most of the time demonstrating stuff with eclipse and firefox, so
> the
> slides are mainly there as a backup and to give an idea of what I'll talk
> about.
>
> Do you see anything wrong in these slides? Any idea of improvements? Any
> feedback is welcome!
>
> Xavier
>
> On 8/22/07, Eelco Hillenius <eelco.hillenius@...> wrote:
> >
> > On 8/22/07, Xavier Hanin <xavier.hanin@...> wrote:
> > > On 8/22/07, Eelco Hillenius <eelco.hillenius@...> wrote:
> > > >
> > > > Looks good to me Xavier. A danger about the example is that it would
> > > > probably be easy to be focussed on determining the password strength
> > > > rather than how to create a custom component,
> > >
> > >
> > > That's why I provide only a very simple implementation. It could even
> be
> > > delegated to another service, I think audience can understand that.
> >
> > True. Don't get me wrong, I think it could be a very nice example.
> >
> > > but then again, the
> > > > example by itself is nice, and can't just be found in the examples
> > > > projects.
> > > >
> > > > The kind of example I was thinking about for my presentation would
> > > > probably try to show off the fact that Wicket components are
> stateful
> > > > and that the component hierarchy is flexible (Al's talk points that
> > > > out nicely for instance).
> > >
> > >
> > > Are you referring to his talk on bean editor? Maybe you could give me
> an
> > > example of component you were thinking about?
> >
> > I wasn't done with the thinking tbh... But for instance a simple bean
> > editor would have a big cool factor. Though you example would score
> > high on that as it uses Ajax :) I think both would be good examples,
> > and the advantage of your idea is that it wouldn't be too much code,
> > so that you can focus on your story.
> >
> > Eelco
> >
>
>
>
> --
> Xavier Hanin - Independent Java Consultant
> http://xhab.blogspot.com/
> http://incubator.apache.org/ivy/
> http://www.xoocode.org/
>

Re: JavaZone presentation, feedback wanted

by Xavier Hanin :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Thanks for your feedback Igor!

On 8/23/07, Igor Vaynberg <igor.vaynberg@...> wrote:
>
> here are some notes:
>
> under integration mention: guice


will do

components and markup: borders also have their own markup files


indeed

is it possible on behaviors page to subclass simpleattributemodifier and
> move that %2 logic into it, i think that will make it clearer what
> behaviors
> are all about.


it makes sense

models:
>
> "models are the brains of your app", i wouldnt go that far, you shouldnt
> have business logic in the models


I picked this up from martjin's presentation, Ibut I agree it goes too far

"Solution: OGNL dynamic expressions" - i wouldnt mention ognl because we do
> not depend on it. i would say ognl/el-like property path expressions


Indeed, this is something that has changed since Martjin's talk. I'll update
it accordingly

example:password strength: you can put a preview into the spaen tag so
> something like <span wicket:id="strength">[[strength bar]]</span> so it at
> least shows that in the preview.


makes sense

instead of strength.add(new attributemodifier() might be better to do
> strength.add(new abstractbehavior() { oncomponenttag(tag) { tag.put
> ("class",
> PasswordField.this.getModelObjectAsString()); }
>
> it ties into the behaviors which you have explained which means one less
> concept and its more transparent then an attributemodifier.


I think the attribute modifier is pretty obvious to understand, and there's
already an example with AttributeModifier when talking about Behaviors. But
I like your code too, it makes more obvious there's a lot more you can do
with a behavior than modifying an attribute. So there's pros and cons for
both IMO, I'll see if I can show the two (one when talking about behaviors,
one in the example).

Thanks again for your valuable input,

Xavier

-igor

>
> On 8/23/07, Xavier Hanin <xavier.hanin@...> wrote:
> >
> > A first version of the presentation slides is available here:
> > http://people.apache.org/~xavier/wicket-javazone-07.ppt
> >
> > The section about custom component doesn't have much slides, but I will
> > spend most of the time demonstrating stuff with eclipse and firefox, so
> > the
> > slides are mainly there as a backup and to give an idea of what I'll
> talk
> > about.
> >
> > Do you see anything wrong in these slides? Any idea of improvements? Any
> > feedback is welcome!
> >
> > Xavier
> >
> > On 8/22/07, Eelco Hillenius <eelco.hillenius@...> wrote:
> > >
> > > On 8/22/07, Xavier Hanin <xavier.hanin@...> wrote:
> > > > On 8/22/07, Eelco Hillenius <eelco.hillenius@...> wrote:
> > > > >
> > > > > Looks good to me Xavier. A danger about the example is that it
> would
> > > > > probably be easy to be focussed on determining the password
> strength
> > > > > rather than how to create a custom component,
> > > >
> > > >
> > > > That's why I provide only a very simple implementation. It could
> even
> > be
> > > > delegated to another service, I think audience can understand that.
> > >
> > > True. Don't get me wrong, I think it could be a very nice example.
> > >
> > > > but then again, the
> > > > > example by itself is nice, and can't just be found in the examples
> > > > > projects.
> > > > >
> > > > > The kind of example I was thinking about for my presentation would
> > > > > probably try to show off the fact that Wicket components are
> > stateful
> > > > > and that the component hierarchy is flexible (Al's talk points
> that
> > > > > out nicely for instance).
> > > >
> > > >
> > > > Are you referring to his talk on bean editor? Maybe you could give
> me
> > an
> > > > example of component you were thinking about?
> > >
> > > I wasn't done with the thinking tbh... But for instance a simple bean
> > > editor would have a big cool factor. Though you example would score
> > > high on that as it uses Ajax :) I think both would be good examples,
> > > and the advantage of your idea is that it wouldn't be too much code,
> > > so that you can focus on your story.
> > >
> > > Eelco
> > >
> >
> >
> >
> > --
> > Xavier Hanin - Independent Java Consultant
> > http://xhab.blogspot.com/
> > http://incubator.apache.org/ivy/
> > http://www.xoocode.org/
> >
>



--
Xavier Hanin - Independent Java Consultant
http://xhab.blogspot.com/
http://incubator.apache.org/ivy/
http://www.xoocode.org/

Re: JavaZone presentation, feedback wanted

by Xavier Hanin :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

I've updated the presentation according to the your remarks Igor and
uploaded to the same location, if any of you have any further comments, let
me know.

I'll send this presentation to the javazone committee this afternoon.

Thank you for your help,

Xavier

On 8/23/07, Xavier Hanin <xavier.hanin@...> wrote:

>
> Thanks for your feedback Igor!
>
> On 8/23/07, Igor Vaynberg <igor.vaynberg@...> wrote:
> >
> > here are some notes:
> >
> > under integration mention: guice
>
>
> will do
>
> components and markup: borders also have their own markup files
>
>
> indeed
>
> is it possible on behaviors page to subclass simpleattributemodifier and
> > move that %2 logic into it, i think that will make it clearer what
> > behaviors
> > are all about.
>
>
> it makes sense
>
> models:
> >
> > "models are the brains of your app", i wouldnt go that far, you shouldnt
> >
> > have business logic in the models
>
>
> I picked this up from martjin's presentation, Ibut I agree it goes too far
>
>
> "Solution: OGNL dynamic expressions" - i wouldnt mention ognl because we
> > do
> > not depend on it. i would say ognl/el-like property path expressions
>
>
> Indeed, this is something that has changed since Martjin's talk. I'll
> update it accordingly
>
> example:password strength: you can put a preview into the spaen tag so
> > something like <span wicket:id="strength">[[strength bar]]</span> so it
> > at
> > least shows that in the preview.
>
>
> makes sense
>
> instead of strength.add(new attributemodifier() might be better to do
> > strength.add(new abstractbehavior() { oncomponenttag(tag) { tag.put
> > ("class",
> > PasswordField.this.getModelObjectAsString()); }
> >
> > it ties into the behaviors which you have explained which means one less
> >
> > concept and its more transparent then an attributemodifier.
>
>
> I think the attribute modifier is pretty obvious to understand, and
> there's already an example with AttributeModifier when talking about
> Behaviors. But I like your code too, it makes more obvious there's a lot
> more you can do with a behavior than modifying an attribute. So there's pros
> and cons for both IMO, I'll see if I can show the two (one when talking
> about behaviors, one in the example).
>
> Thanks again for your valuable input,
>
> Xavier
>
> -igor
> >
> > On 8/23/07, Xavier Hanin < xavier.hanin@...> wrote:
> > >
> > > A first version of the presentation slides is available here:
> > > http://people.apache.org/~xavier/wicket-javazone-07.ppt<http://people.apache.org/%7Exavier/wicket-javazone-07.ppt>
> > >
> > > The section about custom component doesn't have much slides, but I
> > will
> > > spend most of the time demonstrating stuff with eclipse and firefox,
> > so
> > > the
> > > slides are mainly there as a backup and to give an idea of what I'll
> > talk
> > > about.
> > >
> > > Do you see anything wrong in these slides? Any idea of improvements?
> > Any
> > > feedback is welcome!
> > >
> > > Xavier
> > >
> > > On 8/22/07, Eelco Hillenius <eelco.hillenius@...> wrote:
> > > >
> > > > On 8/22/07, Xavier Hanin < xavier.hanin@...> wrote:
> > > > > On 8/22/07, Eelco Hillenius <eelco.hillenius@...> wrote:
> > > > > >
> > > > > > Looks good to me Xavier. A danger about the example is that it
> > would
> > > > > > probably be easy to be focussed on determining the password
> > strength
> > > > > > rather than how to create a custom component,
> > > > >
> > > > >
> > > > > That's why I provide only a very simple implementation. It could
> > even
> > > be
> > > > > delegated to another service, I think audience can understand
> > that.
> > > >
> > > > True. Don't get me wrong, I think it could be a very nice example.
> > > >
> > > > > but then again, the
> > > > > > example by itself is nice, and can't just be found in the
> > examples
> > > > > > projects.
> > > > > >
> > > > > > The kind of example I was thinking about for my presentation
> > would
> > > > > > probably try to show off the fact that Wicket components are
> > > stateful
> > > > > > and that the component hierarchy is flexible (Al's talk points
> > that
> > > > > > out nicely for instance).
> > > > >
> > > > >
> > > > > Are you referring to his talk on bean editor? Maybe you could give
> > me
> > > an
> > > > > example of component you were thinking about?
> > > >
> > > > I wasn't done with the thinking tbh... But for instance a simple
> > bean
> > > > editor would have a big cool factor. Though you example would score
> > > > high on that as it uses Ajax :) I think both would be good examples,
> > > > and the advantage of your idea is that it wouldn't be too much code,
> >
> > > > so that you can focus on your story.
> > > >
> > > > Eelco
> > > >
> > >
> > >
> > >
> > > --
> > > Xavier Hanin - Independent Java Consultant
> > > http://xhab.blogspot.com/
> > > http://incubator.apache.org/ivy/
> > > http://www.xoocode.org/
> > >
> >
>
>
>
> --
> Xavier Hanin - Independent Java Consultant
> http://xhab.blogspot.com/
> http://incubator.apache.org/ivy/
> http://www.xoocode.org/
>



--
Xavier Hanin - Independent Java Consultant
http://xhab.blogspot.com/
http://incubator.apache.org/ivy/
http://www.xoocode.org/

Re: JavaZone presentation, feedback wanted

by Guðmundur Ólafsson :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

A small detail:
On your fourth slide there is a small typo saying Apache Sofware Foundation.

regards,
Guðmundur Bjarni Ólafsson

On 8/24/07, Xavier Hanin <xavier.hanin@...> wrote:

>
> I've updated the presentation according to the your remarks Igor and
> uploaded to the same location, if any of you have any further comments,
> let
> me know.
>
> I'll send this presentation to the javazone committee this afternoon.
>
> Thank you for your help,
>
> Xavier
>
> On 8/23/07, Xavier Hanin <xavier.hanin@...> wrote:
> >
> > Thanks for your feedback Igor!
> >
> > On 8/23/07, Igor Vaynberg <igor.vaynberg@...> wrote:
> > >
> > > here are some notes:
> > >
> > > under integration mention: guice
> >
> >
> > will do
> >
> > components and markup: borders also have their own markup files
> >
> >
> > indeed
> >
> > is it possible on behaviors page to subclass simpleattributemodifier and
> > > move that %2 logic into it, i think that will make it clearer what
> > > behaviors
> > > are all about.
> >
> >
> > it makes sense
> >
> > models:
> > >
> > > "models are the brains of your app", i wouldnt go that far, you
> shouldnt
> > >
> > > have business logic in the models
> >
> >
> > I picked this up from martjin's presentation, Ibut I agree it goes too
> far
> >
> >
> > "Solution: OGNL dynamic expressions" - i wouldnt mention ognl because we
> > > do
> > > not depend on it. i would say ognl/el-like property path expressions
> >
> >
> > Indeed, this is something that has changed since Martjin's talk. I'll
> > update it accordingly
> >
> > example:password strength: you can put a preview into the spaen tag so
> > > something like <span wicket:id="strength">[[strength bar]]</span> so
> it
> > > at
> > > least shows that in the preview.
> >
> >
> > makes sense
> >
> > instead of strength.add(new attributemodifier() might be better to do
> > > strength.add(new abstractbehavior() { oncomponenttag(tag) { tag.put
> > > ("class",
> > > PasswordField.this.getModelObjectAsString()); }
> > >
> > > it ties into the behaviors which you have explained which means one
> less
> > >
> > > concept and its more transparent then an attributemodifier.
> >
> >
> > I think the attribute modifier is pretty obvious to understand, and
> > there's already an example with AttributeModifier when talking about
> > Behaviors. But I like your code too, it makes more obvious there's a lot
> > more you can do with a behavior than modifying an attribute. So there's
> pros
> > and cons for both IMO, I'll see if I can show the two (one when talking
> > about behaviors, one in the example).
> >
> > Thanks again for your valuable input,
> >
> > Xavier
> >
> > -igor
> > >
> > > On 8/23/07, Xavier Hanin < xavier.hanin@...> wrote:
> > > >
> > > > A first version of the presentation slides is available here:
> > > > http://people.apache.org/~xavier/wicket-javazone-07.ppt<
> http://people.apache.org/%7Exavier/wicket-javazone-07.ppt>
>
> > > >
> > > > The section about custom component doesn't have much slides, but I
> > > will
> > > > spend most of the time demonstrating stuff with eclipse and firefox,
> > > so
> > > > the
> > > > slides are mainly there as a backup and to give an idea of what I'll
> > > talk
> > > > about.
> > > >
> > > > Do you see anything wrong in these slides? Any idea of improvements?
> > > Any
> > > > feedback is welcome!
> > > >
> > > > Xavier
> > > >
> > > > On 8/22/07, Eelco Hillenius <eelco.hillenius@...> wrote:
> > > > >
> > > > > On 8/22/07, Xavier Hanin < xavier.hanin@...> wrote:
> > > > > > On 8/22/07, Eelco Hillenius <eelco.hillenius@...> wrote:
> > > > > > >
> > > > > > > Looks good to me Xavier. A danger about the example is that it
> > > would
> > > > > > > probably be easy to be focussed on determining the password
> > > strength
> > > > > > > rather than how to create a custom component,
> > > > > >
> > > > > >
> > > > > > That's why I provide only a very simple implementation. It could
> > > even
> > > > be
> > > > > > delegated to another service, I think audience can understand
> > > that.
> > > > >
> > > > > True. Don't get me wrong, I think it could be a very nice example.
> > > > >
> > > > > > but then again, the
> > > > > > > example by itself is nice, and can't just be found in the
> > > examples
> > > > > > > projects.
> > > > > > >
> > > > > > > The kind of example I was thinking about for my presentation
> > > would
> > > > > > > probably try to show off the fact that Wicket components are
> > > > stateful
> > > > > > > and that the component hierarchy is flexible (Al's talk points
> > > that
> > > > > > > out nicely for instance).
> > > > > >
> > > > > >
> > > > > > Are you referring to his talk on bean editor? Maybe you could
> give
> > > me
> > > > an
> > > > > > example of component you were thinking about?
> > > > >
> > > > > I wasn't done with the thinking tbh... But for instance a simple
> > > bean
> > > > > editor would have a big cool factor. Though you example would
> score
> > > > > high on that as it uses Ajax :) I think both would be good
> examples,
> > > > > and the advantage of your idea is that it wouldn't be too much
> code,
> > >
> > > > > so that you can focus on your story.
> > > > >
> > > > > Eelco
> > > > >
> > > >
> > > >
> > > >
> > > > --
> > > > Xavier Hanin - Independent Java Consultant
> > > > http://xhab.blogspot.com/
> > > > http://incubator.apache.org/ivy/
> > > > http://www.xoocode.org/
> > > >
> > >
> >
> >
> >
> > --
> > Xavier Hanin - Independent Java Consultant
> > http://xhab.blogspot.com/
> > http://incubator.apache.org/ivy/
> > http://www.xoocode.org/
> >
>
>
>
>
> --
> Xavier Hanin - Independent Java Consultant
> http://xhab.blogspot.com/
> http://incubator.apache.org/ivy/
> http://www.xoocode.org/
>

Re: JavaZone presentation, feedback wanted

by Mark Derricutt :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

I notice the web.xml uses the servlet and not filter approach - which is the
'preferred' option these days?  Any reason to use one over the other?  And
if not - maybe mention the filter in the talk and why you might want that.

On 8/26/07, Guðmundur Bjarni Ólafsson <aquatopia@...> wrote:
>
> A small detail:
> On your fourth slide there is a small typo saying Apache Sofware
> Foundation.
>
>

Re: JavaZone presentation, feedback wanted

by Eelco Hillenius :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

On 8/26/07, Mark Derricutt <mark@...> wrote:
> I notice the web.xml uses the servlet and not filter approach - which is the
> 'preferred' option these days?  Any reason to use one over the other?  And
> if not - maybe mention the filter in the talk and why you might want that.

The filter is preferred as it handles applications mapped to the root well.

Eelco

Re: JavaZone presentation, feedback wanted

by Xavier Hanin :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

On 8/25/07, Guðmundur Bjarni Ólafsson <aquatopia@...> wrote:
>
> A small detail:
> On your fourth slide there is a small typo saying Apache Sofware
> Foundation.


Fixed, thanks!

Xavier

regards,

> Guðmundur Bjarni Ólafsson
>
> On 8/24/07, Xavier Hanin <xavier.hanin@...> wrote:
> >
> > I've updated the presentation according to the your remarks Igor and
> > uploaded to the same location, if any of you have any further comments,
> > let
> > me know.
> >
> > I'll send this presentation to the javazone committee this afternoon.
> >
> > Thank you for your help,
> >
> > Xavier
> >
> > On 8/23/07, Xavier Hanin <xavier.hanin@...> wrote:
> > >
> > > Thanks for your feedback Igor!
> > >
> > > On 8/23/07, Igor Vaynberg <igor.vaynberg@...> wrote:
> > > >
> > > > here are some notes:
> > > >
> > > > under integration mention: guice
> > >
> > >
> > > will do
> > >
> > > components and markup: borders also have their own markup files
> > >
> > >
> > > indeed
> > >
> > > is it possible on behaviors page to subclass simpleattributemodifier
> and
> > > > move that %2 logic into it, i think that will make it clearer what
> > > > behaviors
> > > > are all about.
> > >
> > >
> > > it makes sense
> > >
> > > models:
> > > >
> > > > "models are the brains of your app", i wouldnt go that far, you
> > shouldnt
> > > >
> > > > have business logic in the models
> > >
> > >
> > > I picked this up from martjin's presentation, Ibut I agree it goes too
> > far
> > >
> > >
> > > "Solution: OGNL dynamic expressions" - i wouldnt mention ognl because
> we
> > > > do
> > > > not depend on it. i would say ognl/el-like property path expressions
> > >
> > >
> > > Indeed, this is something that has changed since Martjin's talk. I'll
> > > update it accordingly
> > >
> > > example:password strength: you can put a preview into the spaen tag so
> > > > something like <span wicket:id="strength">[[strength bar]]</span> so
> > it
> > > > at
> > > > least shows that in the preview.
> > >
> > >
> > > makes sense
> > >
> > > instead of strength.add(new attributemodifier() might be better to do
> > > > strength.add(new abstractbehavior() { oncomponenttag(tag) { tag.put
> > > > ("class",
> > > > PasswordField.this.getModelObjectAsString()); }
> > > >
> > > > it ties into the behaviors which you have explained which means one
> > less
> > > >
> > > > concept and its more transparent then an attributemodifier.
> > >
> > >
> > > I think the attribute modifier is pretty obvious to understand, and
> > > there's already an example with AttributeModifier when talking about
> > > Behaviors. But I like your code too, it makes more obvious there's a
> lot
> > > more you can do with a behavior than modifying an attribute. So
> there's
> > pros
> > > and cons for both IMO, I'll see if I can show the two (one when
> talking
> > > about behaviors, one in the example).
> > >
> > > Thanks again for your valuable input,
> > >
> > > Xavier
> > >
> > > -igor
> > > >
> > > > On 8/23/07, Xavier Hanin < xavier.hanin@...> wrote:
> > > > >
> > > > > A first version of the presentation slides is available here:
> > > > > http://people.apache.org/~xavier/wicket-javazone-07.ppt<
> > http://people.apache.org/%7Exavier/wicket-javazone-07.ppt>
> >
> > > > >
> > > > > The section about custom component doesn't have much slides, but I
> > > > will
> > > > > spend most of the time demonstrating stuff with eclipse and
> firefox,
> > > > so
> > > > > the
> > > > > slides are mainly there as a backup and to give an idea of what
> I'll
> > > > talk
> > > > > about.
> > > > >
> > > > > Do you see anything wrong in these slides? Any idea of
> improvements?
> > > > Any
> > > > > feedback is welcome!
> > > > >
> > > > > Xavier
> > > > >
> > > > > On 8/22/07, Eelco Hillenius <eelco.hillenius@...> wrote:
> > > > > >
> > > > > > On 8/22/07, Xavier Hanin < xavier.hanin@...> wrote:
> > > > > > > On 8/22/07, Eelco Hillenius <eelco.hillenius@...> wrote:
> > > > > > > >
> > > > > > > > Looks good to me Xavier. A danger about the example is that
> it
> > > > would
> > > > > > > > probably be easy to be focussed on determining the password
> > > > strength
> > > > > > > > rather than how to create a custom component,
> > > > > > >
> > > > > > >
> > > > > > > That's why I provide only a very simple implementation. It
> could
> > > > even
> > > > > be
> > > > > > > delegated to another service, I think audience can understand
> > > > that.
> > > > > >
> > > > > > True. Don't get me wrong, I think it could be a very nice
> example.
> > > > > >
> > > > > > > but then again, the
> > > > > > > > example by itself is nice, and can't just be found in the
> > > > examples
> > > > > > > > projects.
> > > > > > > >
> > > > > > > > The kind of example I was thinking about for my presentation
> > > > would
> > > > > > > > probably try to show off the fact that Wicket components are
> > > > > stateful
> > > > > > > > and that the component hierarchy is flexible (Al's talk
> points
> > > > that
> > > > > > > > out nicely for instance).
> > > > > > >
> > > > > > >
> > > > > > > Are you referring to his talk on bean editor? Maybe you could
> > give
> > > > me
> > > > > an
> > > > > > > example of component you were thinking about?
> > > > > >
> > > > > > I wasn't done with the thinking tbh... But for instance a simple
> > > > bean
> > > > > > editor would have a big cool factor. Though you example would
> > score
> > > > > > high on that as it uses Ajax :) I think both would be good
> > examples,
> > > > > > and the advantage of your idea is that it wouldn't be too much
> > code,
> > > >
> > > > > > so that you can focus on your story.
> > > > > >
> > > > > > Eelco
> > > > > >
> > > > >
> > > > >
> > > > >
> > > > > --
> > > > > Xavier Hanin - Independent Java Consultant
> > > > > http://xhab.blogspot.com/
> > > > > http://incubator.apache.org/ivy/
> > > > > http://www.xoocode.org/
> > > > >
> > > >
> > >
> > >
> > >
> > > --
> > > Xavier Hanin - Independent Java Consultant
> > > http://xhab.blogspot.com/
> > > http://incubator.apache.org/ivy/
> > > http://www.xoocode.org/
> > >
> >
> >
> >
> >
> > --
> > Xavier Hanin - Independent Java Consultant
> > http://xhab.blogspot.com/
> > http://incubator.apache.org/ivy/
> > http://www.xoocode.org/
> >
>



--
Xavier Hanin - Independent Java Consultant
http://xhab.blogspot.com/
http://incubator.apache.org/ivy/
http://www.xoocode.org/

Re: JavaZone presentation, feedback wanted

by Xavier Hanin :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

On 8/26/07, Mark Derricutt <mark@...> wrote:
>
> I notice the web.xml uses the servlet and not filter approach - which is
> the
> 'preferred' option these days?  Any reason to use one over the other?  And
> if not - maybe mention the filter in the talk and why you might want that.


No reason, this slide was borrowed from Martjin's presentation at TSSJS last
year, and I forgot to update it. I've changed the slide to use the preferred
option. Thanks for your feedback.

Xavier

On 8/26/07, Guðmundur Bjarni Ólafsson <aquatopia@...> wrote:
> >
> > A small detail:
> > On your fourth slide there is a small typo saying Apache Sofware
> > Foundation.
> >
> >
>



--
Xavier Hanin - Independent Java Consultant
http://xhab.blogspot.com/
http://incubator.apache.org/ivy/
http://www.xoocode.org/