in the Age of
Sarah Drasner
Source: Wired for Story
User attention span is short.
until dropoff
Amazon has discovered that for every one second delay, conversions dropped by 7%. If you sell $100k per day, that’s an annual loss of $2.5m.
Walmart has found that it gains 1% revenue increase for every 100ms of improvement.
? Is this useful ?
? Is this capitivating ?
? Is it easy enough ?
Best case scenario!
Also helps track what validation looks like:
Google projects are encouraged to find ONE goal.
Aligns the entire team to the same goal
Reduces friction
Kathy Sierra- Badass: Making Users Awesome
source: Aaron Gustafson
The good, the bad, the ugly
the bad
Source: The Man Who Lied to his Laptop
the good
the good
Attaches to limbic system
Learned behaviors
Tensorflow:
The good AND the bad
Relatable story creates empathy
WaveApp Loading experience
p5.js - Coding Train w/ Daniel Shiffman
great case for SVG
Entire filesize: 6KB!
or hints
Consider how things look to your user
Sets up a world beforehand,
so that it can be changed.
This pen.
tl.call(addAttr);
tl.fromTo(feTurb, 1, {
attr: {
baseFrequency: '0 0'
}
}, {
attr: {
baseFrequency: '0.8 1.2'
},
ease: Sine.easeOut
});
tl.to(feTurb, 1, {
attr: {
baseFrequency: '0 0'
},
ease: Sine.easeIn
});
tl.call(removeAttr);
Surprise with technique
// filter attribute helpers
function addAttr() {
feTurb.setAttribute('baseFrequency', '0 0');
}
function removeAttr() {
var applyFilter = document.getElementById("applyFilter");
applyFilter.removeAttribute("filter");
}
Surprise with technique
Leo Leung
Encapsulate what is changing declaratively
Vue's <transition> component
Sugar! Like in-out modes
Without in-out modes
<transition name="flip" mode="out-in">
<slot v-if="!isShowing"></slot>
<img v-else src="https://s3-us-west-2.amazonaws.com/s.cdpn.io/28963/cartoonvideo14.jpeg" />
</transition>
HTML
.flip-enter-active {
transition: all .2s cubic-bezier(0.55, 0.085, 0.68, 0.53);
}
CSS
Geoff Graham:
On Writing Feature Requirements
Encapsulate what is changing - Vue
Encapsulate what is changing- Vuex/Redux
export const store = new Vuex.Store({
state: {
showWeather: false,
template: 0
},
mutations: {
toggle: state => state.showWeather = !state.showWeather,
updateTemplate: (state) => {
state.showWeather = !state.showWeather;
state.template = (state.template + 1) % 4;
}
}
});
Watchers/Observables/RxJS
David Khourshid:
<div id="app" @mousemove="coordinates">
coordinates(e) {
...
this.startArms.progress(1 - (e.clientX / walleCoords)).pause();
}
HTML (Vue Component)
JavaScript
WebGL/Three.js
Fictional worlds engage emotion systems while disengaging action systems (just as dreams do)
so many options
Spatial or otherwise
Make the user the character in the story
Stories and empathy
Real-time data
An Interactive Visualization of
Every Line in Hamilton
d3.js and React
But wait...
is there more?
The best way to make your site compelling is by actually making it compelling.
@sarah_edo on twitter