SlideShare a Scribd company logo
1 of 142
Download to read offline
Shehet Gregory
Grammarly
Treasure hunt in the land of
Reactive frameworks
• Software Engineer at
• Front-End Digest on
Shehet
Gregory
Treasure hunt in the land of
Reactive frameworks
STOP GEEK?
Few animations
Blank slides
But I have a STICKERS!!!
Whoami?
Grammarly
Vue.js -> React.js
History 2014-2015
Flux vs ReFlux
History 2014-2015
EventEmitter?
History
Inspiration
Architecture?
MV**?
Anarchy
War
ReFlux Flux
Dan Abramov
@dan_abramov
Redux
JS + ELM = Redux
Immutable data
• State snapshots
• Replayable actions
• State hydration
• Traceability
• Time travelling
Silver bullet
Goodbye Flux
Demo. Todo?
Redux 10 Todo List Demo
What Inside?
Redux 100000
Todo List Demo
Results
Add Todo (ms) Toggle Todo (ms)
Redux 2187 887
Stop. Redux?
Need to fix our bullet
Redux Connect?
React?
Andrew Clark
@acdlite
https://github.com/acdlite/react-fiber-architecture
React Next
Fiber? Not ready.
Try to decouple state
const	initialState	=	{	

		todos:	[]	

}	
const	initialState	=	{	

		todos:	[],	

		completedNumber:	0	

}		
//		Todo	component	State		


this.state	=	{	

		completed:	false	

}
Try to decouple state
const	initialState	=	{	

		todos:	[]	

}	
const	initialState	=	{	

		todos:	[],	

		completedNumber:	0	

}		
//		Todo	component	State		


this.state	=	{	

		completed:	false	

}
Try to decouple state
const	initialState	=	{	

		todos:	[]	

}	
const	initialState	=	{	

		todos:	[],	

		completedNumber:	0	

}		
//		Todo	component	State		


this.state	=	{	

		completed:	false	

}
Not bad
Results
Add Todo (ms) Toggle Todo (ms)
Redux 2187 887
Redux decouple state 860 49
Add todo x2.5
Toggle todo x18
Redux decouple vs Redux
Stop. Is it Redux?
React 100000
Todo List Demo
Results
Add Todo (ms) Toggle Todo (ms)
Redux 2187 887
Redux decouple state 860 49
React 845 37
Add todo 15 ms
Toggle todo 12 ms
React vs Redux decouple
Michel Weststrate
@mweststrate
MobX
MobX 100000
Todo List Demo
Results
Add Todo (ms) Toggle Todo (ms)
Redux 2187 887
Redux decouple state 860 49
React 845 37
MobX 905 45
Results
Add Todo (ms) Toggle Todo (ms)
Redux 2187 887
Redux decouple state 860 49
React 845 37
MobX 905 45
Add todo x2.4
Toggle todo x19
MobX vs Redux
Add todo 60 ms
Toggle todo 8 ms
MobX vs React
Magic?
Observable, Mutable data
• Excels at complex, coupled domains
• And complex, deep calculations
• Mimimal boilerplate
• Efficient
• Unopinionated
• Encourages strong typing
How it works?
Todo Model and
@observable
class	TodoModel	{	

				@observable	id	

				@observable	text	

				@observable	completed	

		

				constructor(id,	text)	{	

								this.id	=	id	

								this.text	=	text	

								this.completed	=	false	

				}	

		

				toggleTodo()	{	

								this.completed	=	!this.completed	

				}	

					

}
Todo Model and
@observable
class	TodoModel	{	

				@observable	id	

				@observable	text	

				@observable	completed	

		

				constructor(id,	text)	{	

								this.id	=	id	

								this.text	=	text	

								this.completed	=	false	

				}	

		

				toggleTodo()	{	

								this.completed	=	!this.completed	

				}	

					

}
Todo Model and
@observable
class	TodoModel	{	

				@observable	id	

				@observable	text	

				@observable	completed	

		

				constructor(id,	text)	{	

								this.id	=	id	

								this.text	=	text	

								this.completed	=	false	

				}	

		

				toggleTodo()	{	

								this.completed	=	!this.completed	

				}	

					

}
Todo Component
with @observer
@observer	class	Todo	extends	Component	{	

		

		render()	{	

				return	(	

						<li	

								onClick={this.props.todo.toggleTodo}	

								style	=	{{	

										textDecoration:	this.props.todo.completed	?	'line-through'	:	'none'	

								}}>	

								{	this.props.todo.text}	

						</li>	

				)	

		}	

			

}
Todo Component
with @observer
@observer	class	Todo	extends	Component	{	

		

		render()	{	

				return	(	

						<li	

								onClick={this.props.todo.toggleTodo}	

								style	=	{{	

										textDecoration:	this.props.todo.completed	?	'line-through'	:	'none'	

								}}>	

								{	this.props.todo.text}	

						</li>	

				)	

		}	

			

}
@observable?
No magic.
Only abstraction.
Redux
Predictability through transactional state
MobX
Simplicity through minimally defined,
automatically derived state
by @mweststrate
Second popular state
management
30% less code
Redux 208
MobX 157
Stop! Hollywar!
Our silver bullet!
redux-actions
redux-act
…
MobX 100000 with DevTool
Todo List Demo
Read more
https://mobxjs.github.io/mobx/
npm install mobx mobx-react
yarn add mobx mobx-react
npm install mobx mobx-react
Redux & MobX
Immutable & Mutable
Data
MobX-State-Tree
Benefit
•snapshot-able
•state container
•replayable actions
•efficient
•transparent reactive derivations
•patches
•middleware
•references
•dependency injection
MobX-State-Tree-Redux 100000
Todo List Demo
Stack
• redux actions
• redux dispatching
• redux provider & connect
• redux devtools
• redux store
• redux reducers
• mobx-state-tree factories
• mobx-state-tree actions
Redux? MobX?
How it works?
createFactory
const	TodoStore	=	createFactory({	

		todos:	arrayOf(Todo),	

		

		findTodoById:	function	(id)	{	

				return	this.todos.find(todo	=>	todo.id	===	id)	

		},	

		

		[ADD_TODO]:	action(function	({text})	{	

				this.todos.unshift({	

						id:	nextTodoId++,	

						text	

				})	

		}),	

		

		[TOGGLE_TODO]:	action(function	({id})	{	

				const	todo	=	this.findTodoById(id)	

				todo.completed	=	!todo.completed	

		})	

		

})
createFactory
const	TodoStore	=	createFactory({	

		todos:	arrayOf(Todo),	

		

		findTodoById:	function	(id)	{	

				return	this.todos.find(todo	=>	todo.id	===	id)	

		},	

		

		[ADD_TODO]:	action(function	({text})	{	

				this.todos.unshift({	

						id:	nextTodoId++,	

						text	

				})	

		}),	

		

		[TOGGLE_TODO]:	action(function	({id})	{	

				const	todo	=	this.findTodoById(id)	

				todo.completed	=	!todo.completed	

		})	

		

})
Mock Store
const	todos	=	window.todos	=	todosFactory(initialState)	

const	store	=	asReduxStore(todos)

connectReduxDevtools(todos)	

		

Mock Store
const	todos	=	window.todos	=	todosFactory(initialState)	

const	store	=	asReduxStore(todos)

connectReduxDevtools(todos)	

		

Mock Store
const	todos	=	window.todos	=	todosFactory(initialState)	

const	store	=	asReduxStore(todos)

connectReduxDevtools(todos)	

		

Results
Add Todo (ms) Toggle Todo (ms)
Redux 2187 887
Redux decouple state 860 49
React 845 37
MobX 905 45
MobX State Tree Redux 3813 835
Results
Add Todo (ms) Toggle Todo (ms)
Redux 2187 887
Redux decouple state 860 49
React 845 37
MobX 905 45
MobX State Tree Redux 3813 835
Add todo x1.75
Toggle todo 52 ms
MobX State Tree Redux vs Redux
Read more
https://github.com/mobxjs/mobx-state-tree
yarn add mobx-state-tree
What about FRP?
Vesa Karvonen
@VesaKarvonen
Calmm-js
Bacon or Kefir?
BRAL
BACON REACTIVE ATOM LENS
KRAL
KEFIR REACTIVE ATOM LENS
Bral 10000
Todo List Demo
Kral 10000
Todo List Demo
Slowwwwly…..
Problem
find(t	=>	t.id	===	id)
List to Map
Kefir is faster
Kral 100000
Todo List Demo
Results
Add Todo (ms) Toggle Todo (ms)
Redux 2187 887
Redux decouple state 860 49
React 845 37
MobX 905 45
MobX State Tree Redux 3813 835
KRAL 1467 253
Results
Add Todo (ms) Toggle Todo (ms)
Redux 2187 887
Redux decouple state 860 49
React 845 37
MobX 905 45
MobX State Tree Redux 3813 835
KRAL 1467 253
Add todo x2.4
Toggle todo x3.5
KRAL vs Redux
Add todo x1.6 (562 ms)
Toggle todo x5.6 (208 ms)
KRAL vs MobX
Atom
const	todo	=	Atom({	text:	'Some	text',	completed:	false	})	

		

todo.get()	

//	{	text:	"Some	text",	completed:	false	}	

	

		

todo.view('text').get()	

//	'Some	text'	

	

		

todo.view('text').set('Another	text')	

//	'Another	text'	

	

		

todo.view('completed').modify(completed	=>	!completed)	

//	false	

		

	

Atom .get()/set()
const	todo	=	Atom({	text:	'Some	text',	completed:	false	})	

		

todo.get()	

//	{	text:	"Some	text",	completed:	false	}	

	

		

todo.view('text').get()	

//	'Some	text'	

	

		

todo.view('text').set('Another	text')	

//	'Another	text'	

	

		

todo.view('completed').modify(completed	=>	!completed)	

//	false	

		

	

Lens/View
const	todo	=	Atom({	text:	'Some	text',	completed:	false	})	

		

todo.get()	

//	{	text:	"Some	text",	completed:	false	}	

	

		

todo.view('text').get()	

//	'Some	text'	

	

		

todo.view('text').set('Another	text')	

//	'Another	text'

	

		

todo.view('completed').modify(completed	=>	!completed)	

//	false	

		

	

Atom .modify()
const	todo	=	Atom({	text:	'Some	text',	completed:	false	})	

		

todo.get()	

//	{	text:	"Some	text",	completed:	false	}	

	

		

todo.view('text').get()	

//	'Some	text'	

	

		

todo.view('text').set('Another	text')	

//	'Another	text'	

	

		

todo.view('completed').modify(completed	=>	!completed)	

//	false	

		

	

Reactive HTML
const	Todo	=	({	todo	})	=>	

		<K.li	

		

				onClick={	()	=>	todo	

						.view('completed')	

						.modify(completed	=>	!completed)	

				}	

					

				style={{	

						textDecoration:	todo	

								.view('completed')	

								.map(completed	=>	completed	?	'line-through'	:	'none')	

				}}	

		

		>	

		

				{	todo.view('text')	}	

		

		</K.li>	

		

Reactive HTML
const	Todo	=	({	todo	})	=>	

		<K.li	

		

				onClick={	()	=>	todo	

						.view('completed')	

						.modify(completed	=>	!completed)	

				}	

					

				style={{	

						textDecoration:	todo	

								.view('completed')	

								.map(completed	=>	completed	?	'line-through'	:	'none')	

				}}	

		

		>	

		

				{	todo.view('text')	}	

		

		</K.li>	

		

Reactive HTML
const	Todo	=	({	todo	})	=>	

		<K.li	

		

				onClick={	()	=>	todo	

						.view('completed')	

						.modify(completed	=>	!completed)	

				}	

					

				style={{	

						textDecoration:	todo	

								.view('completed')	

								.map(completed	=>	completed	?	'line-through'	:	'none')	

				}}	

		

		>	

		

				{	todo.view('text')	}	

		

		</K.li>	

		

Reactive HTML
const	Todo	=	({	todo	})	=>	

		<K.li	

		

				onClick={	()	=>	todo	

						.view('completed')	

						.modify(completed	=>	!completed)	

				}	

					

				style={{	

						textDecoration:	todo	

								.view('completed')	

								.map(completed	=>	completed	?	'line-through'	:	'none')	

				}}	

		

		>	

		

				{	todo.view('text')	}	

		

		</K.li>	

		

Kral(Kefir) K*
Bral (Bacon) B*
Welcome Karet
import	React	from	'karet'
Karet Todo
const	Todo	=	({	todo	})	=>	

		<li	

				onClick={	()	=>	todo	

						.view('completed')	

						.modify(completed	=>	!completed)	

				}	

				style={{	

						textDecoration:	todo	

								.view('completed')	

								.map(completed	=>	completed	?	'line-through'	:	'none'),	

						cursor:	'pointer'	

				}}	

		>	

				{	todo.view('text')	}	

		</li>	

		

Karet 100000
Todo List Demo
Results
Add Todo (ms) Toggle Todo (ms)
Redux 2187 887
Redux decouple state 860 49
React 845 37
MobX 905 45
MobX State Tree Redux 3813 835
KRAL 1467 253
Karet 1140 167
Results
Add Todo (ms) Toggle Todo (ms)
Redux 2187 887
Redux decouple state 860 49
React 845 37
MobX 905 45
MobX State Tree Redux 3813 835
KRAL 1467 253
Karet 1140 167
Add todo x1.9 (1024 ms)
Toggle todo x5.3
Karet vs Redux
Add todo x1.25 (235 ms)
Toggle todo x3.7 (132 ms)
KRAL vs MobX
Add todo x1.28 (327 ms)
Toggle todo x3.7 (122 ms)
Karet vs KRAL
Benefits
• Immutable data
• Observables
• Optimized HTML rendering
yarn add kral-* karate
Read more
https://github.com/calmm-js
Results
Add Todo (ms) Toggle Todo (ms)
React 845 37
Redux decouple state 860 49
MobX 905 45
Karet 1140 167
KRAL 1467 253
Redux 2187 887
MobX State Tree Redux 3813 835
Results
Add Todo (ms) Toggle Todo (ms)
React 845 37
MobX 905 45
Karet 1140 167
KRAL 1467 253
Redux 2187 887
Results
Add Todo (ms) Toggle Todo (ms)
MobX 905 45
Karet (KRAL) 1140 167
Redux 2187 887
Back to React
JS is Overhype
What is good or bad?
React + View = ❤
Architecture?
Pure Functions
Actions
State management?
Mutabel vs Immutable
Observer
View Update
Observable
Components
MobX @4.0
<Observer>	

		{	()	=>	<div>{this.props.observer}</div>	}	

</Observer>	

		

Inspiration
Try to code your
architecture
MobX–Reactor
https://github.com/amsb/mobx-reactor
MobX inspired by redux, react-redux and redux-saga
What next?
React.js Conf 2016 - Andrew Clark - Back to React
https://www.youtube.com/watch?v=ZVYVtUFDf28
What next?
You Might Not Need Redux - Dan Abramov
https://medium.com/@dan_abramov/you-might-not-need-redux-be46360cf367
Think about your
product and architecture
Thank you!
Questions are welcome
@AGambit95

More Related Content

What's hot

Using React with Grails 3
Using React with Grails 3Using React with Grails 3
Using React with Grails 3
Zachary Klein
 

What's hot (20)

Fullstack End-to-end test automation with Node.js, one year later
Fullstack End-to-end test automation with Node.js, one year laterFullstack End-to-end test automation with Node.js, one year later
Fullstack End-to-end test automation with Node.js, one year later
 
JavaFX JumpStart @JavaOne 2016
JavaFX JumpStart @JavaOne 2016JavaFX JumpStart @JavaOne 2016
JavaFX JumpStart @JavaOne 2016
 
Игорь Фесенко "Web Apps Performance & JavaScript Compilers"
Игорь Фесенко "Web Apps Performance & JavaScript Compilers"Игорь Фесенко "Web Apps Performance & JavaScript Compilers"
Игорь Фесенко "Web Apps Performance & JavaScript Compilers"
 
Play Framework workshop: full stack java web app
Play Framework workshop: full stack java web appPlay Framework workshop: full stack java web app
Play Framework workshop: full stack java web app
 
Using JHipster for generating Angular/Spring Boot apps
Using JHipster for generating Angular/Spring Boot appsUsing JHipster for generating Angular/Spring Boot apps
Using JHipster for generating Angular/Spring Boot apps
 
Conquering AngularJS Limitations
Conquering AngularJS LimitationsConquering AngularJS Limitations
Conquering AngularJS Limitations
 
Async task, threads, pools, and executors oh my!
Async task, threads, pools, and executors oh my!Async task, threads, pools, and executors oh my!
Async task, threads, pools, and executors oh my!
 
Automated Frontend Testing
Automated Frontend TestingAutomated Frontend Testing
Automated Frontend Testing
 
GlobalLogic Test Automation Online TechTalk “Playwright — A New Hope”
GlobalLogic Test Automation Online TechTalk “Playwright — A New Hope”GlobalLogic Test Automation Online TechTalk “Playwright — A New Hope”
GlobalLogic Test Automation Online TechTalk “Playwright — A New Hope”
 
Seven Versions of One Web Application
Seven Versions of One Web ApplicationSeven Versions of One Web Application
Seven Versions of One Web Application
 
Node.js vs Play Framework (with Japanese subtitles)
Node.js vs Play Framework (with Japanese subtitles)Node.js vs Play Framework (with Japanese subtitles)
Node.js vs Play Framework (with Japanese subtitles)
 
Using React with Grails 3
Using React with Grails 3Using React with Grails 3
Using React with Grails 3
 
Marvel of Annotation Preprocessing in Java by Alexey Buzdin
Marvel of Annotation Preprocessing in Java by Alexey BuzdinMarvel of Annotation Preprocessing in Java by Alexey Buzdin
Marvel of Annotation Preprocessing in Java by Alexey Buzdin
 
High Performance JavaScript - jQuery Conference SF Bay Area 2010
High Performance JavaScript - jQuery Conference SF Bay Area 2010High Performance JavaScript - jQuery Conference SF Bay Area 2010
High Performance JavaScript - jQuery Conference SF Bay Area 2010
 
vJUG - The JavaFX Ecosystem
vJUG - The JavaFX EcosystemvJUG - The JavaFX Ecosystem
vJUG - The JavaFX Ecosystem
 
Night Watch with QA
Night Watch with QANight Watch with QA
Night Watch with QA
 
React Native in Production
React Native in ProductionReact Native in Production
React Native in Production
 
Integration Testing with Selenium
Integration Testing with SeleniumIntegration Testing with Selenium
Integration Testing with Selenium
 
Android Thread
Android ThreadAndroid Thread
Android Thread
 
Alexander Mostovenko "'Devide at impera' with GraphQL and SSR"
Alexander Mostovenko "'Devide at impera' with GraphQL and SSR"Alexander Mostovenko "'Devide at impera' with GraphQL and SSR"
Alexander Mostovenko "'Devide at impera' with GraphQL and SSR"
 

Viewers also liked

Алексей Волков "Еще несколько слов об архитектуре"
Алексей Волков "Еще несколько слов об архитектуре"Алексей Волков "Еще несколько слов об архитектуре"
Алексей Волков "Еще несколько слов об архитектуре"
Fwdays
 
Илья Климов "О драконах ни слова"
Илья Климов "О драконах ни слова"Илья Климов "О драконах ни слова"
Илья Климов "О драконах ни слова"
Fwdays
 

Viewers also liked (20)

Борис Могила "Isomorphic React apps in production"
Борис Могила "Isomorphic React apps in production"Борис Могила "Isomorphic React apps in production"
Борис Могила "Isomorphic React apps in production"
 
Юлия Пучнина "PhaserJS for advertisement: игры внутри баннеров"
Юлия Пучнина "PhaserJS for advertisement: игры внутри баннеров"Юлия Пучнина "PhaserJS for advertisement: игры внутри баннеров"
Юлия Пучнина "PhaserJS for advertisement: игры внутри баннеров"
 
Сергей Калинец "Стероиды для Дотнетчика"
Сергей Калинец "Стероиды для Дотнетчика"Сергей Калинец "Стероиды для Дотнетчика"
Сергей Калинец "Стероиды для Дотнетчика"
 
Владимир Никонов "Вызовы при разработке enterprise продукта"
Владимир Никонов "Вызовы при разработке enterprise продукта"Владимир Никонов "Вызовы при разработке enterprise продукта"
Владимир Никонов "Вызовы при разработке enterprise продукта"
 
Юрий Лучанинов "Критерии выбора JS-фреймворков"
Юрий Лучанинов "Критерии выбора JS-фреймворков"Юрий Лучанинов "Критерии выбора JS-фреймворков"
Юрий Лучанинов "Критерии выбора JS-фреймворков"
 
Алексей Волков "Еще несколько слов об архитектуре"
Алексей Волков "Еще несколько слов об архитектуре"Алексей Волков "Еще несколько слов об архитектуре"
Алексей Волков "Еще несколько слов об архитектуре"
 
Алексей Косинский "React Native vs. React+WebView"
Алексей Косинский "React Native vs. React+WebView"Алексей Косинский "React Native vs. React+WebView"
Алексей Косинский "React Native vs. React+WebView"
 
Игорь Фесенко "What’s New in C# 7.0"
Игорь Фесенко "What’s New in C# 7.0"Игорь Фесенко "What’s New in C# 7.0"
Игорь Фесенко "What’s New in C# 7.0"
 
Сергей Поплавский "DeepDive в Bot платформу Microsoft. Технические аспекты ра...
Сергей Поплавский "DeepDive в Bot платформу Microsoft. Технические аспекты ра...Сергей Поплавский "DeepDive в Bot платформу Microsoft. Технические аспекты ра...
Сергей Поплавский "DeepDive в Bot платформу Microsoft. Технические аспекты ра...
 
Игорь Леонтьев "Azure Container Service: not only Docker"
Игорь Леонтьев "Azure Container Service: not only Docker"Игорь Леонтьев "Azure Container Service: not only Docker"
Игорь Леонтьев "Azure Container Service: not only Docker"
 
Евгений Остапчук "Tips&Tricks for ASP.NET MVC performance"
Евгений Остапчук "Tips&Tricks for ASP.NET MVC performance"Евгений Остапчук "Tips&Tricks for ASP.NET MVC performance"
Евгений Остапчук "Tips&Tricks for ASP.NET MVC performance"
 
Стас Султанов "Assembling Solutions with Microsoft Azure"
Стас Султанов "Assembling Solutions with Microsoft Azure"Стас Султанов "Assembling Solutions with Microsoft Azure"
Стас Султанов "Assembling Solutions with Microsoft Azure"
 
Сергей Радзыняк ".NET Microservices in Real Life"
Сергей Радзыняк ".NET Microservices in Real Life"Сергей Радзыняк ".NET Microservices in Real Life"
Сергей Радзыняк ".NET Microservices in Real Life"
 
Илья Климов "О драконах ни слова"
Илья Климов "О драконах ни слова"Илья Климов "О драконах ни слова"
Илья Климов "О драконах ни слова"
 
Сергей Калинец "Не SQL-ом единым..."
Сергей Калинец "Не SQL-ом единым..."Сергей Калинец "Не SQL-ом единым..."
Сергей Калинец "Не SQL-ом единым..."
 
"Разрушаем .NET мифы" Сергей Калинец
"Разрушаем .NET мифы" Сергей Калинец"Разрушаем .NET мифы" Сергей Калинец
"Разрушаем .NET мифы" Сергей Калинец
 
Антон Молдован "Type driven development with f#"
Антон Молдован "Type driven development with f#"Антон Молдован "Type driven development with f#"
Антон Молдован "Type driven development with f#"
 
Денис Резник "Зачем мне знать SQL и Базы Данных, ведь у меня есть ORM?"
Денис Резник "Зачем мне знать SQL и Базы Данных, ведь у меня есть ORM?"Денис Резник "Зачем мне знать SQL и Базы Данных, ведь у меня есть ORM?"
Денис Резник "Зачем мне знать SQL и Базы Данных, ведь у меня есть ORM?"
 
Евгений Напрягло ".NET Framework Hosting API Overview"
Евгений Напрягло ".NET Framework Hosting API Overview"Евгений Напрягло ".NET Framework Hosting API Overview"
Евгений Напрягло ".NET Framework Hosting API Overview"
 
Андрей Чебукин "Построение успешных API"
Андрей Чебукин "Построение успешных API"Андрей Чебукин "Построение успешных API"
Андрей Чебукин "Построение успешных API"
 

Similar to Григорий Шехет "Treasure hunt in the land of Reactive frameworks"

Handling Redis failover with ZooKeeper
Handling Redis failover with ZooKeeperHandling Redis failover with ZooKeeper
Handling Redis failover with ZooKeeper
ryanlecompte
 
Using Smalltalk for controlling robotics systems
Using Smalltalk for controlling robotics systemsUsing Smalltalk for controlling robotics systems
Using Smalltalk for controlling robotics systems
Serge Stinckwich
 

Similar to Григорий Шехет "Treasure hunt in the land of Reactive frameworks" (20)

React state management with Redux and MobX
React state management with Redux and MobXReact state management with Redux and MobX
React state management with Redux and MobX
 
Using redux
Using reduxUsing redux
Using redux
 
LeapMotion for Web with React and Flux
LeapMotion for Web with React and FluxLeapMotion for Web with React and Flux
LeapMotion for Web with React and Flux
 
Handling Redis failover with ZooKeeper
Handling Redis failover with ZooKeeperHandling Redis failover with ZooKeeper
Handling Redis failover with ZooKeeper
 
MobX intro
MobX introMobX intro
MobX intro
 
Docker in Production: How RightScale Delivers Cloud Applications
Docker in Production: How RightScale Delivers Cloud ApplicationsDocker in Production: How RightScale Delivers Cloud Applications
Docker in Production: How RightScale Delivers Cloud Applications
 
ReactJS.NET - Fast and Scalable Single Page Applications
ReactJS.NET - Fast and Scalable Single Page ApplicationsReactJS.NET - Fast and Scalable Single Page Applications
ReactJS.NET - Fast and Scalable Single Page Applications
 
Using Smalltalk for controlling robotics systems
Using Smalltalk for controlling robotics systemsUsing Smalltalk for controlling robotics systems
Using Smalltalk for controlling robotics systems
 
OpenFaaS KubeCon Zero to Serverless in 60 seconds anywhere
OpenFaaS KubeCon Zero to Serverless in 60 seconds anywhereOpenFaaS KubeCon Zero to Serverless in 60 seconds anywhere
OpenFaaS KubeCon Zero to Serverless in 60 seconds anywhere
 
What You Should Know About WebLogic Server 12c (12.2.1.2) #oow2015 #otntour2...
What You Should Know About WebLogic Server 12c (12.2.1.2)  #oow2015 #otntour2...What You Should Know About WebLogic Server 12c (12.2.1.2)  #oow2015 #otntour2...
What You Should Know About WebLogic Server 12c (12.2.1.2) #oow2015 #otntour2...
 
Node.js meetup at Palo Alto Networks Tel Aviv
Node.js meetup at Palo Alto Networks Tel AvivNode.js meetup at Palo Alto Networks Tel Aviv
Node.js meetup at Palo Alto Networks Tel Aviv
 
Docker presentasjon java bin
Docker presentasjon java binDocker presentasjon java bin
Docker presentasjon java bin
 
FreeSWITCH as a Microservice
FreeSWITCH as a MicroserviceFreeSWITCH as a Microservice
FreeSWITCH as a Microservice
 
Jaoo Michael Neale 09
Jaoo Michael Neale 09Jaoo Michael Neale 09
Jaoo Michael Neale 09
 
JavaFX Enterprise (JavaOne 2014)
JavaFX Enterprise (JavaOne 2014)JavaFX Enterprise (JavaOne 2014)
JavaFX Enterprise (JavaOne 2014)
 
JavaScript MV* Framework - Making the Right Choice
JavaScript MV* Framework - Making the Right ChoiceJavaScript MV* Framework - Making the Right Choice
JavaScript MV* Framework - Making the Right Choice
 
Fluxible
FluxibleFluxible
Fluxible
 
Кирилл Толкачев. Микросервисы: огонь, вода и девопс
Кирилл Толкачев. Микросервисы: огонь, вода и девопсКирилл Толкачев. Микросервисы: огонь, вода и девопс
Кирилл Толкачев. Микросервисы: огонь, вода и девопс
 
Cleaning your architecture with android architecture components
Cleaning your architecture with android architecture componentsCleaning your architecture with android architecture components
Cleaning your architecture with android architecture components
 
Vincit Teatime 2015.2 - Niko Kurtti: SaaSiin pa(i)nostusta
Vincit Teatime 2015.2 - Niko Kurtti: SaaSiin pa(i)nostustaVincit Teatime 2015.2 - Niko Kurtti: SaaSiin pa(i)nostusta
Vincit Teatime 2015.2 - Niko Kurtti: SaaSiin pa(i)nostusta
 

More from Fwdays

More from Fwdays (20)

"How Preply reduced ML model development time from 1 month to 1 day",Yevhen Y...
"How Preply reduced ML model development time from 1 month to 1 day",Yevhen Y..."How Preply reduced ML model development time from 1 month to 1 day",Yevhen Y...
"How Preply reduced ML model development time from 1 month to 1 day",Yevhen Y...
 
"GenAI Apps: Our Journey from Ideas to Production Excellence",Danil Topchii
"GenAI Apps: Our Journey from Ideas to Production Excellence",Danil Topchii"GenAI Apps: Our Journey from Ideas to Production Excellence",Danil Topchii
"GenAI Apps: Our Journey from Ideas to Production Excellence",Danil Topchii
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
 
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
 
"What is a RAG system and how to build it",Dmytro Spodarets
"What is a RAG system and how to build it",Dmytro Spodarets"What is a RAG system and how to build it",Dmytro Spodarets
"What is a RAG system and how to build it",Dmytro Spodarets
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
 
"Distributed graphs and microservices in Prom.ua", Maksym Kindritskyi
"Distributed graphs and microservices in Prom.ua",  Maksym Kindritskyi"Distributed graphs and microservices in Prom.ua",  Maksym Kindritskyi
"Distributed graphs and microservices in Prom.ua", Maksym Kindritskyi
 
"Rethinking the existing data loading and processing process as an ETL exampl...
"Rethinking the existing data loading and processing process as an ETL exampl..."Rethinking the existing data loading and processing process as an ETL exampl...
"Rethinking the existing data loading and processing process as an ETL exampl...
 
"How Ukrainian IT specialist can go on vacation abroad without crossing the T...
"How Ukrainian IT specialist can go on vacation abroad without crossing the T..."How Ukrainian IT specialist can go on vacation abroad without crossing the T...
"How Ukrainian IT specialist can go on vacation abroad without crossing the T...
 
"The Strength of Being Vulnerable: the experience from CIA, Tesla and Uber", ...
"The Strength of Being Vulnerable: the experience from CIA, Tesla and Uber", ..."The Strength of Being Vulnerable: the experience from CIA, Tesla and Uber", ...
"The Strength of Being Vulnerable: the experience from CIA, Tesla and Uber", ...
 
"[QUICK TALK] Radical candor: how to achieve results faster thanks to a cultu...
"[QUICK TALK] Radical candor: how to achieve results faster thanks to a cultu..."[QUICK TALK] Radical candor: how to achieve results faster thanks to a cultu...
"[QUICK TALK] Radical candor: how to achieve results faster thanks to a cultu...
 
"[QUICK TALK] PDP Plan, the only one door to raise your salary and boost care...
"[QUICK TALK] PDP Plan, the only one door to raise your salary and boost care..."[QUICK TALK] PDP Plan, the only one door to raise your salary and boost care...
"[QUICK TALK] PDP Plan, the only one door to raise your salary and boost care...
 
"4 horsemen of the apocalypse of working relationships (+ antidotes to them)"...
"4 horsemen of the apocalypse of working relationships (+ antidotes to them)"..."4 horsemen of the apocalypse of working relationships (+ antidotes to them)"...
"4 horsemen of the apocalypse of working relationships (+ antidotes to them)"...
 
"Reconnecting with Purpose: Rediscovering Job Interest after Burnout", Anast...
"Reconnecting with Purpose: Rediscovering Job Interest after Burnout",  Anast..."Reconnecting with Purpose: Rediscovering Job Interest after Burnout",  Anast...
"Reconnecting with Purpose: Rediscovering Job Interest after Burnout", Anast...
 
"Mentoring 101: How to effectively invest experience in the success of others...
"Mentoring 101: How to effectively invest experience in the success of others..."Mentoring 101: How to effectively invest experience in the success of others...
"Mentoring 101: How to effectively invest experience in the success of others...
 
"Mission (im) possible: How to get an offer in 2024?", Oleksandra Myronova
"Mission (im) possible: How to get an offer in 2024?",  Oleksandra Myronova"Mission (im) possible: How to get an offer in 2024?",  Oleksandra Myronova
"Mission (im) possible: How to get an offer in 2024?", Oleksandra Myronova
 
"Why have we learned how to package products, but not how to 'package ourselv...
"Why have we learned how to package products, but not how to 'package ourselv..."Why have we learned how to package products, but not how to 'package ourselv...
"Why have we learned how to package products, but not how to 'package ourselv...
 
"How to tame the dragon, or leadership with imposter syndrome", Oleksandr Zin...
"How to tame the dragon, or leadership with imposter syndrome", Oleksandr Zin..."How to tame the dragon, or leadership with imposter syndrome", Oleksandr Zin...
"How to tame the dragon, or leadership with imposter syndrome", Oleksandr Zin...
 

Recently uploaded

Recently uploaded (20)

Human Expert Website Manual WCAG 2.0 2.1 2.2 Audit - Digital Accessibility Au...
Human Expert Website Manual WCAG 2.0 2.1 2.2 Audit - Digital Accessibility Au...Human Expert Website Manual WCAG 2.0 2.1 2.2 Audit - Digital Accessibility Au...
Human Expert Website Manual WCAG 2.0 2.1 2.2 Audit - Digital Accessibility Au...
 
ChatGPT and Beyond - Elevating DevOps Productivity
ChatGPT and Beyond - Elevating DevOps ProductivityChatGPT and Beyond - Elevating DevOps Productivity
ChatGPT and Beyond - Elevating DevOps Productivity
 
Using IESVE for Room Loads Analysis - UK & Ireland
Using IESVE for Room Loads Analysis - UK & IrelandUsing IESVE for Room Loads Analysis - UK & Ireland
Using IESVE for Room Loads Analysis - UK & Ireland
 
The Metaverse: Are We There Yet?
The  Metaverse:    Are   We  There  Yet?The  Metaverse:    Are   We  There  Yet?
The Metaverse: Are We There Yet?
 
State of the Smart Building Startup Landscape 2024!
State of the Smart Building Startup Landscape 2024!State of the Smart Building Startup Landscape 2024!
State of the Smart Building Startup Landscape 2024!
 
Microsoft CSP Briefing Pre-Engagement - Questionnaire
Microsoft CSP Briefing Pre-Engagement - QuestionnaireMicrosoft CSP Briefing Pre-Engagement - Questionnaire
Microsoft CSP Briefing Pre-Engagement - Questionnaire
 
The Zero-ETL Approach: Enhancing Data Agility and Insight
The Zero-ETL Approach: Enhancing Data Agility and InsightThe Zero-ETL Approach: Enhancing Data Agility and Insight
The Zero-ETL Approach: Enhancing Data Agility and Insight
 
2024 May Patch Tuesday
2024 May Patch Tuesday2024 May Patch Tuesday
2024 May Patch Tuesday
 
Event-Driven Architecture Masterclass: Engineering a Robust, High-performance...
Event-Driven Architecture Masterclass: Engineering a Robust, High-performance...Event-Driven Architecture Masterclass: Engineering a Robust, High-performance...
Event-Driven Architecture Masterclass: Engineering a Robust, High-performance...
 
Frisco Automating Purchase Orders with MuleSoft IDP- May 10th, 2024.pptx.pdf
Frisco Automating Purchase Orders with MuleSoft IDP- May 10th, 2024.pptx.pdfFrisco Automating Purchase Orders with MuleSoft IDP- May 10th, 2024.pptx.pdf
Frisco Automating Purchase Orders with MuleSoft IDP- May 10th, 2024.pptx.pdf
 
Design and Development of a Provenance Capture Platform for Data Science
Design and Development of a Provenance Capture Platform for Data ScienceDesign and Development of a Provenance Capture Platform for Data Science
Design and Development of a Provenance Capture Platform for Data Science
 
Event-Driven Architecture Masterclass: Integrating Distributed Data Stores Ac...
Event-Driven Architecture Masterclass: Integrating Distributed Data Stores Ac...Event-Driven Architecture Masterclass: Integrating Distributed Data Stores Ac...
Event-Driven Architecture Masterclass: Integrating Distributed Data Stores Ac...
 
Introduction to FIDO Authentication and Passkeys.pptx
Introduction to FIDO Authentication and Passkeys.pptxIntroduction to FIDO Authentication and Passkeys.pptx
Introduction to FIDO Authentication and Passkeys.pptx
 
Observability Concepts EVERY Developer Should Know (DevOpsDays Seattle)
Observability Concepts EVERY Developer Should Know (DevOpsDays Seattle)Observability Concepts EVERY Developer Should Know (DevOpsDays Seattle)
Observability Concepts EVERY Developer Should Know (DevOpsDays Seattle)
 
AI mind or machine power point presentation
AI mind or machine power point presentationAI mind or machine power point presentation
AI mind or machine power point presentation
 
Working together SRE & Platform Engineering
Working together SRE & Platform EngineeringWorking together SRE & Platform Engineering
Working together SRE & Platform Engineering
 
Long journey of Ruby Standard library at RubyKaigi 2024
Long journey of Ruby Standard library at RubyKaigi 2024Long journey of Ruby Standard library at RubyKaigi 2024
Long journey of Ruby Standard library at RubyKaigi 2024
 
JavaScript Usage Statistics 2024 - The Ultimate Guide
JavaScript Usage Statistics 2024 - The Ultimate GuideJavaScript Usage Statistics 2024 - The Ultimate Guide
JavaScript Usage Statistics 2024 - The Ultimate Guide
 
Generative AI Use Cases and Applications.pdf
Generative AI Use Cases and Applications.pdfGenerative AI Use Cases and Applications.pdf
Generative AI Use Cases and Applications.pdf
 
UiPath manufacturing technology benefits and AI overview
UiPath manufacturing technology benefits and AI overviewUiPath manufacturing technology benefits and AI overview
UiPath manufacturing technology benefits and AI overview
 

Григорий Шехет "Treasure hunt in the land of Reactive frameworks"