Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
A new state of mind: Building better web apps w...
Search
Adam Michael Daw
May 27, 2020
Programming
43
0
Share
A new state of mind: Building better web apps with finite-state machines
Adam Michael Daw
May 27, 2020
Other Decks in Programming
See All in Programming
L’IA au service des devs : Anatomie d'un assistant de Code Review
toham
0
160
20260315 AWSなんもわからん🥲
chiilog
2
180
Feature Toggle は捨てやすく使おう
gennei
0
400
今こそ押さえておきたい アマゾンウェブサービス(AWS)の データベースの基礎 おもクラ #6版
satoshi256kbyte
1
220
Strategy for Finding a Problem for OSS: With Real Examples
kibitan
0
130
PHP でエミュレータを自作して Ubuntu を動かそう
m3m0r7
PRO
2
160
生成 AI 時代のスナップショットテストってやつを見せてあげますよ(α版)
ojun9
0
330
Claude Codeログ基盤の構築
giginet
PRO
7
3.8k
「効かない!」依存性注入(DI)を活用したAPI Platformのエラーハンドリング奮闘記
mkmk884
0
280
Xdebug と IDE による デバッグ実行の仕組みを見る / Exploring-How-Debugging-Works-with-Xdebug-and-an-IDE
shin1x1
0
290
Migration to Signals, Signal Forms, Resource API, and NgRx Signal Store @Angular Days 03/2026 Munich
manfredsteyer
PRO
0
210
Cyrius ーLinux非依存にコンテナをネイティブ実行する専用OSー
n4mlz
0
270
Featured
See All Featured
Un-Boring Meetings
codingconduct
0
250
Lightning Talk: Beautiful Slides for Beginners
inesmontani
PRO
1
500
Chasing Engaging Ingredients in Design
codingconduct
0
160
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
32
2.6k
Tips & Tricks on How to Get Your First Job In Tech
honzajavorek
1
470
Optimizing for Happiness
mojombo
378
71k
How to Build an AI Search Optimization Roadmap - Criteria and Steps to Take #SEOIRL
aleyda
1
2k
Code Reviewing Like a Champion
maltzj
528
40k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
141
35k
Taking LLMs out of the black box: A practical guide to human-in-the-loop distillation
inesmontani
PRO
3
2.1k
Typedesign – Prime Four
hannesfritz
42
3k
What's in a price? How to price your products and services
michaelherold
247
13k
Transcript
A NEW STATE OF MIND BUILDING BETTER WEB APPS WITH
FINITE-STATE MACHINES
ADAM DAW TWITTER: @ADAMDAW GITHUB: ADAMDAW
WHAT IS A FINITE-STATE MACHINE? ANY (ABSTRACT) MACHINE THAT CAN
BE IN EXACTLY ONE OF A FINITE NUMBER OF STATES AT A GIVEN TIME.
THINGS TO KNOW • NOT NEW (THOUGH RECENTLY GAINING POPULARITY)
• NOT CODE (THOUGH MANY IMPLEMENTATIONS HAVE BEEN INTRODUCED) • NOT HARD (THOUGH STARTING TO THINK OF THINGS IN THIS FASHION MIGHT BE)
EXAMPLES IN THE WILD A CHECKBOX (2 STATES: CHECKED, UNCHECKED)
A DOOR (2 STATES: OPEN, CLOSED) A PROMISE (3 STATES: PENDING, REJECTED, FULFILLED)
WHY STATE MACHINES? • IMPLICIT STATE • Booleans such as
(loading/doneloading) • EXPLICIT STATE • states: { loading: {…}, error: {…}, idle: {…}, success: {…}} • CLEANER CONCEPTUALIZATION OF BEHAVIOUR • BETTER MAPPING OF TRANSITIONS • PARADIGM SHIFT: EVENT-ACTION TO EVENT-STATE-ACTION
VISUALIZING STATE • 2 STATES : • Locked (initial) •
Coin: un-locked • Un-locked • Push: locked
VISUALIZING STATE PT 2 • 3 STATES : • Idle
(initial) • Click : fetching • Fetching • Failure: error • Success: idle • Error • Retry: fetching
LET’S SEE IT IN CODE!
SUMMARY • CLEANER TRANSITIONS BETWEEN STATES • BETTER UNDERSTANDING OF
BEHAVIOUR • LESS CODE TO COVER FOR TESTING • Can automate integration testing • MOVE FROM EVENT-ACTION TO EVENT-STATE-ACTION TODAY!
Q & A?