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
0
39
A new state of mind: Building better web apps with finite-state machines
Adam Michael Daw
May 27, 2020
Tweet
Share
Other Decks in Programming
See All in Programming
PipeCDのプラグイン化で目指すところ
warashi
1
240
今ならAmazon ECSのサービス間通信をどう選ぶか / Selection of ECS Interservice Communication 2025
tkikuc
21
3.8k
Kotlin エンジニアへ送る:Swift 案件に参加させられる日に備えて~似てるけど色々違う Swift の仕様 / from Kotlin to Swift
lovee
1
260
初学者でも今すぐできる、Claude Codeの生産性を10倍上げるTips
s4yuba
5
4.3k
技術同人誌をMCP Serverにしてみた
74th
1
530
Cursor AI Agentと伴走する アプリケーションの高速リプレイス
daisuketakeda
1
130
LINEヤフー データグループ紹介
lycorp_recruit_jp
0
1.7k
Flutterで備える!Accessibility Nutrition Labels完全ガイド
yuukiw00w
0
140
Rubyでやりたい駆動開発 / Ruby driven development
chobishiba
1
530
NPOでのDevinの活用
codeforeveryone
0
690
What Spring Developers Should Know About Jakarta EE
ivargrimstad
0
380
PHPでWebSocketサーバーを実装しよう2025
kubotak
0
250
Featured
See All Featured
Why Our Code Smells
bkeepers
PRO
337
57k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
34
3.1k
BBQ
matthewcrist
89
9.7k
Agile that works and the tools we love
rasmusluckow
329
21k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
29
1.8k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
35
2.4k
What's in a price? How to price your products and services
michaelherold
246
12k
Measuring & Analyzing Core Web Vitals
bluesmoon
7
500
Designing for Performance
lara
609
69k
Fashionably flexible responsive web design (full day workshop)
malarkey
407
66k
Learning to Love Humans: Emotional Interface Design
aarron
273
40k
KATA
mclloyd
30
14k
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?