SlideShare a Scribd company logo
1 of 123
Download to read offline
Designing for Ajax
Principles and Patterns for Designing Rich Internet Applications




                                       Bill W. Scott, Y! Ajax Evangelist
                                       bscott@yahoo-inc.com
Background
• Games, research, science,
 military, biz
• Apps, frameworks,
 widget sets
• Developer, designer
• Object-oriented background
• Software architect, user experience manager
• Current: Yahoo! Ajax Evangelist
• http://looksgoodworkswell.com
                              Designing for Ajax   2
Ajax @ Yahoo

        Designing for Ajax   3
Yahoo! Pattern Library Release
                http://developer.yahoo.net/ypatterns/




                     Designing for Ajax                 4
yuiblog.com


http://yuiblog.com




                     Designing for Ajax   5
Yahoo! Patterns Discussion Group


http://groups.yahoo.com/group/ydn-patterns/




                                              Designing for Ajax   6
Initial Set of Yahoo! Patterns Released on 2/13




                          Breadcrumbs. Module Tabs.
                        Navigation Tabs. Auto Complete.
                          Pagination. Item Pagination.
                         Search Pagination. Ratings and
                       Reviews. Architecture of a Review.
                           Rating an Object. Writing a
                        Review. Drag and Drop. Drag and
                                 Drop Modules.




                                            Designing for Ajax   7
Rich Design Patterns

            Drag and Drop. Drag and Drop Modules. In Page Editing.
              In Page Custom Editing. Direct State Editing. Grid Cell
            Editing. Inline Custom Editing. Inline Tag Editing. Popup
              Custom Editing. Slide-out Custom Editing. Inline Text
            Editing. Persistent Portals. Inline Reordering. Indication.
            Busy Indication. Cursor Busy. In Context Busy. In Context
           Progress. Inline Status. Character Counter. Auto Complete.
              Balloon Error Tip. Deferred Content Loading. Dynamic
             Goal. Narrowing Choices. Refining Search. Live Search.
                Dynamic Filter. Invitation. Cursor Invitation. Drop
             Invitation. Tool Tip Invitation. Hover Invitation. Detail
             Zoom. Opacity Focus. Configurable Module - Faceplate.
           Configurable Module - Flip It. Configurable Module - Inline
            Configure. Configurable Module - Slide Out Drawer. Slide
             Out. Flip. Opacity Fade. Endless Scrolling. Expandable
             Paging Boundary. Fresh Content. Hover Detail. In Place
             Drill Down. Inline Assistant. Inline Validation. Validate
              Then Suggest. On Demand Refresh. Periodic Refresh.
              Resizable Modules. Scrolling Modules. Auto Save. In
              Context Tools. Remembered Collection. Remembered
           Preferences. Auto Form Fill. Rating an Object. Transition.
           Brighten Transition. Cross Fade Transition. Dim Transition.
           Expand Transition. Fade In Transition. Fade Out Transition.
            Flip Transition. Move Transition. Self-Healing Transition.
           Collapse Transition. Slide Transition. Rich Internet Object.
                     Available. Selected. Identifiable Object.
                                          Designing for Ajax              8
Yahoo! UI Library
• Normalization (Event Utility)
• Messaging (Connection Manager for AJAX)
• Direct Representation (Animation and Position)
• Direct Manipulation (Drag and Drop)
• Rich Interactive Widgets (Slider, TreeView, Calendar,
 AutoComplete



                            Designing for Ajax            9
Designing for Ajax
• Richness
 What is richness?
• Ajax Patterns
 DNA of an Ajax Pattern
• Principles
 Principles for Ajax Design




                              Designing for Ajax   10
Richness

           Designing for Ajax   11
Defining Richness: Web in 3D
• Interaction Dimension
                                                   event
                                     Interaction

• Data Dimension                                           Data

                                   Presentation response

• Presentation Dimension




                           Designing for Ajax                     12
Classic Web
                                                          page
• Interaction
 course-grained                        Interaction

• Data                                           Data
 loaded with the page or
 obtained via refresh                  Presentation

• Presentation:
                                           refresh boundary
 page-based updates


                                                                 Data


                           Designing for Ajax                           13
Classic Web Illustrated
                       browser
                                   Http
    My Profile
                                 Response

                                                             Server
     Photo
     Name    Joe Smith
     Name
    Gender   Male
    Gender
       Age   27
       Age
                                  Http
              Submit
               Edit
                                 Request




   Interaction                   Data
                                                                 Presentation
                         event              response

                                            Designing for Ajax                  14
Ajax = Just-in-Time. Immediacy.
                                          Just-in-time data




Just-in-time presentation




                                     Just-in-time logic
                            Designing for Ajax                15
Ajax Model - New & Improved!
• Now with Deeper
 Interaction!                                        Interaction
• Now with Just-in-Time Data
 & Just-in-Time Logic!                                             Data

★ XMLHttpRequest (XHR) is                           Presentation
   the secret sauce!
• Now with Richer Interface!


• All dimensions are closer
                               Designing for Ajax                         16
Ajax Illustrated
                                         browser
    My Profile

                                onreadystatechange

                                                                     Server
    Name    Joe Smith
            Tim Jones
                                     XHR
   Gender   Male
      Age   27
                                     Object
                Save



                                      send()




    Interaction                       Data                            Presentation
                        event
                                                 response


                                                     Designing for Ajax              17
AJAX vs Ajax
• AJAX = Asynchronous JavaScript and XML
• Strict definition is using XMLHttpRequest (XHR) to retrieve
  XML within a web page
• Ajax = The set of technologies that allow web
 applications to provide rich interaction, just-in-time
 information and dynamic interfaces without required
 page refresh
• The Secret Sauce    XHR

• Ajax = XHR + DHTML (HTML, CSS, JavaScript) + Rich
  design
                              Designing for Ajax            18
Other Remote Scripting Techniques
• Hidden IFrame
• <img> src
• <script> src hack
• CSS href hack
• JS to faceless Java applets
• JS to faceless Flash
• NO CONTENT Response
• Cookies

                            Designing for Ajax   19
Ajax Patterns


          Designing for Ajax   20
Rich Design Patterns


         Drag and Drop. Drag and Drop Modules. In Page Editing. In
         Page Custom Editing. Direct State Editing. Grid Cell Editing.
           Inline Custom Editing. Inline Tag Editing. Popup Custom
             Editing. Slide-out Custom Editing. Inline Text Editing.
            Persistent Portals. Inline Reordering. Indication. Busy
       Indication. Cursor Busy. In Context Busy. In Context Progress.
       Inline Status. Character Counter. Auto Complete. Balloon Error
          Tip. Deferred Content Loading. Dynamic Goal. Narrowing
            Choices. Refining Search. Live Search. Dynamic Filter.
            Invitation. Cursor Invitation. Drop Invitation. Tool Tip
          Invitation. Hover Invitation. Detail Zoom. Opacity Focus.
       Configurable Module - Faceplate. Configurable Module - Flip It.
        Configurable Module - Inline Configure. Configurable Module -
           Slide Out Drawer. Slide Out. Flip. Opacity Fade. Endless
       Scrolling. Expandable Paging Boundary. Fresh Content. Hover
       Detail. In Place Drill Down. Inline Assistant. Inline Validation.
       Validate Then Suggest. On Demand Refresh. Periodic Refresh.
        Resizable Modules. Scrolling Modules. Auto Save. In Context
          Tools. Remembered Collection. Remembered Preferences.
            Auto Form Fill. Rating an Object. Transition. Brighten
          Transition. Cross Fade Transition. Dim Transition. Expand
           Transition. Fade In Transition. Fade Out Transition. Flip
       Transition. Move Transition. Self-Healing Transition. Collapse
         Transition. Slide Transition. Rich Internet Object. Available.
                          Selected. Identifiable Object.
                                           Designing for Ajax              21
But What Can XHR Do?
• Make a request
• Return a response


• And do it asynchronously

          response


           XHR
           Object


          request




                             Designing for Ajax   22
Anatomy of a Pattern
• Ajax design patterns contain three steps
• Trigger (event or timer)
• Operation (Ajax, remote scripting)
• Update (presentation)




     Trigger        Operation                        Update



                                Designing for Ajax            23
Trigger
• Every pattern starts with
• a user event
• a timer event
                                                   mousedown
   mouseout hover keypress keydown
drop filter choices mouseup drag click mousedown select
               focus blur resize move timeout

     Trigger



                              Designing for Ajax               24
Operation
Ajax patterns open the door to immediacy
• Lookup I can get information when I need it
• Persist I can save in real-time
• Validate I can prevent errors early
• Invoke I can make things happen now
• Message I can communicate instantly

                  Operation



                              Designing for Ajax   25
Operation. Lookup

I can get information when I need it
  Auto Complete. Deferred Content Loading. Dynamic Goal. Narrowing
   Choices. Refining Search. Live Search. Dynamic Filter. Detail Zoom.
  Endless Scrolling. Expandable Paging Boundary. Fresh Content. Hover
    Detail. In Place Drill Down. On Demand Refresh. Periodic Refresh.
          Resizable Modules. Scrolling Modules. Auto Form Fill.




                          Lookup
     Trigger                                               Update
                         Operation


                                      Designing for Ajax                 26
Operation. Persist

I can save in real-time
 Drag and Drop Modules. In Page Editing. In Page Custom Editing. Direct
 State Editing. Grid Cell Editing. Inline Custom Editing. Inline Tag Editing.
   Popup Custom Editing. Slide-out Custom Editing. Inline Text Editing.
   Inline Reordering. Auto Save. Remembered Collection. Remembered
                      Preferences. Rating an Object.




      Trigger              Persist                         Update
                persist              status

                                                       optional
                                      Designing for Ajax                    27
Update
• Finally, patterns reflect a visual change
         Indication. Busy Indication. Cursor Busy. In Context
         Busy. In Context Progress. Inline Status. Transition.
           Brighten Transition. Cross Fade Transition. Dim
       Transition. Expand Transition. Fade In Transition. Fade
        Out Transition. Flip Transition. Move Transition. Self-
       Healing Transition. Collapse Transition. Slide Transition.
        Rich Internet Object. Available. Selected. Identifiable
                  Object. Slide-out. Popup Balloon.



                                                      Update



                                 Designing for Ajax                 28
Pattern-O-Matic
                                          Lightweight
 Drag &                                     Content
                                             Search
                                              Drop
                                               UI             Design
                                                              Persist
 Onscroll
  Select
  Hover
            +                  +                        =
                                           Grid Cell
                                             Popup          Persistent
                                                             Refining
                                                             Endless
                                                              Hover
                                                               Inline
                                                                Auto
                                                                Ajax
 Keypress
  Trigger
   Drop
    Blur           Operation
                    Lookup
                    Persist                 Reflects
                                            Module
                                            Update
                                            Results
                                             Down            Pattern
                                                              Design
                                             Update
  Filters
   Event                                    Updates
                                             Shows          Complete
                                                             Scrolling
                                                              Search
                                                              Portals
                                                              Detail
                                                                Edit
                                                              Pattern
 Module                                   OK Status
                                            Updates
                                            Refined          Complete
                                                             Pattern
                                             Detail




 Drag and Drop Modules. In Page Editing. In Page Custom Editing.
Auto Complete.Editing. Grid Cell Editing. Inline Custom Editing.
   Direct State Deferred Content Loading. Dynamic Goal. Narrowing
 Choices. Tag Editing. Popup Custom Editing. Slide-out CustomZoom.
   Inline Refining Search. Live Search. Dynamic Filter. Detail
     Editing. Inline Text Editing. Inline Reordering. Auto Save.
Endless Scrolling. Expandable Paging Boundary. Fresh Content. Hover
  Detail. In Place Drill Down. On DemandPreferences. Rating an
  Remembered Collection. Remembered Refresh. Periodic Refresh.
                                Object.
        Resizable Modules. Scrolling Modules. Auto Form Fill.



                                   Designing for Ajax                    29
Principles


             Designing for Ajax   30
Principles for Ajax Design
1. Keep it direct
2. Provide live feedback
3. Offer an invitation
4. Cross borders reluctantly
5. Leave a light footprint
6. Show transitions
7. Think in objects



                           Designing for Ajax   31
Shift. Event granularity.




                               submit hyperlink




                      hover keypress keydown mousedown
           mouseout

             drop filter choices mouseup drag click select focus
                            blur resize move timeout




                                        Designing for Ajax         32
“
                                          Allow input wherever you output.
                                                              -Alan Cooper




 1
Keep it Direct




                 Designing for Ajax                                     33
1 Keep it direct
Pattern. Drag & Drop




                       Designing for Ajax                      34
1 Keep it direct
Pattern. In Page Editing




                           Designing for Ajax                      35
1 Keep it direct
Pattern. In Page Editing




                           Designing for Ajax                      36
1 Keep it direct
Pattern. Resizable Content.




                              Designing for Ajax                      37
1 Keep it direct
The Patterns




          Drag and Drop. Drag and Drop
         Modules. In Page Editing. In Page
        Custom Editing. Direct State Editing.
          Grid Cell Editing. Inline Custom
         Editing. Inline Tag Editing. Popup
         Custom Editing. Slide-out Custom
         Editing. Inline Text Editing. Inline
          Reordering. Resizable Content.


                           Designing for Ajax                      38
1 Keep it direct


Prefer interaction within the page
What about discoverability?




                                     Designing for Ajax                      39
1 Keep it direct


Prefer interaction within the page
What about discoverability?
                                     Use direct editing on page content
                                                             What about save/cancel?
                                                                      Avoid page jitter
                                                           Reduce the feeling of modes




                                      Designing for Ajax                                  40
1 Keep it direct


Prefer interaction within the page
What about discoverability?
                                     Use direct editing on page content
                                                             What about save/cancel?
                                                                      Avoid page jitter
                                                           Reduce the feeling of modes




Provide in-context tools
Only good for single operations
Can actually slow you down


                                      Designing for Ajax                                  41
1 Keep it direct


Prefer interaction within the page
What about discoverability?
                                     Use direct editing on page content
                                                             What about save/cancel?
                                                                      Avoid page jitter
                                                           Reduce the feeling of modes




                                  Use drag and drop where appropriate
                                                Not for simply setting an attribute
Provide in-context tools                   Good for layout changes or containment
                                                                Needs transitions
Only good for single operations
Can actually slow you down


                                      Designing for Ajax                                  42
Shift. Immediacy.




                         page

       Interaction                                           Interaction

                 Data
                                                                           Data

       Presentation                                         Presentation


          refresh boundary




                                Data



                                       Designing for Ajax                         43
“
                                          …effective communication is a
                                          key factor in the success of your
                                          product.
                                                        -Jesse James Garrett



 2
Provide live feedback




                 Designing for Ajax                                      44
2 Provide Live Feedback
Pattern. Live Search, Live Suggest




                                     Designing for Ajax                             45
2 Provide Live Feedback
Pattern. Auto Complete




                         Designing for Ajax                             46
2 Provide Live Feedback
Pattern. Refining Search




                           Designing for Ajax                             47
2 Provide Live Feedback
Pattern. Indication. Inline Busy




                                   Designing for Ajax                             48
2 Provide Live Feedback
Pattern. Indication. Inline Status, Character Counter




                                            Designing for Ajax                             49
2 Provide Live Feedback
Pattern. Deferred Content Load




                                 Designing for Ajax                             50
2 Provide Live Feedback
Pattern. Live Preview, Periodic Refresh




                                                                   Office 12 Live Preview




                                          Designing for Ajax                                51
2 Provide Live Feedback
Pattern. Live Preview




                        Designing for Ajax                             52
2 Provide Live Feedback
The Patterns



               Indication. Busy Indication.
                 Cursor Busy. In Context
                Busy. In Context Progress.
                   Inline Status. Auto
               Complete. Balloon Error Tip.
                Deferred Content Loading.
                Dynamic Goal. Narrowing
                Choices. Refining Search.
                Live Search. Live Preview.
                 Live Suggest. Character
                         Counter.

                              Designing for Ajax                             53
2 Provide Live Feedback


Keep the goal in mind
Design for immediacy
Is it narrowing or is it distracting
Use feedback to boost confidence
Let the user iterate where possible




                            Just-in-time data




Just-in-time logic




                                                Designing for Ajax                             54
2 Provide Live Feedback


Keep the goal in mind
Design for immediacy
                                                            Keep the user engaged
Is it narrowing or is it distracting
                                                                       Time passes faster
Use feedback to boost confidence                              Look for engaging moments
Let the user iterate where possible




                                       Designing for Ajax
2 Provide Live Feedback


Keep the goal in mind
Design for immediacy
                                                            Keep the user engaged
Is it narrowing or is it distracting
                                                                       Time passes faster
Use feedback to boost confidence                              Look for engaging moments
Let the user iterate where possible




Use live-previews
Look before you leap



                                       Designing for Ajax                                   56
2 Provide Live Feedback


Keep the goal in mind
Design for immediacy
                                                                  Keep the user engaged
Is it narrowing or is it distracting
                                                                             Time passes faster
Use feedback to boost confidence                                    Look for engaging moments
Let the user iterate where possible




                                                                  Keep feedback focused
                                                                      Keep it in context
Use live-previews                      Updating too many areas at once will be confusing
                                                     Show dynamically what is relevant
Look before you leap
                                                    Avoid creating feedback noise/jitter


                                             Designing for Ajax                                   57
Shift. Deeper Interaction.




                   desktop                                                          web
                           click key
                   focus
      hover blur

                                                                                                 click
                                                                       hover blur focus
    shiftclick doubleclick
                                                                           key shiftclick
        drag dragdrop                                                                       doubleclick drag dragdrop
                                           dragflipdrop


       shiftdoubleclick tripleclick shifttripleclick



                                 click key                       hover blur focus click
 hover blur focus
    shiftclick doubleclick                                        key shiftclick    doubleclick drag dragdrop
        drag dragdrop                      dragflipdrop


       shiftdoubleclick tripleclick shifttripleclick

                                                          Designing for Ajax                                            58
3
Offer an invitation




                  Designing for Ajax   59
3 Offer an Invitation
Pattern. Invitation. Hover, Tooltip, Cursor Invitation.




                                              Designing for Ajax                           60
3 Offer an Invitation
Pattern. Invitation. Hover Invitation




                                        Designing for Ajax                           61
3 Offer an Invitation
Pattern. Invitation. Hover Invitation




                                        Designing for Ajax                           62
3 Offer an Invitation
Pattern. Invitation. Cursor Invitation




                                         Designing for Ajax                           63
3 Offer an Invitation
Pattern. Invitation. Drop Invitation




                                       Designing for Ajax                           64
3 Offer an Invitation
The Patterns




               Invitation. Cursor Invitation.
                 Drop Invitation. Tool Tip
               Invitation. Hover Invitation.




                              Designing for Ajax                           65
3 Offer an Invitation


Make it engaging
Use lightweight events as a welcome mat
Rediscover the hover




                                          Designing for Ajax                           66
3 Offer an Invitation


Make it engaging
Use lightweight events as a welcome mat
                                                               Keep actions out of it
Rediscover the hover
                                                   Don’t make the user afraid to explore
                                                                      Don’t proselytize




                                          Designing for Ajax                               67
3 Offer an Invitation


Make it engaging
Use lightweight events as a welcome mat
                                                               Keep actions out of it
Rediscover the hover
                                                   Don’t make the user afraid to explore
                                                                      Don’t proselytize




Get the actors involved
Hover Invitation
Cursor Invitation
Tooltip Invitation

                                          Designing for Ajax
3 Offer an Invitation


Make it engaging
Use lightweight events as a welcome mat
                                                                   Keep actions out of it
Rediscover the hover
                                                       Don’t make the user afraid to explore
                                                                          Don’t proselytize




                                          Use invitations to aid discoverability
                                                         Two challenges: idiom & feature
Get the actors involved                   Adding signposts, always-on clues doesn’t scale
Hover Invitation                                   Add tours, help pedals, tips, spotlights
Cursor Invitation
Tooltip Invitation

                                              Designing for Ajax                               69
Shift. In-Page Interaction.

       1                  2   3                    4




classic flow across pages


       1                  2   3                    4



rich flow within page
                                                       70
                              Designing for Ajax
4
Cross borders reluctantly




                 Designing for Ajax   71
4 Cross Borders Reluctantly
Pattern. Endless Scrolling



 Rico LiveGrid




                             Yahoo! Mail Beta (Oddpost)



                             Designing for Ajax                             72
4 Cross Borders Reluctantly
Pattern. Live Paging


• At the very least make your paging fast




                           Designing for Ajax                             73
4 Cross Borders Reluctantly
Pattern. Inline Assistant




                            Designing for Ajax                             74
4 Cross Borders Reluctantly
Pattern. Inline Validation




                             Designing for Ajax                             75
4 Cross Borders Reluctantly
Pattern. Validate and Suggest




                                Designing for Ajax                             76
4 Cross Borders Reluctantly
Pattern. Overlays (lightweight popups)


• For introduction of features
• For giving instruction
• For revealing information
• For interrogative feedback
• For obtaining input
• For important interruptions
• For indication of
   status or progress
• For offering an
   invitation
                                         Designing for Ajax                             77
4 Cross Borders Reluctantly
Pattern. In-Context Expand.




                              Designing for Ajax                             78
4 Cross Borders Reluctantly
Pattern. Slide Out.




                      Designing for Ajax                             79
4 Cross Borders Reluctantly
Pattern. Detail Zoom.




                        Designing for Ajax                             80
4 Cross Borders Reluctantly
The Patterns




             Endless Scrolling. Expandable Paging
            Boundary. Fresh Content. Hover Detail.
              In Place Drill Down. Inline Assistant.
           Inline Validation. Validate Then Suggest.
           On Demand Refresh. Resizable Modules.
           Scrolling Modules. Detail Zoom. Opacity
            Focus. Configurable Module-Faceplate.
                   Configurable Module-Flip It.
             Configurable Module-Inline Configure.
            Configurable Module-Slide Out Drawer.
                  Slide Out. Flip. Opacity Fade.


                               Designing for Ajax                             81
4 Cross Borders Reluctantly


Rethink process flows
Its the user’s model, not the page model
Every page jump is a mental speed bump




                                           Designing for Ajax                             82
4 Cross Borders Reluctantly


Rethink process flows
Its the user’s model, not the page model
                                                                     Rethink paging
Every page jump is a mental speed bump
                                              Its the user’s model, not the paging model
                                                          Use scrolling for “owned” data
                                                       Watch out for dual scroll bar issue




                                           Designing for Ajax                                83
4 Cross Borders Reluctantly


Rethink process flows
Its the user’s model, not the page model
                                                                           Rethink paging
Every page jump is a mental speed bump
                                                    Its the user’s model, not the paging model
                                                                Use scrolling for “owned” data
                                                             Watch out for dual scroll bar issue




Plan for linking, crawling and back button
Not everything is a single page application
What will the user think the back button does?


                                                 Designing for Ajax                                84
4 Cross Borders Reluctantly


Use overlays
For momentary interruption
Replace page transition
When editing an individual, more complex item
Be symmetrical
Not disturb the page




                                                Designing for Ajax                             85
4 Cross Borders Reluctantly


Use overlays
For momentary interruption
                                                                     Use in-context expands
Replace page transition
                                                                   For editing part of a collection
When editing an individual, more complex item                    Need to see surrounding context
Be symmetrical                                                    For managing content modules
Not disturb the page




                                                Designing for Ajax                                    86
4 Cross Borders Reluctantly


Use overlays
For momentary interruption
                                                                     Use in-context expands
Replace page transition
                                                                   For editing part of a collection
When editing an individual, more complex item                    Need to see surrounding context
Be symmetrical                                                    For managing content modules
Not disturb the page




Use space creatively
Slide, zoom, flip, lens, fade
Think of your backstage


                                                Designing for Ajax                                    87
Shift. Lightweight Actions.




                              ok




heavy click-weight




                                                        light-weight
                                                           actions
                                   Designing for Ajax                  88
“   Take nothing but memories leave
                                           nothing but footprints.
                                                           - Hiking trail sign




 5
Leave a light footprint




                  Designing for Ajax                                       89
5 Leave a Light Footprint
Pattern. In Context Tools




                            Designing for Ajax                               90
5 Leave a Light Footprint
Pattern. In Context Tools




                            Designing for Ajax                               91
5 Leave a Light Footprint
Pattern. In Context Tools


• Microsoft Vista, Office 12
   Contextual Command Tabs




                               Designing for Ajax                               92
5 Leave a Light Footprint
Pattern. Live Ratings




                        Designing for Ajax                               93
5 Leave a Light Footprint
Pattern. Remembered Collection




                                 Designing for Ajax                               94
5 Leave a Light Footprint
The Patterns




                Auto Save. In Context
                Tools. In Page Action.
               Remembered Collection.
                     Remembered
               Preferences. Auto Form
                  Fill. Live Ratings.



                          Designing for Ajax                               95
5 Leave a Light Footprint


Watch your click weight
Keep actions immediate and light
Count “clicks”




                                   Designing for Ajax                               96
5 Leave a Light Footprint


Watch your click weight
Keep actions immediate and light
                                       Design for engaging moments
Count “clicks”
                                                                        Use invitations
                                                        Keep it fun, exciting and light
                                                         Treat it like an impulse aisle




                                   Designing for Ajax                                     97
5 Leave a Light Footprint


Watch your click weight
Keep actions immediate and light
                                       Design for engaging moments
Count “clicks”
                                                                        Use invitations
                                                        Keep it fun, exciting and light
                                                         Treat it like an impulse aisle




Use lightweight events
Hover
Blur, focus
Click. Avoid double-click

                                   Designing for Ajax                                     98
Shift. Multiple Happenings.




page-based transitions




                                   multiple transitions,
                                            single page
                              Designing for Ajax           99
6
Show transitions




                   Designing for Ajax   100
6 Show Transitions
Pattern. In Context Progress




                               Designing for Ajax                        101
6 Show Transitions
Patterns. Scale, Zoom




                        Designing for Ajax                        102
6 Show Transitions
Pattern. Active Spotlight




                            Designing for Ajax                        103
6 Show Transitions
Pattern. Quick Spotlight




                           Designing for Ajax                        104
6 Show Transitions
Pattern. Fade, Self-Heal, Slide, Collapse, Expand




                                            Designing for Ajax                        105
6 Show Transitions
Transitions


    Brighten. Raise importance
•
    Cross Fade. One leaves, another enters
•
    Dim. Lower importance
•
    Expand. Open in context of others
•
    Fade In. Good for adds
•
    Fade Out. Good for deletes
•
    Flip. Edit configuration
•
    Animate. Change relationship, tweening
•
    Self-Healing. After delete or “yank”
•
    Collapse. Close in context of others
•
    Slide. Similar to expand but child window
•

                              Designing for Ajax                        106
6 Show Transitions
The Patterns




               Transition. Brighten Transition.
                  Cross Fade Transition. Dim
                Transition. Expand Transition.
                 Fade In Transition. Fade Out
                  Transition. Flip Transition.
                   Animate Transition. Self-
                 Healing Transition. Collapse
                 Transition. Slide Transition.




                              Designing for Ajax                        107
6 Show Transitions


Speak to the BRAIN
Understanding attention processing
Sending the wrong message




                                     Designing for Ajax                        108
6 Show Transitions


Speak to the BRAIN
Understanding attention processing
                                              What you can communicate
Sending the wrong message
                                                                      Speed up time
                                                                    Slow down time
                                                                 Show state change
                                                 Show relationships between objects




                                     Designing for Ajax                               109
6 Show Transitions


Speak to the BRAIN
Understanding attention processing
                                              What you can communicate
Sending the wrong message
                                                                      Speed up time
                                                                    Slow down time
                                                                 Show state change
                                                 Show relationships between objects




                                                                         Keep it sane
                                                               “Cut in half” rule of thumb
                                                          Use a “contrast knob” approach
                                                                            Don’t overuse



                                     Designing for Ajax                                      110
6 Show Transitions
Simple observations


• The more rapid the change the more important the
  event.
• Rapid movement is seen as more important than
  rapid color change.
• Movement toward the user is seen as more
  important than movement away from the user.
• Very slow change can be processed without
  disrupting the user's attention.
• Animation can be used to communicate where an
  object was and now is


                             Designing for Ajax                        111
Shift. Page to Objects.




       page


                          objects


                          Designing for Ajax   112
7
Think in objects




                   Designing for Ajax   113
7 Think in Objects
The shift to objects




                           Page-Based Web               Rich Internet App


           Richer Model      Document                  Rich Internet Object


        Longer Lifecycle      Transient                    Permanent


            Community/                                 Content, properties,
                             Bookmark
               Sharing                                   and behaviors




                                  Designing for Ajax                           114
7 Think in Objects
Pattern. Shareable Object




                            Designing for Ajax                        115
7 Think in Objects
The Patterns




               Rich Internet Object.
               Available. Selected.
               Identifiable Object.




                          Designing for Ajax                        116
7 Think in Objects


Rethinking the model
What is the user’s mental model?
How to distinguish from content?




                                   Designing for Ajax                        117
7 Think in Objects


Rethinking the model
What is the user’s mental model?
                                                         The power of sharing
How to distinguish from content?
                                                        Bloggable, shareable, findable
                                                            How to dial-in community
                                                                           Collections




                                   Designing for Ajax                                    118
7 Think in Objects


Rethinking the model
What is the user’s mental model?
                                                              The power of sharing
How to distinguish from content?
                                                             Bloggable, shareable, findable
                                                                 How to dial-in community
                                                                                Collections




Web 2.0 as a platform
Rich objects fit the SOA model
Creates a good separation of concerns
Mashups

                                        Designing for Ajax                                    119
Questions?

        Designing for Ajax   120
Designing for Ajax   121
Participate?

        Designing for Ajax   122
Have You Seen a Cool Example?
• Tag It!
• Use ‘ypatternexample’ tag in either delicious or Yahoo! My
  Web2
• Use additional tags to identify the pattern name you think it
  belongs to
• Write a comment about what is interesting about the
  example or how to see the interaction




                               Designing for Ajax              123

More Related Content

Similar to Designing Ajax Principles And Patterns For Designing Rich Internet Applications

A Lap Around Internet Explorer 8
A Lap Around Internet Explorer 8A Lap Around Internet Explorer 8
A Lap Around Internet Explorer 8rsnarayanan
 
Java overview the piramide of success
Java overview the piramide of successJava overview the piramide of success
Java overview the piramide of successArtem Bilan
 
Get Hip with JHipster: Spring Boot + AngularJS + Bootstrap - Devoxx France 2016
Get Hip with JHipster: Spring Boot + AngularJS + Bootstrap - Devoxx France 2016Get Hip with JHipster: Spring Boot + AngularJS + Bootstrap - Devoxx France 2016
Get Hip with JHipster: Spring Boot + AngularJS + Bootstrap - Devoxx France 2016Matt Raible
 
The Modern Web, Part 2: HTML5
The Modern Web, Part 2: HTML5The Modern Web, Part 2: HTML5
The Modern Web, Part 2: HTML5David Pallmann
 
How to make Ajax Libraries work for you
How to make Ajax Libraries work for youHow to make Ajax Libraries work for you
How to make Ajax Libraries work for youSimon Willison
 
Optimizing HTML5 Sites with CQ5/WEM
Optimizing HTML5 Sites with CQ5/WEMOptimizing HTML5 Sites with CQ5/WEM
Optimizing HTML5 Sites with CQ5/WEMGabriel Walt
 
Web Apps and more
Web Apps and moreWeb Apps and more
Web Apps and moreYan Shi
 
Web app and more
Web app and moreWeb app and more
Web app and morefaming su
 
SproutCore GTUG
SproutCore GTUGSproutCore GTUG
SproutCore GTUGsproutit
 
Architectures For Scaling Ajax
Architectures For Scaling AjaxArchitectures For Scaling Ajax
Architectures For Scaling Ajaxwolframkriesing
 
Dconrails Gecco Presentation
Dconrails Gecco PresentationDconrails Gecco Presentation
Dconrails Gecco PresentationJuan J. Merelo
 
X Aware Ajax World V1
X Aware Ajax World V1X Aware Ajax World V1
X Aware Ajax World V1rajivmordani
 
Web Development for UX Designers
Web Development for UX DesignersWeb Development for UX Designers
Web Development for UX DesignersAshlimarie
 
Building assets on the fly with Node.js
Building assets on the fly with Node.jsBuilding assets on the fly with Node.js
Building assets on the fly with Node.jsAcquisio
 

Similar to Designing Ajax Principles And Patterns For Designing Rich Internet Applications (20)

Node.JS briefly introduced
Node.JS briefly introducedNode.JS briefly introduced
Node.JS briefly introduced
 
A Lap Around Internet Explorer 8
A Lap Around Internet Explorer 8A Lap Around Internet Explorer 8
A Lap Around Internet Explorer 8
 
Java overview the piramide of success
Java overview the piramide of successJava overview the piramide of success
Java overview the piramide of success
 
Get Hip with JHipster: Spring Boot + AngularJS + Bootstrap - Devoxx France 2016
Get Hip with JHipster: Spring Boot + AngularJS + Bootstrap - Devoxx France 2016Get Hip with JHipster: Spring Boot + AngularJS + Bootstrap - Devoxx France 2016
Get Hip with JHipster: Spring Boot + AngularJS + Bootstrap - Devoxx France 2016
 
The Modern Web, Part 2: HTML5
The Modern Web, Part 2: HTML5The Modern Web, Part 2: HTML5
The Modern Web, Part 2: HTML5
 
How to make Ajax Libraries work for you
How to make Ajax Libraries work for youHow to make Ajax Libraries work for you
How to make Ajax Libraries work for you
 
Coding the UI
Coding the UICoding the UI
Coding the UI
 
Coding Ui
Coding UiCoding Ui
Coding Ui
 
Optimizing HTML5 Sites with CQ5/WEM
Optimizing HTML5 Sites with CQ5/WEMOptimizing HTML5 Sites with CQ5/WEM
Optimizing HTML5 Sites with CQ5/WEM
 
Web Apps and more
Web Apps and moreWeb Apps and more
Web Apps and more
 
Web app and more
Web app and moreWeb app and more
Web app and more
 
SproutCore GTUG
SproutCore GTUGSproutCore GTUG
SproutCore GTUG
 
Web 2.0 Futures
Web 2.0 FuturesWeb 2.0 Futures
Web 2.0 Futures
 
Architectures For Scaling Ajax
Architectures For Scaling AjaxArchitectures For Scaling Ajax
Architectures For Scaling Ajax
 
React Session 1.pptx
React Session 1.pptxReact Session 1.pptx
React Session 1.pptx
 
Ajax World Fall08
Ajax World Fall08Ajax World Fall08
Ajax World Fall08
 
Dconrails Gecco Presentation
Dconrails Gecco PresentationDconrails Gecco Presentation
Dconrails Gecco Presentation
 
X Aware Ajax World V1
X Aware Ajax World V1X Aware Ajax World V1
X Aware Ajax World V1
 
Web Development for UX Designers
Web Development for UX DesignersWeb Development for UX Designers
Web Development for UX Designers
 
Building assets on the fly with Node.js
Building assets on the fly with Node.jsBuilding assets on the fly with Node.js
Building assets on the fly with Node.js
 

Recently uploaded

"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr BaganFwdays
 
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxLoriGlavin3
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfAddepto
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek SchlawackFwdays
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfAlex Barbosa Coqueiro
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubKalema Edgar
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024Lonnie McRorey
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxLoriGlavin3
 
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxDigital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxLoriGlavin3
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxNavinnSomaal
 
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxA Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxLoriGlavin3
 
SALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICESSALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICESmohitsingh558521
 
The State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxThe State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxLoriGlavin3
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024Lorenzo Miniero
 
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024BookNet Canada
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxLoriGlavin3
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024Stephanie Beckett
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii SoldatenkoFwdays
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 3652toLead Limited
 

Recently uploaded (20)

"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan
 
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdf
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdf
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding Club
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
 
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxDigital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptx
 
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxA Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
 
SALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICESSALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICES
 
The State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxThe State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptx
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024
 
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365
 

Designing Ajax Principles And Patterns For Designing Rich Internet Applications

  • 1. Designing for Ajax Principles and Patterns for Designing Rich Internet Applications Bill W. Scott, Y! Ajax Evangelist bscott@yahoo-inc.com
  • 2. Background • Games, research, science, military, biz • Apps, frameworks, widget sets • Developer, designer • Object-oriented background • Software architect, user experience manager • Current: Yahoo! Ajax Evangelist • http://looksgoodworkswell.com Designing for Ajax 2
  • 3. Ajax @ Yahoo Designing for Ajax 3
  • 4. Yahoo! Pattern Library Release http://developer.yahoo.net/ypatterns/ Designing for Ajax 4
  • 5. yuiblog.com http://yuiblog.com Designing for Ajax 5
  • 6. Yahoo! Patterns Discussion Group http://groups.yahoo.com/group/ydn-patterns/ Designing for Ajax 6
  • 7. Initial Set of Yahoo! Patterns Released on 2/13 Breadcrumbs. Module Tabs. Navigation Tabs. Auto Complete. Pagination. Item Pagination. Search Pagination. Ratings and Reviews. Architecture of a Review. Rating an Object. Writing a Review. Drag and Drop. Drag and Drop Modules. Designing for Ajax 7
  • 8. Rich Design Patterns Drag and Drop. Drag and Drop Modules. In Page Editing. In Page Custom Editing. Direct State Editing. Grid Cell Editing. Inline Custom Editing. Inline Tag Editing. Popup Custom Editing. Slide-out Custom Editing. Inline Text Editing. Persistent Portals. Inline Reordering. Indication. Busy Indication. Cursor Busy. In Context Busy. In Context Progress. Inline Status. Character Counter. Auto Complete. Balloon Error Tip. Deferred Content Loading. Dynamic Goal. Narrowing Choices. Refining Search. Live Search. Dynamic Filter. Invitation. Cursor Invitation. Drop Invitation. Tool Tip Invitation. Hover Invitation. Detail Zoom. Opacity Focus. Configurable Module - Faceplate. Configurable Module - Flip It. Configurable Module - Inline Configure. Configurable Module - Slide Out Drawer. Slide Out. Flip. Opacity Fade. Endless Scrolling. Expandable Paging Boundary. Fresh Content. Hover Detail. In Place Drill Down. Inline Assistant. Inline Validation. Validate Then Suggest. On Demand Refresh. Periodic Refresh. Resizable Modules. Scrolling Modules. Auto Save. In Context Tools. Remembered Collection. Remembered Preferences. Auto Form Fill. Rating an Object. Transition. Brighten Transition. Cross Fade Transition. Dim Transition. Expand Transition. Fade In Transition. Fade Out Transition. Flip Transition. Move Transition. Self-Healing Transition. Collapse Transition. Slide Transition. Rich Internet Object. Available. Selected. Identifiable Object. Designing for Ajax 8
  • 9. Yahoo! UI Library • Normalization (Event Utility) • Messaging (Connection Manager for AJAX) • Direct Representation (Animation and Position) • Direct Manipulation (Drag and Drop) • Rich Interactive Widgets (Slider, TreeView, Calendar, AutoComplete Designing for Ajax 9
  • 10. Designing for Ajax • Richness What is richness? • Ajax Patterns DNA of an Ajax Pattern • Principles Principles for Ajax Design Designing for Ajax 10
  • 11. Richness Designing for Ajax 11
  • 12. Defining Richness: Web in 3D • Interaction Dimension event Interaction • Data Dimension Data Presentation response • Presentation Dimension Designing for Ajax 12
  • 13. Classic Web page • Interaction course-grained Interaction • Data Data loaded with the page or obtained via refresh Presentation • Presentation: refresh boundary page-based updates Data Designing for Ajax 13
  • 14. Classic Web Illustrated browser Http My Profile Response Server Photo Name Joe Smith Name Gender Male Gender Age 27 Age Http Submit Edit Request Interaction Data Presentation event response Designing for Ajax 14
  • 15. Ajax = Just-in-Time. Immediacy. Just-in-time data Just-in-time presentation Just-in-time logic Designing for Ajax 15
  • 16. Ajax Model - New & Improved! • Now with Deeper Interaction! Interaction • Now with Just-in-Time Data & Just-in-Time Logic! Data ★ XMLHttpRequest (XHR) is Presentation the secret sauce! • Now with Richer Interface! • All dimensions are closer Designing for Ajax 16
  • 17. Ajax Illustrated browser My Profile onreadystatechange Server Name Joe Smith Tim Jones XHR Gender Male Age 27 Object Save send() Interaction Data Presentation event response Designing for Ajax 17
  • 18. AJAX vs Ajax • AJAX = Asynchronous JavaScript and XML • Strict definition is using XMLHttpRequest (XHR) to retrieve XML within a web page • Ajax = The set of technologies that allow web applications to provide rich interaction, just-in-time information and dynamic interfaces without required page refresh • The Secret Sauce XHR • Ajax = XHR + DHTML (HTML, CSS, JavaScript) + Rich design Designing for Ajax 18
  • 19. Other Remote Scripting Techniques • Hidden IFrame • <img> src • <script> src hack • CSS href hack • JS to faceless Java applets • JS to faceless Flash • NO CONTENT Response • Cookies Designing for Ajax 19
  • 20. Ajax Patterns Designing for Ajax 20
  • 21. Rich Design Patterns Drag and Drop. Drag and Drop Modules. In Page Editing. In Page Custom Editing. Direct State Editing. Grid Cell Editing. Inline Custom Editing. Inline Tag Editing. Popup Custom Editing. Slide-out Custom Editing. Inline Text Editing. Persistent Portals. Inline Reordering. Indication. Busy Indication. Cursor Busy. In Context Busy. In Context Progress. Inline Status. Character Counter. Auto Complete. Balloon Error Tip. Deferred Content Loading. Dynamic Goal. Narrowing Choices. Refining Search. Live Search. Dynamic Filter. Invitation. Cursor Invitation. Drop Invitation. Tool Tip Invitation. Hover Invitation. Detail Zoom. Opacity Focus. Configurable Module - Faceplate. Configurable Module - Flip It. Configurable Module - Inline Configure. Configurable Module - Slide Out Drawer. Slide Out. Flip. Opacity Fade. Endless Scrolling. Expandable Paging Boundary. Fresh Content. Hover Detail. In Place Drill Down. Inline Assistant. Inline Validation. Validate Then Suggest. On Demand Refresh. Periodic Refresh. Resizable Modules. Scrolling Modules. Auto Save. In Context Tools. Remembered Collection. Remembered Preferences. Auto Form Fill. Rating an Object. Transition. Brighten Transition. Cross Fade Transition. Dim Transition. Expand Transition. Fade In Transition. Fade Out Transition. Flip Transition. Move Transition. Self-Healing Transition. Collapse Transition. Slide Transition. Rich Internet Object. Available. Selected. Identifiable Object. Designing for Ajax 21
  • 22. But What Can XHR Do? • Make a request • Return a response • And do it asynchronously response XHR Object request Designing for Ajax 22
  • 23. Anatomy of a Pattern • Ajax design patterns contain three steps • Trigger (event or timer) • Operation (Ajax, remote scripting) • Update (presentation) Trigger Operation Update Designing for Ajax 23
  • 24. Trigger • Every pattern starts with • a user event • a timer event mousedown mouseout hover keypress keydown drop filter choices mouseup drag click mousedown select focus blur resize move timeout Trigger Designing for Ajax 24
  • 25. Operation Ajax patterns open the door to immediacy • Lookup I can get information when I need it • Persist I can save in real-time • Validate I can prevent errors early • Invoke I can make things happen now • Message I can communicate instantly Operation Designing for Ajax 25
  • 26. Operation. Lookup I can get information when I need it Auto Complete. Deferred Content Loading. Dynamic Goal. Narrowing Choices. Refining Search. Live Search. Dynamic Filter. Detail Zoom. Endless Scrolling. Expandable Paging Boundary. Fresh Content. Hover Detail. In Place Drill Down. On Demand Refresh. Periodic Refresh. Resizable Modules. Scrolling Modules. Auto Form Fill. Lookup Trigger Update Operation Designing for Ajax 26
  • 27. Operation. Persist I can save in real-time Drag and Drop Modules. In Page Editing. In Page Custom Editing. Direct State Editing. Grid Cell Editing. Inline Custom Editing. Inline Tag Editing. Popup Custom Editing. Slide-out Custom Editing. Inline Text Editing. Inline Reordering. Auto Save. Remembered Collection. Remembered Preferences. Rating an Object. Trigger Persist Update persist status optional Designing for Ajax 27
  • 28. Update • Finally, patterns reflect a visual change Indication. Busy Indication. Cursor Busy. In Context Busy. In Context Progress. Inline Status. Transition. Brighten Transition. Cross Fade Transition. Dim Transition. Expand Transition. Fade In Transition. Fade Out Transition. Flip Transition. Move Transition. Self- Healing Transition. Collapse Transition. Slide Transition. Rich Internet Object. Available. Selected. Identifiable Object. Slide-out. Popup Balloon. Update Designing for Ajax 28
  • 29. Pattern-O-Matic Lightweight Drag & Content Search Drop UI Design Persist Onscroll Select Hover + + = Grid Cell Popup Persistent Refining Endless Hover Inline Auto Ajax Keypress Trigger Drop Blur Operation Lookup Persist Reflects Module Update Results Down Pattern Design Update Filters Event Updates Shows Complete Scrolling Search Portals Detail Edit Pattern Module OK Status Updates Refined Complete Pattern Detail Drag and Drop Modules. In Page Editing. In Page Custom Editing. Auto Complete.Editing. Grid Cell Editing. Inline Custom Editing. Direct State Deferred Content Loading. Dynamic Goal. Narrowing Choices. Tag Editing. Popup Custom Editing. Slide-out CustomZoom. Inline Refining Search. Live Search. Dynamic Filter. Detail Editing. Inline Text Editing. Inline Reordering. Auto Save. Endless Scrolling. Expandable Paging Boundary. Fresh Content. Hover Detail. In Place Drill Down. On DemandPreferences. Rating an Remembered Collection. Remembered Refresh. Periodic Refresh. Object. Resizable Modules. Scrolling Modules. Auto Form Fill. Designing for Ajax 29
  • 30. Principles Designing for Ajax 30
  • 31. Principles for Ajax Design 1. Keep it direct 2. Provide live feedback 3. Offer an invitation 4. Cross borders reluctantly 5. Leave a light footprint 6. Show transitions 7. Think in objects Designing for Ajax 31
  • 32. Shift. Event granularity. submit hyperlink hover keypress keydown mousedown mouseout drop filter choices mouseup drag click select focus blur resize move timeout Designing for Ajax 32
  • 33. Allow input wherever you output. -Alan Cooper 1 Keep it Direct Designing for Ajax 33
  • 34. 1 Keep it direct Pattern. Drag & Drop Designing for Ajax 34
  • 35. 1 Keep it direct Pattern. In Page Editing Designing for Ajax 35
  • 36. 1 Keep it direct Pattern. In Page Editing Designing for Ajax 36
  • 37. 1 Keep it direct Pattern. Resizable Content. Designing for Ajax 37
  • 38. 1 Keep it direct The Patterns Drag and Drop. Drag and Drop Modules. In Page Editing. In Page Custom Editing. Direct State Editing. Grid Cell Editing. Inline Custom Editing. Inline Tag Editing. Popup Custom Editing. Slide-out Custom Editing. Inline Text Editing. Inline Reordering. Resizable Content. Designing for Ajax 38
  • 39. 1 Keep it direct Prefer interaction within the page What about discoverability? Designing for Ajax 39
  • 40. 1 Keep it direct Prefer interaction within the page What about discoverability? Use direct editing on page content What about save/cancel? Avoid page jitter Reduce the feeling of modes Designing for Ajax 40
  • 41. 1 Keep it direct Prefer interaction within the page What about discoverability? Use direct editing on page content What about save/cancel? Avoid page jitter Reduce the feeling of modes Provide in-context tools Only good for single operations Can actually slow you down Designing for Ajax 41
  • 42. 1 Keep it direct Prefer interaction within the page What about discoverability? Use direct editing on page content What about save/cancel? Avoid page jitter Reduce the feeling of modes Use drag and drop where appropriate Not for simply setting an attribute Provide in-context tools Good for layout changes or containment Needs transitions Only good for single operations Can actually slow you down Designing for Ajax 42
  • 43. Shift. Immediacy. page Interaction Interaction Data Data Presentation Presentation refresh boundary Data Designing for Ajax 43
  • 44. …effective communication is a key factor in the success of your product. -Jesse James Garrett 2 Provide live feedback Designing for Ajax 44
  • 45. 2 Provide Live Feedback Pattern. Live Search, Live Suggest Designing for Ajax 45
  • 46. 2 Provide Live Feedback Pattern. Auto Complete Designing for Ajax 46
  • 47. 2 Provide Live Feedback Pattern. Refining Search Designing for Ajax 47
  • 48. 2 Provide Live Feedback Pattern. Indication. Inline Busy Designing for Ajax 48
  • 49. 2 Provide Live Feedback Pattern. Indication. Inline Status, Character Counter Designing for Ajax 49
  • 50. 2 Provide Live Feedback Pattern. Deferred Content Load Designing for Ajax 50
  • 51. 2 Provide Live Feedback Pattern. Live Preview, Periodic Refresh Office 12 Live Preview Designing for Ajax 51
  • 52. 2 Provide Live Feedback Pattern. Live Preview Designing for Ajax 52
  • 53. 2 Provide Live Feedback The Patterns Indication. Busy Indication. Cursor Busy. In Context Busy. In Context Progress. Inline Status. Auto Complete. Balloon Error Tip. Deferred Content Loading. Dynamic Goal. Narrowing Choices. Refining Search. Live Search. Live Preview. Live Suggest. Character Counter. Designing for Ajax 53
  • 54. 2 Provide Live Feedback Keep the goal in mind Design for immediacy Is it narrowing or is it distracting Use feedback to boost confidence Let the user iterate where possible Just-in-time data Just-in-time logic Designing for Ajax 54
  • 55. 2 Provide Live Feedback Keep the goal in mind Design for immediacy Keep the user engaged Is it narrowing or is it distracting Time passes faster Use feedback to boost confidence Look for engaging moments Let the user iterate where possible Designing for Ajax
  • 56. 2 Provide Live Feedback Keep the goal in mind Design for immediacy Keep the user engaged Is it narrowing or is it distracting Time passes faster Use feedback to boost confidence Look for engaging moments Let the user iterate where possible Use live-previews Look before you leap Designing for Ajax 56
  • 57. 2 Provide Live Feedback Keep the goal in mind Design for immediacy Keep the user engaged Is it narrowing or is it distracting Time passes faster Use feedback to boost confidence Look for engaging moments Let the user iterate where possible Keep feedback focused Keep it in context Use live-previews Updating too many areas at once will be confusing Show dynamically what is relevant Look before you leap Avoid creating feedback noise/jitter Designing for Ajax 57
  • 58. Shift. Deeper Interaction. desktop web click key focus hover blur click hover blur focus shiftclick doubleclick key shiftclick drag dragdrop doubleclick drag dragdrop dragflipdrop shiftdoubleclick tripleclick shifttripleclick click key hover blur focus click hover blur focus shiftclick doubleclick key shiftclick doubleclick drag dragdrop drag dragdrop dragflipdrop shiftdoubleclick tripleclick shifttripleclick Designing for Ajax 58
  • 59. 3 Offer an invitation Designing for Ajax 59
  • 60. 3 Offer an Invitation Pattern. Invitation. Hover, Tooltip, Cursor Invitation. Designing for Ajax 60
  • 61. 3 Offer an Invitation Pattern. Invitation. Hover Invitation Designing for Ajax 61
  • 62. 3 Offer an Invitation Pattern. Invitation. Hover Invitation Designing for Ajax 62
  • 63. 3 Offer an Invitation Pattern. Invitation. Cursor Invitation Designing for Ajax 63
  • 64. 3 Offer an Invitation Pattern. Invitation. Drop Invitation Designing for Ajax 64
  • 65. 3 Offer an Invitation The Patterns Invitation. Cursor Invitation. Drop Invitation. Tool Tip Invitation. Hover Invitation. Designing for Ajax 65
  • 66. 3 Offer an Invitation Make it engaging Use lightweight events as a welcome mat Rediscover the hover Designing for Ajax 66
  • 67. 3 Offer an Invitation Make it engaging Use lightweight events as a welcome mat Keep actions out of it Rediscover the hover Don’t make the user afraid to explore Don’t proselytize Designing for Ajax 67
  • 68. 3 Offer an Invitation Make it engaging Use lightweight events as a welcome mat Keep actions out of it Rediscover the hover Don’t make the user afraid to explore Don’t proselytize Get the actors involved Hover Invitation Cursor Invitation Tooltip Invitation Designing for Ajax
  • 69. 3 Offer an Invitation Make it engaging Use lightweight events as a welcome mat Keep actions out of it Rediscover the hover Don’t make the user afraid to explore Don’t proselytize Use invitations to aid discoverability Two challenges: idiom & feature Get the actors involved Adding signposts, always-on clues doesn’t scale Hover Invitation Add tours, help pedals, tips, spotlights Cursor Invitation Tooltip Invitation Designing for Ajax 69
  • 70. Shift. In-Page Interaction. 1 2 3 4 classic flow across pages 1 2 3 4 rich flow within page 70 Designing for Ajax
  • 71. 4 Cross borders reluctantly Designing for Ajax 71
  • 72. 4 Cross Borders Reluctantly Pattern. Endless Scrolling Rico LiveGrid Yahoo! Mail Beta (Oddpost) Designing for Ajax 72
  • 73. 4 Cross Borders Reluctantly Pattern. Live Paging • At the very least make your paging fast Designing for Ajax 73
  • 74. 4 Cross Borders Reluctantly Pattern. Inline Assistant Designing for Ajax 74
  • 75. 4 Cross Borders Reluctantly Pattern. Inline Validation Designing for Ajax 75
  • 76. 4 Cross Borders Reluctantly Pattern. Validate and Suggest Designing for Ajax 76
  • 77. 4 Cross Borders Reluctantly Pattern. Overlays (lightweight popups) • For introduction of features • For giving instruction • For revealing information • For interrogative feedback • For obtaining input • For important interruptions • For indication of status or progress • For offering an invitation Designing for Ajax 77
  • 78. 4 Cross Borders Reluctantly Pattern. In-Context Expand. Designing for Ajax 78
  • 79. 4 Cross Borders Reluctantly Pattern. Slide Out. Designing for Ajax 79
  • 80. 4 Cross Borders Reluctantly Pattern. Detail Zoom. Designing for Ajax 80
  • 81. 4 Cross Borders Reluctantly The Patterns Endless Scrolling. Expandable Paging Boundary. Fresh Content. Hover Detail. In Place Drill Down. Inline Assistant. Inline Validation. Validate Then Suggest. On Demand Refresh. Resizable Modules. Scrolling Modules. Detail Zoom. Opacity Focus. Configurable Module-Faceplate. Configurable Module-Flip It. Configurable Module-Inline Configure. Configurable Module-Slide Out Drawer. Slide Out. Flip. Opacity Fade. Designing for Ajax 81
  • 82. 4 Cross Borders Reluctantly Rethink process flows Its the user’s model, not the page model Every page jump is a mental speed bump Designing for Ajax 82
  • 83. 4 Cross Borders Reluctantly Rethink process flows Its the user’s model, not the page model Rethink paging Every page jump is a mental speed bump Its the user’s model, not the paging model Use scrolling for “owned” data Watch out for dual scroll bar issue Designing for Ajax 83
  • 84. 4 Cross Borders Reluctantly Rethink process flows Its the user’s model, not the page model Rethink paging Every page jump is a mental speed bump Its the user’s model, not the paging model Use scrolling for “owned” data Watch out for dual scroll bar issue Plan for linking, crawling and back button Not everything is a single page application What will the user think the back button does? Designing for Ajax 84
  • 85. 4 Cross Borders Reluctantly Use overlays For momentary interruption Replace page transition When editing an individual, more complex item Be symmetrical Not disturb the page Designing for Ajax 85
  • 86. 4 Cross Borders Reluctantly Use overlays For momentary interruption Use in-context expands Replace page transition For editing part of a collection When editing an individual, more complex item Need to see surrounding context Be symmetrical For managing content modules Not disturb the page Designing for Ajax 86
  • 87. 4 Cross Borders Reluctantly Use overlays For momentary interruption Use in-context expands Replace page transition For editing part of a collection When editing an individual, more complex item Need to see surrounding context Be symmetrical For managing content modules Not disturb the page Use space creatively Slide, zoom, flip, lens, fade Think of your backstage Designing for Ajax 87
  • 88. Shift. Lightweight Actions. ok heavy click-weight light-weight actions Designing for Ajax 88
  • 89. Take nothing but memories leave nothing but footprints. - Hiking trail sign 5 Leave a light footprint Designing for Ajax 89
  • 90. 5 Leave a Light Footprint Pattern. In Context Tools Designing for Ajax 90
  • 91. 5 Leave a Light Footprint Pattern. In Context Tools Designing for Ajax 91
  • 92. 5 Leave a Light Footprint Pattern. In Context Tools • Microsoft Vista, Office 12 Contextual Command Tabs Designing for Ajax 92
  • 93. 5 Leave a Light Footprint Pattern. Live Ratings Designing for Ajax 93
  • 94. 5 Leave a Light Footprint Pattern. Remembered Collection Designing for Ajax 94
  • 95. 5 Leave a Light Footprint The Patterns Auto Save. In Context Tools. In Page Action. Remembered Collection. Remembered Preferences. Auto Form Fill. Live Ratings. Designing for Ajax 95
  • 96. 5 Leave a Light Footprint Watch your click weight Keep actions immediate and light Count “clicks” Designing for Ajax 96
  • 97. 5 Leave a Light Footprint Watch your click weight Keep actions immediate and light Design for engaging moments Count “clicks” Use invitations Keep it fun, exciting and light Treat it like an impulse aisle Designing for Ajax 97
  • 98. 5 Leave a Light Footprint Watch your click weight Keep actions immediate and light Design for engaging moments Count “clicks” Use invitations Keep it fun, exciting and light Treat it like an impulse aisle Use lightweight events Hover Blur, focus Click. Avoid double-click Designing for Ajax 98
  • 99. Shift. Multiple Happenings. page-based transitions multiple transitions, single page Designing for Ajax 99
  • 100. 6 Show transitions Designing for Ajax 100
  • 101. 6 Show Transitions Pattern. In Context Progress Designing for Ajax 101
  • 102. 6 Show Transitions Patterns. Scale, Zoom Designing for Ajax 102
  • 103. 6 Show Transitions Pattern. Active Spotlight Designing for Ajax 103
  • 104. 6 Show Transitions Pattern. Quick Spotlight Designing for Ajax 104
  • 105. 6 Show Transitions Pattern. Fade, Self-Heal, Slide, Collapse, Expand Designing for Ajax 105
  • 106. 6 Show Transitions Transitions Brighten. Raise importance • Cross Fade. One leaves, another enters • Dim. Lower importance • Expand. Open in context of others • Fade In. Good for adds • Fade Out. Good for deletes • Flip. Edit configuration • Animate. Change relationship, tweening • Self-Healing. After delete or “yank” • Collapse. Close in context of others • Slide. Similar to expand but child window • Designing for Ajax 106
  • 107. 6 Show Transitions The Patterns Transition. Brighten Transition. Cross Fade Transition. Dim Transition. Expand Transition. Fade In Transition. Fade Out Transition. Flip Transition. Animate Transition. Self- Healing Transition. Collapse Transition. Slide Transition. Designing for Ajax 107
  • 108. 6 Show Transitions Speak to the BRAIN Understanding attention processing Sending the wrong message Designing for Ajax 108
  • 109. 6 Show Transitions Speak to the BRAIN Understanding attention processing What you can communicate Sending the wrong message Speed up time Slow down time Show state change Show relationships between objects Designing for Ajax 109
  • 110. 6 Show Transitions Speak to the BRAIN Understanding attention processing What you can communicate Sending the wrong message Speed up time Slow down time Show state change Show relationships between objects Keep it sane “Cut in half” rule of thumb Use a “contrast knob” approach Don’t overuse Designing for Ajax 110
  • 111. 6 Show Transitions Simple observations • The more rapid the change the more important the event. • Rapid movement is seen as more important than rapid color change. • Movement toward the user is seen as more important than movement away from the user. • Very slow change can be processed without disrupting the user's attention. • Animation can be used to communicate where an object was and now is Designing for Ajax 111
  • 112. Shift. Page to Objects. page objects Designing for Ajax 112
  • 113. 7 Think in objects Designing for Ajax 113
  • 114. 7 Think in Objects The shift to objects Page-Based Web Rich Internet App Richer Model Document Rich Internet Object Longer Lifecycle Transient Permanent Community/ Content, properties, Bookmark Sharing and behaviors Designing for Ajax 114
  • 115. 7 Think in Objects Pattern. Shareable Object Designing for Ajax 115
  • 116. 7 Think in Objects The Patterns Rich Internet Object. Available. Selected. Identifiable Object. Designing for Ajax 116
  • 117. 7 Think in Objects Rethinking the model What is the user’s mental model? How to distinguish from content? Designing for Ajax 117
  • 118. 7 Think in Objects Rethinking the model What is the user’s mental model? The power of sharing How to distinguish from content? Bloggable, shareable, findable How to dial-in community Collections Designing for Ajax 118
  • 119. 7 Think in Objects Rethinking the model What is the user’s mental model? The power of sharing How to distinguish from content? Bloggable, shareable, findable How to dial-in community Collections Web 2.0 as a platform Rich objects fit the SOA model Creates a good separation of concerns Mashups Designing for Ajax 119
  • 120. Questions? Designing for Ajax 120
  • 122. Participate? Designing for Ajax 122
  • 123. Have You Seen a Cool Example? • Tag It! • Use ‘ypatternexample’ tag in either delicious or Yahoo! My Web2 • Use additional tags to identify the pattern name you think it belongs to • Write a comment about what is interesting about the example or how to see the interaction Designing for Ajax 123