SlideShare ist ein Scribd-Unternehmen logo
1 von 84
@techgirlwonder
she/her
hannah@carbon
ve.com
Personal
Anecdote: I have
a dog
HANNAH HOWARD #ABOUTME
InfoQ.com: News & Community Site
• Over 1,000,000 software developers, architects and CTOs read the site world-
wide every month
• 250,000 senior developers subscribe to our weekly newsletter
• Published in 4 languages (English, Chinese, Japanese and Brazilian
Portuguese)
• Post content from our QCon conferences
• 2 dedicated podcast channels: The InfoQ Podcast, with a focus on
Architecture and The Engineering Culture Podcast, with a focus on building
• 96 deep dives on innovative topics packed as downloadable emags and
minibooks
• Over 40 new content items per week
Watch the video with slide
synchronization on InfoQ.com!
https://www.infoq.com/presentations/
rxjs-front-end/
Purpose of QCon
- to empower software development by facilitating the spread of
knowledge and innovation
Strategy
- practitioner-driven conference designed for YOU: influencers of
change and innovation in your teams
- speakers and topics driving the evolution and innovation
- connecting and catalyzing the influencers and innovators
Highlights
- attended by more than 12,000 delegates since 2007
- held in 9 cities worldwide
Presented at QCon San Francisco
www.qconsf.com
REACTIVE
PROGRAMMING:
A Better Way to Write Frontend Applications
1.
PROBLEM STATEMENT
WHAT IS A
COMPUTER
PROGRAM?
A computer program is a
sequence of instructions
for performing a task
designed to solve
speci c problems.
- Wikipedia
Program = Todo List?
'SEQUENCE OF INSTRUCTIONS'
LESSON PLAN
HOW COMPUTER PROGRAMS ACTUALLY RUN
the heart of frontend programming
INTERRUPTIONS:
2.
A BRIEF HISTORY OF INTERRUPTIONS
Technique 1:
GLOBAL EVENT BUS
In The Beginning... C!
  1. #define BYTE unsigned char
  2. #define NUM_SCAN_QUE 256 // this MUST be 256, using BYTE 
roll­over for 
  3.                          // q code
  4. BYTE gb_scan;
  5. BYTE gb_scan_q[NUM_SCAN_QUE];
  6. BYTE gb_scan_head;
  7. BYTE gb_scan_tail;
  8. 
  9. static void interrupt(far *oldkb)(void); /* BIOS keyboard 
handler */
 10. 
 11. /* ­­­­­­­­­­­­­­­­­­­­­­ get_scan() ­­­­­­­­­­­­­­­­­­­­­ 
April 17,1993 */
 12. void interrupt get_scan(void)
 13. {
 14.   /* read the scan code from the keyboard */
Windows event loop
  1. int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE 
hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
  2. {
  3.   MSG msg;
  4.   BOOL bRet;
  5. 
  6.   while (1)
  7.   {
  8.     bRet = GetMessage(&msg, NULL, 0, 0);
  9. 
 10.     if (bRet > 0) // (bRet > 0 indicates a message that 
must be processed.)
 11.     {
 12.       TranslateMessage(&msg);
 13.       DispatchMessage(&msg);
  1. LRESULT CALLBACK MainWndProc(HWND hwnd, UINT uMsg, WPARAM 
wParam, LPARAM lParam) // second message parameter
  2. {
  3.   switch (uMsg)
  4.   {
  5.   case WM_CREATE:
  6.     // Initialize the window.
  7.     return 0;
  8. 
  9.   case WM_PAINT:
 10.     // Paint the window's client area.
 11.     return 0;
 12. 
 13.   case WM_SIZE:
 14.     // Set the size and position of the window.
 15.     return 0;
 16. 
 17.   case WM_DESTROY:
 18.     // Clean up window­specific data objects.
 19.     return 0;
 20.   //
Window procedure = read message, update state
1999?
  1. LRESULT CALLBACK MainWndProc(HWND hwnd, UINT uMsg, WPARAM 
wParam, LPARAM lParam) // second message parameter
  2. {
  3.   switch (uMsg)
  4.   {
  5.   case WM_CREATE:
  6.     // Initialize the window.
  7.     return 0;
  8. 
  9.   case WM_PAINT:
 10.     // Paint the window's client area.
 11.     return 0;
 12. 
 13.   case WM_SIZE:
 14.     // Set the size and position of the window.
 15.     return 0;
 16. 
 17.   case WM_DESTROY:
 18.     // Clean up window­specific data objects.
 19.     return 0;
 20.   //
 21.   // Process other messages.
 22.   //
23. default:
Or did we?
  1. function todoApp(state = initialState, action) {
  2.   switch (action.type) {
  3.     case SET_VISIBILITY_FILTER:
  4.       return { ...state,
  5.         visibilityFilter: action.filter
  6.       };
  7.     case ADD_TODO:
  8.       return { ...state,
  9.         todos: [
NO SHADE TO REDUX
Technique 2:
OBSERVER PATTERN
A SHORT DIGRESSION...
VERY IMPORTANT CONTENT CREATOR
HOW WILL PEOPLE SEE MY CONTENT?
OLD SCHOOL WAY
I will make content
- in uencer
I will subscribe to your
content
- adoring fan
I made new content
- in uencer
I am noti ed about your
content, and can watch
it
- adoring fan
I will emit events
- Subject
I will subscribe to your
events
- Observer
An event happened
- Subject
I am noti ed about the
event, and can handle it
- Observer
Real World Example
  1. // Function to change the content of t2
  2. const modifyText = () => {
  3.   const toggle = document.getElementById("toggle");
  4.   toggle.firstChild.nodeValue = t2.firstChild.nodeValue == 
"on" ? "off" : "on";
  5. }
  6. 
  7. // add event listener to table
  8. const el = document.getElementById("toggle­switch");
  9. el.addEventListener("click", modifyText, false);
OBSERVER PATTERN VS GLOBAL
EVENT BUS
(+) Way simpler than global event bus
(+) Localized scope
(-) Have To Setup Subscriptions
Take home quiz:
TRY DRAG AND DROP
MIXING CONCERNS
1. Handling events
2. Subscribing observers
Is this what happened?
REDUX ORIGIN STORY
IS THERE A BETTER WAY?
3.
FUNCTIONAL REACTIVE PROGRAMMING
I taught middle school
ONCE UPON A TIME...
GOOD TEACHERS = JEDI
DON'T START WITH A PLAN...
AND GET INTERRUPTED.
PLAN FOR
INTERRUPTIONS
AND REACT!
PSA:
PAY TEACHERS
HOW COULD WE
WRITE PROGRAMS
REACTIVELY?
Consider this statement
Y = X + 3
Assign once the value for y by adding 3 to x
IMPERATIVE MEANING:
An equation
MATH MEANING
5 10 15 20­5­10­15­20
5
10
15
20
­5
­10
­15
­20
y
x
X is a value that can change over time. Y is always the
value 3 greater than X
REACTIVE MEANING:
a data stream of numbers over time
X VALUES OVER TIME
0 9 3 10 4
a data stream of numbers derived from another stream
Y VALUES OVER TIME
0 9 3 10 4
3 12 6 13 7
Stream of user input events
MOUSE CLICKS OVER TIME
MC MC MCMCMCMC MC MCMCMCMC MC
REACTIVE
PROGRAMMING IN
THE REAL WORLD?
Only better...
OBSERVER PATTERN!
A value that changes over time, that we can listen to
changes on
OBSERVABLE:
Value as 'Observable'
  1. x.subscribe(nextX => console.log(nextX))
  2. 
  3. x.subscribe(nextX => console.log(nextX + 3))
  4. 
  5. y = "?";
  6. 
  7. x = [0, 9, 3, 10, 4]
  8. 
  9. y = x.map(nextX => nextX + 3)
 10. 
 11. x = Observable.of(0, 9, 3, 10, 4);
 12. 
 13. y = x.map(nextX => nextX + 3)
Go Left Go Right
Left Button
Clicks
Right Button
Clicks
Left Click
Position
Right Click
Position
Position
How This Works
  1. import {
  2.   fromEvent,
  3.   merge
  4. } from "rxjs";
4. HOW DO I ACTUALLY USE THIS?
IMPORTANT DATA POINT
YOU'RE ALREADY USING IT.
TWO QUESTIONS FOR USING RXJS
How to architect applications with RxJS?
How do I integrate this in my application, today?
User name:
Password:
Submit
User name Password Submit Button
Login Attempts
Login Responses
Login In ProgressLogin Failures
Login Successes
Failure Message
User Token Get Protected
Protected Resourc
But how tho?
  1. const api = {
  2.   login: (username, password) => Promise,
  3.   protectedResource: {
  4.     get: (userToken) => Promise
  5.   }
  6. };
  7. 
  8. const username$ = new Subject();
  9. const password$ = new Subject();
 10. const submitButton$ = new Subject();
 11. 
 12. const loginAttempts$ = 
submitButton$.pipe(withLatestFrom(username$, password$));
 13. 
 14. const loginResponses$ = loginAttempts$.pipe(
 15.   mergeMap(([_, username, password]) => api.login(
 16.     username,
17. password
How data propogates through your program
SIGNAL GRAPH
ACTUAL SIGNAL GRAPH FROM REAL APP
email passwordauthorizationRequested
selectedAccountIndex portfolioSelectedauthorization
user failedLogins portfolios
activePortfolio
portfolioSecurities
accounts
activeAccount
activeAccountPerformances activeAccountPortfolios
PRODUCTION CONCERNS
1. How do I test?
2. How do I make sure my graph is sound?
3. Ack RxJs idiosyncracies!
4. One big graph or lots of smaller ones?
5. Diagramming is hard
I liked Signal Graphs so much I bought the
company!
- me, 2018
A library for frontend state management using signal
graphs
SIGNAL:
Signal!
  1. const signalGraph = new SignalGraphBuilder()
  2.   .define(
  3.     addPrimary('username$'),
  4.     addPrimary('password$'),
  5.     addPrimary('submitButton$'),
  6.     addDerived(
  7.       'loginAttempts$',
  8.       makeLoginAttempts,
  9.       'submitButton$',
 10.       'username$',
 11.       'password$'
 12.     ),
 13.     addDerived('loginResponses$', makeLoginResponses, 
'loginAttempts$', 'api'),
 14.     addDerived(
 15.       'loginInProgress$',
 16.       makeLoginInProgress,
17. 'loginAttempts$',
Available Now(ish):
@RXREACT/SIGNAL
Coming Soon:
AUTOMATIC
GRAPH
VISUALIZATION
INTEGRATION
FRAMEWORK = ANGULAR
1. You're done
2. Check out NgRx
BUT WHAT ABOUT REACT?
GOOD NEWS!
Tools for integrating react with RxJs!
RXREACT:
Signal-connect
  1. import { withViewModel } from '@rxreact/signal­connect'
  2. 
  3. const PositionedBox = ({ position }) => <RedBox pose=
{position} />
  4. 
  5. const ballSignalGraph = new 
SignalGraphBuilder().define(/*...*/).build()
  6. 
  7. // connect(graph, mapGraphOutputsToProps, 
mapGraphInputsToProps = {})
  8. const BoundBox = connect(
  9.   ballSignalGraph,
 10.   {
 11.     position: 'position$'
 12.   }
 13. )(PositionedBox)
 14. 
15. const LeftButton = connect(
5.
USED CAR SALES PORTION
RxJs+React on it's own
@RXREACT/CORE:
RxReact Demo
  1. import { withViewModel } from '@rxreact/core'
  2. 
  3. const PositionedBox = ({ position }) => <RedBox pose=
{position} />
  4. 
  5. const boxVm = {
  6.   inputs: {
  7.     position: position$
  8.   }
  9. }
 10. 
 11. const BoundBox = withViewModel(boxVm)(PositionedBox)
 12. 
 13. const LeftButton = withViewModel({
 14.   outputs: {
 15.     onClick: leftClick$
 16.   }
WHAT ABOUT TYPESCRIPT?
RXREACT TYPESCRIPT
VIEW MODEL AS REDUCER?
  1. let viewModel = viewModelFromReducer({
  2.   initialState: {
  3.     count: 2,
  4.     fruit: 'bananas',
  5.     extra: 'applesauce'
  6.   },
  7.   reducer(state, action) {
  8.     switch (action.type) {
  9.       case ActionType.SET_COUNT:
 10.         return ReducerResult.Update({ ...state,
 11.           count: action.payload
@RXREACT/PROCESS
reactivex-talk.techgirlwonder.com
github.com/hannahhoward/reactivex-talk
THAT'S ALL FOLKS!
Watch the video with slide
synchronization on InfoQ.com!
https://www.infoq.com/presentations/
rxjs-front-end/

Weitere ähnliche Inhalte

Ähnlich wie RxJS: A Better Way to Write Front-End Applications

Eclipse IoT Talk (Montreal JUG)
Eclipse IoT Talk (Montreal JUG)Eclipse IoT Talk (Montreal JUG)
Eclipse IoT Talk (Montreal JUG)Mike Milinkovich
 
Freeing the Whale: How to Fail at Scale
Freeing the Whale: How to Fail at ScaleFreeing the Whale: How to Fail at Scale
Freeing the Whale: How to Fail at ScaleC4Media
 
Debugging Javascript - 0 to Heisenberg
Debugging Javascript - 0 to HeisenbergDebugging Javascript - 0 to Heisenberg
Debugging Javascript - 0 to HeisenbergChris Morrow
 
Practical JavaScript Programming - Session 8/8
Practical JavaScript Programming - Session 8/8Practical JavaScript Programming - Session 8/8
Practical JavaScript Programming - Session 8/8Wilson Su
 
Playing With Fire - An Introduction to Node.js
Playing With Fire - An Introduction to Node.jsPlaying With Fire - An Introduction to Node.js
Playing With Fire - An Introduction to Node.jsMike Hagedorn
 
Baking a Microservice PI(e)
Baking a Microservice PI(e)Baking a Microservice PI(e)
Baking a Microservice PI(e)Roberto Cortez
 
Norikra: SQL Stream Processing In Ruby
Norikra: SQL Stream Processing In RubyNorikra: SQL Stream Processing In Ruby
Norikra: SQL Stream Processing In RubySATOSHI TAGOMORI
 
Abs2014 kitkatinternals-212-phpapp01
Abs2014 kitkatinternals-212-phpapp01Abs2014 kitkatinternals-212-phpapp01
Abs2014 kitkatinternals-212-phpapp01letuan9999
 
iExec V3 Dev Edition - EthCC Workshop - March 2019 - Paris
iExec V3 Dev Edition - EthCC Workshop - March 2019 - ParisiExec V3 Dev Edition - EthCC Workshop - March 2019 - Paris
iExec V3 Dev Edition - EthCC Workshop - March 2019 - ParisiExec
 
Microservices 5 things i wish i'd known java with the best 2018
Microservices 5 things i wish i'd known   java with the best 2018Microservices 5 things i wish i'd known   java with the best 2018
Microservices 5 things i wish i'd known java with the best 2018Vincent Kok
 
Microservices 5 Things I Wish I'd Known - JFall 2017
Microservices 5 Things I Wish I'd Known - JFall 2017Microservices 5 Things I Wish I'd Known - JFall 2017
Microservices 5 Things I Wish I'd Known - JFall 2017Vincent Kok
 
CorePy High-Productivity CellB.E. Programming
CorePy High-Productivity CellB.E. ProgrammingCorePy High-Productivity CellB.E. Programming
CorePy High-Productivity CellB.E. ProgrammingSlide_N
 
Splunk n-box-splunk conf-2017
Splunk n-box-splunk conf-2017Splunk n-box-splunk conf-2017
Splunk n-box-splunk conf-2017Mohamad Hassan
 
Debugging Javascript
Debugging JavascriptDebugging Javascript
Debugging JavascriptSolTech, Inc.
 
Bringing JAMStack to the Enterprise
Bringing JAMStack to the EnterpriseBringing JAMStack to the Enterprise
Bringing JAMStack to the EnterpriseC4Media
 
Code instrumentation
Code instrumentationCode instrumentation
Code instrumentationMennan Tekbir
 
(Even more) Rapid App Development with RubyMotion
(Even more) Rapid App Development with RubyMotion(Even more) Rapid App Development with RubyMotion
(Even more) Rapid App Development with RubyMotionStefan Haflidason
 
The Ring programming language version 1.6 book - Part 7 of 189
The Ring programming language version 1.6 book - Part 7 of 189The Ring programming language version 1.6 book - Part 7 of 189
The Ring programming language version 1.6 book - Part 7 of 189Mahmoud Samir Fayed
 
Reactive Programming with Rx
 Reactive Programming with Rx Reactive Programming with Rx
Reactive Programming with RxC4Media
 

Ähnlich wie RxJS: A Better Way to Write Front-End Applications (20)

Eclipse IoT Talk (Montreal JUG)
Eclipse IoT Talk (Montreal JUG)Eclipse IoT Talk (Montreal JUG)
Eclipse IoT Talk (Montreal JUG)
 
Freeing the Whale: How to Fail at Scale
Freeing the Whale: How to Fail at ScaleFreeing the Whale: How to Fail at Scale
Freeing the Whale: How to Fail at Scale
 
Debugging Javascript - 0 to Heisenberg
Debugging Javascript - 0 to HeisenbergDebugging Javascript - 0 to Heisenberg
Debugging Javascript - 0 to Heisenberg
 
Practical JavaScript Programming - Session 8/8
Practical JavaScript Programming - Session 8/8Practical JavaScript Programming - Session 8/8
Practical JavaScript Programming - Session 8/8
 
Playing With Fire - An Introduction to Node.js
Playing With Fire - An Introduction to Node.jsPlaying With Fire - An Introduction to Node.js
Playing With Fire - An Introduction to Node.js
 
Baking a Microservice PI(e)
Baking a Microservice PI(e)Baking a Microservice PI(e)
Baking a Microservice PI(e)
 
Norikra: SQL Stream Processing In Ruby
Norikra: SQL Stream Processing In RubyNorikra: SQL Stream Processing In Ruby
Norikra: SQL Stream Processing In Ruby
 
Abs2014 kitkatinternals-212-phpapp01
Abs2014 kitkatinternals-212-phpapp01Abs2014 kitkatinternals-212-phpapp01
Abs2014 kitkatinternals-212-phpapp01
 
iExec V3 Dev Edition - EthCC Workshop - March 2019 - Paris
iExec V3 Dev Edition - EthCC Workshop - March 2019 - ParisiExec V3 Dev Edition - EthCC Workshop - March 2019 - Paris
iExec V3 Dev Edition - EthCC Workshop - March 2019 - Paris
 
Microservices 5 things i wish i'd known java with the best 2018
Microservices 5 things i wish i'd known   java with the best 2018Microservices 5 things i wish i'd known   java with the best 2018
Microservices 5 things i wish i'd known java with the best 2018
 
Microservices 5 Things I Wish I'd Known - JFall 2017
Microservices 5 Things I Wish I'd Known - JFall 2017Microservices 5 Things I Wish I'd Known - JFall 2017
Microservices 5 Things I Wish I'd Known - JFall 2017
 
CorePy High-Productivity CellB.E. Programming
CorePy High-Productivity CellB.E. ProgrammingCorePy High-Productivity CellB.E. Programming
CorePy High-Productivity CellB.E. Programming
 
20110709 - CM_Cocoa
20110709 - CM_Cocoa20110709 - CM_Cocoa
20110709 - CM_Cocoa
 
Splunk n-box-splunk conf-2017
Splunk n-box-splunk conf-2017Splunk n-box-splunk conf-2017
Splunk n-box-splunk conf-2017
 
Debugging Javascript
Debugging JavascriptDebugging Javascript
Debugging Javascript
 
Bringing JAMStack to the Enterprise
Bringing JAMStack to the EnterpriseBringing JAMStack to the Enterprise
Bringing JAMStack to the Enterprise
 
Code instrumentation
Code instrumentationCode instrumentation
Code instrumentation
 
(Even more) Rapid App Development with RubyMotion
(Even more) Rapid App Development with RubyMotion(Even more) Rapid App Development with RubyMotion
(Even more) Rapid App Development with RubyMotion
 
The Ring programming language version 1.6 book - Part 7 of 189
The Ring programming language version 1.6 book - Part 7 of 189The Ring programming language version 1.6 book - Part 7 of 189
The Ring programming language version 1.6 book - Part 7 of 189
 
Reactive Programming with Rx
 Reactive Programming with Rx Reactive Programming with Rx
Reactive Programming with Rx
 

Mehr von C4Media

Streaming a Million Likes/Second: Real-Time Interactions on Live Video
Streaming a Million Likes/Second: Real-Time Interactions on Live VideoStreaming a Million Likes/Second: Real-Time Interactions on Live Video
Streaming a Million Likes/Second: Real-Time Interactions on Live VideoC4Media
 
Next Generation Client APIs in Envoy Mobile
Next Generation Client APIs in Envoy MobileNext Generation Client APIs in Envoy Mobile
Next Generation Client APIs in Envoy MobileC4Media
 
Software Teams and Teamwork Trends Report Q1 2020
Software Teams and Teamwork Trends Report Q1 2020Software Teams and Teamwork Trends Report Q1 2020
Software Teams and Teamwork Trends Report Q1 2020C4Media
 
Understand the Trade-offs Using Compilers for Java Applications
Understand the Trade-offs Using Compilers for Java ApplicationsUnderstand the Trade-offs Using Compilers for Java Applications
Understand the Trade-offs Using Compilers for Java ApplicationsC4Media
 
Kafka Needs No Keeper
Kafka Needs No KeeperKafka Needs No Keeper
Kafka Needs No KeeperC4Media
 
High Performing Teams Act Like Owners
High Performing Teams Act Like OwnersHigh Performing Teams Act Like Owners
High Performing Teams Act Like OwnersC4Media
 
Does Java Need Inline Types? What Project Valhalla Can Bring to Java
Does Java Need Inline Types? What Project Valhalla Can Bring to JavaDoes Java Need Inline Types? What Project Valhalla Can Bring to Java
Does Java Need Inline Types? What Project Valhalla Can Bring to JavaC4Media
 
Service Meshes- The Ultimate Guide
Service Meshes- The Ultimate GuideService Meshes- The Ultimate Guide
Service Meshes- The Ultimate GuideC4Media
 
Shifting Left with Cloud Native CI/CD
Shifting Left with Cloud Native CI/CDShifting Left with Cloud Native CI/CD
Shifting Left with Cloud Native CI/CDC4Media
 
CI/CD for Machine Learning
CI/CD for Machine LearningCI/CD for Machine Learning
CI/CD for Machine LearningC4Media
 
Fault Tolerance at Speed
Fault Tolerance at SpeedFault Tolerance at Speed
Fault Tolerance at SpeedC4Media
 
Architectures That Scale Deep - Regaining Control in Deep Systems
Architectures That Scale Deep - Regaining Control in Deep SystemsArchitectures That Scale Deep - Regaining Control in Deep Systems
Architectures That Scale Deep - Regaining Control in Deep SystemsC4Media
 
ML in the Browser: Interactive Experiences with Tensorflow.js
ML in the Browser: Interactive Experiences with Tensorflow.jsML in the Browser: Interactive Experiences with Tensorflow.js
ML in the Browser: Interactive Experiences with Tensorflow.jsC4Media
 
User & Device Identity for Microservices @ Netflix Scale
User & Device Identity for Microservices @ Netflix ScaleUser & Device Identity for Microservices @ Netflix Scale
User & Device Identity for Microservices @ Netflix ScaleC4Media
 
Scaling Patterns for Netflix's Edge
Scaling Patterns for Netflix's EdgeScaling Patterns for Netflix's Edge
Scaling Patterns for Netflix's EdgeC4Media
 
Make Your Electron App Feel at Home Everywhere
Make Your Electron App Feel at Home EverywhereMake Your Electron App Feel at Home Everywhere
Make Your Electron App Feel at Home EverywhereC4Media
 
The Talk You've Been Await-ing For
The Talk You've Been Await-ing ForThe Talk You've Been Await-ing For
The Talk You've Been Await-ing ForC4Media
 
Future of Data Engineering
Future of Data EngineeringFuture of Data Engineering
Future of Data EngineeringC4Media
 
Automated Testing for Terraform, Docker, Packer, Kubernetes, and More
Automated Testing for Terraform, Docker, Packer, Kubernetes, and MoreAutomated Testing for Terraform, Docker, Packer, Kubernetes, and More
Automated Testing for Terraform, Docker, Packer, Kubernetes, and MoreC4Media
 
Navigating Complexity: High-performance Delivery and Discovery Teams
Navigating Complexity: High-performance Delivery and Discovery TeamsNavigating Complexity: High-performance Delivery and Discovery Teams
Navigating Complexity: High-performance Delivery and Discovery TeamsC4Media
 

Mehr von C4Media (20)

Streaming a Million Likes/Second: Real-Time Interactions on Live Video
Streaming a Million Likes/Second: Real-Time Interactions on Live VideoStreaming a Million Likes/Second: Real-Time Interactions on Live Video
Streaming a Million Likes/Second: Real-Time Interactions on Live Video
 
Next Generation Client APIs in Envoy Mobile
Next Generation Client APIs in Envoy MobileNext Generation Client APIs in Envoy Mobile
Next Generation Client APIs in Envoy Mobile
 
Software Teams and Teamwork Trends Report Q1 2020
Software Teams and Teamwork Trends Report Q1 2020Software Teams and Teamwork Trends Report Q1 2020
Software Teams and Teamwork Trends Report Q1 2020
 
Understand the Trade-offs Using Compilers for Java Applications
Understand the Trade-offs Using Compilers for Java ApplicationsUnderstand the Trade-offs Using Compilers for Java Applications
Understand the Trade-offs Using Compilers for Java Applications
 
Kafka Needs No Keeper
Kafka Needs No KeeperKafka Needs No Keeper
Kafka Needs No Keeper
 
High Performing Teams Act Like Owners
High Performing Teams Act Like OwnersHigh Performing Teams Act Like Owners
High Performing Teams Act Like Owners
 
Does Java Need Inline Types? What Project Valhalla Can Bring to Java
Does Java Need Inline Types? What Project Valhalla Can Bring to JavaDoes Java Need Inline Types? What Project Valhalla Can Bring to Java
Does Java Need Inline Types? What Project Valhalla Can Bring to Java
 
Service Meshes- The Ultimate Guide
Service Meshes- The Ultimate GuideService Meshes- The Ultimate Guide
Service Meshes- The Ultimate Guide
 
Shifting Left with Cloud Native CI/CD
Shifting Left with Cloud Native CI/CDShifting Left with Cloud Native CI/CD
Shifting Left with Cloud Native CI/CD
 
CI/CD for Machine Learning
CI/CD for Machine LearningCI/CD for Machine Learning
CI/CD for Machine Learning
 
Fault Tolerance at Speed
Fault Tolerance at SpeedFault Tolerance at Speed
Fault Tolerance at Speed
 
Architectures That Scale Deep - Regaining Control in Deep Systems
Architectures That Scale Deep - Regaining Control in Deep SystemsArchitectures That Scale Deep - Regaining Control in Deep Systems
Architectures That Scale Deep - Regaining Control in Deep Systems
 
ML in the Browser: Interactive Experiences with Tensorflow.js
ML in the Browser: Interactive Experiences with Tensorflow.jsML in the Browser: Interactive Experiences with Tensorflow.js
ML in the Browser: Interactive Experiences with Tensorflow.js
 
User & Device Identity for Microservices @ Netflix Scale
User & Device Identity for Microservices @ Netflix ScaleUser & Device Identity for Microservices @ Netflix Scale
User & Device Identity for Microservices @ Netflix Scale
 
Scaling Patterns for Netflix's Edge
Scaling Patterns for Netflix's EdgeScaling Patterns for Netflix's Edge
Scaling Patterns for Netflix's Edge
 
Make Your Electron App Feel at Home Everywhere
Make Your Electron App Feel at Home EverywhereMake Your Electron App Feel at Home Everywhere
Make Your Electron App Feel at Home Everywhere
 
The Talk You've Been Await-ing For
The Talk You've Been Await-ing ForThe Talk You've Been Await-ing For
The Talk You've Been Await-ing For
 
Future of Data Engineering
Future of Data EngineeringFuture of Data Engineering
Future of Data Engineering
 
Automated Testing for Terraform, Docker, Packer, Kubernetes, and More
Automated Testing for Terraform, Docker, Packer, Kubernetes, and MoreAutomated Testing for Terraform, Docker, Packer, Kubernetes, and More
Automated Testing for Terraform, Docker, Packer, Kubernetes, and More
 
Navigating Complexity: High-performance Delivery and Discovery Teams
Navigating Complexity: High-performance Delivery and Discovery TeamsNavigating Complexity: High-performance Delivery and Discovery Teams
Navigating Complexity: High-performance Delivery and Discovery Teams
 

Kürzlich hochgeladen

Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slidevu2urc
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfEnterprise Knowledge
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking MenDelhi Call girls
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘RTylerCroy
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsJoaquim Jorge
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024The Digital Insurer
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonAnna Loughnan Colquhoun
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Enterprise Knowledge
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsMaria Levchenko
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Igalia
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024Rafal Los
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processorsdebabhi2
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsEnterprise Knowledge
 
Evaluating the top large language models.pdf
Evaluating the top large language models.pdfEvaluating the top large language models.pdf
Evaluating the top large language models.pdfChristopherTHyatt
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationMichael W. Hawkins
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024The Digital Insurer
 
Tech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdfTech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdfhans926745
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProduct Anonymous
 

Kürzlich hochgeladen (20)

Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
 
Evaluating the top large language models.pdf
Evaluating the top large language models.pdfEvaluating the top large language models.pdf
Evaluating the top large language models.pdf
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
Tech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdfTech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdf
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 

RxJS: A Better Way to Write Front-End Applications