diff --git a/.eleventy.js b/.eleventy.js index 944a4a7..c3767e3 100644 --- a/.eleventy.js +++ b/.eleventy.js @@ -1,11 +1,11 @@ module.exports = function (eleventyConfig) { // Set custom directories for input, output, includes, and data eleventyConfig.addPassthroughCopy("src/style.css"); - eleventyConfig.addPassthroughCopy("src/assets/*"); + eleventyConfig.addPassthroughCopy("src/assets/**"); eleventyConfig.setFrontMatterParsingOptions({ excerpt: true, // Optional, default is "---" - excerpt_separator: "", + excerpt_separator: "" }); // add `order` front matter to each pattern to sort them (lower values firts) diff --git a/package.json b/package.json index 4149c63..fb55ef9 100644 --- a/package.json +++ b/package.json @@ -4,7 +4,6 @@ "description": "", "main": "index.js", "scripts": { - "test": "echo \"Error: no test specified\" && exit 1", "start": "npx @11ty/eleventy --serve", "build": "npx @11ty/eleventy" }, diff --git a/src/assets/skeletal_design_perception_time_diagram.svg b/src/assets/skeletal_design_perception_time_diagram.svg new file mode 100644 index 0000000..92a9279 --- /dev/null +++ b/src/assets/skeletal_design_perception_time_diagram.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/skeletal_designs_diagrams/Artboard4.png b/src/assets/skeletal_designs_diagrams/Artboard4.png new file mode 100644 index 0000000..ded545e Binary files /dev/null and b/src/assets/skeletal_designs_diagrams/Artboard4.png differ diff --git a/src/assets/skeletal_designs_diagrams/Artboard5.png b/src/assets/skeletal_designs_diagrams/Artboard5.png new file mode 100644 index 0000000..2ebbb7c Binary files /dev/null and b/src/assets/skeletal_designs_diagrams/Artboard5.png differ diff --git a/src/assets/skeletal_designs_diagrams/Artboard6.png b/src/assets/skeletal_designs_diagrams/Artboard6.png new file mode 100644 index 0000000..aef9a69 Binary files /dev/null and b/src/assets/skeletal_designs_diagrams/Artboard6.png differ diff --git a/src/assets/skeletal_designs_diagrams/graybox_loaded.mp4 b/src/assets/skeletal_designs_diagrams/graybox_loaded.mp4 new file mode 100644 index 0000000..954b46f Binary files /dev/null and b/src/assets/skeletal_designs_diagrams/graybox_loaded.mp4 differ diff --git a/src/assets/skeletal_designs_diagrams/owlboi.mp4 b/src/assets/skeletal_designs_diagrams/owlboi.mp4 new file mode 100644 index 0000000..dfe7dec Binary files /dev/null and b/src/assets/skeletal_designs_diagrams/owlboi.mp4 differ diff --git a/src/assets/skeletal_designs_diagrams/owlboi2.mp4 b/src/assets/skeletal_designs_diagrams/owlboi2.mp4 new file mode 100644 index 0000000..60b7f3f Binary files /dev/null and b/src/assets/skeletal_designs_diagrams/owlboi2.mp4 differ diff --git a/src/assets/skeletal_designs_diagrams/smol_spsd_loading_elements_example.mp4 b/src/assets/skeletal_designs_diagrams/smol_spsd_loading_elements_example.mp4 new file mode 100644 index 0000000..3d98000 Binary files /dev/null and b/src/assets/skeletal_designs_diagrams/smol_spsd_loading_elements_example.mp4 differ diff --git a/src/assets/skeletal_designs_diagrams/social_media_profile_load_skeleton_example.mp4 b/src/assets/skeletal_designs_diagrams/social_media_profile_load_skeleton_example.mp4 new file mode 100644 index 0000000..baa3e8e Binary files /dev/null and b/src/assets/skeletal_designs_diagrams/social_media_profile_load_skeleton_example.mp4 differ diff --git a/src/assets/skeletal_designs_diagrams/speedpatterns_skeletal_design_layout_shift_example.mp4 b/src/assets/skeletal_designs_diagrams/speedpatterns_skeletal_design_layout_shift_example.mp4 new file mode 100644 index 0000000..4ee8a11 Binary files /dev/null and b/src/assets/skeletal_designs_diagrams/speedpatterns_skeletal_design_layout_shift_example.mp4 differ diff --git a/src/assets/skeletal_designs_diagrams/spsd_loading_elements_example.mp4 b/src/assets/skeletal_designs_diagrams/spsd_loading_elements_example.mp4 new file mode 100644 index 0000000..af79c9a Binary files /dev/null and b/src/assets/skeletal_designs_diagrams/spsd_loading_elements_example.mp4 differ diff --git a/src/assets/skeletal_designs_diagrams/spsd_loading_elements_example_320wide.mp4 b/src/assets/skeletal_designs_diagrams/spsd_loading_elements_example_320wide.mp4 new file mode 100644 index 0000000..dd726b8 Binary files /dev/null and b/src/assets/skeletal_designs_diagrams/spsd_loading_elements_example_320wide.mp4 differ diff --git a/src/assets/skeletal_designs_diagrams/spsd_social_media_feed_diagram_2image.mp4 b/src/assets/skeletal_designs_diagrams/spsd_social_media_feed_diagram_2image.mp4 new file mode 100644 index 0000000..3a6e412 Binary files /dev/null and b/src/assets/skeletal_designs_diagrams/spsd_social_media_feed_diagram_2image.mp4 differ diff --git a/src/assets/skeletal_designs_diagrams/spsd_social_media_feed_gray_boxes.mp4 b/src/assets/skeletal_designs_diagrams/spsd_social_media_feed_gray_boxes.mp4 new file mode 100644 index 0000000..4cf1310 Binary files /dev/null and b/src/assets/skeletal_designs_diagrams/spsd_social_media_feed_gray_boxes.mp4 differ diff --git a/src/assets/skeletal_designs_diagrams/spsd_social_media_feed_shorter_gray_boxes.mp4 b/src/assets/skeletal_designs_diagrams/spsd_social_media_feed_shorter_gray_boxes.mp4 new file mode 100644 index 0000000..fa56c05 Binary files /dev/null and b/src/assets/skeletal_designs_diagrams/spsd_social_media_feed_shorter_gray_boxes.mp4 differ diff --git a/src/patterns/dont_use_spinners.md b/src/patterns/dont_use_spinners.md new file mode 100644 index 0000000..6a2df9c --- /dev/null +++ b/src/patterns/dont_use_spinners.md @@ -0,0 +1,39 @@ +--- +layout: layout.njk +title: Don't use Spinners +tags: pattern +thumbnail: /assets/favicon.png +--- + +
+Progress indication is sometimes needed for activities that can not be improved in terms of performance. + +While it is tempting to use a staple of progress indication, so called "spinner", it is unwise to do so as it has several problems: + +shape without beginning and end doesn't let user estimate completion time +animation resets direction after full rotation reinforcing its "infinite" nature further frustrating the user +provides no user feedback over what to expect next leaving user in suspense +Linear versions of infinite animated elements solve some problems of circular spinners, but do not really contribute much of the value anyway. + +The only message spinners convey is that you, as creator of the website is aware that your site is slow, but didn't want to do anything about it. +
+ ++Deliberately design experiences that do progress indication without resorting to literal progress indicators. Do not let spinners to be used as a generic placeholder for speed design or developers will utilize it without even consulting product or design teams. + +Several techniques can be used as progress indication, see "skeletal designs" and "masking slowness with animation". +
+ ++Mobile Design Details: Avoid The Spinner by Luke Wroblewsky +
\ No newline at end of file diff --git a/src/patterns/skeletal_designs.md b/src/patterns/skeletal_designs.md new file mode 100644 index 0000000..6a4e6e5 --- /dev/null +++ b/src/patterns/skeletal_designs.md @@ -0,0 +1,114 @@ +--- +layout: layout.njk +title: Skeletal Designs +tags: pattern +thumbnail: /assets/skeletal_design_perception_time_diagram.svg +--- +Technique introduced by Luke Wroblewsky and used by many sites, including Facebook's and LinkedIn's newsfeeds can be utilized to indicate progress and provide visual cue to what user should expect reducing cognitive load and user's frustration. + + +# {{ title }} + +Technique introduced by Luke Wroblewsky and used by many sites, including Facebook's and LinkedIn's newsfeeds can be utilized to indicate progress and provide visual cue to what user should expect reducing cognitive load and user's frustration. + +## In-Progress State + +This technique allows the *in-progress state* of the page to be helpful to user-experience, rather than a hinderance. + +Defining the in-progress state should be a delibarate part of the design process. + +## Why this is needed + +This solves the problem of the empty screen: instead of having to wait for data to show up, the user can see visual cues and information about the page's content before the actual data has arrived.
+ +These cues can be multiple things:
+ +Why are zones important? +They allow users to do a first pass and understand the structure of the page ahead of time, which allows for easier navigation of the data once the page has fully loaded.
+ ++Cumulative Layout Shift (CLS) metric that is part of Core Web Vitals is a measure of layout shift and is useful for tracking it for both skeletal designs and during regular page load. +
+