Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Fault Tolerant UX

Fault Tolerant UX

Talk from EmberConf 2015.

Dan Gebhardt

March 04, 2015
Tweet

More Decks by Dan Gebhardt

Other Decks in Programming

Transcript

  1. FA U LT T O L E R A N

    T U X D A N G E B H A R D T @ d g e b
  2. FA U LT T O L E R A N

    C E U X F I R S T
  3. FA U LT T O L E R A N

    T U X = = T R A N S A C T I O N A L U X
  4. T R A N S A C T I O

    N A L U X • Atomic • Consistent • Isolated • Durable
  5. AT O M I C “ A L L O

    R N O T H I N G ”
  6. C O N S I S T E N T

    M O V E S B E T W E E N VA L I D S TAT E S
  7. I S O L AT E D A L L

    O W S C O N C U R R E N T C H A N G E S
  8. D U R A B L E C H A

    N G E S P E R S I S T
  9. A p p l i c a t i o

    n s M U S T N O T V i o l a t e t h e R u l e s o f Tr a n s a c t i o n a l U X O R E L S E
  10. FA U LT T O L E R A N

    T U X = = F O R G I V I N G U X
  11. A p p l i c a t i o

    n s S H O U L D Tr y t o P ro v i d e a F o rg i v i n g U X ~ p l e a s e ~
  12. T R A N S I T I O N

    A L P E R S I S T E N C E
  13. A S Y N C H R O N O

    U S ( N O N - B L O C K I N G ) I N T E R FA C E
  14. E N G I N E E R I N

    G FA U LT T O L E R A N C E
  15. E M B E R P R O V I

    D E S S I M P L E , E L E G A N T PAT T E R N S F O R B U I L D I N G A C O N S I S T E N T U X
  16. E M B E R D ATA P R O

    V I D E S S I M P L E , E L E G A N T PAT T E R N S F O R B U I L D I N G A C O N S I S T E N T + D U R A B L E U X
  17. E M B E R D ATA Atomic Consistent Isolated

    Durable = R E Q U I R E S C U S T O M I Z AT I O N Transitional Persistence Undo / Redo Offline Support Asynchronous Interfaces
  18. R E T H I N K A S S

    U M P T I O N S A N D P R I M I T I V E S
  19. A S TA N D A L O N E

    L I B R A RY F O R C O O R D I N AT I N G A C C E S S T O D ATA S O U R C E S A N D K E E P I N G T H E I R C O N T E N T S S Y N C H R O N I Z E D .
  20. 1 2 3 4 5 6 7 ??? P P

    = Promise SYNCHRONOUS EVENT HANDLING
  21. PROMISE-AWARE EVENTS 1 2 3 4 5 6 7 8

    P P P P P = Promise Async Blocking
  22. PROMISE-AWARE EVENTS 1 2 3 ??? 4 5 6 7

    P = Promise P P Async Non-Blocking
  23. { } MEMORY JSON API LOCAL STORAGE + MORE +

    ORBIT COMMON LIB 
 SOURCES
  24. EO.Store all filter retrieve ! find add remove patch findLink

    addLink removeLink { } { } Synchronous Asynchronous ember-orbit
  25. Star = EO.Model.extend({! name: attr('string'),! planets: hasMany('planet', {inverse: 'sun'})! });!

    ! Planet = EO.Model.extend({! name: attr('string'),! classification: attr('string'),! sun: hasOne('star', {inverse: 'planets'})! }); EO.Model ember-orbit
  26. A P P L I C AT I O N

    PAT T E R N S