SlideShare a Scribd company logo
YOU KEEP USING THAT WORD
Sam Newman
hachyderm.io/@samnewman
hachyderm.io/@samnewman
hachyderm.io/@samnewman
hachyderm.io/@samnewman
hachyderm.io/@samnewman
hachyderm.io/@samnewman
hachyderm.io/@samnewman
hachyderm.io/@samnewman
hachyderm.io/@samnewman
hachyderm.io/@samnewman
hachyderm.io/@samnewman
hachyderm.io/@samnewman
hachyderm.io/@samnewman
hachyderm.io/@samnewman
#TeamHexagon
hachyderm.io/@samnewman
hachyderm.io/@samnewman
hachyderm.io/@samnewman
hachyderm.io/@samnewman
hachyderm.io/@samnewman
Inventory
Returns
Customer
Order
Shipping
hachyderm.io/@samnewman
Inventory
Returns
Customer
Order
Shipping
hachyderm.io/@samnewman
Inventory
Returns
Customer
Order
Shipping
Logical dependency
hachyderm.io/@samnewman
Returns Shipping
hachyderm.io/@samnewman
Returns Shipping
hachyderm.io/@samnewman
Returns Shipping
The Returns microservice depends on some
functionality which Shipping provides
Synchronous
Synchronous vs Asynchronous
hachyderm.io/@samnewman
MAIN STYLES OF COMMUNICATION
hachyderm.io/@samnewman
MAIN STYLES OF COMMUNICATION
Request/Response
hachyderm.io/@samnewman
MAIN STYLES OF COMMUNICATION
Request/Response Event-Driven
hachyderm.io/@samnewman
REQUEST-RESPONSE
Returns Shipping
The consumer is asking
the microservice for
something
hachyderm.io/@samnewman
REQUEST-RESPONSE
Returns Shipping
I need a postage label!
The consumer is asking
the microservice for
something
Request
Consumer
hachyderm.io/@samnewman
REQUEST-RESPONSE
Returns Shipping
I need a postage label!
Here you go!
The consumer is asking
the microservice for
something
Request
Response
Consumer
hachyderm.io/@samnewman
EVENT-DRIVEN
Inventory
An event (fact) is broadcast
hachyderm.io/@samnewman
EVENT-DRIVEN
Inventory
An event (fact) is broadcast
Stock Level
Changed!
Event
hachyderm.io/@samnewman
EVENT-DRIVEN
Inventory
An event (fact) is broadcast Promotions
Wishlist
Stock Level
Changed!
Event
hachyderm.io/@samnewman
EVENT-DRIVEN
Inventory
An event (fact) is broadcast
Interested parties receive
the event and react
accordingly
Promotions
Wishlist
Stock Level
Changed!
Event
hachyderm.io/@samnewman
EVENT-DRIVEN
Inventory
An event (fact) is broadcast
Interested parties receive
the event and react
accordingly
The emitting microservice
doesn’t need to know about
consumers
Promotions
Wishlist
Stock Level
Changed!
Event
hachyderm.io/@samnewman
EVENT-DRIVEN
Inventory
An event (fact) is broadcast
Interested parties receive
the event and react
accordingly
The emitting microservice
doesn’t need to know about
consumers
Promotions
Wishlist
Stock Level
Changed!
Consumers
Event
Synchronous vs Asynchronous
Request/Response Event-Driven
Request/Response Event-Driven
Synchronous or Asynchronous
Request/Response Event-Driven
Asynchronous
Synchronous or Asynchronous
I don’t think there is any consistent
de
fi
nition of what asynchronous
communication means
https://pathelland.substack.com/p/dont-get-stuck-in-the-con-game-v3
https://twitter.com/samnewman/status/1414894650125586434
What I found might shock you!
https://twitter.com/darrenhobbs/status/1414920239142342662
This implies that asynchronous
communication will be slower!
But this *feels* like a useful distinction
hachyderm.io/@samnewman
REACTIVE MANIFESTO
https://www.reactivemanifesto.org/
hachyderm.io/@samnewman
REACTIVE MANIFESTO?
https://www.reactivemanifesto.org/glossary#Asynchronous
hachyderm.io/@samnewman
“…the processing of a request occurs
at an arbitrary time, sometime after it
has been transmitted from client to
server”
https://www.reactivemanifesto.org/glossary#Asynchronous
hachyderm.io/@samnewman
“…the processing of a request occurs
at an arbitrary time, sometime after it
has been transmitted from client to
server”
https://www.reactivemanifesto.org/glossary#Asynchronous
Wat?
hachyderm.io/@samnewman
As opposed to the server processing a
request before it is sent?
hachyderm.io/@samnewman
https://
fl
ickr.com/photos/londonmatt/34854868023/
hachyderm.io/@samnewman
REACTIVE MANIFESTO (CONT)
“This is the [opposite] of synchronous processing which
implies that the client only resumes its own execution
once the service has processed the request.”
https://www.reactivemanifesto.org/glossary#Asynchronous
https://twitter.com/SteveSmith_Tech/status/1414906580542312450
https://twitter.com/SteveSmith_Tech/status/1414906580542312450
https://twitter.com/SteveSmith_Tech/status/1414906580542312450
hachyderm.io/@samnewman
What this really is about is
non-blocking
Let’s explore the concept of non-
blocking calls
hachyderm.io/@samnewman
Subscription
Loyalty
Enrolment
hachyderm.io/@samnewman
Subscription
Loyalty
Award Points
Enrolment
hachyderm.io/@samnewman
Subscription
Loyalty
Award Points
Upgrade Subscription
Enrolment
hachyderm.io/@samnewman
BLOCKING CALLS
Subscription
Loyalty
Award Points
Upgrade Subscription
Enrolment
res1 = loyaltyService.awardPoints(custID, 200)
res2 = subsService.upgradeSub(custID, PLATINUM)
hachyderm.io/@samnewman
BLOCKING CALLS
Subscription
Loyalty
Award Points
Upgrade Subscription
Enrolment
res1 = loyaltyService.awardPoints(custID, 200)
res2 = subsService.upgradeSub(custID, PLATINUM)
hachyderm.io/@samnewman
BLOCKING CALLS
Subscription
Loyalty
Award Points
Upgrade Subscription
Enrolment
res1 = loyaltyService.awardPoints(custID, 200)
res2 = subsService.upgradeSub(custID, PLATINUM)
We then wait until we either get a response, or we give up
hachyderm.io/@samnewman
BLOCKING CALLS
Subscription
Loyalty
Award Points
Upgrade Subscription
Enrolment
res1 = loyaltyService.awardPoints(custID, 200)
res2 = subsService.upgradeSub(custID, PLATINUM)
We then wait until we either get a response, or we give up
hachyderm.io/@samnewman
BLOCKING CALLS
Subscription
Loyalty
Award Points
Upgrade Subscription
Enrolment
res1 = loyaltyService.awardPoints(custID, 200)
res2 = subsService.upgradeSub(custID, PLATINUM)
We then wait until we either get a response, or we give up
Once the response to loyalty has completed,
then we can call Subscription
hachyderm.io/@samnewman
PROBLEMS WITH BLOCKING CALLS?
Subscription
Loyalty
Award Points
Upgrade Subscription
Enrolment
hachyderm.io/@samnewman
PROBLEMS WITH BLOCKING CALLS?
Latency is the sum of the calls
Subscription
Loyalty
Award Points
Upgrade Subscription
Enrolment
hachyderm.io/@samnewman
PROBLEMS WITH BLOCKING CALLS?
Latency is the sum of the calls
Subscription
Loyalty
Award Points
Upgrade Subscription
Enrolment
50ms
hachyderm.io/@samnewman
PROBLEMS WITH BLOCKING CALLS?
Latency is the sum of the calls
Subscription
Loyalty
Award Points
Upgrade Subscription
Enrolment
50ms
150ms
hachyderm.io/@samnewman
PROBLEMS WITH BLOCKING CALLS?
Latency is the sum of the calls
Subscription
Loyalty
Award Points
Upgrade Subscription
Enrolment
50ms
150ms
e.g. 50 + 150ms = 200ms in total
hachyderm.io/@samnewman
PROBLEMS WITH BLOCKING CALLS?
Latency is the sum of the calls
Subscription
Loyalty
Award Points
Upgrade Subscription
Enrolment
50ms
150ms
e.g. 50 + 150ms = 200ms in total
But remember that latency for an
operation is not
fi
xed - it will have
a range
hachyderm.io/@samnewman
An improvement would be to
do these two calls in parallel
hachyderm.io/@samnewman
PARALLEL CALLS
Subscription
Loyalty
Award Points
Upgrade Subscription
Enrolment
res1 = loyaltyService.awardPoints(custID, 200)
res2 = subsService.upgradeSub(custID, PLATINUM)
hachyderm.io/@samnewman
PARALLEL CALLS
Subscription
Loyalty
Award Points
Upgrade Subscription
Enrolment
res1 = loyaltyService.awardPoints(custID, 200)
res2 = subsService.upgradeSub(custID, PLATINUM)
hachyderm.io/@samnewman
PARALLEL CALLS
Subscription
Loyalty
Award Points
Upgrade Subscription
Enrolment
res1 = loyaltyService.awardPoints(custID, 200)
res2 = subsService.upgradeSub(custID, PLATINUM)
hachyderm.io/@samnewman
PARALLEL CALLS
Subscription
Loyalty
Award Points
Upgrade Subscription
Enrolment
res1 = loyaltyService.awardPoints(custID, 200)
res2 = subsService.upgradeSub(custID, PLATINUM)
hachyderm.io/@samnewman
PARALLEL CALLS
Subscription
Loyalty
Award Points
Upgrade Subscription
Enrolment
res1 = loyaltyService.awardPoints(custID, 200)
res2 = subsService.upgradeSub(custID, PLATINUM)
res1 =
loyaltyService
.awardPoints(
custID, 200)
res2 = subsService
.upgradeSub(
custID, PLATINUM)
hachyderm.io/@samnewman
PARALLEL CALLS
Subscription
Loyalty
Award Points
Upgrade Subscription
Enrolment
res1 = loyaltyService.awardPoints(custID, 200)
res2 = subsService.upgradeSub(custID, PLATINUM)
res1 =
loyaltyService
.awardPoints(
custID, 200)
res2 = subsService
.upgradeSub(
custID, PLATINUM)
hachyderm.io/@samnewman
Subscription
Loyalty
Award Points
Upgrade Subscription
Enrolment
fut1 = future(loyaltyService.awardPoints(custID, 200))
fut2 = future(subsService.upgradeSub(custID, PLATINUM))
hachyderm.io/@samnewman
Subscription
Loyalty
Award Points
Upgrade Subscription
Enrolment
fut1 = future(loyaltyService.awardPoints(custID, 200))
fut2 = future(subsService.upgradeSub(custID, PLATINUM))
The future represents a background thread of
execution - we can continue while the call is made
in the background
hachyderm.io/@samnewman
Subscription
Loyalty
Award Points
Upgrade Subscription
Enrolment
fut1 = future(loyaltyService.awardPoints(custID, 200))
fut2 = future(subsService.upgradeSub(custID, PLATINUM))
The future represents a background thread of
execution - we can continue while the call is made
in the background
So the calls to Loyalty and Subscription
service can now be made in parallel
hachyderm.io/@samnewman
Subscription
Loyalty
Award Points
Upgrade Subscription
Enrolment
fut1 = future(loyaltyService.awardPoints(custID, 200))
fut2 = future(subsService.upgradeSub(custID, PLATINUM))
The future represents a background thread of
execution - we can continue while the call is made
in the background
So the calls to Loyalty and Subscription
service can now be made in parallel
hachyderm.io/@samnewman
But we may actually need the
responses, right?
hachyderm.io/@samnewman
fut1 = future(loyaltyService.awardPoints(custID, 200))
fut2 = future(subsService.upgradeSub(custID, PLATINUM))
hachyderm.io/@samnewman
fut1 = future(loyaltyService.awardPoints(custID, 200))
fut2 = future(subsService.upgradeSub(custID, PLATINUM))
hachyderm.io/@samnewman
fut1 = future(loyaltyService.awardPoints(custID, 200))
fut2 = future(subsService.upgradeSub(custID, PLATINUM))
At this point, we don’t know if the calls to
either service have been processed or not.
hachyderm.io/@samnewman
fut1 = future(loyaltyService.awardPoints(custID, 200))
fut2 = future(subsService.upgradeSub(custID, PLATINUM))
At this point, we don’t know if the calls to
either service have been processed or not.
We might have to wait for the results!
hachyderm.io/@samnewman
fut1 = future(loyaltyService.awardPoints(custID, 200))
fut2 = future(subsService.upgradeSub(custID, PLATINUM))
At this point, we don’t know if the calls to
either service have been processed or not.
We might have to wait for the results!
await(fut1, fut2)
hachyderm.io/@samnewman
fut1 = future(loyaltyService.awardPoints(custID, 200))
fut2 = future(subsService.upgradeSub(custID, PLATINUM))
At this point, we don’t know if the calls to
either service have been processed or not.
We might have to wait for the results!
await(fut1, fut2)
And now we’re blocking program
execution….
hachyderm.io/@samnewman
Even if you have non-blocking calls,
the logic of your processing may
require waiting for things to happen!
hachyderm.io/@samnewman
Even non-blocking calls may
end up blocking
hachyderm.io/@samnewman
But in general if you can use
non-blocking calls and run them
in parallel, that is a good thing.
https://twitter.com/evolvable/status/1414909633597116417
https://twitter.com/Benkzxar/status/1414965335338496001
Intermediary?
Broker
A
A
Message
B
A
Message
B
A Broker
Message
B
A Broker
Message
B
A Broker
Message
B
A Broker
Message
B
A Broker
With a broker, we can of
fl
oad the
requirement to guarantee delivery
(kinda)
Message
https://twitter.com/goingkilo/status/1414898869075251201
https://
fl
ickr.com/photos/pro
fi
lerehab/5707316547/
There are variations on how we can
implement this “inbox” pattern
There are variations on how we can
implement this “inbox” pattern
Database
There are variations on how we can
implement this “inbox” pattern
Database
File system
There are variations on how we can
implement this “inbox” pattern
Database
File system
Email!
The sender of a message doesn’t need to
worry about whether or not the recipient is
currently available
The sender of a message doesn’t need to
worry about whether or not the recipient is
currently available
But we do need to trust the intermediary (the
broker), and that does have to be available!
hachyderm.io/@samnewman
BROKER-BASED REQUEST-RESPONSE
A
Broker
hachyderm.io/@samnewman
BROKER-BASED REQUEST-RESPONSE
A
Request
Broker
hachyderm.io/@samnewman
BROKER-BASED REQUEST-RESPONSE
B
A
Request
Broker
hachyderm.io/@samnewman
BROKER-BASED REQUEST-RESPONSE
B
A
Request
Queue
Request
Broker
hachyderm.io/@samnewman
BROKER-BASED REQUEST-RESPONSE
B
A
Request
Queue
Request
Broker
hachyderm.io/@samnewman
BROKER-BASED REQUEST-RESPONSE
B
A
Request
Queue Request
Broker
hachyderm.io/@samnewman
BROKER-BASED REQUEST-RESPONSE
B
A
Request
Queue Request
Response
Broker
hachyderm.io/@samnewman
Response
Queue
BROKER-BASED REQUEST-RESPONSE
B
A
Request
Queue Request
Response
Broker
hachyderm.io/@samnewman
Response
Queue
BROKER-BASED REQUEST-RESPONSE
B
A
Request
Queue Request
Response
Broker
hachyderm.io/@samnewman
A
Response
Queue
B
A
Request
Queue
Broker
Response could be
received by a different
instance
hachyderm.io/@samnewman
A
Response
Queue
B
A
Request
Queue Request
Broker
Response could be
received by a different
instance
hachyderm.io/@samnewman
A
Response
Queue
B
A
Request
Queue Request
Response
Broker
Response could be
received by a different
instance
hachyderm.io/@samnewman
A
Response
Queue
B
A
Request
Queue Request
Response
Broker
Response could be
received by a different
instance
hachyderm.io/@samnewman
Subscription
Loyalty
Award Points
Upgrade Subscription
Enrolment
fut1 = future(loyaltyService.awardPoints(custID, 200))
fut2 = future(subsService.upgradeSub(custID, PLATINUM))
hachyderm.io/@samnewman
Subscription
Loyalty
Award Points
Upgrade Subscription
Enrolment
fut1 = future(loyaltyService.awardPoints(custID, 200))
fut2 = future(subsService.upgradeSub(custID, PLATINUM))
Here, the assumption is that the response comes
back to the same instance
hachyderm.io/@samnewman
Subscription
Loyalty
Award Points
Upgrade Subscription
Enrolment
fut1 = future(loyaltyService.awardPoints(custID, 200))
fut2 = future(subsService.upgradeSub(custID, PLATINUM))
Here, the assumption is that the response comes
back to the same instance
So we may need to deal with what
happens if the consumer dies part way
through
hachyderm.io/@samnewman
It’s arguable that the intermediary-
based communication encourages
stateless processing
hachyderm.io/@samnewman
COMPETING DEFINITIONS?
hachyderm.io/@samnewman
COMPETING DEFINITIONS?
Immediacy
hachyderm.io/@samnewman
COMPETING DEFINITIONS?
Immediacy
Temporal Coupling
hachyderm.io/@samnewman
COMPETING DEFINITIONS?
Immediacy
Temporal Coupling
Non-blocking
hachyderm.io/@samnewman
COMPETING DEFINITIONS?
Immediacy
Temporal Coupling
Non-blocking
Intermediary
hachyderm.io/@samnewman
Will the real asynchronous
communication please stand up?
Does this matter?
Words have different meanings
What words in the English language has
the most dictionary meanings?
hachyderm.io/@samnewman
Set
hachyderm.io/@samnewman
Set Run
hachyderm.io/@samnewman
Set Run
430 meanings
https://www.guinnessworldrecords.com/world-records/english-word-with-the-most-meanings
hachyderm.io/@samnewman
Set Run
430 meanings 645 meanings
https://www.guinnessworldrecords.com/world-records/english-word-with-the-most-meanings
https://www.nytimes.com/2011/05/29/opinion/29winchester.html
hachyderm.io/@samnewman
So we’re used to this, right?
hachyderm.io/@samnewman
We derive personal understanding
of a word via context
hachyderm.io/@samnewman
“The meaning of a word becomes
more narrow as we add other words
around it”
- Ian Cooper (heavily paraphrased)
hachyderm.io/@samnewman
run
hachyderm.io/@samnewman
run
The issue got worse
the moment the
program was
hachyderm.io/@samnewman
run
hachyderm.io/@samnewman
run
The economy crashed
due to a on the
banks
hachyderm.io/@samnewman
So, does this matter?
hachyderm.io/@samnewman
But we throw around terms like
“asynchronous” without enough
context around the term to derive
shared meaning
hachyderm.io/@samnewman
https://www.reactivemanifesto.org/glossary#Asynchronous
hachyderm.io/@samnewman
hachyderm.io/@samnewman
hachyderm.io/@samnewman
“Originally only in medical contexts”
- Oxford English Dictionary
hachyderm.io/@samnewman
hachyderm.io/@samnewman
hachyderm.io/@samnewman
ASYNCHRONOUS DEFINTION IN A COMPUTING CONTEXT
“Designating data transmissions in which packets
of data are sent at irregular intervals, with the start
and end of each packet being marked by speci
fi
c
signals involving such transmission”
- Oxford English Dictionary
hachyderm.io/@samnewman
Software is a type of
sociotechnical system
hachyderm.io/@samnewman
Sociotechnical
hachyderm.io/@samnewman
Sociotechnical
Sociotechnical
{
People
hachyderm.io/@samnewman
Sociotechnical
Sociotechnical
{
People
{
Technology
hachyderm.io/@samnewman
https://
fl
ickr.com/photos/chaoticmind75/52046974941/
hachyderm.io/@samnewman
hachyderm.io/@samnewman
The amount of useful software created
by individuals is vanishingly rare
hachyderm.io/@samnewman
Bringing groups of people together
to use and use technology requires
good communication
hachyderm.io/@samnewman
hachyderm.io/@samnewman
So, we’re going to make this asynchronous…
hachyderm.io/@samnewman
So, we’re going to make this asynchronous…
hachyderm.io/@samnewman
So, we’re going to make this asynchronous…
hachyderm.io/@samnewman
So, we’re going to make this asynchronous…
hachyderm.io/@samnewman
So, we’re going to make this asynchronous…
hachyderm.io/@samnewman
The term “asynchronous” in the
context of inter-process
communication has so many meanings
that it is effectively meaningless
So what can we do?
Understand what your
application needs
Understand what your
application needs
Describe how it should handle
different situations
What should happen when the
server is unreachable?
What should happen when the
server is unreachable?
How fast should it be?
What should happen when the
server is unreachable?
How fast should it be?
What if the client crashes?
Where possible, use more
explicit terms
Clients should be non-blocking
Clients should be non-blocking
Run operations in parallel
Clients should be non-blocking
Run operations in parallel
Use broker X as an intermediary…
But try not to make having a
common meaning be about
correcting someone else
"You keep using that word. I do not think it means what
you think it means."
— Inigo Montoya, The Princess Bride
When someone says “we should
make this asynchronous”…
When someone says “we should
make this asynchronous”…
Perhaps just say, “what does that
mean to you?”
What you
fi
nd might shock you
hachyderm.io/@samnewman
THANKS!
https://samnewman.io/
@samnewman

More Related Content

More from Fwdays

"Objects validation and comparison using runtime types (io-ts)", Oleksandr Suhak
"Objects validation and comparison using runtime types (io-ts)", Oleksandr Suhak"Objects validation and comparison using runtime types (io-ts)", Oleksandr Suhak
"Objects validation and comparison using runtime types (io-ts)", Oleksandr Suhak
Fwdays
 
"JavaScript. Standard evolution, when nobody cares", Roman Savitskyi
"JavaScript. Standard evolution, when nobody cares", Roman Savitskyi"JavaScript. Standard evolution, when nobody cares", Roman Savitskyi
"JavaScript. Standard evolution, when nobody cares", Roman Savitskyi
Fwdays
 
"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...
Fwdays
 
"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
Fwdays
 
"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...
Fwdays
 
"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
Fwdays
 
"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
Fwdays
 
"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
Fwdays
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan
Fwdays
 
"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
Fwdays
 
"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
Fwdays
 
"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...
Fwdays
 
"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...
Fwdays
 
"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", ...
Fwdays
 
"[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...
Fwdays
 
"[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...
Fwdays
 
"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)"...
Fwdays
 
"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...
Fwdays
 
"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...
Fwdays
 
"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
Fwdays
 

More from Fwdays (20)

"Objects validation and comparison using runtime types (io-ts)", Oleksandr Suhak
"Objects validation and comparison using runtime types (io-ts)", Oleksandr Suhak"Objects validation and comparison using runtime types (io-ts)", Oleksandr Suhak
"Objects validation and comparison using runtime types (io-ts)", Oleksandr Suhak
 
"JavaScript. Standard evolution, when nobody cares", Roman Savitskyi
"JavaScript. Standard evolution, when nobody cares", Roman Savitskyi"JavaScript. Standard evolution, when nobody cares", Roman Savitskyi
"JavaScript. Standard evolution, when nobody cares", Roman Savitskyi
 
"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
 

Recently uploaded

FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdfFIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance
 
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
Albert Hoitingh
 
Video Streaming: Then, Now, and in the Future
Video Streaming: Then, Now, and in the FutureVideo Streaming: Then, Now, and in the Future
Video Streaming: Then, Now, and in the Future
Alpen-Adria-Universität
 
UiPath Test Automation using UiPath Test Suite series, part 4
UiPath Test Automation using UiPath Test Suite series, part 4UiPath Test Automation using UiPath Test Suite series, part 4
UiPath Test Automation using UiPath Test Suite series, part 4
DianaGray10
 
Communications Mining Series - Zero to Hero - Session 1
Communications Mining Series - Zero to Hero - Session 1Communications Mining Series - Zero to Hero - Session 1
Communications Mining Series - Zero to Hero - Session 1
DianaGray10
 
Free Complete Python - A step towards Data Science
Free Complete Python - A step towards Data ScienceFree Complete Python - A step towards Data Science
Free Complete Python - A step towards Data Science
RinaMondal9
 
State of ICS and IoT Cyber Threat Landscape Report 2024 preview
State of ICS and IoT Cyber Threat Landscape Report 2024 previewState of ICS and IoT Cyber Threat Landscape Report 2024 preview
State of ICS and IoT Cyber Threat Landscape Report 2024 preview
Prayukth K V
 
Pushing the limits of ePRTC: 100ns holdover for 100 days
Pushing the limits of ePRTC: 100ns holdover for 100 daysPushing the limits of ePRTC: 100ns holdover for 100 days
Pushing the limits of ePRTC: 100ns holdover for 100 days
Adtran
 
SAP Sapphire 2024 - ASUG301 building better apps with SAP Fiori.pdf
SAP Sapphire 2024 - ASUG301 building better apps with SAP Fiori.pdfSAP Sapphire 2024 - ASUG301 building better apps with SAP Fiori.pdf
SAP Sapphire 2024 - ASUG301 building better apps with SAP Fiori.pdf
Peter Spielvogel
 
GraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge GraphGraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge Graph
Guy Korland
 
DevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA ConnectDevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA Connect
Kari Kakkonen
 
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
SOFTTECHHUB
 
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdfObservability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
Paige Cruz
 
Generative AI Deep Dive: Advancing from Proof of Concept to Production
Generative AI Deep Dive: Advancing from Proof of Concept to ProductionGenerative AI Deep Dive: Advancing from Proof of Concept to Production
Generative AI Deep Dive: Advancing from Proof of Concept to Production
Aggregage
 
Elevating Tactical DDD Patterns Through Object Calisthenics
Elevating Tactical DDD Patterns Through Object CalisthenicsElevating Tactical DDD Patterns Through Object Calisthenics
Elevating Tactical DDD Patterns Through Object Calisthenics
Dorra BARTAGUIZ
 
UiPath Test Automation using UiPath Test Suite series, part 5
UiPath Test Automation using UiPath Test Suite series, part 5UiPath Test Automation using UiPath Test Suite series, part 5
UiPath Test Automation using UiPath Test Suite series, part 5
DianaGray10
 
Epistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI supportEpistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI support
Alan Dix
 
By Design, not by Accident - Agile Venture Bolzano 2024
By Design, not by Accident - Agile Venture Bolzano 2024By Design, not by Accident - Agile Venture Bolzano 2024
By Design, not by Accident - Agile Venture Bolzano 2024
Pierluigi Pugliese
 
Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...
Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...
Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...
James Anderson
 
Secstrike : Reverse Engineering & Pwnable tools for CTF.pptx
Secstrike : Reverse Engineering & Pwnable tools for CTF.pptxSecstrike : Reverse Engineering & Pwnable tools for CTF.pptx
Secstrike : Reverse Engineering & Pwnable tools for CTF.pptx
nkrafacyberclub
 

Recently uploaded (20)

FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdfFIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
 
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
 
Video Streaming: Then, Now, and in the Future
Video Streaming: Then, Now, and in the FutureVideo Streaming: Then, Now, and in the Future
Video Streaming: Then, Now, and in the Future
 
UiPath Test Automation using UiPath Test Suite series, part 4
UiPath Test Automation using UiPath Test Suite series, part 4UiPath Test Automation using UiPath Test Suite series, part 4
UiPath Test Automation using UiPath Test Suite series, part 4
 
Communications Mining Series - Zero to Hero - Session 1
Communications Mining Series - Zero to Hero - Session 1Communications Mining Series - Zero to Hero - Session 1
Communications Mining Series - Zero to Hero - Session 1
 
Free Complete Python - A step towards Data Science
Free Complete Python - A step towards Data ScienceFree Complete Python - A step towards Data Science
Free Complete Python - A step towards Data Science
 
State of ICS and IoT Cyber Threat Landscape Report 2024 preview
State of ICS and IoT Cyber Threat Landscape Report 2024 previewState of ICS and IoT Cyber Threat Landscape Report 2024 preview
State of ICS and IoT Cyber Threat Landscape Report 2024 preview
 
Pushing the limits of ePRTC: 100ns holdover for 100 days
Pushing the limits of ePRTC: 100ns holdover for 100 daysPushing the limits of ePRTC: 100ns holdover for 100 days
Pushing the limits of ePRTC: 100ns holdover for 100 days
 
SAP Sapphire 2024 - ASUG301 building better apps with SAP Fiori.pdf
SAP Sapphire 2024 - ASUG301 building better apps with SAP Fiori.pdfSAP Sapphire 2024 - ASUG301 building better apps with SAP Fiori.pdf
SAP Sapphire 2024 - ASUG301 building better apps with SAP Fiori.pdf
 
GraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge GraphGraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge Graph
 
DevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA ConnectDevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA Connect
 
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
 
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdfObservability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
 
Generative AI Deep Dive: Advancing from Proof of Concept to Production
Generative AI Deep Dive: Advancing from Proof of Concept to ProductionGenerative AI Deep Dive: Advancing from Proof of Concept to Production
Generative AI Deep Dive: Advancing from Proof of Concept to Production
 
Elevating Tactical DDD Patterns Through Object Calisthenics
Elevating Tactical DDD Patterns Through Object CalisthenicsElevating Tactical DDD Patterns Through Object Calisthenics
Elevating Tactical DDD Patterns Through Object Calisthenics
 
UiPath Test Automation using UiPath Test Suite series, part 5
UiPath Test Automation using UiPath Test Suite series, part 5UiPath Test Automation using UiPath Test Suite series, part 5
UiPath Test Automation using UiPath Test Suite series, part 5
 
Epistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI supportEpistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI support
 
By Design, not by Accident - Agile Venture Bolzano 2024
By Design, not by Accident - Agile Venture Bolzano 2024By Design, not by Accident - Agile Venture Bolzano 2024
By Design, not by Accident - Agile Venture Bolzano 2024
 
Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...
Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...
Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...
 
Secstrike : Reverse Engineering & Pwnable tools for CTF.pptx
Secstrike : Reverse Engineering & Pwnable tools for CTF.pptxSecstrike : Reverse Engineering & Pwnable tools for CTF.pptx
Secstrike : Reverse Engineering & Pwnable tools for CTF.pptx
 

"You Keep Using That Word", Sam Newman